SOLIDWORKS macro to create and suppress features in new configurations
This macro create new configurations for all features selected in the feature tree and suppresses them one by one in the respective configuration using SOLIDWORKS API.
This macro can be useful if it is needed to represents some historical data of the model in the configurations.
Notes
- Configurations created as derived configurations of the active configuration
- Each configuration named after the feature name
- Features are processed in the order they have been selected
- Each feature and all previous features will be suppressed in the respective configuration
Use cases
Sheet Metal Bending
This macro can be used to represent the steps of bending of the sheet metal. In this case each configuration will represent the bending step.
- Set the sheet metal part to the flattened state
- Select flatten bends in the order under the Flat-Pattern feature
- Run the macro
As the result sub configurations for each bend are created representing the bending step:
Refer the Animate Configurations for example macro to animate the configurations using SOLIDWORKS API.
Dim swApp As SldWorks.SldWorks Sub main() Set swApp = Application.SldWorks Dim swModel As SldWorks.ModelDoc2 Set swModel = swApp.ActiveDoc If Not swModel Is Nothing Then Dim vFeats As Variant vFeats = GetSelectedFeatures(swModel) Dim swActiveConf As SldWorks.Configuration Set swActiveConf = swModel.ConfigurationManager.ActiveConfiguration Dim i As Integer Dim swFeatsList() As SldWorks.Feature For i = 0 To UBound(vFeats) ReDim Preserve swFeatsList(i) Dim swFeat As SldWorks.Feature Set swFeat = vFeats(i) Set swFeatsList(i) = swFeat If False = SuppressFeaturesInNewConfiguration(swModel, swFeatsList, swFeat.Name, swActiveConf.Name) Then MsgBox "Failed to set the feature state for " & swFeat.Name End End If Next swModel.ShowConfiguration2 swActiveConf.Name Else MsgBox "Please open document" End If End Sub Function GetSelectedFeatures(model As SldWorks.ModelDoc2) As Variant Dim swFeatures() As SldWorks.Feature Dim isArrInit As Boolean isArrInit = False Dim swSelMgr As SldWorks.SelectionMgr Dim i As Integer Set swSelMgr = model.SelectionManager For i = 1 To swSelMgr.GetSelectedObjectCount2(-1) On Error Resume Next Dim swFeat As SldWorks.Feature Set swFeat = swSelMgr.GetSelectedObject6(i, -1) If Not swFeat Is Nothing Then If isArrInit Then ReDim Preserve swFeatures(UBound(swFeatures) + 1) Else ReDim swFeatures(0) isArrInit = True End If Set swFeatures(UBound(swFeatures)) = swFeat End If Next GetSelectedFeatures = swFeatures End Function Function SuppressFeaturesInNewConfiguration(model As SldWorks.ModelDoc2, feats As Variant, confName As String, parentConfName As String) As Boolean Dim swFeatConf As SldWorks.Configuration Set swFeatConf = model.ConfigurationManager.AddConfiguration(confName, "", "", swConfigurationOptions2_e.swConfigOption_LinkToParent + swConfigurationOptions2_e.swConfigOption_DontActivate + swConfigurationOptions2_e.swConfigOption_InheritProperties, parentConfName, "") If Not swFeatConf Is Nothing Then Dim i As Integer For i = 0 To UBound(feats) Dim swFeat As SldWorks.Feature Set swFeat = feats(i) Dim confNames(0) As String confNames(0) = swFeatConf.Name If False = swFeat.SetSuppression2(swFeatureSuppressionAction_e.swSuppressFeature, swInConfigurationOpts_e.swSpecifyConfiguration, confNames) Then SuppressFeaturesInNewConfiguration = False Exit Function End If Next SuppressFeaturesInNewConfiguration = True Else SuppressFeaturesInNewConfiguration = False Exit Function End If End Function