private const string ШаблонЧертежаРазверткиВнеХранилища = "flattpattern.drwdot";//@"C:\flattpattern.drwdot"; public void CreateFlattPatternUpdateCutlistAndEdrawing() { #region Сбор информации по детали и сохранение разверток //SldWorks swApp = null; try { var swApp = (SldWorks)Marshal.GetActiveObject("SldWorks.Application"); swApp = new SldWorks { Visible = true }; IModelDoc2 swModel = swApp.IActiveDoc2; swModel.Extension.ViewDisplayRealView = false; if (!IsSheetMetalPart((IPartDoc)swModel)) { MessageBox.Show("Деталь не из листового материала"); } string[] swModelConfNames; var activeconfiguration = (Configuration)swModel.GetActiveConfiguration(); swModelConfNames = (string[])swModel.GetConfigurationNames(); var swModelConfNames2 = (string[])swModel.GetConfigurationNames(); try { foreach (var configName in from name in swModelConfNames2 let config = (Configuration)swModel.GetConfigurationByName(name) where !config.IsDerived() select name) { swModel.ShowConfiguration2(configName); swModel.EditRebuild3(); FileInfo template = null; try { template = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + @"\" + ШаблонЧертежаРазверткиВнеХранилища); //MessageBox.Show(template.FullName); Thread.Sleep(1000); } catch (Exception exception) { MessageBox.Show(exception.ToString()); template = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + @"\" + ШаблонЧертежаРазверткиВнеХранилища); Thread.Sleep(1000); } finally { if (template == null) { template = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + @"\" + ШаблонЧертежаРазверткиВнеХранилища); } } //MessageBox.Show(template.FullName); var swDraw = (DrawingDoc)swApp.INewDocument2(template.FullName, (int)swDwgPaperSizes_e.swDwgPaperA0size, 0.841, 0.594); swDraw.CreateFlatPatternViewFromModelView3(swModel.GetPathName(), configName, 0.841 / 2, 0.594 / 2, 0, true, false); ((IModelDoc2)swDraw).ForceRebuild3(true); #region Разгибание всех сгибов try { swModel.EditRebuild3(); var swPart = (IPartDoc)swModel; Feature swFeature = swPart.FirstFeature(); const string strSearch = "FlatPattern"; while (swFeature != null) { var nameTypeFeature = swFeature.GetTypeName2(); if (nameTypeFeature == strSearch) { swFeature.Select(true); swPart.EditUnsuppress(); Feature swSubFeature = swFeature.GetFirstSubFeature(); while (swSubFeature != null) { var nameTypeSubFeature = swSubFeature.GetTypeName2(); if (nameTypeSubFeature == "UiBend") { swFeature.Select(true); swPart.EditUnsuppress(); swModel.EditRebuild3(); try { swSubFeature.SetSuppression2( (int)swFeatureSuppressionAction_e.swUnSuppressFeature, (int)swInConfigurationOpts_e.swAllConfiguration, swModelConfNames2); } catch (Exception){} } swSubFeature = swSubFeature.GetNextSubFeature(); } } swFeature = swFeature.GetNextFeature(); } swModel.EditRebuild3(); } catch (Exception exception) { MessageBox.Show(exception.Message); } #endregion swModel.ForceRebuild3(false); var thikness = GetFromCutlist(swModel, "Толщина листового металла"); var errors = 0; var warnings = 0; var newDxf = (IModelDoc2)swDraw; try { Directory.CreateDirectory("C:\\Dxf\\"); } catch (Exception){} newDxf.Extension.SaveAs( "C:\\Dxf\\" + Path.GetFileNameWithoutExtension(swModel.GetPathName()) + "-" + configName + "-" + thikness + ".dxf", (int)swSaveAsVersion_e.swSaveAsCurrentVersion, (int)swSaveAsOptions_e.swSaveAsOptions_UpdateInactiveViews, null, ref errors, ref warnings); swApp.CloseDoc(Path.GetFileName(newDxf.GetPathName())); } } catch (Exception exception) { MessageBox.Show(exception.ToString()); } try { swModel.ShowConfiguration2(activeconfiguration.Name); } catch (Exception exception) { MessageBox.Show(exception.ToString()); } #endregion } catch (Exception exception) { MessageBox.Show(exception.ToString()); } }
private const string ШаблонЧертежаРазверткиВнеХранилища = "flattpattern.drwdot";//@"C:\flattpattern.drwdot"; public void CreateFlattPatternUpdateCutlistAndEdrawing() { #region Сбор информации по детали и сохранение разверток //SldWorks swApp = null; try { var swApp = (SldWorks)Marshal.GetActiveObject("SldWorks.Application"); swApp = new SldWorks { Visible = true }; IModelDoc2 swModel = swApp.IActiveDoc2; swModel.Extension.ViewDisplayRealView = false; if (!IsSheetMetalPart((IPartDoc)swModel)) { MessageBox.Show("Деталь не из листового материала"); } string[] swModelConfNames; var activeconfiguration = (Configuration)swModel.GetActiveConfiguration(); swModelConfNames = (string[])swModel.GetConfigurationNames(); var swModelConfNames2 = (string[])swModel.GetConfigurationNames(); try { foreach (var configName in from name in swModelConfNames2 let config = (Configuration)swModel.GetConfigurationByName(name) where !config.IsDerived() select name) { swModel.ShowConfiguration2(configName); swModel.EditRebuild3(); FileInfo template = null; try { template = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + @"\" + ШаблонЧертежаРазверткиВнеХранилища); //MessageBox.Show(template.FullName); Thread.Sleep(1000); } catch (Exception exception) { MessageBox.Show(exception.ToString()); template = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + @"\" + ШаблонЧертежаРазверткиВнеХранилища); Thread.Sleep(1000); } finally { if (template == null) { template = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + @"\" + ШаблонЧертежаРазверткиВнеХранилища); } } //MessageBox.Show(template.FullName); var swDraw = (DrawingDoc)swApp.INewDocument2(template.FullName, (int)swDwgPaperSizes_e.swDwgPaperA0size, 0.841, 0.594); swDraw.CreateFlatPatternViewFromModelView3(swModel.GetPathName(), configName, 0.841 / 2, 0.594 / 2, 0, true, false); ((IModelDoc2)swDraw).ForceRebuild3(true); #region азгибание всех сгибов try { swModel.EditRebuild3(); var swPart = (IPartDoc)swModel; Feature swFeature = swPart.FirstFeature(); const string strSearch = "FlatPattern"; while (swFeature != null) { var nameTypeFeature = swFeature.GetTypeName2(); if (nameTypeFeature == strSearch) { swFeature.Select(true); swPart.EditUnsuppress(); Feature swSubFeature = swFeature.GetFirstSubFeature(); while (swSubFeature != null) { var nameTypeSubFeature = swSubFeature.GetTypeName2(); if (nameTypeSubFeature == "UiBend") { swFeature.Select(true); swPart.EditUnsuppress(); swModel.EditRebuild3(); try { swSubFeature.SetSuppression2( (int)swFeatureSuppressionAction_e.swUnSuppressFeature, (int)swInConfigurationOpts_e.swAllConfiguration, swModelConfNames2); } catch (Exception) {} } swSubFeature = swSubFeature.GetNextSubFeature(); } } swFeature = swFeature.GetNextFeature(); } swModel.EditRebuild3(); } catch (Exception exception) { MessageBox.Show(exception.Message); } #endregion swModel.ForceRebuild3(false); var thikness = GetFromCutlist(swModel, "Толщина листового металла"); var errors = 0; var warnings = 0; var newDxf = (IModelDoc2)swDraw; try { Directory.CreateDirectory("C:\\Dxf\\"); } catch (Exception) {} newDxf.Extension.SaveAs( "C:\\Dxf\\" + Path.GetFileNameWithoutExtension(swModel.GetPathName()) + "-" + configName + "-" + thikness + ".dxf", (int)swSaveAsVersion_e.swSaveAsCurrentVersion, (int)swSaveAsOptions_e.swSaveAsOptions_UpdateInactiveViews, null, ref errors, ref warnings); swApp.CloseDoc(Path.GetFileName(newDxf.GetPathName())); } } catch (Exception exception) { MessageBox.Show(exception.ToString()); } try { swModel.ShowConfiguration2(activeconfiguration.Name); } catch (Exception exception) { MessageBox.Show(exception.ToString()); } #endregion } catch (Exception exception) { MessageBox.Show(exception.ToString()); } }