Macro pour configurer un composant

Bonjour, je cherche une macro me permettant de configurer une pièce selectionnée.

C'est une opération que  nous effectuons  tres souvent et qui nous prend du temps.

Mon assemblage et ma pièce ont les même noms de configurations (01,02,03,04...).

Je voudrais que la macro configure mon composant de façon à ce que ses configurations correspondent à celles de  l'assemblage.

Merci beaucoup.

Bonjour,

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

 

Bonjour Cyril,

merci beaucoup, votre code fonctionne, mais uniquement sur la configuration active.

Il manque un petit quelquechose pour balayer toutes les configurations de l'assemblage je pense.

Avez vous une idée ?

Merci beaucoup.

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é"

, une nouvelle fenêtre s'ouvre :

utiliser le dernier choix

2 « J'aime »

A tester

   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

 

2 « J'aime »

Merci pour cette réponse.

Je ne connaisssais pas cette option.

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.

Je ne sais pas si je suis clair.

Merci beaucoup en tous cas.


capture.png

FORMIDABLE CYRIL, 

ça marche parfaitement.

Un grand merci à toi ainsi qu'à Stef.

1 « J'aime »

Et pour finir en beauté, est ce que il y a une solution pour que cela fonction en selectionnant plusieurs pièces ?

Merci

Bonjour,

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 ?

Bonjour,

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).