| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| SOLIDWORKS im Browser: Das neue SOLIDWORKS Cloud Offer |
Autor
|
Thema: Teile-/Baugruppen Eigenschaften (449 mal gelesen)
|
F.O. Mitglied
Beiträge: 60 Registriert: 29.03.2006
|
erstellt am: 29. Mai. 2006 11:29 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich möchte eine kleines Übersetzungs-Feature in SolidWorks einbauen. Und zwar soll wenn in einem Eigenschaften-Feld etwas eingetragen wird, automatisch (optimaler Zustand) die englische Übersetzung in ein anderes Feld eingetragen werden. Kann ich einem Eigenschaften-Feld einen API-Aufruf hinterlegen? Ich muss eigentlich herausbekommen ob sich ein dem bestimmten Feld etwas geändert hat und dann meine Übersetzungsfunktionalität rufen. Kann mir da jemand weiterhelfen? MfG
F.O. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Oberli Mike Ehrenmitglied V.I.P. h.c. Dipl. Maschinen Ing.
Beiträge: 3814 Registriert: 29.09.2004 SOLIDWORKS 2024 SP1.0 SOLIDWORKS 2023 SP5.0 SOLIDWORKS 2022 SP5.0 SOLIDWORKS 2021 SP5.1 SOLIDWORKS 2020 SP5 SOLIDWORKS 2019 SP5 (VM)
|
erstellt am: 29. Mai. 2006 11:32 <-- editieren / zitieren --> Unities abgeben: Nur für F.O.
Ich glaube nicht, dass man einem Eigenschaftsfeld einen API-Aufruf zuordnen kann. Mann kann aber die Eigenschaftsfelder über ein Makro füllen. Mit einem Button ein Makro starten, dabei ein Formular (Form) anzeigen, in welcher man die Eigenschaften eintragen kann, und beim bestätigen der Form zusätzlich die zweite Sprache füllen. ------------------ ( Um an die Quelle zu kommen, muss man gegen den Strom schwimmen ) OM Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Piet Mitglied Konstruktionsleiter & Konstrukteur
Beiträge: 661 Registriert: 20.11.2001 SWx 2021
|
erstellt am: 29. Mai. 2006 16:30 <-- editieren / zitieren --> Unities abgeben: Nur für F.O.
Ich bin mir nicht sicher, ob ich verstanden hab, was du machen möchtest. Ich hab mal (mehr der Neugierde halber) ein Übersetzungsmakro angefangen, aber nicht weit getrieben. Das Makro lädt ein Excel-Blatt mit deutschen und englischen Texten, vergleicht alle Texte in einer Zeichnung mit dem Wörterbuch und tauscht jeden bekannten Text gegen den anderssprachigen Text aus. Textlinks auf Dateieigenschaften kann es nicht, und ich glaube, mit mehrzeiligen Texten haut es auch nicht so hin. Vielleicht kannst du dir ja was abgucken. Piet Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Piet Mitglied Konstruktionsleiter & Konstrukteur
Beiträge: 661 Registriert: 20.11.2001 SWx 2021
|
erstellt am: 29. Mai. 2006 16:34 <-- editieren / zitieren --> Unities abgeben: Nur für F.O.
Mir fällt gerade noch was ein: Wenn eine Eigenschaft immer wieder auf Veränderung überprüft werden soll, bietet sich vielleicht ein Makro-Feature an, das am Ende des Featurebaums angesiedelt wird. Das kann z.B. bei jedem neuen Durchrechnen den Wert einer Dateieigenschaft prüfen und gegebenenfalls eine Aktion auslösen. Piet Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
F.O. Mitglied
Beiträge: 60 Registriert: 29.03.2006
|
erstellt am: 29. Mai. 2006 16:36 <-- editieren / zitieren --> Unities abgeben:
|
Piet Mitglied Konstruktionsleiter & Konstrukteur
Beiträge: 661 Registriert: 20.11.2001 SWx 2021
|
erstellt am: 30. Mai. 2006 09:03 <-- editieren / zitieren --> Unities abgeben: Nur für F.O.
Oha, ich hab diese Frage befürchtet. Wenn du ein Makrofeature ausführst, wird ein Makro in den Featurebaum integriert, welches beim Durchrechnen des Teils immer mit ausgeführt wird. Man kann es so einstellen, dass das Makrofeature immer am Ende des Featurebaums steht, auch wenn andere neue Features hinzugefügt werden. Die Syntax von Makrofeatures ist nicht gerade selbsterklärend. Ich hab das nur in einem Makro verwendet, und da hab ich 95% des Codes abgeschrieben. Die Onlinehilfe verrät mehr, ansonsten guckst du hier: http://ww3.cad.de/foren/ubb/Forum2/HTML/003834.shtml#000002 Piet Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
F.O. Mitglied
Beiträge: 60 Registriert: 29.03.2006
|
erstellt am: 01. Jun. 2006 13:55 <-- editieren / zitieren --> Unities abgeben:
Ich habe jetzt den ChangeCustomPropertyNotify-Event abgefangen (Beim Schließen des Eigenschaftendialoges wird die Funktion gerufen). Wenn mein deutsches Feld geändert wird, übersetze ich es und schreibe es in das englische Feld. Soweit so gut, nur wird von SolidWorks der Wert wieder überschrieben, weil er sich den alten Wert gemerkt hat und nochmals der Event gerufen wird. Hat jemand eine Idee? Kann man den Event irgendwie abbrechen (return-Wert)? MfG
F.O. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Piet Mitglied Konstruktionsleiter & Konstrukteur
Beiträge: 661 Registriert: 20.11.2001 SWx 2021
|
erstellt am: 01. Jun. 2006 14:11 <-- editieren / zitieren --> Unities abgeben: Nur für F.O.
|
F.O. Mitglied
Beiträge: 60 Registriert: 29.03.2006
|
erstellt am: 01. Jun. 2006 16:03 <-- editieren / zitieren --> Unities abgeben:
Der Event: Code:
public int doc_ChangeCustomPropertyNotify(string propName, string configuration, string oldValue, string newValue, int valueType) { userAddin.translate(configuration, propName, oldValue, newValue, valueType); return 0; }
Meine Übersetzungsfunktion (ohne Übersetzungmechanismus, zum Test): Code:
public bool translate(string configuration, string propName, string oldValue, string newValue, int valueType ) { ... activeDoc.set_CustomInfo2(configuration, "englisch", "test"); ... }
Der Event wird für das Feld "englisch" nach dem Ändern zweimal implizit gerufen, z.B.: mit folgenden Werten (es war leer): 1. newValue: "test" oldValue: "" 2. newValue: "" oldValue: "test" Somit wird der Wert test beim 1. reingeschrieben und beim 2. wieder gelöscht. Ich kann auch nicht die Eigenschaft löschen und wieder einfügen, er merkt am Namen dass sie schon mal da war. MfG
F.O. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
F.O. Mitglied
Beiträge: 60 Registriert: 29.03.2006
|
erstellt am: 01. Jun. 2006 16:40 <-- editieren / zitieren --> Unities abgeben:
Wenn das englische Feld über den deutschen ist (Reihenfolge in der Liste), dann funktioniert es. Wenn es danach kommt, wird es ja erst später geprüft und somit gehts schief. Gut, wäre es wenn man das Event einfach abbrechen könnte, aber anscheinend ist der Returnwert nur proforma da. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |