VBA-Makro in der Zeichnung - wie man den Namen der Referenzteilkonfiguration erhält

Hallo

Ich möchte den Namen der Konfiguration des Teils abrufen, das als Referenz in einer Zeichnung verwendet wird.

Hier ist der Codeausschnitt, den ich derzeit habe:
 

Wir aktivieren das Arbeitsdokument
Legen Sie swApp = Application.SldWorks fest
Set Part = swApp.ActiveDoc
Set FileSys = CreateObject("Scripting.FileSystemObject")

Ruft den vollständigen Pfad des aktuellen Dokuments ab, einschließlich des Dateinamens.
Pfadname = Teil.GetPfadName
Ruft den Pfad zum aktuellen Dokument ohne den Dateinamen ab:
FilePath = Links(Pfadname, InStrRev(Pfadname, "\"))
Ruft den Dateinamen ab:
Dateiname = Rechts(Pfadname, Len(Pfadname) - InStrRev(Pfadname, "\"))
typedoc = Recht(Dateiname, 3)

Case Typedoc auswählen
Feld "drw", "DRW"
    
Set swview = Part.GetFirstView
Setze swview = swview. GetNextView 'aktiviert/ruft die erste Ansicht für benutzerdefinierte Eigenschaften ab
Legen Sie swRefDoc = swview fest. ReferencedDocument ' Wir haben jetzt swRefDoc das 3D der Zeichnung
               
Wir rufen die Eigenschaften der Konfiguration des Referenzteils oder der Baugruppe ab
configNames = swRefDoc.GetConfigurationNames
vConfigNameArr = swRefDoc.GetConfigurationNames

Für jeden vConfigName in vConfigNameArr
Debug.Print vConfigName
vCustInfoNameArr = swRefDoc.GetCustomInfoNames2(vConfigName)

 

außer dass ich in "configNames" alle Konfigurationen des Teils bekomme, während ich nur die Konfiguration des Teils in der Zeichnung verwenden möchte und dann in der Lage wäre, meine For Each-Schleife zu löschen.

Vielen Dank für Ihre Hilfe, ich bin sicher, dass es für Sie falsch ist.

und für ein Teil oder eine Baugruppe möchte ich, dass der Wert einer bestimmten Eigenschaft (z. B. Engineering PartNumber) nur in den "Konfigurationseigenschaften" für die Konfiguration des aktiven Teils vorhanden ist.


prop.png

Für die aktive Konfiguration:

https://help.solidworks.com/2020/english/api/sldworksapi/Get_List_Of_Configurations_Example_VB.htm?verRedirect=1

Für benutzerdefinierte Eigenschaften im Zusammenhang mit der Konfiguration:

https://help.solidworks.com/2020/English/api/sldworksapi/Get_Custom_Properties_for_Configuration_Example_VB.htm?verRedirect=1

Hallo;

Es ist ganz einfach;

    Dim swConfigMgr                 As SldWorks.ConfigurationManager
    Dim swConfig                    als SldWorks.Configuration
....
Set swConfig = swConfigMgr.ActiveConfiguration ' Konfiguration Aktiv
stnameConfig = swConfig.Name 'Name der aktiven Konfiguration

Grüße.

1 „Gefällt mir“

Hallo Maclane,

Das habe ich eingefügt, aber es funktioniert nicht.

No_article = Part.GetCustomInfoValue("Default", "Engineering PartNumber") --> es funktioniert

No_article = Part.GetCustomInfoValue(swConfig, "Engineering PartNumber") --> es funktioniert nicht (Laufzeitfehler 13, Typkonflikt)

Vielen Dank für Ihr Feedback

Hallo;

Versuchen Sie es mit:

Dim swCustProp als Variante
....
 Festlegen von swCustProp = swModel.Extension.CustomPropertyManager(swConfig)
No_article = swCustProp.Get4("Engineering PartNumber", False, valout)
No_article = valout 'mit dim No_article als Zeichenkette

Herzliche Grüße

1 „Gefällt mir“

Hallo Pierre,

In der letzten Zeile Ihrer vorherigen Nachricht verweist die Variable swConfig auf ein iConfiguration-Objekt (in diesem Fall ist swconfig die aktuelle Konfiguration), nicht auf die Zeichenfolge, die den Namen enthält, daher Fehler 13.
Dies ist wahrscheinlich swConfig.Name ist die zu verwendende Zeichenkette (von Maclane auch stnameConfig genannt).

Herzliche Grüße

1 „Gefällt mir“

Vielen Dank an Sie beide, Maclane & m.blt.
Ich wusste, dass es etwas Falsches war... Aber nicht einfach für mich.