Makro zum Konfigurieren einer Komponente

Hallo, ich bin auf der Suche nach einem Makro, mit dem ich einen ausgewählten Raum konfigurieren kann.

Dies ist eine Operation, die  wir sehr oft durchführen  und die uns Zeit kostet.

Meine Baugruppe und mein Teil haben die gleichen Konfigurationsnamen (01,02,03,04...).

Ich möchte, dass das Makro meine Komponente so konfiguriert, dass ihre Konfigurationen mit denen der  Baugruppe übereinstimmen.

Vielen Dank.

Hallo

Normalerweise sollte der folgende Code die Anforderung erfüllen.

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,

Vielen Dank, Ihr Code funktioniert, aber nur auf der aktiven Konfiguration.

Es fehlt noch eine Kleinigkeit, um alle Konfigurationen der Baugruppe zu sweepen, denke ich.

Haben Sie eine Idee?

Vielen Dank.

Abhängig von der Anzahl der zu generierenden Konfigurationen ist nicht unbedingt ein Makro erforderlich.
Wählen Sie im Fenster zum Öffnen der Baugruppendatei die ASM aus, klicken Sie auf "Konfiguration" und wählen Sie "Erweitert"

öffnet sich ein neues Fenster:

Letzte Wahl verwenden

2 „Gefällt mir“

Versuchen

   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 „Gefällt mir“

Vielen Dank für diese Antwort.

Ich wusste nichts von dieser Option.

In meinem Fall generiere ich jedoch keine Konfiguration, aber ich möchte, dass eine der Komponenten den gleichen Konfigurationsnamen wie die Assembly hat, in der sie sich befindet.

Ich benötige ein Makro, das wie im Screenshot unten die Komponente basierend auf den Konfigurationen der Assembly konfiguriert.

Ich weiß nicht, ob ich das klar bin.

Vielen Dank auf jeden Fall.


capture.png

FURCHTERREGENDER CYRILL, 

Es funktioniert perfekt.

Ein großes Dankeschön an dich und Stef.

1 „Gefällt mir“

Und um mit einer hohen Note abzuschließen, gibt es eine Lösung, um es durch die Auswahl mehrerer Teile zum Laufen zu bringen?

Vielen Dank

Hallo

Wir sollten uns auf den Inhalt der Versammlung beschränken und uns nicht mehr auf die Auswahl verlassen.

Auf der anderen Seite ist etwas mehr Verarbeitung erforderlich, um zu überprüfen, ob die Datei eine Konfiguration sowie andere spezielle Fälle im Zusammenhang mit Ihren Assemblys enthält. Etwas komplexer.

Okay, Ihre Methode funktioniert bereits sehr gut,  wir danken Ihnen herzlich. Du hast uns wertvolle Zeit gespart und ich werde dein  Makro studieren , um weitere zu erstellen.

Gibt es ein richtiges Tutorial?

Hallo

Das einzige "Tutorial" ist die Online-Hilfe der API.

Dann gibt es noch den Makro-Recorder (eingeschränkt, weil er nicht immer die neuesten API-Funktionen verwendet und nur "einfachen" Code macht) und die Solidworks-Foren, die zu diesen Themen eine Goldgrube sind (allerdings oft auf Englisch).