Zwykle poniższy kod powinien spełniać tę potrzebę.
Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swConfMgr As SldWorks.ConfigurationManager
Dim swSelMgr As SldWorks.SelectionMgr
Dim swChildComp As SldWorks.Component2
Dim sConf As String
Dim sChildConf As String
Set swApp = CreateObject("SldWorks.Application")
Set swModel = swApp.ActiveDoc
Set swSelMgr = swModel.SelectionManager
Set swConfMgr = swModel.ConfigurationManager
sConf = swConfMgr.ActiveConfiguration.Name
Set swChildComp = swSelMgr.GetSelectedObject6(1, -1)
sChildConf = swChildComp.ReferencedConfiguration
If sChildConf <> sConf Then
swChildComp.ReferencedConfiguration = sConf
swModel.EditRebuild3
End If
End Sub
W zależności od liczby konfiguracji, które mają zostać wygenerowane, nie musi być konieczne stosowanie makra. W oknie, aby otworzyć plik zespołu, wybierz asm, kliknij "Konfiguracja", wybierz "zaawansowane"
Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swConfMgr As SldWorks.ConfigurationManager
Dim swSelMgr As SldWorks.SelectionMgr
Dim swChildComp As SldWorks.Component2
Dim sConf As String
Dim sChildConf As String
Dim boolstatus As Boolean
Set swApp = CreateObject("SldWorks.Application")
Set swModel = swApp.ActiveDoc
Set swSelMgr = swModel.SelectionManager
Set swConfMgr = swModel.ConfigurationManager
vConfigNameArr = swModel.GetConfigurationNames
For Each vConfigName In vConfigNameArr
Set swConfig = swModel.GetConfigurationByName(vConfigName)
sConf = vConfigName
Set swChildComp = swSelMgr.GetSelectedObject6(1, -1)
swModel.ShowConfiguration2 (vConfigName)
boolstatus = swModel.Extension.SelectByID2(swChildComp.GetSelectByIDString, "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
Set swChildComp = swSelMgr.GetSelectedObject6(1, -1)
sChildConf = swChildComp.ReferencedConfiguration
If sChildConf <> sConf Then
swChildComp.ReferencedConfiguration = sConf
swModel.EditRebuild3
End If
Next
End Sub
Jednak w moim przypadku nie generuję konfiguracji, ale chcę, aby jeden z komponentów przyjął taką samą nazwę konfiguracji jak zestaw, w którym się znajduje.
Potrzebuję makra, które, podobnie jak na poniższym zrzucie ekranu, konfiguruje komponent na podstawie konfiguracji zestawu.
Powinniśmy zamknąć się na treści zgromadzenia i nie polegać już na wyborze.
Z drugiej strony wymaga nieco więcej przetwarzania, aby sprawdzić, czy plik zawiera konfigurację oraz jakikolwiek inny konkretny przypadek związany z twoimi zestawami. Nieco bardziej złożone.
Jest też rejestrator makr (ograniczony, ponieważ nie zawsze korzysta z najnowszych funkcji API i robi tylko "prosty" kod) oraz fora Solidworks, które są kopalnią złota na te tematy (często jednak w języku angielskim).