From 16c9d97e22b59cfc24e30f4558bb7e3c247677ad Mon Sep 17 00:00:00 2001 From: AJ Date: Sun, 21 Mar 2021 22:09:31 -0400 Subject: [PATCH] Moved ItemExtractors to separate namespace. --- ExportDXF/ExportDXF.csproj | 5 +- ExportDXF/Forms/MainForm.cs | 3 +- .../ItemExtractors/AssemblyItemExtractor.cs | 64 ++++++++++++++++ ExportDXF/ItemExtractors/BomColumnIndices.cs | 13 ++++ .../BomItemExtractor.cs} | 75 +------------------ ExportDXF/ItemExtractors/ItemExtractor.cs | 9 +++ 6 files changed, 93 insertions(+), 76 deletions(-) create mode 100644 ExportDXF/ItemExtractors/AssemblyItemExtractor.cs create mode 100644 ExportDXF/ItemExtractors/BomColumnIndices.cs rename ExportDXF/{ItemExtractor.cs => ItemExtractors/BomItemExtractor.cs} (66%) create mode 100644 ExportDXF/ItemExtractors/ItemExtractor.cs diff --git a/ExportDXF/ExportDXF.csproj b/ExportDXF/ExportDXF.csproj index cff6f5b..1a45667 100644 --- a/ExportDXF/ExportDXF.csproj +++ b/ExportDXF/ExportDXF.csproj @@ -94,7 +94,10 @@ - + + + + diff --git a/ExportDXF/Forms/MainForm.cs b/ExportDXF/Forms/MainForm.cs index ad8461c..94ef7e6 100644 --- a/ExportDXF/Forms/MainForm.cs +++ b/ExportDXF/Forms/MainForm.cs @@ -1,4 +1,5 @@ -using OfficeOpenXml; +using ExportDXF.ItemExtractors; +using OfficeOpenXml; using SolidWorks.Interop.sldworks; using SolidWorks.Interop.swconst; using System; diff --git a/ExportDXF/ItemExtractors/AssemblyItemExtractor.cs b/ExportDXF/ItemExtractors/AssemblyItemExtractor.cs new file mode 100644 index 0000000..5df5f59 --- /dev/null +++ b/ExportDXF/ItemExtractors/AssemblyItemExtractor.cs @@ -0,0 +1,64 @@ +using SolidWorks.Interop.sldworks; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; + +namespace ExportDXF.ItemExtractors +{ + public class AssemblyItemExtractor : ItemExtractor + { + private AssemblyDoc assembly; + + public AssemblyItemExtractor(AssemblyDoc assembly) + { + this.assembly = assembly; + } + + public bool TopLevelOnly { get; set; } + + private string GetComponentName(Component2 component) + { + var filepath = component.GetTitle(); + var filename = Path.GetFileNameWithoutExtension(filepath); + var isDefaultConfig = component.ReferencedConfiguration.ToLower() == "default"; + + return isDefaultConfig ? filename : $"{filename} [{component.ReferencedConfiguration}]"; + } + + public List GetItems() + { + var list = new List(); + + assembly.ResolveAllLightWeightComponents(false); + + var assemblyComponents = ((Array)assembly.GetComponents(TopLevelOnly)) + .Cast() + .Where(c => !c.IsHidden(true)); + + var componentGroups = assemblyComponents + .GroupBy(c => c.GetTitle() + c.ReferencedConfiguration); + + foreach (var group in componentGroups) + { + var component = group.First(); + var model = component.GetModelDoc2() as ModelDoc2; + + if (model == null) + continue; + + var name = GetComponentName(component); + + list.Add(new Item + { + PartName = name, + Quantity = group.Count(), + Component = component, + Configuration = component.ReferencedConfiguration + }); + } + + return list; + } + } +} \ No newline at end of file diff --git a/ExportDXF/ItemExtractors/BomColumnIndices.cs b/ExportDXF/ItemExtractors/BomColumnIndices.cs new file mode 100644 index 0000000..392f32d --- /dev/null +++ b/ExportDXF/ItemExtractors/BomColumnIndices.cs @@ -0,0 +1,13 @@ +namespace ExportDXF.ItemExtractors +{ + public class BomColumnIndices + { + public int ItemNumber { get; set; } = -1; + + public int Quantity { get; set; } = -1; + + public int Description { get; set; } = -1; + + public int PartNumber { get; set; } = -1; + } +} \ No newline at end of file diff --git a/ExportDXF/ItemExtractor.cs b/ExportDXF/ItemExtractors/BomItemExtractor.cs similarity index 66% rename from ExportDXF/ItemExtractor.cs rename to ExportDXF/ItemExtractors/BomItemExtractor.cs index 14385cc..bd8a250 100644 --- a/ExportDXF/ItemExtractor.cs +++ b/ExportDXF/ItemExtractors/BomItemExtractor.cs @@ -2,16 +2,10 @@ using SolidWorks.Interop.swconst; using System; using System.Collections.Generic; -using System.IO; using System.Linq; -namespace ExportDXF +namespace ExportDXF.ItemExtractors { - public interface ItemExtractor - { - List GetItems(); - } - public class BomItemExtractor : ItemExtractor { private BomTableAnnotation bom; @@ -142,71 +136,4 @@ namespace ExportDXF return items; } } - - public class AssemblyItemExtractor : ItemExtractor - { - private AssemblyDoc assembly; - - public AssemblyItemExtractor(AssemblyDoc assembly) - { - this.assembly = assembly; - } - - public bool TopLevelOnly { get; set; } - - private string GetComponentName(Component2 component) - { - var filepath = component.GetTitle(); - var filename = Path.GetFileNameWithoutExtension(filepath); - var isDefaultConfig = component.ReferencedConfiguration.ToLower() == "default"; - - return isDefaultConfig ? filename : $"{filename} [{component.ReferencedConfiguration}]"; - } - - public List GetItems() - { - var list = new List(); - - assembly.ResolveAllLightWeightComponents(false); - - var assemblyComponents = ((Array)assembly.GetComponents(TopLevelOnly)) - .Cast() - .Where(c => !c.IsHidden(true)); - - var componentGroups = assemblyComponents - .GroupBy(c => c.GetTitle() + c.ReferencedConfiguration); - - foreach (var group in componentGroups) - { - var component = group.First(); - var model = component.GetModelDoc2() as ModelDoc2; - - if (model == null) - continue; - - var name = GetComponentName(component); - - list.Add(new Item - { - PartName = name, - Quantity = group.Count(), - Component = component, - Configuration = component.ReferencedConfiguration - }); - } - - return list; - } - } - - public class BomColumnIndices - { - public int ItemNumber { get; set; } = -1; - - public int Quantity { get; set; } = -1; - - public int Description { get; set; } = -1; - - public int PartNumber { get; set; } = -1; - } } \ No newline at end of file diff --git a/ExportDXF/ItemExtractors/ItemExtractor.cs b/ExportDXF/ItemExtractors/ItemExtractor.cs new file mode 100644 index 0000000..b81b347 --- /dev/null +++ b/ExportDXF/ItemExtractors/ItemExtractor.cs @@ -0,0 +1,9 @@ +using System.Collections.Generic; + +namespace ExportDXF.ItemExtractors +{ + public interface ItemExtractor + { + List GetItems(); + } +} \ No newline at end of file