VBA Macro in Tekening - hoe de naam van de configuratie van het referentieonderdeel te krijgen

Hallo

Ik wil graag de naam opvragen van de configuratie van het onderdeel dat als referentie in een tekening wordt gebruikt.

Hier is het codefragment dat ik momenteel heb:
 

We activeren het werkdocument
Stel swApp = Toepassing.SldWorks in
Deel instellen = swApp.ActiveDoc
Set FileSys = CreateObject("Scripting.FileSystemObject")

Hiermee haalt u het volledige pad van het huidige document op, inclusief de bestandsnaam
PathName = Deel.GetPathName
Hiermee haalt u het pad naar het huidige document op, zonder de bestandsnaam:
FilePath = Links(PathName, InStrRev(PathName, "\"))
Haalt de bestandsnaam op:
FileName = Right(PathName, Len(PathName) - InStrRev(PathName, "\"))
Typedoc = Rechts(Bestandsnaam, 3)

Selecteer Case Typedoc
Doos "drw", "DRW"
    
Stel swview in = Deel.GetFirstView
Stel swview = swview in. GetNextView 'activeert/haalt de eerste weergave voor aangepaste eigenschappen in
Stel swRefDoc = swview in. ReferencedDocument ' We hebben nu swRefDoc de 3D van de tekening
               
We halen de eigenschappen van de configuratie van het referentieonderdeel of de assemblage op
configNames = swRefDoc.GetConfigurationNames
vConfigNameArr = swRefDoc.GetConfigurationNames

Voor elke vConfigName in vConfigNameArr
Foutopsporing.Print vConfigName
vCustInfoNameArr = swRefDoc.GetCustomInfoNames2(vConfigName)

 

behalve dat ik in "configNames" alle configuraties van het onderdeel krijg, terwijl ik alleen de configuratie van het onderdeel zou willen dat in de tekening wordt gebruikt en dan in staat zou zijn om mijn For Each lus te verwijderen.

Bedankt voor je hulp, ik weet zeker dat het nep voor je is.

en voor een onderdeel of assemblage ben ik op zoek naar de waarde van een specifieke eigenschap (bijv. Engineering PartNumber) die alleen aanwezig is in de "configuratie-eigenschappen" voor de configuratie van het actieve onderdeel.


prop.png

Voor actieve configuratie:

https://help.solidworks.com/2020/english/api/sldworksapi/Get_List_Of_Configurations_Example_VB.htm?verRedirect=1

Voor aangepaste eigenschappen met betrekking tot configuratie:

https://help.solidworks.com/2020/English/api/sldworksapi/Get_Custom_Properties_for_Configuration_Example_VB.htm?verRedirect=1

Hallo;

Het is vrij eenvoudig;

    Dim swConfigMgr                 As SldWorks.ConfigurationManager
    Dim swConfig                    als SldWorks.Configuration
....
Set swConfig = swConfigMgr.ActiveConfiguration ' configuratie Actief
stnameConfig = swConfig.Name 'Actieve configuratienaam

Groetjes.

1 like

Hallo Maclane,

Dat is wat ik stel, maar het werkt niet.

No_article = Part.GetCustomInfoValue("Standaard", "Engineering PartNumber") --> het werkt

No_article = Part.GetCustomInfoValue(swConfig, "Engineering PartNumber") --> het werkt niet (Runtime Error 13, Type Mismatch)

Bedankt voor je feedback

Hallo;

Probeer het met:

Dim swCustProp als variant
....
 Stel swCustProp in = swModel.Extension.CustomPropertyManager(swConfig)
No_article = swCustProp.Get4("Engineering PartNumber", Onwaar, val, valout)
No_article = valout 'met dim No_article als string

Vriendelijke groeten

1 like

Hallo Pierre,

In de laatste regel van uw vorige bericht verwijst de variabele swConfig naar een iConfiguration-object (in dit geval is swconfig de huidige configuratie), niet naar de tekenreeks die de naam bevat, vandaar fout 13.
Dit is waarschijnlijk swConfig.Name is de string die je moet gebruiken (ook wel stnameConfig genoemd door Maclane).

Vriendelijke groeten

1 like

Dank aan jullie beiden, Maclane & m.blt.
Ik wist dat het iets neps was... maar niet gemakkelijk voor mij.