Macro om een component te configureren

Hallo, ik ben op zoek naar een macro waarmee ik een geselecteerde kamer kan configureren.

Dit is een operatie die  we heel vaak doen  en waar we tijd voor nodig hebben.

Mijn assemblage en mijn onderdeel hebben dezelfde configuratienamen (01,02,03,04...).

Ik wil graag dat de macro mijn component zo configureert dat de configuraties overeenkomen met die van  de assembly.

Hartelijk dank.

Hallo

Normaal gesproken zou de onderstaande code aan de behoefte moeten voldoen.

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

 

Hallo Cyril,

Heel erg bedankt, je code werkt, maar alleen op de actieve configuratie.

Er ontbreekt iets om alle configuraties van de assemblage te vegen, denk ik.

Heb je een idee?

Hartelijk dank.

Afhankelijk van het aantal configuraties dat moet worden gegenereerd, is er niet per se een macro nodig.
In het venster om het assemblagebestand te openen, kiest u de asm, klikt u op "Configuratie", kiest u "geavanceerd"

, wordt een nieuw venster geopend:

Laatste keuze gebruiken

2 likes

Om te proberen

   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 likes

Dank u voor dit antwoord.

Ik wist niets van deze optie.

In mijn geval genereer ik echter geen configuratie, maar wil ik dat een van de componenten dezelfde configuratienaam heeft als de assemblage waarin deze zich bevindt.

Ik heb een macro nodig die, zoals de onderstaande schermafbeelding, het onderdeel configureert op basis van de configuraties van de assembly.

Ik weet niet of ik duidelijk ben.

Heel erg bedankt in ieder geval.


capture.png

FORMIDABELE CYRILLUS, 

Het werkt perfect.

Een grote dank aan jou en Stef.

1 like

En om op een hoge noot te eindigen, is er een oplossing om het te laten werken door verschillende stukken te selecteren?

Bedankt

Hallo

We moeten ons afsluiten bij de inhoud van de vergadering en niet langer vertrouwen op de selectie.

Aan de andere kant vereist het iets meer verwerking om te controleren of het bestand een configuratie bevat plus een ander specifiek geval met betrekking tot uw assemblages. Een beetje complexer.

Oké, je methode werkt al heel goed,  we danken je hartelijk. Je hebt ons kostbare tijd bespaard en ik zal je  macro bestuderen  om anderen te maken.

Is er een goede tutorial beschikbaar?

Hallo

De enige "tutorial" is de online hulp van de API.

Dan is er nog de macrorecorder (beperkt omdat hij niet altijd de nieuwste API-functies gebruikt en alleen "eenvoudige" code doet) en de Solidworks-forums die een goudmijn zijn over deze onderwerpen (vaak wel in het Engels).