Umbenennen von Teilen in einer Baugruppe basierend auf einer aktiven Variablen

Hallo 

Ich müsste alle Teile meiner Baugruppen, die aus Holz bestehen, umbenennen. Für diesen Teil ist es meiner Meinung nach nicht allzu viel Aufwand, da Holz sehr spezifische Eigenschaften erzeugt, die die Hardware von den anderen unterscheiden. 

Welche Lösung würden Sie empfehlen? Die Idee ist, die Assembly mit einem Namen wie XXXXXX-XXXX zu haben, deren letzte vier Zahlen Zahlen sind. 

Dieser Zähler wird für jede Holzplatte, die Teil der Baugruppe ist, inkrementiert. 

Ist ProjectManager für diese Art von Anforderung geeignet oder muss ich dafür ein Makro entwickeln? 

Vielen Dank im Voraus an euch alle:) 

Schönen Tag! 

Vincent 


capture.png

Mit dem ProjectManager sollte dies machbar sein.

Erstellen Sie eine Regel, die die letzten 4 Zeichen durch die gewünschten Zeichen mit der Bedingung ersetzt, wenn das Material = Holzeigenschaft ist

Und für den Wert setzen Sie einen automatischen Smartcounter-Zähler oder ähnliches.

Alles, was Sie tun müssen, ist, einen Test zu machen, und es sollte Ihnen gut gehen!

 

Ansonsten ist es auch mit smartbom + Integration machbar

Smartbom zum Abrufen einer Liste von CSV-Dateien mit Holzbesitz

Dann Integration, um die Namensänderung mit einem inkrementierten Zähler vorzunehmen

2 „Gefällt mir“

Vielen Dank für Ihre Antwort, 

Ich habe es effektiv getestet, ich schaffe es, den Namen meiner verschiedenen Panels entsprechend dem Namen des Elternteils zu erhöhen. 

Auf der anderen Seite wird der Zähler nicht mit jeder verarbeiteten Baugruppe auf Null zurückgesetzt, glauben Sie, dass dies möglich ist? 

Zweite Bemerkung, wenn ich eine Baugruppe bearbeite, befindet sie sich jedes Mal in einem Ordner, der (Plan, Baugruppendatei und Teiledateien) enthält. Ich möchte nicht jedes Mal den Zielordner angeben müssen, sondern dass die Datei der Assembly verwendet wird, die zu diesem Zeitpunkt verarbeitet wird. 

Vielen Dank im Voraus für Ihre Antworten, 

Herzliche Grüße

Vincent

Ich habe mit einer schnellen Suche nicht gefunden, wie ich einen Zähler für jedes Projekt zurücksetzen kann , wenn @jmsavoyat  durchgehst, wird er uns sagen, ob es machbar ist. (Ich glaube, ich habe ein Thema dazu gesehen, aber ich kann es nicht mehr finden)

1 „Gefällt mir“

Hallo

Ich denke, Sie können mit erweiterten Zählern davonkommen, indem Sie einen "Auto-Zähler" verwenden, der basierend auf einer Variablen zurückgesetzt wird . Siehe https://help.visiativ.com/mycadtools/2021/fr/SmartCounter4.html

Herzliche Grüße

3 „Gefällt mir“

Hallo 

Schließlich füge ich Bedingungen zum Umbenennen von Teilen hinzu, die auf einer Konfigurationseigenschaft basieren, die von SWOOD erstellt wird. 

Ich habe ein Makro skizziert, aber ich habe Schwierigkeiten, richtig zu verstehen, wie der Dialog mit SolidWorks funktioniert. 

Ich schaffe es, all die verschiedenen Kinder zu bekommen, die meine Gemeinde hat. 

Jetzt möchte ich erfolgreich verifizieren, dass eine Eigenschaft schön ist und in jedem von ihnen existiert, wenn ja, benenne ich sie um, wenn nicht, gehe ich zur nächsten über. 

Kannst du mir helfen? Ich poste den Anfang meines Codes. 

Vielen Dank im Voraus, einen schönen Tag. 

 

Dimmen swApp als Objekt
Explizite Option

Sub main()

Dim swApp als SldWorks.SldWorks
Dim swModel As ModelDoc2
Dim swAssy As ModelDoc2
Dim swModelDocExt als ModelDocExtension
Dim swCustProp As CustomPropertyManager
Dim val As String
Dim valout As String
Dim bool als boolescher Wert
Dim Wood As String
dim name() als String
Dim-Liste als Zeichenfolge
Dim retval() als Zeichenkette
Text als Zeichenfolge dimmen

Legen Sie swApp = Application.SldWorks fest
Festlegen von swModel = swApp.ActiveDoc
Legen Sie swModelDocExt = swModel.Extension fest

Wenn swModel.GetType = swDocASSEMBLY dann

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

ReDim-Name(1 TB ((UBound(retval) - 1) / 2) + 1)
Für i = 0 TB (UBound(retval) - 1) / 2

    Legen Sie swModelDocExt = swModel.Extension fest
    Set swCustProp = swModelDocExt.CustomPropertyManager("")
    bool = swCustProp.Get4("SWOODCP_PanelStockLength", True, val, valout)
Debug.Print "Wert:                    " & Wert   
Debug.Print "Ausgewerteter Wert:          " & Valout   
Debug.Print "Aktuelle Daten:          " & bool   
    text = text & retval(2 * i) & vbCr


Weiter i
Ende, wenn
MsgBox (Text)

Ende Sub