Benutzerdefinierte VBA-Eigenschaften: Erstellen und Auffüllen

Hallo

Ich arbeite an einem Makro und möchte in der Lage sein, auf einfache Weise eine benutzerdefinierte Eigenschaft zu erstellen und zu schreiben.

Ich habe herausgefunden, wie es für konfigurationsspezifische Eigenschaften geht, aber ich konnte keine benutzerdefinierten Eigenschaften finden.
Vielen Dank für Ihre Hilfe, ich bin mir sicher, dass es für Sie ganz einfach ist!

Wenn es jemandem mit dem Rest helfen kann...

Sub Valid()

    Dim swApp As SldWorks.SldWorks
    Dim swModel As SldWorks.ModelDoc2
    Dim configNames()  As String
    Dim configName As String
    Dim swConfig As SldWorks.Configuration
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set FileSys = CreateObject("Scripting.FileSystemObject")

' Mettre la valeur de Ma_variable dans une propriété Ma_Variable_Value de chaque config
    configNames = swModel.GetConfigurationNames
    vConfigNameArr = swModel.GetConfigurationNames
    For Each vConfigName In vConfigNameArr
        vCustInfoNameArr = swModel.GetCustomInfoNames2(vConfigName)
        If Not IsEmpty(vCustInfoNameArr) Then
            'For Each vCustInfoName In vCustInfoNameArr
            
                swModel.CustomInfo2(vConfigName, "Ma_Variable_Value") = Ma_variable
                
            'Next
        End If
    Next
    
Exit Sub
    
End Sub

 

Ich habe festgestellt, dass die folgende Funktion es Ihnen ermöglicht, den Wert in die entsprechende benutzerdefinierte Eigenschaft zu setzen...

"Ma_Variable_Value") = Ma_variable

... Wenn diese benutzerdefinierte Eigenschaft vorhanden ist

Aber wie können wir es vorher schaffen, wenn es keine Grundlage gibt

Hallo

Unten sehen Sie ein Makro, das benutzerdefinierte Eigenschaften für die Datei und die Konfigurationen erstellt (aus SW gepumpt und von uns anhand der Kommentare angepasst):

' ----------------------------------------------

' Postconditions: Die benutzerdefinierte Eigenschaft Input1 wird der Datei hinzugefügt.

' HINWEIS: Da Konfigurationen in Zeichnungen nicht unterstützt werden, übergeben Sie eine leere Zeichenfolge, wenn es sich bei der Datei um eine Zeichnung handelt.

'------------------------------------------------

 

Dim swApp       als SldWorks.SldWorks

Dim swModel     As SldWorks.ModelDoc2

Dim retval      As String

   Dim vConfigNameArr              als Variante

    Dim vConfigName                 als Variante

    Dim swActiveConf                als SldWorks.Configuration

    Dim swConf                      als SldWorks.Configuration

    Dim swConfMgr                   As SldWorks.ConfigurationManager

    Dim swDerivConf                 als SldWorks.Configuration

    Dim bRet                        als boolescher Wert

Sub main()
Legen Sie swApp = Application.SldWorks fest

Festlegen von swModel = swApp.ActiveDoc

    Legen Sie swConfMgr = swModel.ConfigurationManager fest

     Legen Sie swConfig = swConfMgr.ActiveConfiguration fest

        vConfigNameArr = swModel.GetConfigurationNames

retval = swModel.AddCustomInfo3("", "IsFastener", swCustomInfoYesOrNo, "Nein")
retval = swModel.AddCustomInfo3("", "Bibliothek", swCustomInfoYesOrNo, "Nein")
retval = swModel.AddCustomInfo3("", "Piece_standard", swCustomInfoYesOrNo, "Nein")
retval = swModel.AddCustomInfo3("", "Spare", swCustomInfoText, "-")
retval = swModel.AddCustomInfo3("", "Koordinatensystem", swCustomInfoText, "0")
retval = swModel.AddCustomInfo3("", "Repère_soudure", swCustomInfoText, "-")
retval = swModel.AddCustomInfo3("", "Überarbeitung", swCustomInfoText, "-")

    vConfigNameArr = swModel.GetConfigurationNames

 Für jeden vConfigName in vConfigNameArr

        Legen Sie swConf = swModel.GetConfigurationByName(vConfigName) fest

                " Behaupten Sie nicht; ist NULL, wenn die (abgeleitete) Konfiguration bereits vorhanden ist

retval = swModel.AddCustomInfo3(swConf.Name, "Numero_plan", swCustomInfoText, "$PRPSHEET:""SW-Dateiname(Dateiname)""")
retval = swModel.AddCustomInfo3(swConf.Name, "Description_French", swCustomInfoText, "-")
retval = swModel.AddCustomInfo3(swConf.Name, "Description_French_2", swCustomInfoText, "-")
retval = swModel.AddCustomInfo3(swConf.Name, "Beobachtung", swCustomInfoText, "-")
retval = swModel.AddCustomInfo3(swConf.Name, "Gewicht", swCustomInfoText, """SW-Mass@@Défaut@ModelDoc2.SLDPRT""")
retval = swModel.AddCustomInfo3(swConf.Name, "Material", swCustomInfoText, """SW-Material@@Défaut@ModelDoc2.SLDPRT""")
retval = swModel.AddCustomInfo3(swConf.Name, "CREATIONAUTO", swCustomInfoText, "NEIN")
     

    Nächster

MsgBox retval

Ende Sub

' ----------------------------------------------

 

 

1 „Gefällt mir“

Super, vielen Dank, es ist interessant

Es funktioniert, aber ich verstehe nicht, warum Sie die Funktion zum Erstellen einer benutzerdefinierten Eigenschaft in eine Variable wie Boolean einfügen müssen.

Dim-Wert Als System.Boolean-Wert
 
= Instanz. AddCustomInfo3(Configuration, FieldName, FieldType, FieldValue)