1+ Const CREATE_DERIVED_CONFS As Boolean = True
2+
13Const FOLDER_END_TAG As String = "___EndTag___"
24
35Dim swApp As SldWorks .SldWorks
@@ -13,7 +15,18 @@ Sub main()
1315 If Not swModel Is Nothing Then
1416
1517 Dim vFeatFolders As Variant
16- vFeatFolders = GetAllFeatureFolders(swModel)
18+ Dim vAllFeatFolders As Variant
19+
20+ Dim swSelMgr As SldWorks .SelectionMgr
21+ Set swSelMgr = swModel.SelectionManager
22+
23+ vAllFeatFolders = GetAllFeatureFolders(swModel)
24+
25+ If swSelMgr.GetSelectedObjectCount2(-1 ) = 0 Then
26+ vFeatFolders = vAllFeatFolders
27+ Else
28+ vFeatFolders = GetSelectedFeatureFolders(swModel)
29+ End If
1730
1831 If Not IsEmpty(vFeatFolders) Then
1932
@@ -25,7 +38,7 @@ Sub main()
2538 For i = 0 To UBound(vFeatFolders)
2639 Dim swFeatFolder As SldWorks .Feature
2740 Set swFeatFolder = vFeatFolders(i)
28- CreateConfigurationForFolder swModel, swFeatFolder, vFeatFolders, activeConfName
41+ CreateConfigurationForFolder swModel, swFeatFolder, vAllFeatFolders, IIf (CREATE_DERIVED_CONFS, activeConfName, "" )
2942 Next
3043
3144 End If
@@ -45,7 +58,7 @@ Function GetAllFeatureFolders(model As SldWorks.ModelDoc2) As Variant
4558
4659 While Not swFeat Is Nothing
4760
48- If swFeat.GetTypeName2() = "FtrFolder" And LCase(Right( swFeat.Name, Len (FOLDER_END_TAG))) <> LCase(FOLDER_END_TAG) Then
61+ If swFeat.GetTypeName2() = "FtrFolder" And InStr( LCase(swFeat.Name), LCase (FOLDER_END_TAG)) = 0 Then
4962
5063 If (Not swFeatFolders) = -1 Then
5164 ReDim swFeatFolders(0 )
@@ -70,6 +83,41 @@ Function GetAllFeatureFolders(model As SldWorks.ModelDoc2) As Variant
7083
7184End Function
7285
86+ Function GetSelectedFeatureFolders (model As SldWorks .ModelDoc2) As Variant
87+
88+ Dim swSelMgr As SldWorks .SelectionMgr
89+ Set swSelMgr = model.SelectionManager
90+
91+ Dim swFeatFolders() As SldWorks .Feature
92+
93+ Dim i As Integer
94+
95+ For i = 1 To swSelMgr.GetSelectedObjectCount2(-1 )
96+
97+ If swSelMgr.GetSelectedObjectType3(i, -1 ) = swSelectType_e.swSelFTRFOLDER Then
98+
99+ Dim swFeat As SldWorks .Feature
100+ Set swFeat = swSelMgr.GetSelectedObject6(i, -1 )
101+
102+ If (Not swFeatFolders) = -1 Then
103+ ReDim swFeatFolders(0 )
104+ Else
105+ ReDim Preserve swFeatFolders(UBound(swFeatFolders) + 1 )
106+ End If
107+
108+ Set swFeatFolders(UBound(swFeatFolders)) = swFeat
109+ End If
110+
111+ Next
112+
113+ If (Not swFeatFolders) = -1 Then
114+ GetSelectedFeatureFolders = Empty
115+ Else
116+ GetSelectedFeatureFolders = swFeatFolders
117+ End If
118+
119+ End Function
120+
73121Sub CreateConfigurationForFolder (model As SldWorks .ModelDoc2, folderFeat As SldWorks .Feature, allFeatFolders As Variant , parentConfName As String )
74122
75123 Dim swFolderConf As SldWorks .Configuration
0 commit comments