| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: acet-autoload2 - load subexpr (2168 mal gelesen)
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1832 Registriert: 28.04.2009
|
erstellt am: 13. Jan. 2014 14:02 <-- editieren / zitieren --> Unities abgeben:
Hi! Ich habe keine richtige Beschreibung zur Funktion aus den Express tools gefunden. Ich weiss nicht genau, wie ich meine Subfunktionen mittels einlesen kann?
Code: (acet-autoload2 '("lisp-file" (meine-funktion arg1 arg2)))
ist mein bisherige Vorgehensweise Beim Durchlauf erfolgt nil. Rufe ich die Funktion jedoch auf kommt: Error loading file: meine-funktion.LSP. File not found. Meiner Auffassung liest die routine in allen Supportwegen oder liege ich da falsch?
------------------ Gruss Dirk http://cadplayerlounge.blogspot.se Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Fiedelzastrow Mitglied Architekt / Bauzeichner
Beiträge: 993 Registriert: 05.07.2007 Win XP AutoCAD 2006 AutoCAD 2009 AutoCAD 2013 LT
|
erstellt am: 13. Jan. 2014 16:11 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1832 Registriert: 28.04.2009
|
erstellt am: 13. Jan. 2014 17:22 <-- editieren / zitieren --> Unities abgeben:
nein es geht um die subfunctions die ich eimal lokal in anderen lisp programmen definiert habe. ich möchte nicht grundsätzl alle usubs laden sondern nur gezielt die die ich brauche. sicherlich könnte man das sinnvoller lösen. wie es sicherlich jeder kennt wachsen mit zun. alter die programmteile da man nicht immer wieder von neuen alte funkt neu erfindet fand ich die acet funktion sehr hilfreich man findet karge beispiel meine eigtl frage ist welche arg benötigt die funktion. jemand schon mal ausprobiert? ------------------ Gruss Dirk http://cadplayerlounge.blogspot.se Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADwiesel Moderator CAD4FM UG
Beiträge: 1968 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 14. Jan. 2014 07:59 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1832 Registriert: 28.04.2009
|
erstellt am: 14. Jan. 2014 17:37 <-- editieren / zitieren --> Unities abgeben:
aus selbiger habe die Funktion acet-autoload2 auch gefunden, aber da steht eben nicht welche Argumente sie belegt bzw. wie sie die Funktionen aus dem Programcode aufruft. Lediglich so wie ich es im ersten Beitrag deklariert habe. Das läuft aber nicht so... ------------------ Gruss Dirk http://cadplayerlounge.blogspot.se Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 14. Jan. 2014 18:00 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Zitat: Original erstellt von cadplayer: ... Meiner Auffassung liest die routine in allen Supportwegen oder liege ich da falsch?
Hallo Dirk, ich habe keine Ahnung, was diese Funktion macht. Wenn du aber die LISP-Datei in irgendeinem SupportPfad suchen willst, dann schreibe doch: (if (findfile"meine.lsp") (load (findfile"meine.lsp")) (alert "meine.lsp nicht gefunden!") ) Grüße! Holger
------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen.
defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 Alles
|
erstellt am: 15. Jan. 2014 09:18 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
*Ich weiss nicht genau, wie ich meine Subfunktionen mittels einlesen kann?*Dann nutze doch eine Möglichkeit, es muß nicht immer fremder Code sein dessen Quelltext nicht zu Hand ist und bei dem dann dein Programm darauf angewiesen ist das der User hoffentlich die unbekannte Funktion geladen hat, welche natürlich nicht in der Standardinstallation von AutoCAD enthalten ist. (schreibe doch deine eigene autoload2 Funktion, für ungeschützte Lispdateien geht das ja. Dann hast du alles in der Hand und bist ständig Herr der Lage.) *(acet-autoload2 '("lisp-file" (meine-funktion arg1 arg2)))ist mein bisherige Vorgehensweise* und die ist auch richtig.
*Beim Durchlauf erfolgt nil.* ebenfalls wie es sein soll. *Rufe ich die Funktion jedoch auf kommt:Error loading file: meine-funktion.LSP. File not found.* Dann findet er die Datei nicht. *Meiner Auffassung liest die routine in allen Supportwegen oder liege ich da falsch?* Ich teste es nicht, vermute es aber ebenso. Zudem kenne ich eine Funktion die Arbeitsverzeichnis, Supportpfade und Installationsverzeichnis(?) durchsucht, somit kannst du die Frage selbst beantworten, (findfile "lisp-file") sollte ebenfalls die Datei nicht finden. ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD
[Diese Nachricht wurde von cadffm am 15. Jan. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1832 Registriert: 28.04.2009
|
erstellt am: 15. Jan. 2014 09:25 <-- editieren / zitieren --> Unities abgeben:
Das ist mir bekannt, was mir zum Beispiel an der OOP mit C# gefällt man kann alle Basismethoden in eine Klasse schreiben und anschliessend mit override entspr. der Benutzung überschreiben Das ist so in LISP nicht umsetzbar, aber und jetzt komme ich direkt zum Problem. Ich habe in diversen Programmen schonmal Unterfunktionen geschrieben, die lokalisiert sind und damit nach Aufruf wieder aus dem Cache gelöscht werden. Die acet-autoload2 funktion tut nix anderes als ermöglich einen direkten Zugriff auf die Unterfunktionen in den diversen Programmen. Da ich ja von Natur aus bequem bin, möchte ich nicht erst ein Lisp erzeugen, welches alle Unterfunktionen beinhaltet. Also kommt mir diese Funktion sehr entgegen. Nur kann ich nix mit der o.g. Fehlermeldung nix anfangen. file-not-found. Wo sollen denn dann die diversen Programme liegen, wenn nicht schon in den Supportwegen darauf hingewiesen wird? ------------------ Gruss Dirk http://cadplayerlounge.blogspot.se Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1832 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 15. Jan. 2014 09:28 <-- editieren / zitieren --> Unities abgeben:
|
Brischke Moderator CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 15. Jan. 2014 09:59 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Hallo Dirk, ob du dazu nun Lust hast oder auch nicht. Du wirst deine Code-Organisation ändern müssen. Entweder, du arbeitest mit einer/mehreren Basis_XX.lsp, die deine Subroutinen enthält/enthalten, oder du kapselst diese innerhalb deiner eigentlichen Funktions-Lisps. Beides ist aufwändig. Ich mische beide Möglichkeiten. Wenn ich für eine Funktion eine Basis.Sub ändern will, dann kann ich diese ja lokal/gekapselt neu definieren. Beispiel:
Code:
;BasisSUB: (defun ToUpper (STR)(strcase STR)) ;Verwendung der BasisSUB: (defun irgendwas ()(ToUpper "klein")) ;Neu definieren in anderer Funktion (defun irgendwasAnderes ( / ToUpper) (defun ToUpper (STRLIST)(mapcar 'strcase STRLIST)) (ToUpper '("a" "b" "c")) ) ;Test: (terpri) (princ(irgendwas))(terpri) (princ(irgendwasAnderes))(terpri) (princ(irgendwas)) ;|--> KLEIN (A B C) KLEIN
Bei Fragen ... Grüße! Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen.
defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 15. Jan. 2014 10:04 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1832 Registriert: 28.04.2009
|
erstellt am: 17. Jan. 2014 13:11 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank für eure Beiträge, ich finde den hier beschriebenen Weg plausibel, dem werde ich zukünftig so auch nachgehen. Ordnung ist das halbe Leben - so auch in der Programmierung die halbe Zeit. ------------------ Gruss Dirk http://cadplayerlounge.blogspot.se Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |