De naam van onderdelen in een assemblage wijzigen op basis van een actieve variabele

Hallo 

Ik zou alle onderdelen van mijn assemblages die van hout zijn gemaakt, een andere naam moeten geven. Voor dit deel niet al te veel moeite denk ik, want swood creëert zeer specifieke eigenschappen die de hardware onderscheiden van de rest. 

Welke oplossing zou u aanbevelen? Het idee is om de assemblage te hebben die een naam als XXXXXX-XXXX zou hebben, waarvan de laatste vier cijfers getallen zijn. 

Deze teller wordt verhoogd voor elk houten paneel dat deel uitmaakt van de montage. 

Is ProjectManager geschikt voor dit soort verzoeken of moet ik daarvoor een macro ontwikkelen? 

Dank u bij voorbaat aan u allen:) 

Fijne dag! 

Vincent 


capture.png

Met ProjectManager moet dit haalbaar zijn.

Maak een regel die de laatste 4 tekens vervangt door de tekens die u wilt met de voorwaarde als het materiaal = hout eigenschap

En voor de waarde zet je een automatische smartcounter-teller of iets dergelijks.

Het enige wat je hoeft te doen is een test te doen en het zou goed moeten komen!

 

Anders is het ook goed te doen met smartbom + Integratie

Smartbom om een lijst met csv-bestanden op te halen die eigendom zijn van hout

Vervolgens integratie om de naamswijziging door te voeren met een oplopende teller

2 likes

Dank u voor uw antwoord, 

Ik heb het effectief getest, ik slaag erin om de naam van mijn verschillende panelen te verhogen volgens de naam van de ouder. 

Aan de andere kant wordt de teller niet bij elke verwerkte assemblage op nul gezet, denkt u dat het mogelijk is om dit te doen? 

Tweede opmerking, als ik een assemblage verwerk zit deze elke keer in een map die (plan, assemblagebestand en onderdelenbestanden) bevat. Ik zou graag niet elke keer de bestemmingsmap willen aangeven, maar dat het bestand van de op dat moment verwerkte assemblage nodig is. 

Bij voorbaat dank voor uw antwoorden, 

Vriendelijke groeten

Vincent

Ik heb met een snelle zoekopdracht niet gevonden hoe ik een teller op elk project kan resetten, als @jmsavoyat  er doorheen gaat, zal het ons vertellen of het haalbaar is. (Ik denk dat ik er een onderwerp over heb gezien, maar ik kan het niet meer vinden)

1 like

Hallo

Ik denk dat je weg kunt komen met geavanceerde tellers door een "Auto Counter" te gebruiken die wordt  gereset op basis van een variabele. Zie https://help.visiativ.com/mycadtools/2021/fr/SmartCounter4.html

Vriendelijke groeten

3 likes

Hallo 

Tot slot voeg ik voorwaarden toe aan het hernoemen van onderdelen op basis van een configuratie-eigenschap die SWOOD maakt. 

Ik heb een macro geschetst, maar ik heb moeite om goed te begrijpen hoe de dialoog met solidworks werkt. 

Het lukt me om alle verschillende kinderen te krijgen die mijn gemeente heeft. 

Nu zou ik er graag in willen slagen om te verifiëren dat een eigenschap mooi is en in elk van hen bestaat, zo ja, dan hernoem ik het, zo niet, dan ga ik verder met de volgende. 

Kun je me helpen? Ik post het begin van mijn code. 

Bij voorbaat dank, een fijne dag verder. 

 

Dim swApp als object
Expliciete optie

Sub hoofd()

Dim swApp als SldWorks.SldWorks
Dim swModel als ModelDoc2
Dim swAssy Als ModelDoc2
Dim swModelDocExt als ModelDocExtension
Dim swCustProp als CustomPropertyManager
Dim val als snaar
Dim valout als snaar
Dim bool als Booleaanse
Dim hout als snaar
dim name() als tekenreeks
Dimlijst als tekenreeks
Dim retval() Als String
Dim tekst als tekenreeks

Stel swApp = Toepassing.SldWorks in
Stel swModel = swApp.ActiveDoc in
Stel swModelDocExt = swModel.Extension in

Als swModel.GetType = swDocASSEMBLY Dan

retval = swModel.GetDependencies2(Onwaar, Onwaar, Onwaar)

ReDim naam(1 TB ((UBound(retval) - 1) / 2) + 1)
Voor i = 0 TB (UBound(retval) - 1) / 2

    Stel swModelDocExt = swModel.Extension in
    Set swCustProp = swModelDocExt.CustomPropertyManager("")
    bool = swCustProp.Get4("SWOODCP_PanelStockLength", True, val, valout)
Debug.Print "Waarde:                    " & val   
Debug.Print "Geëvalueerde waarde:          " & valout   
Debug.Print "Up-to-date data:          " & bool   
    text = tekst & retval(2 * i) & vbCr


volgende i
Einde als
MsgBox (tekst)

Einde Sub