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