Cześć wszystkim
Chciałbym utworzyć makro do przetwarzania istniejących części:
Te części mają już jedną (lub więcej) konfigurację.
Chciałbym pobrać właściwość niestandardową " Kod artykułu " z konfiguracji " 00 ".
Następnie pobierz tylko pierwsze 11 znaków i dodaj sufiks.
Ten nowy " Kod artykułu " pozwoli Ci wypełnić konfiguracje, które są tworzone w pozostałej części makra. Ta część jest już wykonana.
Zasadniczo moje makro powinno aktywować konfigurację " 00 " w następujący sposób:
''' Activation de la config 00
boolstatus = swModel.ShowConfiguration2("00")
Następnie pobierz wartość właściwości " Kod artykułu " i za pomocą LEFT pobierz pierwsze 11 znaków w zmiennej, którą mogłem przypisać do innych konfiguracji.
Próbowałem tego polecenia, ale zawiera błędy:
''' Récupération de la propriété Code Article existante
lRetVal = swCustProp.Get6("Code Article", False, ValOut, CodArt00, False, False)
Czy masz trop?
Dziękuję
Witam;
Prowadzi tutaj...
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
Trudno jest Ci odpowiedzieć, nie widząc więcej Twojego kodu... Ale wygląda na to, że twoim błędem jest:
lRetVal = swCustProp.Get6("Code Article", False, ValOut, **CodArt00**, False, False)
essayez avec:
lRetVal = swCustProp.Get6("Code Article", False, ValOut,ResolvedValOut, False, False)
Pozdrowienia.
4 polubienia
Witam
Idę w kierunku @Maclane i jeśli linie są z makra zainicjowanego w tym temacie ( Mnożenie makr - Makro - myCAD Forum (visiativ.com)), to trzeba poszukać w deklaracjach zmiennych czy nie ma problemu.
W ten sam sposób Get nie działa, jeśli właściwość, której szukasz, nie istnieje (w tym przypadku musisz dodać sprawdzenie istnienia i utworzyć je w razie potrzeby)
3 polubienia
Dziękuję wam obojgu.
Stworzyłem kod testowy, który działa.
Zamierzam więc zintegrować go z moim makrem, aby informował o moich konfiguracjach RAL.
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 polubienia