| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY präsentiert die neue NVIDIA RTX A400 und die A1000 Grafikkarte, eine Pressemitteilung
|
Autor
|
Thema: Variablenabfrage in der MNL (754 / mal gelesen)
|
Peter2 Ehrenmitglied V.I.P. h.c.
Beiträge: 3849 Registriert: 15.10.2003 Win 10 bzw. 11 / 64 Pro AutoCAD MAP 3D 2023 BricsCAD 24
|
erstellt am: 07. Feb. 2016 14:55 <-- editieren / zitieren --> Unities abgeben:
Ich habe in der MNL eine Abfrage dieser Art Code:
(setq myvar nil) (initget 1 "A B C D ") (setq myvar (getkword "\nTextstilkategorie definieren:\n(A B C D) "))
Das Problem ist nun, dass die Abfrage zwar durchgeführt wird (wenn man den Code kennt), aber in der Befehlszeile angezeigt wird: Code: s::startup-load
Damit weiss man natürlich nicht, was das Programm will... Gibt es eine saubere Möglichkeit, das schon in der MNL abzufragen? Ich habe "princ" vorgeschoben und auch eine "Alert", um die Anzeige zu irgendwas zu zwingen, aber das hat nichts geholfen ... Peter ------------------ Für jedes Problem gibt es eine einfache Lösung. Die ist aber meistens falsch. ;-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Meldin Mitglied
Beiträge: 398 Registriert: 15.07.2011 ACA2020 Windows10
|
erstellt am: 07. Feb. 2016 16:03 <-- editieren / zitieren --> Unities abgeben: Nur für Peter2
|
Peter2 Ehrenmitglied V.I.P. h.c.
Beiträge: 3849 Registriert: 15.10.2003
|
erstellt am: 07. Feb. 2016 16:40 <-- editieren / zitieren --> Unities abgeben:
|
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 07. Feb. 2016 18:08 <-- editieren / zitieren --> Unities abgeben: Nur für Peter2
Zitat: Original erstellt von Peter2:
Leider nein. Steht bei mir auf 1 ...Zwischenbericht: Habe das "getkword" jetzt durch ein DCL-Fenster ersetzt, ist aber nicht im Sinne des Erfinders. Die Lösung der Startfrage wäre weiterhin interessant.
Ich schätze, das ist ein Initialisierungsproblem. Der Lisp Interpreter wird zu dem Zeitpunkt noch nicht richtig laufen. Das Problem kannst Du leicht beheben, indem Du Deine Abfrage in der MNL in einer zu definierenden S::STARTUP Funktion erledigst. Aber mach' das korrekt: Definiere Dir mit DEFUN-Q erst eine eigene MYSTARTUP Funktion, prüfe dann, ob es schon eine S::STARTUP gibt. Falls schon eine existiert und eine Liste ist (also selbst z.B. mit DEFUN-Q definiert wurde) dann definierst Du die einfach so um: (setq S::STARTUP (append S::STARTUP MYSTARTUP)) Falls die noch nicht existiert oder ein Dödel die unkorrekterweise mit DEFUN definiert hat, dann sieht das so aus: (setq S::STARTUP MYSTARTUP) Der Dödel hat dann Pech gehabt, denn seine falsche S::STARTUP geht damit flöten. Es gibt aber Möglichkeiten, die doch zu retten. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Peter2 Ehrenmitglied V.I.P. h.c.
Beiträge: 3849 Registriert: 15.10.2003
|
erstellt am: 07. Feb. 2016 20:49 <-- editieren / zitieren --> Unities abgeben:
Danke für die Hinweise. Im konkreten Fall musste eine bestehende, sehr umfangreiche MNL angepasst werden. Interessant ist, dass die MNL hier anscheinend nur ein Problem mit der sofortigen(!) Anzeige in der Befehlszeile hat. Bis zu diesem Punkt sind schon "comamnds" durchgelaufen, defuns, Aufruf von defuns, alerts, Zugriff auf dwgprops, und wenn alles fertig ist wird die Abfrage auch mit F2 angezeigt. Aber im Moment der Abfrage nicht ... ------------------ Für jedes Problem gibt es eine einfache Lösung. Die ist aber meistens falsch. ;-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 07. Feb. 2016 20:58 <-- editieren / zitieren --> Unities abgeben: Nur für Peter2
Zitat: Original erstellt von Peter2: Danke für die Hinweise. Im konkreten Fall musste eine bestehende, sehr umfangreiche MNL angepasst werden.
Es ist völlig egal, wie umfangreich Deine MNL ist. Füge vor die erste Zeile einfach diese Zeile ein: (defun mystartup () und nach der letzten Zeile diese Zeilen: ) (if (and s::startup (listp s::startup)) (setq s::startup (append s::startup mystartup)) (setq s::startup mystartup) ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Peter2 Ehrenmitglied V.I.P. h.c.
Beiträge: 3849 Registriert: 15.10.2003
|
erstellt am: 07. Feb. 2016 21:05 <-- editieren / zitieren --> Unities abgeben:
|