| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für PTC CREO |
Autor
|
Thema: was gibt es bei defun zu beachten (1378 / mal gelesen)
|
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: 21. Jan. 2016 12:06 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe sonst immer nur Lisp-Programme geschrieben, die quasi über "sd-defdialog" geschrieben werden. Jetzt habe ich mal ein reines Lisp was eine "defun" ist. Hat das irgendwie andere Regeln? auch bekomme ich das nicht richtig durchgeladen in der am_customize. Wenn ich das .lsp rein ziehe, geht es. Auch ist mir aufgefallen, wenn ich "(in-package :custom)" drin lasse, geht es auch nicht. Es scheint mir als gäbe es für reine "defun"-Programme spezielle Regeln. ------------------ Gruß Peter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 22. Jan. 2016 11:15 <-- editieren / zitieren --> Unities abgeben: Nur für Greskamp
|
Greskamp Mitglied Ingenieur
Beiträge: 523 Registriert: 12.03.2003
|
erstellt am: 22. Jan. 2016 11:50 <-- editieren / zitieren --> Unities abgeben:
Hallo, also mir kommt es so vor als würde das Programm nicht geladen werden, beim Aufruf kommt dann die Meldung wie angehängt. Obwohl der Ladebefehl wie bei allen anderen ist. ------------------ Gruß Peter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 22. Jan. 2016 12:58 <-- editieren / zitieren --> Unities abgeben: Nur für Greskamp
|
Greskamp Mitglied Ingenieur
Beiträge: 523 Registriert: 12.03.2003
|
erstellt am: 22. Jan. 2016 13:23 <-- editieren / zitieren --> Unities abgeben:
Hallo clausb, ich rufe das mit Klammern oder ohne Klammer auf. Es kommt immer die gleich Meldung. Ich habe den Verdacht das wenn ich das in die am_customize schreibe, dann läd wird das Programm nicht geladen. Ladebefehl lautet:
Code:
(load (format nil "~A/Arnold_tools/Bemassung_in_Grad1.lsp" (oli::sd-sys-getenv "WERKZEUGKISTE")) :if-does-not-exist nil)
wenn ich den Befehl in die sd_customize schreibe, wird das Annotation gar nicht mehr geladen. Wenn ich das Programm dann händisch rein ziehe klappt es mit dem Aufruf "(Bemassung_in_Grad1)" ohne Klammern klappt es nicht.
------------------ Gruß Peter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 22. Jan. 2016 14:03 <-- editieren / zitieren --> Unities abgeben: Nur für Greskamp
Zunächst kannst Du mal die Hypothese abtesten, dass das Laden aus am_customize eventuell nicht klappt. Zwei einfache Testansätze:
- ":if-does-not-exist nil" einfach weglassen; sollte das Laden tatsächlich schiefgehen, wirst Du es dann an einer Fehlermeldung beim Hochfahren erkennen
- In der geladenen Lisp-Datei als allererste Zeile "(display 42)" einfügen. Wenn Du die 42 dann nach dem Hochfahren in der Output-Box siehst, weisst Du, dass der Code geladen wurde.
Probier das mal aus, dann sehen wir weiter.
------------------ CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/ - Blog: http://www.clausbrod.de/Blog Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Greskamp Mitglied Ingenieur
Beiträge: 523 Registriert: 12.03.2003
|
erstellt am: 22. Jan. 2016 14:45 <-- editieren / zitieren --> Unities abgeben:
ok, jetzt weiß ich auch nicht was ich machen soll. if-doees-not-exist ist raus genommen. Ich habe ein "(display 41)" am Anfang und ein "(display 42)" ans Ende gestellt. Es kommt keine Fehlermeldung und die beiden Werten werden mir angezeigt, also daran liegt es dann wohl nicht. ------------------ Gruß Peter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 22. Jan. 2016 15:17 <-- editieren / zitieren --> Unities abgeben: Nur für Greskamp
Prima, damit ist der Problemkreis doch schon sehr stark eingegrenzt. Wenn man den Code ansieht, fällt auf, dass er kein Package definiert, sprich: Es fehlt ein (in-package). Wenn man das weglässt, wird der Code beim Laden dem gerade aktuellen Package hinzugefügt, sprich: Es ist im wesentlichen Zufall, in welchem Package der Code landet. Und damit ist dann auch nicht garantiert, dass er von der Kommandozeile aus "sichtbar" ist. Ich empfehle daher in jedem Fall, das fehlende in-package einzufügen. Also zum Beispiel: Code:
(in-package :greskamp) (export 'Bemassung_in_Grad1)... (defun Bemassung_in_Grad1 ... ... )
Und dann nach dem Laden testweise so aufrufen: Code:
(greskamp:Bemassung_in_Grad1)
------------------ CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/ - Blog: http://www.clausbrod.de/Blog Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Greskamp Mitglied Ingenieur
Beiträge: 523 Registriert: 12.03.2003
|
erstellt am: 22. Jan. 2016 15:34 <-- editieren / zitieren --> Unities abgeben:
kann man sich da mal irgendwo einlesen was dieses "in-package" oder was das für ein Funktion hat? Auch das (export 'Bemassung_in_Grad1) ist mir jetzt neu. Jetzt bekomme ich folgende Meldung wenn ich das aufrufe.. siehe Anhang.. ------------------ 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: 22. Jan. 2016 16:15 <-- editieren / zitieren --> Unities abgeben: Nur für Greskamp
|
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 22. Jan. 2016 16:21 <-- editieren / zitieren --> Unities abgeben: Nur für Greskamp
|
Greskamp Mitglied Ingenieur
Beiträge: 523 Registriert: 12.03.2003
|
erstellt am: 22. Jan. 2016 16:25 <-- editieren / zitieren --> Unities abgeben:
|
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 22. Jan. 2016 16:27 <-- editieren / zitieren --> Unities abgeben: Nur für Greskamp
|
Greskamp Mitglied Ingenieur
Beiträge: 523 Registriert: 12.03.2003
|
erstellt am: 22. Jan. 2016 16:31 <-- editieren / zitieren --> Unities abgeben:
|
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 22. Jan. 2016 16:43 <-- editieren / zitieren --> Unities abgeben: Nur für Greskamp
Klar lag "es" daran, denn wir sind schon wieder einen Schritt weiter! Wir sind halt jetzt nur auf den nächsten Fehler in Deinem Beispielcode gestossen. Wenn ich mich recht entsinne (ist bei mir schon ein paar Jahre her), ist get_selection im Package OLI. Daher muss dieses Package auch per (use-package) angemeldet werden. In der ersten Version des Codes, die Du hier präsentiert hast, war das "(use-package 'oli)" ja sogar noch drin, aber offenbar hast Du es bei Folgeexperimenten auskommentiert. ------------------ CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/ - Blog: http://www.clausbrod.de/Blog [Diese Nachricht wurde von clausb am 23. Jan. 2016 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Greskamp Mitglied Ingenieur
Beiträge: 523 Registriert: 12.03.2003
|
erstellt am: 25. Jan. 2016 06:35 <-- editieren / zitieren --> Unities abgeben:
Guten morgen, danke für deine Geduld. Ja der OLI war mal drin, aber bei der Fehlersuche habe ich den mal raus geworfen. Aber "(use-package :OLI)" war es irgendwie auch 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: 25. Jan. 2016 06:43 <-- editieren / zitieren --> Unities abgeben:
ich noch mal... glaube jetzt läuft es. ich habe den "sd-call-cmds" mal gegen "frame2::getres" ersetzt, den ich irgenwo aus einem anderen Code hatte. Was auch immer dieser Befehl treibt und warum der den "sd-call-cmds" ersetzt. aber jetzt kann ich den Code aufrufen und er läuft. Man muss wohl nicht alles verstehen. Aber danke für eure Hilfe. ------------------ Gruß Peter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 25. Jan. 2016 08:38 <-- editieren / zitieren --> Unities abgeben: Nur für Greskamp
|