protected IDisposable NewDocument(swDocumentTypes_e docType) { var useDefTemplates = m_SwApp.GetUserPreferenceToggle((int)swUserPreferenceToggle_e.swAlwaysUseDefaultTemplates); try { m_SwApp.SetUserPreferenceToggle((int)swUserPreferenceToggle_e.swAlwaysUseDefaultTemplates, true); var defTemplatePath = m_SwApp.GetDocumentTemplate( (int)docType, "", (int)swDwgPaperSizes_e.swDwgPapersUserDefined, 100, 100); if (string.IsNullOrEmpty(defTemplatePath)) { throw new Exception("Default template is not found"); } var model = (IModelDoc2)m_SwApp.NewDocument(defTemplatePath, (int)swDwgPaperSizes_e.swDwgPapersUserDefined, 100, 100); if (model != null) { var docWrapper = new DocumentWrapper(m_SwApp, model); m_Disposables.Add(docWrapper); return(docWrapper); } else { throw new NullReferenceException($"Failed to create new document from '{defTemplatePath}'"); } } finally { m_SwApp.SetUserPreferenceToggle((int)swUserPreferenceToggle_e.swAlwaysUseDefaultTemplates, useDefTemplates); } }
private void buttonAuto_Click(object sender, EventArgs e) { //新建一个零件 ,画一条150长度的直线,然后最大化. ISldWorks iswApp = Utility.ConnectToSolidWorks(); string partDefaultPath = iswApp.GetDocumentTemplate(1, "", 0, 0, 0); var part = iswApp.NewDocument(partDefaultPath, 0, 0, 0); ModelDoc2 modelDoc = (ModelDoc2)iswApp.ActiveDoc; modelDoc.Extension.SelectByID2("Plane1", "PLANE", 0, 0, 0, false, 0, null, 0); modelDoc.SketchManager.InsertSketch(true); modelDoc.SketchManager.CreateLine(0, 0.1, 0, 0, 0, 0); modelDoc.SketchManager.InsertSketch(true); modelDoc.ClearSelection2(true); modelDoc.Extension.SelectByID2("Sketch1", "SKETCH", 0, 0, 0, false, 1, null, 0); var b = modelDoc.InsertCompositeCurve(); modelDoc.ClearSelection2(true); modelDoc.FeatureManager.ViewFeatures = false; modelDoc.ViewZoomtofit2(); ModelView modelView = (ModelView)modelDoc.ActiveView; iswApp.FrameState = 1; //最大化solidworks modelDoc.ViewZoomtofit2(); modelView.Scale2 = 0.5; // modelDoc.ClearSelection2(true); string ImagePath = @"D:\temp.JPG"; modelDoc.SaveAs3(ImagePath, 0, 0); int LineInImage = img2color(ImagePath); try { System.IO.File.Delete(ImagePath); } catch (Exception exception) { Console.WriteLine(exception); } if (LineInImage > 0) { double ActionScreenHeight = double.Parse(txtSCHeight.Text); //GetScreenRealWeight(double.Parse( textScreenSize.Text)); //当前视图的比例 double ActionScale = modelView.Scale2; //solidworks中的直线占比 double defaultSolidworksP = LineInImage / 1200.0;//double.Parse(txtScreenY.Text); //当前比例下 1像素 等于多少mm double thisSc = 100 / LineInImage; //实际屏幕 1 像素尺寸 double oneP = (ActionScreenHeight) / 1200.0; //当比例设置为 1时 1像素能表示的长度: double onePshowLength = thisSc / ActionScale; //959 1370 GetWindowsSize getWindowSize = new GetWindowsSize(); GetWindowsSize.windsize solidworksize = getWindowSize.GetSize("SLDWORKS"); double getSC = 50.0 / (LineInImage * oneP); txtSC.Text = getSC.ToString();// getSC.ToString(); modelView.Scale2 = getSC; modelDoc.GraphicsRedraw2(); Debug.Print(getSC.ToString()); // modelView.Scale2 = double.Parse(txtSC.Text); // sldWorks.scen } iswApp.CloseDoc(modelDoc.GetPathName()); }
private void ExportBodies() { ModelDoc2 swModel = null; swModel = (ModelDoc2)iswApp.ActiveDoc; int longstatus; int longWarnings; PartDoc swPart = (PartDoc)swModel; string assembName = System.IO.Path.GetFileNameWithoutExtension(txtPath.Text); string bodyFolder = string.Join("", System.IO.Path.GetDirectoryName(txtPath.Text), "\\", assembName); if (!System.IO.Directory.Exists(bodyFolder)) { System.IO.Directory.CreateDirectory(bodyFolder); } string partDefaultPath = iswApp.GetDocumentTemplate(1, "", 0, 0, 0); List <string> exportPartsName = new List <string>(); ProgressBar.Maximum = 2 * listBodies_Normally.Items.Count; for (int i = 0; i < listBodies_Normally.Items.Count; i++) { swModel.ClearSelection2(true); string ActionBodyName = listBodies_Normally.Items[i].ToString(); Boolean boolstatus = swModel.Extension.SelectByID2(ActionBodyName, "SOLIDBODY", 0, 0, 0, false, 0, null, 0); if (boolstatus == true) { string bodyPath = ""; if (ActionBodyName.Contains("复制-")) { bodyPath = string.Join("", bodyFolder, "\\", "复制-", assembName + "-" + ActionBodyName.Replace("复制-", "").Replace("/", ""), ".sldprt"); } else if (ActionBodyName.Contains("镜向-")) { bodyPath = string.Join("", bodyFolder, "\\", "镜向-", assembName + "-" + ActionBodyName.Replace("镜向-", "").Replace("/", ""), ".sldprt"); } else { bodyPath = string.Join("", bodyFolder, "\\", assembName + "-" + ActionBodyName.Replace("/", ""), ".sldprt"); } labStatus.Text = "正在导出-->" + ActionBodyName; ProgressBar.Value = i; Boolean b = swPart.SaveToFile3(bodyPath, 1, 1, false, partDefaultPath, out longstatus, out longWarnings); if (b) { //BoxSize thisBoxSize = new BoxSize(); //GetBoundingBox(out thisBoxSize); GetBoundingBox(); exportPartsName.Add(bodyPath); } } } //把所有输出的零件 ,按默认原点装配成一个装配体。 //string assemblyDefaultPath = iswApp.GetUserPreferenceStringValue(9); //swDefaultTemplatePart 8 swDefaultTemplateAssembly9 swDefaultTemplateDrawing //Debug.Print "Draw template = " & swApp.GetDocumentTemplate(swDocDRAWING, "", swDwgPaperAsize, 0#, 0#) //Debug.Print "Part template = " & swApp.GetDocumentTemplate(swDocPART, "", 0, 0#, 0#) //Debug.Print "Assy template = " & swApp.GetDocumentTemplate(swDocASSEMBLY, "", 0, 0#, 0#) string assemblyFullpath = System.IO.Path.GetDirectoryName(txtPath.Text) + "\\" + System.IO.Path.GetFileNameWithoutExtension(txtPath.Text) + ".sldasm"; CreateNewAssembly(assemblyFullpath, exportPartsName); }