From a2474fca3b4623f947d92783ed36b30aca933565 Mon Sep 17 00:00:00 2001 From: AJ Date: Wed, 27 Nov 2019 13:07:33 -0500 Subject: [PATCH] Set lightweight components to resolved --- ExportDXF/ExportDXF.csproj | 4 ++-- ExportDXF/Forms/MainForm.cs | 34 +------------------------------ ExportDXF/ItemExtractor.cs | 32 ++++++++++++++++++----------- ExportDXF/SolidWorksExtensions.cs | 17 ++++++++++++++++ 4 files changed, 40 insertions(+), 47 deletions(-) diff --git a/ExportDXF/ExportDXF.csproj b/ExportDXF/ExportDXF.csproj index 3ab8ae4..6561e25 100644 --- a/ExportDXF/ExportDXF.csproj +++ b/ExportDXF/ExportDXF.csproj @@ -22,8 +22,8 @@ false false true - 21 - 1.0.0.%2a + 0 + 1.0.1.%2a false true true diff --git a/ExportDXF/Forms/MainForm.cs b/ExportDXF/Forms/MainForm.cs index 7fde2f0..d0c61f2 100644 --- a/ExportDXF/Forms/MainForm.cs +++ b/ExportDXF/Forms/MainForm.cs @@ -257,7 +257,6 @@ namespace ExportDXF.Forms var itemExtractor = new BomItemExtractor(bom); itemExtractor.SkipHiddenRows = true; - Print(bom.BomFeature.Name); Print($"Fetching components from {bom.BomFeature.Name}"); var bomItems = itemExtractor.GetItems(); @@ -332,7 +331,7 @@ namespace ExportDXF.Forms var fileName = GetFileName(item); var savepath = Path.Combine(savePath, fileName + ".dxf"); - SetLightweightToResolved(item.Component); + item.Component.SetLightweightToResolved(); var model = item.Component.GetModelDoc2() as ModelDoc2; var part = model as PartDoc; @@ -406,37 +405,6 @@ namespace ExportDXF.Forms } } - private void SetLightweightToResolved(Component2 component) - { - var isSuppressed = component.IsSuppressed(); - - if (isSuppressed) - return; - var suppressionState = (swComponentSuppressionState_e)component.GetSuppression(); - - switch (suppressionState) - { - case swComponentSuppressionState_e.swComponentFullyResolved: - case swComponentSuppressionState_e.swComponentResolved: - return; - - case swComponentSuppressionState_e.swComponentFullyLightweight: - case swComponentSuppressionState_e.swComponentLightweight: - var error = (swSuppressionError_e)component.SetSuppression2((int)swComponentSuppressionState_e.swComponentResolved); - - if (error == swSuppressionError_e.swSuppressionChangeOk) - { - var model = component.GetModelDoc2() as ModelDoc2; - - if (model != null) - { - model.ForceRebuild3(false); - } - } - break; - } - } - private string RemoveFontXml(string s) { if (s == null) diff --git a/ExportDXF/ItemExtractor.cs b/ExportDXF/ItemExtractor.cs index c331d75..b019f3f 100644 --- a/ExportDXF/ItemExtractor.cs +++ b/ExportDXF/ItemExtractor.cs @@ -80,32 +80,40 @@ namespace ExportDXF item.Quantity = qty; } + item.Component = GetComponent(rowIndex); + + return item; + } + + private Component2 GetComponent(int rowIndex) + { var isBOMPartsOnly = bom.BomFeature.TableType == (int)swBomType_e.swBomType_PartsOnly; - List components; + IEnumerable components; if (isBOMPartsOnly) { - components = ((Array)bom.GetComponents2(rowIndex, bom.BomFeature.Configuration))?.Cast().ToList(); + components = ((Array)bom.GetComponents2(rowIndex, bom.BomFeature.Configuration))?.Cast(); } else { - components = ((Array)bom.GetComponents(rowIndex))?.Cast().ToList(); + components = ((Array)bom.GetComponents(rowIndex))?.Cast(); } - if (components != null) + if (components == null) + return null; + + foreach (var component in components) { - foreach (var component in components) - { - if (component.IsSuppressed()) - continue; + component.SetLightweightToResolved(); - item.Component = component; - break; - } + if (component.IsSuppressed()) + continue; + + return component; } - return item; + return null; } public List GetItems() diff --git a/ExportDXF/SolidWorksExtensions.cs b/ExportDXF/SolidWorksExtensions.cs index 89e3b09..24603dd 100644 --- a/ExportDXF/SolidWorksExtensions.cs +++ b/ExportDXF/SolidWorksExtensions.cs @@ -1,5 +1,6 @@ using SolidWorks.Interop.sldworks; using SolidWorks.Interop.swconst; +using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; @@ -138,5 +139,21 @@ namespace ExportDXF .ToList(); } + public static void SetLightweightToResolved(this Component2 component) + { + var suppressionState = (swComponentSuppressionState_e)component.GetSuppression(); + + switch (suppressionState) + { + case swComponentSuppressionState_e.swComponentFullyResolved: + case swComponentSuppressionState_e.swComponentResolved: + return; + + case swComponentSuppressionState_e.swComponentFullyLightweight: + case swComponentSuppressionState_e.swComponentLightweight: + var error = (swSuppressionError_e)component.SetSuppression2((int)swComponentSuppressionState_e.swComponentResolved); + break; + } + } } } \ No newline at end of file