| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY bietet das umfangreichste Ökosystem von B2B als auch B2C-Lösungen für IT-Akteure auf dem Markt, eine Pressemitteilung
|
Autor
|
Thema: VLR-DocManager-Reactor (1757 mal gelesen)
|
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 27. Feb. 2007 09:31 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich möchte beim öffen/neu und schließen einer DWG-Datei eine Reactor-Funktion einsetzen, habe aber noch keine Erfahrung damit. Folgendes habe zum Testen in die acaddoc.lsp eingefügt:
Code:
(defun R:GutenTag ( A B / ) (alert "Guten Tag")) (defun R:AufWiedersehen ( A B / ) (alert "Auf Wiedersehen"))(vl-load-com) (VLR-DocManager-Reactor (vla-get-ActiveDocument (vlax-get-acad-object)) '((:vlr-documentCreated . R:GutenTag) ) ) (VLR-DocManager-Reactor (vla-get-ActiveDocument (vlax-get-acad-object)) '((:vlr-documentToBeDestroyed . R:AufWiedersehen) ) )
Das :vlr-documentToBeDestroyed-Event funktioniert, die Funktion R:AufWiedersehen wird aufgerufen. Das :vlr-documentCreated-Event funktioniert noch nicht, die Funktion R:GutenTag wird nicht aufgerufen.Weiß einer was ich da falsch gemacht habe?
------------------ viele Grüße Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tunnelbauer Ehrenmitglied V.I.P. h.c. Bauingenieur
Beiträge: 7085 Registriert: 13.01.2004 ich hab eh keine Probleme damit...
|
erstellt am: 27. Feb. 2007 09:49 <-- editieren / zitieren --> Unities abgeben: Nur für joern bosse
|
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 27. Feb. 2007 09:55 <-- editieren / zitieren --> Unities abgeben:
|
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 27. Feb. 2007 11:26 <-- editieren / zitieren --> Unities abgeben: Nur für joern bosse
Der Reaktor :VLR-DOCUMENTCREATED funktioniert nur im Single Document Modus (SDI = 1) und wenn zusätzlich Lispinit = 0, d. h. AutoLISP-Funktionen und -Variablen werden von einer Zeichnung zur nächsten erhalten. Den Aufruf von _NEW oder _SNEW kann man wohl besser über einen Command-Reaktor auswerten, bevor die neue Zeichnung angelegt wird. Edit Ansonsten für Neu/Öffen S::Startup benutzen. ------------------ Mit freundlichem Gruß Udo Hübner [Diese Nachricht wurde von CAD-Huebner am 27. Feb. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 27. Feb. 2007 11:49 <-- editieren / zitieren --> Unities abgeben:
Hallo Udo, danke erstmal für Deine Antwort. Da ich mit auch mit S::Startup noch nichts gemacht habe, habe ich die Forumsuche danach bemüht: und ich glaube ich bin dabei zu einer Lösung gekommen, denn ich bin über eine Bemerkung von CADmium gestolpert: http://ww3.cad.de/foren/ubb/Forum145/HTML/000455.shtml#000010 Zitat:
Nochmal : die acaddoc.lsp wird bei jedem Öffnen einer Zeichnung ausgeführt, dem zufolge auch alle Befehle in derselben! Warum dann noch eine Startup..?
Das heißt für mich, wenn ich eine Zeichnung starte, dann brauche ich gar keinen Reaktor mehr für den Zeichnungsstart, denn die Funktion die ausgeführt werden soll steht ja sowieso in der acaddoc.lsp, warum einfach wenn es auch umständlich geht ------------------ viele Grüße Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 27. Feb. 2007 11:57 <-- editieren / zitieren --> Unities abgeben: Nur für joern bosse
Hallo Jörn, es kann in bestimmten Fällen sinnvoll sein, Befehle aus der ACADDOC.lsp nicht während des Ladevorgangs unverzüglich auszuführen sondern, erst nach dem Abschluss aller Ladevorgänge. Dann erst wird die Spezialfunktion S::STARTUP ausgeführt. ich zitier mal aus der Online Hilfe: Zitat: Sie können eine S::STARTUP-Funktion definieren, um nach der Zeichnungsinitialisierung benötigte Einrichtungsoperationen durchzuführen.Die Start-LISP-Dateien (acad.lsp, acaddoc.lsp und MNL) werden in den Speicher geladen, bevor eine Zeichnung vollständig initialisiert ist. Dies stellt normalerweise kein Problem dar, es sei denn, Sie möchten die command-Funktion verwenden. Es kann nicht garantiert werden, dass diese vor der Zeichnungsinitialisierung funktioniert ...
------------------ Mit freundlichem Gruß Udo Hübner Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 27. Feb. 2007 12:00 <-- editieren / zitieren --> Unities abgeben:
|
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 27. Feb. 2007 12:43 <-- editieren / zitieren --> Unities abgeben: Nur für joern bosse
Zitat: Original erstellt von CAD-Huebner: [i]Hallo Jörn, es kann in bestimmten Fällen sinnvoll sein, Befehle aus der ACADDOC.lsp nicht während des Ladevorgangs unverzüglich auszuführen sondern, erst nach dem Abschluss aller Ladevorgänge. Dann erst wird die Spezialfunktion S::STARTUP ausgeführt. /i]
VORSICHT!!! GEFAHR!!!
Wenn man einem Laien oder einem Publikum, in dem sich auch Laien befinden, die S::STARTUP Funktion erklärt, dann muss man UNBEDINGT darauf hinweisen, dass es eben nur diese eine einzige Funktion gibt, die eventuell aber von vielen Applikationen zur Initialisierung benötigt wird, und dass diese Funktion deshalb so definiert werden muss, dass alle anderen Applikationen sie auch nutzen können. Wenn jemand in der ACAD.LSP oder einer anderen automatisch geladenen Datei die S::STARUP Datei definiert, dann verhindert er allen zuvor geladenen Applikationen die Nutzung der S::STARTUP Funktion und macht sie damit eventuell unbrauchbar. Wie geht man also vor? 1. Man prüft, ob vielleicht schon eine S::STARTUP Funktion vorhanden ist 2. Falls nicht, dann darf man beruhig seine eigene definieren. Sie muss aber so definiert werden, dass sie als Liste und nicht als SUBR vorliegt, damit später geladene Applikationen diese auch nutzen können. Dazu verwendet man DEFUN-Q statt DEFUN! 3. Falls schon eine S::STARTUP vorhanden ist, dann prüft man, ob das eine Liste ist oder eine SUBR. Ist es eine SUBR, dann prüft man, von welcher Appluikation die stammt und reicht dem Entwickler diese Applikation zur Nachbesserung zurück und fährt fort wie bei 2). 4. Ist die S::STARTUP vorhanden und korrekt via DEFUN-Q definiert, dann hängt man die eigenen Startfunktionen via APPEND an die bereits vorhandene S::STARTUP dran. Konkret sieht das am Beispiel der Initialsierung meiner ArchTools so aus: Code:
(defun-q archtoolsstart () (load "ARCHTOOLS.VLX") (archtools-init) (prin1) )(cond ((not S::STARTUP) (setq S::STARTUP archtoolsstart) ) ((AND S::STARTUP (listp S::STARTUP)) (setq S::STARTUP (append S::STARTUP (cdr archtoolsstart))) ) ('T (setq S::STARTUP archtoolsstart) (princ (strcat "\nArchTools Warnung:" "\nEine fremde Applikation hat die S::STARTUP Funktion" "\nfehlerhaft eingerichtet." "\nSie wird u.U. nicht korrekt initialisiert" ) ) ) )
Tom Berger [Diese Nachricht wurde von archtools am 27. Feb. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2494 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 28. Feb. 2007 10:19 <-- editieren / zitieren --> Unities abgeben: Nur für joern bosse
Klasse Tom, der Einwand hat natürlich noch gefehlt. Und vor dem Hintergrund ist es vielleicht noch wichtig zu erwähnen, was der Sebastian (cadffm) im FAQ so beiläufig erwähnt hat: Zitat:
Interessant: Es können mehrere acaddoc.lsp existieren ! AutoCAD sucht anhand der im Bibliothekspfad angegebenen Reihenfolge nach einer acaddoc.lsp-Datei. Es ist daher durch diese Funktion möglich, über verschiedene acaddoc.lsp-Dateien in den jeweiligen Zeichnungsverzeichnissen zu verfügen, so dass bestimmte AutoLISP-Routinen für bestimmte Zeichnungstypen oder Aufgaben geladen werden können.
Umso wichtiger die S::STARTUP korrekt zu implementieren. ------------------ Ciao, Marc Mein AG sucht u.a. Architekten und Bauzeichner! Mein alter AG sucht 'nen CADMIN Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |