public void OpenRelvantFile() { IModelDoc2 modDoc = (IModelDoc2)iSwApp.ActiveDoc; //获取当前打开文件类型:1-part,2-assembly, 3-drawing int modleType = modDoc.GetType(); string fileName; string targetName; string readyName; string path; string[] siblingNames; int errors = 0; int warnings = 0; path = modDoc.GetPathName().Substring(0, modDoc.GetPathName().LastIndexOf("\\")); fileName = modDoc.GetPathName().Substring(modDoc.GetPathName().LastIndexOf("\\") + 1, modDoc.GetPathName().LastIndexOf(".") - modDoc.GetPathName().LastIndexOf("\\") - 1); siblingNames = Directory.GetFiles(path, "*.sld"); foreach (string x in siblingNames) { //获取不包括路径的文件名 readyName = x.ToLower().Replace("~$", "").Substring(x.LastIndexOf("\\") + 1, x.LastIndexOf(".") - x.LastIndexOf("\\") - 1); if (x.Replace("~$", "") != modDoc.GetPathName() & (readyName.LastIndexOf(fileName.ToLower()) != -1 || fileName.LastIndexOf(readyName.ToLower()) != -1)) { targetName = x.Replace("~$", ""); iSwApp.OpenDoc6(targetName, 1, (int)swOpenDocOptions_e.swOpenDocOptions_Silent, "", ref errors, ref warnings); iSwApp.OpenDoc6(targetName, 2, (int)swOpenDocOptions_e.swOpenDocOptions_Silent, "", ref errors, ref warnings); iSwApp.OpenDoc6(targetName, 3, (int)swOpenDocOptions_e.swOpenDocOptions_Silent, "", ref errors, ref warnings); iSwApp.ActivateDoc3(x.ToLower().Replace("~$", "").Substring(x.LastIndexOf("\\") + 1, x.Length - x.LastIndexOf("\\") - 1), false, (int)swRebuildOnActivation_e.swUserDecision, ref errors); } } }
/// <summary> /// /// </summary> /// <param name="assemblyName"></param> /// <param name="partsname"></param> private void CreateNewAssembly(string assemblyName, List <string> partsname) { string assemblyDefaultPath = iswApp.GetDocumentTemplate(2, "", 0, 0, 0); var part = iswApp.NewDocument(assemblyDefaultPath, 0, 0, 0); if (part != null) { AssemblyDoc assemblyDoc = part as AssemblyDoc; ModelDoc2 modelDoc2 = assemblyDoc as ModelDoc2; ModelDocExtension swModExt = default(ModelDocExtension); int errors = 0; int warnings = 0; swModExt = (ModelDocExtension)modelDoc2.Extension; swModExt.SaveAs(assemblyName, (int)swSaveAsVersion_e.swSaveAsCurrentVersion, (int)swSaveAsOptions_e.swSaveAsOptions_Silent, null, errors, warnings); modelDoc2 = (ModelDoc2)iswApp.ActiveDoc; int i = 0; int tempV = ProgressBar.Value; foreach (var partN in partsname) { labStatus.Text = "正在装配-->" + Path.GetFileNameWithoutExtension(partN); ProgressBar.Value = tempV + i; iswApp.OpenDoc6(partN.ToString(), 1, 32, "", ref errors, ref warnings); assemblyDoc = (AssemblyDoc)iswApp.ActivateDoc3(System.IO.Path.GetFileNameWithoutExtension(assemblyName) + ".sldasm", true, 0, errors); Component2 swInsertedComponent = default(Component2); swInsertedComponent = assemblyDoc.AddComponent5(partN, 0, "", false, "", 0, 0, 0); modelDoc2 = (ModelDoc2)iswApp.ActiveDoc; modelDoc2.ClearSelection2(true); modelDoc2.Extension.SelectByID2(swInsertedComponent.GetSelectByIDString(), "COMPONENT", 0, 0, 0, false, 0, null, 0); assemblyDoc.UnfixComponent(); modelDoc2.ClearSelection2(true); modelDoc2.Extension.SelectByID2("Point1@Origin@" + swInsertedComponent.GetSelectByIDString(), "EXTSKETCHPOINT", 0, 0, 0, false, 0, null, 0); modelDoc2.Extension.SelectByID2("Point1@Origin", "EXTSKETCHPOINT", 0, 0, 0, true, 0, null, 0); Mate2 mate2 = default(Mate2); mate2 = assemblyDoc.AddMate5(20, -1, false, 0, 0, 0, 0, 0.001, 0, 0, 0, false, false, 0, out int warings); modelDoc2.ClearSelection2(true); modelDoc2.EditRebuild3(); iswApp.CloseDoc(partN); i = i + 1; } iswApp.ActivateDoc3(System.IO.Path.GetFileNameWithoutExtension(assemblyName) + ".sldasm", true, 0, errors); modelDoc2 = (ModelDoc2)iswApp.ActiveDoc; modelDoc2.ShowNamedView2("*等轴测", 7); modelDoc2.ViewZoomtofit2(); modelDoc2.Save(); } ProgressBar.Value = ProgressBar.Maximum; }
private void saveSTL(link Link, string windowsMeshFileName) { int errors = 0; int warnings = 0; string coordsysName = ""; coordsysName = (Link.Joint == null || Link.Joint.CoordinateSystemName == null) ? Link.CoordSysName : Link.Joint.CoordinateSystemName; Dictionary <string, string> names = GetComponentRefGeoNames(coordsysName); ModelDoc2 ActiveDoc = ActiveSWModel; string ComponentName = ""; string ConfigurationName = ""; string DisplayStateName = ""; Component2 geoComponent = default(Component2); if (names["component"].Length > 0) { foreach (Component2 comp in Link.SWcomponents) { if (comp.Name2 == names["component"]) { geoComponent = comp; ComponentName = comp.GetPathName(); ConfigurationName = comp.ReferencedConfiguration; DisplayStateName = comp.ReferencedDisplayState; bool usenamed = comp.UseNamedConfiguration; ActiveDoc = (ModelDoc2)iSwApp.ActivateDoc3(ComponentName, false, 0, 0); Configuration config = ActiveDoc.GetConfigurationByName(ConfigurationName); ActiveDoc.ShowConfiguration2(ConfigurationName); config.ApplyDisplayState(DisplayStateName); } break; } } if (ComponentName.Length == 0) { Common.showComponents(ActiveSWModel, Link.SWcomponents); } int saveOptions = (int)swSaveAsOptions_e.swSaveAsOptions_Silent; setLinkSpecificSTLPreferences(names["geo"], Link.STLQualityFine, ActiveDoc); ActiveDoc.Extension.SaveAs(windowsMeshFileName, (int)swSaveAsVersion_e.swSaveAsCurrentVersion, saveOptions, null, ref errors, ref warnings); if (ComponentName.Length > 0) { iSwApp.CloseDoc(ComponentName); geoComponent.ReferencedConfiguration = ConfigurationName; } else { Common.hideComponents(ActiveSWModel, Link.SWcomponents); } correctSTLMesh(windowsMeshFileName); }