| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für PTC CREO |
Autor
|
Thema: von Lisp in Makro nach Lisp (844 / mal gelesen)
|
Greskamp Mitglied Ingenieur
Beiträge: 523 Registriert: 12.03.2003
|
erstellt am: 17. Mrz. 2017 14:22 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich würde gerne ein Programm schreiben wo ich auch die Makrosprache (Me10) brauche. Den Weg von Lisp in Makro bekomme ich hin. Code:
(sd-execute-annotator-command :cmd (format nil "~a ~s ~s" "Textpunkt_ausle" sel_Texxt_Punkt "1000,1000" sel_Texxt ))
In dem Makro ermittle ich dann über inq_elem den Textursprungspunkt eines Textes. Code:
LOCAL Text_UrSprung inq_elem Sel_Teexxt_Pu LET Text_UrSprung (inq 101)
Jetzt fehlt mir aber der Befehl oder die Vorgehensweise wie ich diese Textursprungspunkt wieder ins Lisp bekomme damit ich mit dem Punkt arbeiten möchte. Wäre super wenn mir jemand helfen könnte ------------------ Gruß Peter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Walter Geppert Moderator Frank und Frei
Beiträge: 2143 Registriert: 12.12.2000 Konstruktion von Sondermaschinen, Montageautomaten, Meß- und Prüfeinrichtungen, Vorrichtungen und Produktentwicklung mit Creo Elements/Direct Modeling 20.4, AdvancedDesign, Surfacing, Simulate, SolidPower, ModelManager auf HP ZBook 17 G4, Windows 10 Pro 64
|
erstellt am: 17. Mrz. 2017 15:48 <-- editieren / zitieren --> Unities abgeben: Nur für Greskamp
Quick and Dirty ungetestet: Code:
(setf mytextursprung (sd-execute-annotator-command :cmd (format nil "~a ~s ~s" "Textpunkt_ausle" sel_Texxt_Punkt "1000,1000" sel_Texxt )))
In dem Makro ermittle ich dann über inq_elem den Textursprungspunkt eines Textes. Code:
LOCAL Text_UrSprung inq_elem Sel_Teexxt_Pu LET Text_UrSprung (STR (inq 101)) LET lispstring (DOCU_CSTRING_TO_LSTRING Text_UrSprung) LET isopen (DOCU_OPEN_CONNECTION_TO_SD) LET done (DOCU_ADD_LINE_TO_SD lispstring) LET isclosed (DOCU_CLOSE_CONNECTION_TO_SD)
Der Returnwert ist immer ein String und muss im LISP wieder aufgedröselt werden ------------------ meine LISP-Makros sind auf osd.cad.de Disclaimer Grüße aus Wien Walter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Greskamp Mitglied Ingenieur
Beiträge: 523 Registriert: 12.03.2003
|
erstellt am: 20. Mrz. 2017 08:30 <-- editieren / zitieren --> Unities abgeben:
Hallo Walter, kannst du mir noch verraten wie die Variable dann im LISP heißt wenn ich mir die mit
Code: display
anzeigen lassen möchte? Code: (Display lispstring) (Display done)
beides klappt nicht. ------------------ Gruß Peter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Greskamp Mitglied Ingenieur
Beiträge: 523 Registriert: 12.03.2003 MS: Windows 10 64bit OSD: 20.1 M020 ModelManager: 20.1 M020 NX 1899 TC 12.3
|
erstellt am: 20. Mrz. 2017 08:34 <-- editieren / zitieren --> Unities abgeben:
|
Greskamp Mitglied Ingenieur
Beiträge: 523 Registriert: 12.03.2003
|
erstellt am: 21. Mrz. 2017 08:19 <-- editieren / zitieren --> Unities abgeben:
Hallo Walter, danke für die Hilfe, aber irgendwie will das überhaupt nicht. Ich habe jetzt auch die Hilfe im iKIT dazu gefunden, da steht das drin was du mir auch geschrieben hast, aber ich bekomme keinen Wert ins LISP. Nicht mal wenn ich einfach nur meinen Namen als Text eingebe. Schon irgendwie komisch und schade. ------------------ Gruß Peter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Greskamp Mitglied Ingenieur
Beiträge: 523 Registriert: 12.03.2003 MS: Windows 10 64bit OSD: 20.1 M020 ModelManager: 20.1 M020 NX 1899 TC 12.3
|
erstellt am: 22. Mrz. 2017 06:49 <-- editieren / zitieren --> Unities abgeben:
Hallo, nur das zum Abschluß und als Ergebnis, wenn es andere noch verwenden wollen. Mit der Lösung hat es dann bei mir geklappt. Hier der Aufruf im Lisp:
Code: (setq mytext_Formatierung (sd-execute-annotator-function :fnc (format nil "Textpunkt_ausle1 ~a" sel_Texxt_Punkt)))
und hier der Code im ME-Makro:
Code: DEFINE Textpunkt_ausle1 PARAMETER Sel_Teexxt_Pu inq_elem Sel_Teexxt_Pu LET Text_Formatierung (STR (inq 3)) let pid_1 (DOCU_CSTRING_TO_LSTRING Text_Formatierung) (DOCU_OPEN_CONNECTION_TO_SD) (DOCU_ADD_LINE_TO_SD pid_1) (DOCU_CLOSE_CONNECTION_TO_SD) END_DEFINE
Damit läuft das Programm jetzt ------------------ Gruß Peter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |