Normalement le code ci-dessous doit répondre au besoin.
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
Selon le nombre de configuration à générer, il n'y a pas forcément besoin d'une macro. Dans la fenêtre d'ouverture de fichier d'assemblage, choisir l'asm, cliquer sur "Configuration", choisir "avancé"
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
Toutefois, dans mon cas, je ne génère pas de configuration, mais je veux qu'un des composant prenne le meme nom de configuration que l'assemblage dans lequel il se trouve.
J'ai besoin d'une macro qui, comme la capture ci dessous, configure le composant en fonction des configurations de l'assemblage.
Il faudrait boucler sur le contenu de l'assemblage et ne plus se baser sur la sélection.
Par contre ça demande un peu plus de traitement pour vérifier si le fichier contient une configuration plus tout autre cas de figure particulier lié à vos assemblages. Un poil plus complexe.
D'accord, votre methode marche déjà très bien, nous vous remercions beaucoup. Vous nous avez fait gagner un temps précieux et je vais étudier votre macro afin d'en réaliser d'autres.
Y'a t'il d'ailleurs un didacticiel correct à disposition ?
Le seul "didacticiel" c'est l'aide en ligne de l'API.
Après reste l'enregistreur de macro (limité car il n'utilise pas toujours les dernières fonctions de l'API et ne fait que du code "simple") et les forums Solidworks qui sont une mine d'or sur ces sujets (souvent en anglais par contre).