Solidworks API: Teileeigenschaft hinzufügen und dann in der Zeichnung anzeigen

Hallo

Ich habe ein Makro, das eine "Nom_Modificateur" -Eigenschaft in einem Teil hinzufügt, Das Problem ist, dass, wenn ich mein Layout öffne (immer noch im Makro), sich der Hintergrund nicht ändert, ich gezwungen bin, den Hintergrundplan zu bearbeiten, dann den Block zu explodieren und das von mir angegebene erscheint. Um zu wissen, ob ich den Block von Anfang an geplatzt habe, funktioniert das Makro einwandfrei. Aber ich möchte den Block nicht brechen, weil ich ein anderes Makro habe, das auch Sauberkeit schreibt, das sich in der Cartridge befindet und das funktioniert, während der Code identisch ist.

Hier ist der Code:

Set Part = swApp.OpenDoc6(Datei, 1, 0, "", longstatus, longwarnings)
    Legen Sie swApp = Application.SldWorks fest
    "Wir erhalten das aktive Dokument
    Festlegen von swModel = swApp.ActiveDoc

swCustPropMgr.Add3 "Type_Validation", swCustomInfoText, "", 2
swCustPropMgr.Add3 "Date_Validation", swCustomInfoText, "", 2
swCustPropMgr.Add3 "Index", swCustomInfoText-Zeichenfolge, 2
Wenn string = "02" Dann
swCustPropMgr.Add3 "Raison_Modification_A02", swCustomInfoText, Grund, 2
swCustPropMgr.Add3 "Nom_Modificateur_A02", swCustomInfoText, Nom_Modif, 2
ElseIf string = "03" Dann
swCustPropMgr.Add3 "Raison_Modification_A03", swCustomInfoText, Ursache, 2
swCustPropMgr.Add3 "Nom_Modificateur_A03", swCustomInfoText, Nom_Modif, 2
ElseIf string = "04" Dann
swCustPropMgr.Add3 "Raison_Modification_A04", swCustomInfoText, Grund, 2
swCustPropMgr.Add3 "Nom_Modificateur_A04", swCustomInfoText, Nom_Modif, 2
Ende, wenn

swApp.CloseDoc Dateiname

Vielen Dank 

Hallo

 

Es ist kompliziert, mit so wenig Nachgiebigkeit zu arbeiten, können Sie den Code Ihres anderen Makros einfügen? Wenn Sie die andere starten, befinden Sie sich bereits in der Zeichnung, oder öffnet sich auch ein Dokument?

Hallo

Bearbeiten Sie einfach den Hintergrund, lösen Sie dann den Block auf, und speichern Sie die Grundkartenvorlage erneut als Block und standardmäßig für die Bearbeitung gesperrt.

2 „Gefällt mir“

Vielen Dank für Ihre Antwort,

Ich lege das vollständige Makro auf Sie, ich führe es von einer Assembly aus >

- Sie müssen eine Komponente aus dem Komponentenbaum auswählen und dann das Makro starten

(Ich weiß, dass das Makro nicht optimiert ist, aber bevor ich es optimiere, versuche ich, alles zum Laufen zu bringen)

 


3_prise_dindice.swp

Ich habe mehrere .slddrt-Planformate (A4H, A4V, A3H...) Alle diese Formate haben einen Blocklink zu einer Blockdatei, um alles zu definieren, was im Schriftfeld (.sldblk-Datei) enthalten sein soll. Wenn ich ein Element hinzufügen möchte, füge ich es der sldblk-Datei hinzu und alle meine Formate werden geändert. Es ist besser als das Bearbeiten aller Planformate (ich bin 30)

Wenn meine Grundkarte also einen aufgelösten Block enthält, verliere ich dann die Verknüpfung?

Ja, Sie verlieren die Verbindung, weil sie zerbrochen wird.

Hallo

Muss man den Block wirklich aufbrechen, damit die Änderungen berücksichtigt werden oder reicht eine einfache Rekonstruktion?

Zu Ihrer Information, die Änderungen, die durch Makros vorgenommen werden, erfordern oft eine Rekonstruktion , um berücksichtigt zu werden, es ist das berühmte STRG + Q, das ein bisschen ein Reflex ist.

Herzliche Grüße

1 „Gefällt mir“

d.roger, Der Wiederaufbau tut nichts

Das Makro kann nicht mit dem Block arbeiten, da der Block schreibgeschützt ist, es sei denn, Sie fügen dem Modifizierernamen direkt ein Feld hinzu und fügen eine Eigenschaft des Teils ein.

Das ist genau das, was ich mache, ich füge meiner 3D-Datei eine persönliche Eigenschaft hinzu und in meiner Kassette habe ich den Namen dieser Eigenschaft, die gleich ist. Aber mein Problem ist, dass es nicht angezeigt wird. Und selbst wenn ich meinen Block vorher explodieren lasse, muss ich den Hintergrundplan noch bearbeiten, damit er erscheint

 

Und wie werden die anderen Eigenschaften im Schriftfeld angezeigt?

Auf die gleiche Weise und es gibt kein Problem (siehe Anhang). Deswegen verstehe ich das auch gar nicht


propriete_piececartouche.png

Aber das ist der  Punkt, an dem Sie die Eigenschaft "Nom_Modificateur" hinzufügen und dann den Link im Block erstellen müssen.

1 „Gefällt mir“

Ja, das ist es, was ich mache, wenn ich mir die Eigenschaften meiner Teile ansehe, werden sie zwar hinzugefügt, aber nichts im Schriftfeld, während es einen Link gibt

Aber dort in Ihren Immobilien gibt es kein "Nom_Modificateur" entsprechend dem Siebdruck, den Sie gemacht haben...

Wie ac cobra sagt, scheint die Variable nicht zu existieren, also müsste Ihr Code folgendem entsprechen:

swCustPropMgr.Add3 "Type_Validation", swCustomInfoText, "", 0
swCustPropMgr.Add3 "Date_Validation", swCustomInfoText, "", 0
swCustPropMgr.Add3 "Index", swCustomInfoText-Zeichenfolge, 0
Wenn string = "02" Dann

...

 

Auf dem untenstehenden Link sehen Sie, dass die Variablen existieren müssen, wenn Sie eine "2" am Ende setzen, sie ersetzt den Wert nur, wenn letzterer existiert. Mit einer 0 erstellt es die Variable, wenn sie nicht vorhanden ist.

http://help.solidworks.com/2018/english/api/swconst/SOLIDWORKS.Interop.swconst~SOLIDWORKS.Interop.swconst.swCustomPropertyAddOption_e.html

 

Auf der anderen Seite sollten Sie darauf achten, dass Sie beim Losfahren ein Inkrement einplanen müssen, da sonst bei der ersten Verwendung der A02 - A03 .... Und wenn du sie das nächste Mal benutzt, da sie bereits erstellt sind, wird er nichts tun. Und wenn Sie "1" eingeben, wird es jedes Mal neu geschrieben, sodass Sie keine Historie mehr haben.

Ich habe mein Problem gelöst. Während des ersten Makros, das Daten einfügt, setze ich alle meine zukünftigen Indexwerte ein und ich weiß nicht warum, wenn es bereits einen Wert erstellt hat, führt es beim zweiten Mal die Aktualisierung von selbst durch. 

Vielen Dank für all Ihre Antworten, ich weiß, dass nicht alles klar ist...