Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Quellpfad eines geladenen LSP-Files?

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:  Quellpfad eines geladenen LSP-Files? (1743 mal gelesen)
richmotion
Mitglied



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

Beiträge: 12
Registriert: 24.11.2008

erstellt am: 05. Okt. 2009 15:07    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

Liebe Lispler !

Ich möchte für div. Kopien von Dateien und Konfigurationen eine Lisp-Funktion automatisch aufrufen.
Prinzipiell funktioniert bereits alles zufriedenstellend, wenn sich die LSP im Suchpfad von AutoCAD befindet.
Ich möchte nun noch ihren externen Quell-Pfad ermitteln, wenn der Anwender die LSP von irgendwoher mit Drag'n'Drop zum Laden+Starten in den Zeichnungs-Editor zieht. (Also den Sourcepath vom zuletzt geladenen Lispfile abfragen)

Kann mir jemand sagen, wie das funktioniert?`

lg Richard

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: 05. Okt. 2009 15:27    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 richmotion 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von richmotion:

Ich möchte nun noch ihren externen Quell-Pfad ermitteln, wenn der Anwender die LSP von irgendwoher mit Drag'n'Drop zum Laden+Starten in den Zeichnungs-Editor zieht. (Also den Sourcepath vom zuletzt geladenen Lispfile abfragen)

Kann mir jemand sagen, wie das funktioniert?`


IMHO gar nicht....
evtl. oder über ne Logfile-Auswertung...

------------------
  - 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

archtools
Mitglied



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

Beiträge: 823
Registriert: 09.10.2004

Entwickler für AutoCAD, BricsCAD u.a., alle Systeme

erstellt am: 05. Okt. 2009 16:57    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 richmotion 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von richmotion:
Ich möchte nun noch ihren externen Quell-Pfad ermitteln, wenn der Anwender die LSP von irgendwoher mit Drag'n'Drop zum Laden+Starten in den Zeichnungs-Editor zieht. (Also den Sourcepath vom zuletzt geladenen Lispfile abfragen)

Kann mir jemand sagen, wie das funktioniert?`


Dazu gab's im VitalLISP eine schöne Funktion, die Autodesk nach der Übernahme und Umbenennung in VisualLISP leider aus unerfindlichen Gründen entsorgt hat. Der Lisp-Interpreter weiss natürlich, woher eine Lisp-Datei geladen wird, und diese Informationen dann in einer Tabelle zu speichern und vom Lisp-Programm aus abrufbar zu machen, ist ein absolutes Kinderspiel.

Betrachte Autodesks Umgang damit als eine Lehrstunde dafür, wie sehr Autodesk VisualLISP wertschätzt.

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: 05. Okt. 2009 17:07    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 richmotion 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von archtools:
Dazu gab's im VitalLISP eine schöne Funktion, die Autodesk nach der Übernahme und Umbenennung in VisualLISP leider aus unerfindlichen Gründen entsorgt hat. Der Lisp-Interpreter weiss natürlich, woher eine Lisp-Datei geladen wird, und diese Informationen dann in einer Tabelle zu speichern und vom Lisp-Programm aus abrufbar zu machen, ist ein absolutes Kinderspiel.

Betrachte Autodesks Umgang damit als eine Lehrstunde dafür, wie sehr Autodesk VisualLISP wertschätzt.


Womit wir mal wieder beim Thema wären .... wie viel einfacher doch vieles sein könnte ... ist aber leider nicht. Hast du ne sinnvolle Lösung im Autolisp ( so wie es integriert ist) für das Problem ?

------------------
  - 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: 05. Okt. 2009 21:54    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 richmotion 10 Unities + Antwort hilfreich

Sorry, ich schnalls nicht, was du eigentlich machen willst.
Zitat:
Ich möchte für div. Kopien von Dateien und Konfigurationen eine Lisp-Funktion automatisch aufrufen.

???
Zitat:
Ich möchte nun noch ihren externen Quell-Pfad ermitteln, wenn der Anwender die LSP von irgendwoher mit Drag'n'Drop zum Laden+Starten in den Zeichnungs-Editor zieht. (Also den Sourcepath vom zuletzt geladenen Lispfile abfragen)

???

Ist das Problem, dass Lisp-funktionen in anderen Verzeichnissen, als wie definiert nicht automatisch korrekt geladen werden ?

cp

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

wronzky
Ehrenmitglied V.I.P. h.c.
CAD-Dienstleistungen für Architekten



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

Beiträge: 2154
Registriert: 02.05.2005

CAD:
AutoCAD 2.6 bis 2014
ADT 2005 - 2014
Arcibem
System:
Windows 2000, XP, NO VISTA
Internet-Startseite:
http://www.archi.de

erstellt am: 05. Okt. 2009 22:44    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 richmotion 10 Unities + Antwort hilfreich

Hi,
Da beim Drag+Drop nichts anderes ausgeführt wird, als "(LOAD [DATEI])" könntest Du VORHER einen Lisp-reactor initialisieren, der eben jeden ausgeführten Lispaufruf auf "LOAD" prüft (Stichwort :vlr-lispWillStart)

Grüsse, Henning

------------------
Henning Jesse
VoxelManufaktur
Computer-Dienstleistungen für Architekten und Ingenieure

  http://www.voxelman.de

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

archtools
Mitglied



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

Beiträge: 823
Registriert: 09.10.2004

Entwickler für AutoCAD, BricsCAD u.a., alle Systeme

erstellt am: 05. Okt. 2009 22:54    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 richmotion 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von CADmium:
Womit wir mal wieder beim Thema wären .... wie viel einfacher doch vieles sein könnte ... ist aber leider nicht. Hast du ne sinnvolle Lösung im Autolisp ( so wie es integriert ist) für das Problem ?


Keine, die ich praktiziere :-)

Aber das einfachste wäre natürlich, Funktionen wie c:appload, (load ...) usw neu zu definieren, so dass Du Herkunft und Inhalt kontrollieren kannst. Eine einfache Variante dafür wäre, mit einem Reaktor die Atoms-Family vor und nach Aufruf solcher Funktionen zu vergleichen, um so für jede Funktion zu wissen, aus welcher Lisp-Datei sie geladen wurde.

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

toxot
Mitglied



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

Beiträge: 70
Registriert: 05.04.2009

erstellt am: 05. Okt. 2009 23:53    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 richmotion 10 Unities + Antwort hilfreich

Code:

;___forever ...
(vl-load-com)
;___das musst dir herrichten wie du es brauchst ...
(defun rcb-lispwillstart(a b) b); lsp+path per d+d
;___reaktor online ? ...
(defun r-?(r_def r_typ)
(apply 'or(mapcar
           '(lambda(x)
             (equal(vlr-reactions x)r_def))
           (cdar(vlr-reactors r_typ)))))
;___rektor on ! ...
(defun r-!(r_def r_typ)
(if(not(r-? r_def r_typ))
   (apply(read(substr(vl-symbol-name r_typ)2))
         (list(vl-symbol-name r_typ) r_def))))
;___init rektor lisp will start ...
(r-! '((:vlr-lispwillstart  . rcb-lispwillstart)):vlr-lisp-reactor)

Grüße ... ToXoT

[Diese Nachricht wurde von toxot am 05. Okt. 2009 editiert.]

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

benwisch
Mitglied
Bautechniker, CAD-Konstrukteur


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

Beiträge: 375
Registriert: 01.02.2001

Autocad 2005-2010
Microstation V8
Photoshop CS4 + Camera Raw
Nikon Capture NX2
Nikon D90

erstellt am: 06. Okt. 2009 09:49    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 richmotion 10 Unities + Antwort hilfreich

Zitat:
Original geschrieben von: wronzky
[..]der eben jeden ausgeführten Lispaufruf auf "LOAD" prüft (Stichwort :vlr-lispWillStart)

Zitat:
Original erstellt von toxot:
Code:

;___forever ...
(vl-load-com)
;___das musst dir herrichten wie du es brauchst ...
(defun rcb-lispwillstart(a b) b); lsp+path per d+d
;___reaktor online ? ...
(defun r-?(r_def r_typ)
(apply 'or(mapcar
           '(lambda(x)
             (equal(vlr-reactions x)r_def))
           (cdar(vlr-reactors r_typ)))))
;___rektor on ! ...
(defun r-!(r_def r_typ)
(if(not(r-? r_def r_typ))
   (apply(read(substr(vl-symbol-name r_typ)2))
         (list(vl-symbol-name r_typ) r_def))))
;___init rektor lisp will start ...
(r-! '((:vlr-lispwillstart  . rcb-lispwillstart)):vlr-lisp-reactor)

Grüße ... ToXoT


  Danke euch beiden!

Funktioniert klasse

------------------
CADmaro.de

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: 06. Okt. 2009 15:31    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 richmotion 10 Unities + Antwort hilfreich

Schöner Ansatz .. leider auch nur die Halbe Miete da ja nur (load berücksichtig wird ....

wie willst du sowas erkennen ?
(eval (read(strcat"("(apply 'strcat(mapcar 'chr'(108 111 97 100))) " \"D:/ACAD/Bsp.LSP\")")))

für _appload bräuchte es einen Commandreaktor und und und

am Sinnvollsten ist es -wie Tom schon sagt- als Bestandteil des Interpreters ( der weiß , was er wie und woher gelladen hat) und das wäre IMHO seitens Adesk auch nicht so schwer zu integrieren ... gleich auch als Liste Symbol -> Quelldatei/Intern für direkt eingegebene ...

aber wie gesagt ... als Workaround ne Idee ..

------------------
  - 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

benwisch
Mitglied
Bautechniker, CAD-Konstrukteur


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

Beiträge: 375
Registriert: 01.02.2001

erstellt am: 06. Okt. 2009 16: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 richmotion 10 Unities + Antwort hilfreich

Zitat:
für _appload bräuchte es einen Commandreaktor

Getestet habe ich es unter ACAD2005 und 2008 und da hat meine globale Liste auch die *.lsp, *.fas und *.vlx aus dem appload mit aufgenommen.

------------------
CADmaro.de

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: 06. Okt. 2009 16:13    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 richmotion 10 Unities + Antwort hilfreich

jo seh gerade mit Testweise

(defun DT:LISPWILLSTART(REACTOR ARGUMENTS)
  (princ"\n!!!Lispstart!!!")
  (princ"\nReaktor   :  ")(princ REACTOR) 
  (princ"\nARGUMENTS :  ")(princ ARGUMENTS)
  (princ"\n")
  (princ)
)
(vlr-lisp-reactor "TESTUS" '((:vlr-lispwillstart . DT:LISPWILLSTART)))                


Befehl:
Befehl: _appload
acad64bit.LSP erfolgreich geladen.


Befehl:
!!!Lispstart!!!
Reaktor   :  #<VLR-Lisp-Reactor>
ARGUMENTS :  ((load "D:/acad64bit.LSP"))


na dann .. daran sieht man IMHO das der Interpreter das schon irgendwie mitkriegt ....

und weiter ? du gehtst die Liste durch und suchst nach load ? ....

------------------
      - 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

benwisch
Mitglied
Bautechniker, CAD-Konstrukteur


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

Beiträge: 375
Registriert: 01.02.2001

erstellt am: 07. Okt. 2009 09:43    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 richmotion 10 Unities + Antwort hilfreich

Ja, Dateiname ist bekannt und danach wird in der Liste gesucht und schließlich der Pfad isoliert. Dieser Pfad wird im weiteren Programmverlauf, falls erforderlich, verwendet.

------------------
CADmaro.de

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