Eigenschap voor het wijzigen van de naam van macro's

Hallo allemaal

Ik wil graag een macro maken om bestaande onderdelen te verwerken:

Deze onderdelen hebben al één (of meerdere) configuratie(s).
Ik wil graag de aangepaste eigenschap " Artikelcode " ophalen uit de configuratie " 00 ".
Haal dan alleen de eerste 11 tekens op en voeg een achtervoegsel toe.

Deze nieuwe " Artikelcode " stelt u in staat om configuraties in te vullen die in de rest van de macro zijn gemaakt. Dit deel is al gedaan.

Kortom, mijn macro zou de " 00 " -configuratie als volgt moeten activeren:

    ''' Activation de la config 00
    boolstatus = swModel.ShowConfiguration2("00")

Haal dan de waarde van de eigenschap " Artikelcode " op en haal met een LINKS de eerste 11 tekens op in een variabele die ik zou kunnen toewijzen voor de andere configuraties.

Ik heb deze opdracht geprobeerd, maar het bugt:

    ''' Récupération de la propriété Code Article existante
    lRetVal = swCustProp.Get6("Code Article", False, ValOut, CodArt00, False, False)

Heb je een voorsprong?

Bedankt

Hallo;

Leidt hierheen...
https://help.solidworks.com/2022/English/api/sldworksapi/Get_Custom_Properties_Example_VB.htm?verRedirect=1
https://help.solidworks.com/2022/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.icustompropertymanager~get6.html

https://help.solidworks.com/2022/english/api/sldworksapi/get_custom_properties_for_configuration_example_vb.htm

Het is moeilijk om je te antwoorden zonder meer van je code te zien... Maar het lijkt erop dat uw fout is:

lRetVal = swCustProp.Get6("Code Article", False, ValOut, **CodArt00**, False, False)
essayez avec:
lRetVal = swCustProp.Get6("Code Article", False, ValOut,ResolvedValOut, False, False)

Vriendelijke groeten.

4 likes

Hallo

Ik ga in de richting van @Maclane en als de regels afkomstig zijn van de macro die in dit onderwerp is geïnitieerd ( Macrovermenigvuldiging - Macro - myCAD Forum (visiativ.com)), moet je in de variabele declaraties kijken als er geen probleem is.
Op dezelfde manier werkt Get niet als de eigenschap die u zoekt niet bestaat (u moet in dit geval een bestaanscontrole toevoegen en deze indien nodig maken)

3 likes

Dank u beiden.
Ik heb een testcode gemaakt die werkt.
Dus ik ga het in mijn macro integreren, zodat het mijn RAL-configuraties informeert.

Option Explicit
    Dim swApp                       As SldWorks.SldWorks
    Dim swModel                     As SldWorks.ModelDoc2
    Dim swConfigMgr                 As SldWorks.ConfigurationManager
    Dim swConfig                    As SldWorks.Configuration
    Dim vConfigNameArr              As Variant
    Dim stnameConfig                As String
    Dim boolstatus                  As Boolean
    Dim swModelDocExt               As ModelDocExtension
    Dim swCustProp                  As CustomPropertyManager
    Dim sValout                     As String
    Dim CodArt00                    As String
    Dim CodArtRAL                   As String
    Dim CodeArticle                 As String
    Dim lRetVal                     As String
    Dim ValOut                      As String

Type ConfigData
    confName                        As String
    CodArt00                        As String
    CodArtRAL                       As String
    
End Type


Sub main()

    Set swApp = Application.SldWorks
    
    Dim swModel As SldWorks.ModelDoc2
    
    ''' Récupération du document actif
    Set swModel = swApp.ActiveDoc
    Set swConfigMgr = swModel.ConfigurationManager
    
    ''' Récupération de la configuration active
    Set swConfig = swConfigMgr.ActiveConfiguration
    stnameConfig = swConfig.Name
    vConfigNameArr = swModel.GetConfigurationNames
    
    Set swModelDocExt = swModel.Extension

    Set swModelDocExt = swModel.Extension
    
    ''' Activation de la config 00
    boolstatus = swModel.ShowConfiguration2("00")
    
    stnameConfig = swConfig.Name
    
    Set swCustProp = swModelDocExt.CustomPropertyManager(stnameConfig)
    
    ''' Récupération de la propriété Code Article existante
    lRetVal = swCustProp.Get6("Code Article", False, ValOut, CodArt00, False, False)
    
    'Renvoie les onze premiers caractères du Code Article
    MsgBox Left(CodArt00, 11)
    
    ''' Ajout du Code Article RAL à partir des 11 caractères gauche du Code Article
    CodArtRAL = (Left(CodArt00, 11)) & "R6005"
    
    MsgBox (CodArtRAL)

   
End Sub
2 likes