Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  acet-autoload2 - load subexpr

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
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


Sehen Sie sich das Profil von cadplayer an!   Senden Sie eine Private Message an cadplayer  Schreiben Sie einen Gästebucheintrag für cadplayer

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 13. Jan. 2014 14:02    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von Fiedelzastrow an!   Senden Sie eine Private Message an Fiedelzastrow  Schreiben Sie einen Gästebucheintrag für Fiedelzastrow

Beiträge: 993
Registriert: 05.07.2007

Win XP
AutoCAD 2006
AutoCAD 2009
AutoCAD 2013 LT

erstellt am: 13. Jan. 2014 16:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für cadplayer 10 Unities + Antwort hilfreich

Hallo Dirk,
wenn ich Deine Frage richtig verstehe, geht es darum Lisp-Programme so in AutoCAD einzubinden,
daß diese bei jedem Programmstart geladen werden.
Wenn dass der Fall ist so empfehle ich Dir diesen Beitrag.

Gruß
Robert

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadplayer
Ehrenmitglied
CADniker


Sehen Sie sich das Profil von cadplayer an!   Senden Sie eine Private Message an cadplayer  Schreiben Sie einen Gästebucheintrag für cadplayer

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 13. Jan. 2014 17:22    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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




Sehen Sie sich das Profil von CADwiesel an!   Senden Sie eine Private Message an CADwiesel  Schreiben Sie einen Gästebucheintrag für CADwiesel

Beiträge: 1968
Registriert: 05.09.2000

AutoCAD, Bricscad
Wir machen das Mögliche unmöglich

erstellt am: 14. Jan. 2014 07:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für cadplayer 10 Unities + Antwort hilfreich

warum schaust du dir nicht mal die acetauto.lsp an? Da ist genug acet-autoload2 drin!

------------------
Gruß
CADwiesel
Besucht uns im CHAT

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadplayer
Ehrenmitglied
CADniker


Sehen Sie sich das Profil von cadplayer an!   Senden Sie eine Private Message an cadplayer  Schreiben Sie einen Gästebucheintrag für cadplayer

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 14. Jan. 2014 17:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 14. Jan. 2014 18:00    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für cadplayer 10 Unities + Antwort hilfreich

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
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 15. Jan. 2014 09:18    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für cadplayer 10 Unities + Antwort hilfreich

*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


Sehen Sie sich das Profil von cadplayer an!   Senden Sie eine Private Message an cadplayer  Schreiben Sie einen Gästebucheintrag für cadplayer

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 15. Jan. 2014 09:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von cadplayer an!   Senden Sie eine Private Message an cadplayer  Schreiben Sie einen Gästebucheintrag für cadplayer

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Gleichzeitig getippt Sebastian
Keine richtige Vorstellung, wie ich an so eine Aufgabe herangehen muss?

------------------
Gruss Dirk
http://cadplayerlounge.blogspot.se

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Brischke
Moderator
CAD on demand GmbH




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 15. Jan. 2014 09:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für cadplayer 10 Unities + Antwort hilfreich

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




Sehen Sie sich das Profil von CADmium an!   Senden Sie eine Private Message an CADmium  Schreiben Sie einen Gästebucheintrag für CADmium

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 15. Jan. 2014 10:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für cadplayer 10 Unities + Antwort hilfreich

Lass die Subs als lokal in der Main definiert! So kannst du sicher sein, dass immer die richtige Sub aufgerufen wird und nicht eine andere, namensgleiche, aus einem anderen Programm ,( evtl. Fremdprogrammiert ) , die etwas ganz anderes tut unt evtl. andere Parameter erwartet.

Oder sei bei der Namensvergabe ganz eindeutig und dir sicher, das nix fremdes auf deinem Rechner läuft.

Lisp ist nicht objektorientiert und hat keine "Varaiblenverwaltung" ... AutoLisp läuft in einem Interpreter!

------------------
Also ich finde Unities gut ... und andere sicher auch
---------------------------------------
  - Thomas -          
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadplayer
Ehrenmitglied
CADniker


Sehen Sie sich das Profil von cadplayer an!   Senden Sie eine Private Message an cadplayer  Schreiben Sie einen Gästebucheintrag für cadplayer

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 17. Jan. 2014 13:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz