| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Creo |
| |
| SF TECHNICAL , eine App
|
Autor
|
Thema: Aufruf Lisp Funktionen über Befehlszeile (1216 / mal gelesen)
|
SchmitteHarry Mitglied
Beiträge: 29 Registriert: 30.07.2020 PTC Creo Elements Direct V 19 Siemens NX 1953
|
erstellt am: 10. Aug. 2020 20:49 <-- editieren / zitieren --> Unities abgeben:
Ich habe da ein Verständnisproblem. In einer selbsgeschriebenen Lisp-Datei sind mehrer Funktion (über defun) enthalten. Die laufen auch wenn die sich untereinander aufrufen. Wenn ich aber eine dieser vorher geladenen Funktionen über die Befehlszeile aufrufen will gibt das System immer eine Fehlermeldung zurück z.B : "LISP-Fehler: The function <Name der Funktion> is undefined" Vielleicht kann mir jemand sagen, was ich da falsch mache. Gruß Hermann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Seele Mitglied Konstrukteur
Beiträge: 391 Registriert: 11.06.2003
|
erstellt am: 11. Aug. 2020 07:15 <-- editieren / zitieren --> Unities abgeben: Nur für SchmitteHarry
Hallo Hermann, ich denke dass es daran liegt, dass du dem Befehl noch den Paketnamen voranstellen musst, indem du deine Makro´s geladen hast, weil LISP sonst nicht weis in welchen Befehl er ausführen soll. In welchem Paket dein LISP abgelegt ist, kannst du mir folgendem Befehl ermitteln: (DISPLAY (package-name (symbol-package 'GesuchterLISPBefehl))) weist Du dann wo er ist, musst Du den Paketnamen vor deinem LISP-Aufruf reinpacken. War die Rückmeldung z.B. OLI, dann würde dein Aufruf so lauten: OLI::GesuchterLISPBefehl dann sollte es funktionieren. Weiterhin musst du darauf achten, dass Du auch deine Parameter mit übergibst, falls der LISP-Schnipsel welche benötigt. So ich hoffe ich konnte Dir weiterhelfen, ... Gruß Wolfgang ------------------ alles ist möglich, nichts funktioniert und trotzdem muß es bis morgen geschafft sein. Werden wir es schaffen? Ja wir schaffen das !!! :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Seele Mitglied Konstrukteur
Beiträge: 391 Registriert: 11.06.2003 Intel(R) Xeon(R) W-2245 CPU @ 3,90 GHz, 64GB RAM NVidia Quadro RTX A4000 Win10-64Bit Elements/Direct v20.7.0.0 PartLibrary, Surfacing, 3D-PDF, 3D-Access, Unigraphics-Schnittstelle
|
erstellt am: 11. Aug. 2020 07:23 <-- editieren / zitieren --> Unities abgeben: Nur für SchmitteHarry
Ergänzung: wenn es in einem Defun steht, dann wäre der Aufruf in Klammern zu setzen. (OLI::GesuchterLISPBefehl) und mit Parametern so: (OLI::GesuchterLISPBefehl (Parameter1 Parameter2 ...) Gruß Wolfgang ------------------ alles ist möglich, nichts funktioniert und trotzdem muß es bis morgen geschafft sein. Werden wir es schaffen? Ja wir schaffen das !!! :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
SchmitteHarry Mitglied
Beiträge: 29 Registriert: 30.07.2020 PTC Creo Elements Direct V 19 Siemens NX 1953
|
erstellt am: 11. Aug. 2020 13:31 <-- editieren / zitieren --> Unities abgeben:
Hallo Wolfgang, dein Hinweis hat mir wirklich weitergeholfen. Am Ende war so, dass ich immer nur einen Doppelpunkt zwischen Package und Funktionsnamen, obwohl da ja 2 Doppelpunkte hingehören. Nochmals Danke und frohes Arbeiten oder urlauben .. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MiBr Mitglied Konstrukteur
Beiträge: 576 Registriert: 30.06.2015 HP Z440 Workstation 64GB Modeling 20.1.2.0 (x64) Drafting 20.1.2.0 (64x) klas. UI Modell Manager 20.1.2.0 Ansys Workbeanch 22R2 Mechanicail Pro + FKM Inside
|
erstellt am: 12. Aug. 2020 09:09 <-- editieren / zitieren --> Unities abgeben: Nur für SchmitteHarry
Hallo, das Problem scheint ja gelöst! Ich hatte bei dem Thema gehofft, das für mich ein wenig Licht im Dunkeln in Bezug auf die Package kommt. Kann jemand meine große Lücken ein wenig schließen? Ich benutze zu 99,999% immer den folgenden 2 Zeiler am Anfang der Lisp, ohne groß darüber nachzudenken! (in-package :custom) (use-package :oli) Denke sonst müsste ich vor den meisten Befehlen oli: schreiben, manchmal auch mit zwei :: Kann man eigene Package erstellen, bzw sollte man? Ihr merkt ich habe keine Ahnung! Hat da jemand eine einfach flache Erklärung für mich parat? Gruß Michael
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Seele Mitglied Konstrukteur
Beiträge: 391 Registriert: 11.06.2003
|
erstellt am: 12. Aug. 2020 09:32 <-- editieren / zitieren --> Unities abgeben: Nur für SchmitteHarry
Hallo Michael, ... ich kenne mich in LISP zwar auch nicht 100% aus (LISP-Anfänger), aber ich versuche es aus meinem bisherigen Verständnis heraus. Ich denke diese Packages sind im LISP sowas wie Ordner in denen Befehle/LISP-Makros in einer Gruppe zusammengefasst werden können. Das erleichtert dann die Aufteilung in Gruppen oder Teilbereiche der Entwicklung. Im Prinzip kannst Du deine eigenen Lisp´s jeder Package zuordnen auch z.B. OLI Jedoch gilt es zu beachten, wenn Du nicht weist, welche Variablen innerhalb dieser Gruppe verwendet oder welche Namen schon vergeben wurden, kann es zu unvorhersehbaren Wechselwirkungen kommen. Muss natürlich nicht, kann aber. Ich habe deshalb alle von mir selbst eingebauten LISP-Makro´s und auch solche die ich vom Forum habe, grundsätzlich in mein eigenes neues Package (in-package :SW) geladen, da dieses noch nicht existierte. Dadurch wurde es dann auch automatisch neu erzeugt. Baue ich jetzt Mist mit unsauberen Programmieren, Variablen zuweisen, sollte das bei mir z.B auf diese Gruppe SW:: begrenzt sein, da auch jede Variable die verwendet wird diesem Paket zugewiesen wird. Teile der Original-Software sollten daher nicht durch meine vielleicht schlechte Variablen-Benennung beeinflusst werden. (Hoffe ich,...) :-) Gruß Wolfgang PS: Vielleicht schribt ja noch jemand, der es besser weis als ich, etwas zu diesem Thema hinzu. ------------------ alles ist möglich, nichts funktioniert und trotzdem muß es bis morgen geschafft sein. Werden wir es schaffen? Ja wir schaffen das !!! :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MiBr Mitglied Konstrukteur
Beiträge: 576 Registriert: 30.06.2015 HP Z440 Workstation 64GB Modeling 20.1.2.0 (x64) Drafting 20.1.2.0 (64x) klas. UI Modell Manager 20.1.2.0 Ansys Workbeanch 22R2 Mechanicail Pro + FKM Inside
|
erstellt am: 12. Aug. 2020 12:16 <-- editieren / zitieren --> Unities abgeben: Nur für SchmitteHarry
|
lix b Mitglied Konstrukteur, CAD-Admin
Beiträge: 292 Registriert: 03.10.2014 Creo Elements / Direct Modeling 20.4 Creo Elements / Direct Model Manager 20.4 <P>Notepad++ Win 11
|
erstellt am: 14. Aug. 2020 12:47 <-- editieren / zitieren --> Unities abgeben: Nur für SchmitteHarry
Mahlzeit! Noch besser wäre es ein komplett eigenens Package zu verwenden, denn auch im Package :custom schwirren viele Sachen von z.B. Support/Dienstleistern rum, deren Wechselwirkungen man vermeiden sollte.
------------------ Viele Grüße Felix Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MiBr Mitglied Konstrukteur
Beiträge: 576 Registriert: 30.06.2015 HP Z440 Workstation 64GB Modeling 20.1.2.0 (x64) Drafting 20.1.2.0 (64x) klas. UI Modell Manager 20.1.2.0 Ansys Workbeanch 22R2 Mechanicail Pro + FKM Inside
|
erstellt am: 14. Aug. 2020 13:15 <-- editieren / zitieren --> Unities abgeben: Nur für SchmitteHarry
Hallo Felix, danke für den Hinweiß, ich bin gerade dabei mittels: Code:
display (LIST-ALL-PACKAGES)
und Code: (do-symbols (s (find-package "CUSTOM")) (display (format nil "~a" s)))
mir mal anzuschauen was alles in der Custom, oli und ... hängt. Und wie du sagst schwirren da viele Sachen drin rum! Ich werde das umstellen und so wie Wolfgang sagt muss ich ja in den Lisp nur (in-package :mybadlisp) schreiben und alles läuft sicherer!!! Danke für den zusätlichen Hinweiß Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |