Właściwości niestandardowe VBA: tworzenie i wypełnianie

Witam

Pracuję nad makrem i chciałbym mieć możliwość łatwego tworzenia i pisania właściwości niestandardowych.

Wymyśliłem, jak to zrobić dla właściwości specyficznych dla konfiguracji, ale nie mogłem znaleźć dla właściwości niestandardowych.
Dziękuję za pomoc, jestem pewien, że to dla Ciebie bardzo proste!

Jeśli może to komuś pomóc z resztą...

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

 

Odkryłem, że poniższa funkcja pozwala umieścić wartość w odpowiedniej właściwości niestandardowej...

"Ma_Variable_Value") = Ma_variable

... jeśli ta właściwość niestandardowa istnieje

Ale jak możemy stworzyć ją wcześniej, jeśli nie istnieje żadna podstawa

Witam

Poniżej znajduje się makro, które tworzy niestandardowe właściwości na pliku i w konfiguracjach (pompowane z SW i dostosowywane przez nas na podstawie komentarzy):

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

' Postconditions: Właściwość niestandardowa Input1 jest dodawana do pliku.

' UWAGA: Ponieważ konfiguracje nie są obsługiwane na rysunkach, należy przekazać pusty ciąg, gdy plik jest rysunkiem.

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

 

Dim swApp       jako SldWorks.SldWorks

Dim swModel     As SldWorks.ModelDoc2

Dim retval      As String

   Dim vConfigNameArr              jako wariant

    Dim vConfigName                 jako wariant

    Dim swActiveConf                jako SldWorks.Configuration

    Dim swConf                      As SldWorks.Configuration

    Dim swConfMgr                   jako SldWorks.ConfigurationManager

    Dim swDerivConf                 As SldWorks.Configuration

    Dim bRet                        As Boolean

Sub main()
Ustaw swApp = Application.SldWorks

Ustaw swModel = swApp.ActiveDoc

    Ustaw swConfMgr = swModel.ConfigurationManager

     Ustaw swConfig = swConfMgr.ActiveConfiguration

        vConfigNameArr = swModel.GetConfigurationNames

retval = swModel.AddCustomInfo3("", "JestŁącznikiem", swCustomInfoTakOrNie, "Nie")
retval = swModel.AddCustomInfo3("", "Biblioteka", swCustomInfoYesOrNo, "Nie")
retval = swModel.AddCustomInfo3("", "Piece_standard", swCustomInfoYesOrNo, "Nie")
retval = swModel.AddCustomInfo3("", "Zapasowy", swCustomInfoText, "-")
retval = swModel.AddCustomInfo3("", "Układ współrzędnych", swCustomInfoText, "0")
retval = swModel.AddCustomInfo3("", "Repère_soudure", swCustomInfoText, "-")
retval = swModel.AddCustomInfo3("", "Wersja", swCustomInfoText, "-")

    vConfigNameArr = swModel.GetConfigurationNames

 Dla każdej nazwy vConfigName w vConfigNameArr

        Set swConf = swModel.GetConfigurationByName(vConfigName)

                ' Nie twierdz; będzie mieć wartość NULL, jeśli konfiguracja (pochodna) już istnieje

retval = swModel.AddCustomInfo3(swConf.Name, "Numero_plan", swCustomInfoText, "$PRPSHEET:""Nazwa pliku SW(Nazwa pliku)""")
retval = swModel.AddCustomInfo3(swConf.Name, "Description_Francais", swCustomInfoText, "-")
retval = swModel.AddCustomInfo3(swConf.Name, "Description_Francais_2", swCustomInfoText, "-")
retval = swModel.AddCustomInfo3(swConf.Name, "Obserwacja", swCustomInfoText, "-")
retval = swModel.AddCustomInfo3(swConf.Name, "Waga", swCustomInfoText, """SW-Mass@@Défaut@ModelDoc2.SLDPRT""")
retval = swModel.AddCustomInfo3(swConf.Name, "Materiał", swCustomInfoText, """SW-Material@@Défaut@ModelDoc2.SLDPRT""")
retval = swModel.AddCustomInfo3(swConf.Name, "CREATIONAUTO", swCustomInfoText, "NIE")
     

    Następny

Skrót MsgBox retval

Koniec subwoofera

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

 

 

1 polubienie

Świetnie, dziękuję bardzo, to interesujące

to działa, ale nie rozumiem, dlaczego musisz umieścić funkcję create a custom property w zmiennej takiej jak Boolean.

Dim value As System.Boolean
 
value = wystąpienie. AddCustomInfo3(Konfiguracja, NazwaPola, TypPola, WartośćPola)