I have a simple macro that takes an active part file, and checks if each body is sheet metal, and if so creates a DXF of it. I want to modify it to create a DXF of each configuration, after checking if that configuration is a sheet metal body.
Typical usage situation: SLDPRT with configuration named MASTER which is a multi-body sheet metal part. Then a series of configurations, each named according to the respective part number, each one using BODY-DELETE features to remove all but one sheet metal body.
I would like the macro to traverse each configuration, check if the resulting model is a sheet metal body, and if so export the flat pattern to DXF. Here is my code for doing so on a single-configuration multi-body part:
Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim featureMgr As SldWorks.FeatureManager Dim feat As SldWorks.Feature Dim sheetMetalFolder As SldWorks.sheetMetalFolder Dim swPart As SldWorks.PartDoc Dim swConfigMan As IConfigurationManager Dim swConfig As Configuration Dim swObj As Object Dim swBody As Body2 Dim nBendState As Long Dim varBodies As Variant Dim featArray As Variant Dim i As Long, nCount As Long Option Explicit Sub main() Set swApp = CreateObject("SldWorks.Application") Set swModel = swApp.ActiveDoc If Not swModel.GetType = swDocPART Then Debug.Print "Must be a part file; exiting..." Exit Sub End If Set swPart = swModel Set featureMgr = swModel.FeatureManager varBodies = swPart.GetBodies2(swBodyType_e.swSolidBody, True) For i = 0 To UBound(varBodies) Set swBody = varBodies(i) If (swBody.IsSheetMetal) Then Debug.Print "Sheet metal found!" Set featureMgr = swModel.FeatureManager Set sheetMetalFolder = featureMgr.GetSheetMetalFolder Set swConfig = swModel.GetActiveConfiguration Debug.Print "Configuration: " & swConfig.Name Else ' Debug.Print "No sheet metal found..." End If Next i End Sub