Aangepaste VBA-eigenschappen: maken en invullen

Hallo

Ik werk aan een macro en wil graag eenvoudig een aangepaste eigenschap kunnen maken en schrijven.

Ik heb bedacht hoe ik het moet doen voor configuratiespecifieke eigenschappen, maar ik kon het niet vinden voor aangepaste eigenschappen.
Bedankt voor je hulp, ik weet zeker dat het heel eenvoudig voor je is!

Als het iemand kan helpen met de rest...

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

 

Ik heb ontdekt dat de volgende functie u in staat stelt om de waarde in de bijbehorende aangepaste eigenschap te plaatsen...

"Ma_Variable_Value") = Ma_variable

... als deze aangepaste eigenschap bestaat

Maar hoe kunnen we het eerder creëren, als het geen basis bestaat

Hallo

Hieronder vindt u een macro die aangepaste eigenschappen maakt voor het bestand en voor de configuraties (gepompt vanuit SW en door ons aangepast gezien de opmerkingen):

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

' Postconditions: De custom eigenschap Input1 wordt toegevoegd aan het bestand.

' OPMERKING: Omdat configuraties niet worden ondersteund in tekeningen, geeft u een lege tekenreeks door wanneer het bestand een tekening is.

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

 

Dim swApp       als SldWorks.SldWorks

Dim swModel     als SldWorks.ModelDoc2

Dim retval      als snaar

   Dim vConfigNameArr              als variant

    Dim vConfigName                 als variant

    Dim swActiveConf                als SldWorks.Configuration

    Dim swConf                      als SldWorks.Configuration

    Dim swConfMgr                   als SldWorks.ConfigurationManager

    Dim swDerivConf                 As SldWorks.Configuration

    Dim bRet                        als Booleaanse

Sub hoofd()
Stel swApp = Toepassing.SldWorks in

Stel swModel = swApp.ActiveDoc in

    Stel swConfMgr = swModel.ConfigurationManager in

     Stel swConfig = swConfMgr.ActiveConfiguration in

        vConfigNameArr = swModel.GetConfigurationNames

retval = swModel.AddCustomInfo3("", "IsFastener", swCustomInfoYesOrNo, "Nee")
retval = swModel.AddCustomInfo3("", "Bibliotheek", swCustomInfoYesOrNo, "Nee")
retval = swModel.AddCustomInfo3("", "Piece_standard", swCustomInfoYesOrNo, "Nee")
retval = swModel.AddCustomInfo3("", "Spare", swCustomInfoText, "-")
retval = swModel.AddCustomInfo3("", "Coördinatensysteem", swCustomInfoText, "0")
retval = swModel.AddCustomInfo3("", "Repère_soudure", swCustomInfoText, "-")
retval = swModel.AddCustomInfo3("", "Revisie", swCustomInfoText, "-")

    vConfigNameArr = swModel.GetConfigurationNames

 Voor elke vConfigName in vConfigNameArr

        Stel swConf = swModel.GetConfigurationByName(vConfigName) in

                ' Beweer niet; zal NULL zijn als er al een (afgeleide) configuratie bestaat

retval = swModel.AddCustomInfo3(swConf.Name, "Numero_plan", swCustomInfoText, "$PRPSHEET:""SW-bestandsnaam(Bestandsnaam)""")
retval = swModel.AddCustomInfo3(swConf.Name, "Description_Francais", swCustomInfoText, "-")
retval = swModel.AddCustomInfo3(swConf.Name, "Description_Francais_2", swCustomInfoText, "-")
retval = swModel.AddCustomInfo3(swConf.Name, "Observatie", swCustomInfoText, "-")
retval = swModel.AddCustomInfo3(swConf.Name, "Gewicht", swCustomInfoText, """SW-Mass@@Défaut@ModelDoc2.SLDPRT""")
retval = swModel.AddCustomInfo3(swConf.Name, "Materiaal", swCustomInfoText, """SW-Material@@Défaut@ModelDoc2.SLDPRT""")
retval = swModel.AddCustomInfo3(swConf.Name, "CREATIONAUTO", swCustomInfoText, "NEE")
     

    Volgend

MsgBox retval

Einde Sub

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

 

 

1 like

Geweldig, heel erg bedankt, het is interessant

het werkt, maar ik begrijp niet waarom je de functie create a custom property in een variabele als Boolean moet zetten.

Dim waarde As System.Boolean
 
waarde = instantie. AddCustomInfo3(Configuratie, VeldNaam, VeldType, VeldWaarde)