| | | 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: Transparenter Befehlsaufruf fehlerhaft (1014 / mal gelesen)
|
jupa Ehrenmitglied V.I.P. h.c. Ruheständler
Beiträge: 6052 Registriert: 16.09.2004 WINDOWS Vista Ultimate SP2 (64bit), NVIDIA Geforce 9600M GT, AutoCAD 2013.
|
erstellt am: 17. Nov. 2016 08:31 <-- editieren / zitieren --> Unities abgeben:
Hallo, bis enschließlich AutoCAD 2014 kann man während eines aktiven Befehls (z. B. Linie) den Befehl +dsettings transparent ausführen mit (command "'+dsettings index). Es wird das Dialogfenster Zeicheinst (im weiteren DF genannt) geöffnet und zur Registerkarte index gewechselt. Nach Schließen des DFs wird der aktive Befehl weiter fortgesetzt. Seit AutoCAD 2015 funktioniert das nicht mehr. Der (command ...)-Aufruf startet zwar den Befehl +dsettings, jedoch wird die gewünschte Index-Nummer in der Befehlszeile abgefragt (der übergebene Parameter index wird also ignoriert oder nicht als solcher erkannt). Gibt man auf diese Anforderung hin einen Indexwert händisch ein, öffnet sich das DF und der weitere Ablauf ist (in etwa) wie gewohnt. Konkret sieht das so aus: Befehl: l LINIE Ersten Punkt angeben: (command "'+dsettings" 3) '+dsettings >>Registerkarte <0>:>>Registerkarte <0>: hier hätte sich DF mit Register 3 öffnen müssen. Nun gebe ich manuell einen Indexwert ein (absichtlich einen anderen als oben) '+dsettings >>Registerkarte <0>:>>Registerkarte <0>:2 Es öffnet sich das DF mit Register 2. Nach Schließen des DFs wird der Linie-Befehl wieder aufgenommen ... Nehme LINIE-Befehl wieder auf. Ersten Punkt angeben: 3 nil allerdings wird die aktuelle Koordinatenanfrage zunächst mit dem oben übergebenen Indexwert beantwortet (also Fehler). (Der Zahlenwert 3 wird aber auch nicht als Direkte Abstandseingabe interpretiert, vermutlich weil noch ein woher auch immer kommendes nil hinterhergeschoben wird (?)). Ab der nun automatisch wiederholten Koordinatenanfrage ist der weitere Verlauf jedoch wieder normal Ersten Punkt angeben: ... Ich habe schon mit command-s experimentiert, habe den Index wahlweise als Zahl oder als String übergeben, hab's mit vl-cmd probiert, ... - alles ziemlich plan-(und hilf- )los mit immer gleichem negativen Ergebnis. Hat jemand einen Tip, wie man in neueren ACAD-Versionen das +dsettings - Fenster transparent aktivieren kann? (BTW: Nicht innerhalb eines anderen Befehles, also Befehl: (command "'+dsettings" 3) funktioniert klaglos.)
Jürgen
------------------ Bildung kommt nicht vom Lesen, sondern vom Nachdenken über das Gelesene. (Carl Hilty) 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: 17. Nov. 2016 19:57 <-- editieren / zitieren --> Unities abgeben: Nur für jupa
Zitat: Original erstellt von jupa: Hallo, bis enschließlich AutoCAD 2014 kann man während eines aktiven Befehls (z. B. Linie) den Befehl +dsettings transparent ausführen mit (command "'+dsettings index).
Das ist nicht das, was AutoCAD unter transparenter Befehlseingabe versteht. Der Linienbefehl wartet auf die Eingabe des ersten Punkts, und dafür gibst Du eine Lispfunktion ein. Der Rückgabewert dieser Lispfunktion wird vom Linienbefehl als Eingabe auf seine Eingabeforderung verstanden. Und weil das nicht das erwartete Punktdatum ist, gibt's eine Fehlermeldung. Ich verstehe auch nicht, was Du eigentlich erreichen willst. Du kannst den laufenden Objektfang u.a. doch auch bei einem laufenden Befehl ändern. Nur als Hinweis: Transparente Befehle gibt man mit einem Hochkomma vor dem Befehlsaufruf ein. Beispiel: command: LINE Specify first point: 'CAL >>>> Expression: ...
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 17. Nov. 2016 20:25 <-- editieren / zitieren --> Unities abgeben: Nur für jupa
Das Hochkomma ist dem Jürgen bekannt, aber es ist in der Tat so wie er schreibt. In 2013 zb. kann man wie angegeben verfahren, in 2016 würde es SO nicht akzeptiert werden. Das Verhalten ist bis/nach 2014 unterschiedlich. Ursprünglicher Grund war die Nachbildung des OFang-Toggle aus der Statusleiste oder Makro(F3?) in Lisp- wozu auch immer. Bei Osmode 0 geht dabei der Einstellungsdialog auf (eigentlich). Siehe hier: http://ww3.cad.de/foren/ubb/Forum145/HTML/004425.shtml (in diesem Thread hier interessiert nur der offensichtliche Unterschied zwischen den Versionen, in der einen kann man im Command die Registerkarte angeben, in jüngeren Versionen wird die Angabe ignoriert. Wobei initcommandversion hier noch nicht erwähnt wurde, vielleicht bringt das ja die Lösung, wenn ich raten darf: Vermutlich nicht. ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
jupa Ehrenmitglied V.I.P. h.c. Ruheständler
Beiträge: 6052 Registriert: 16.09.2004 WINDOWS Vista Ultimate SP2 (64bit), NVIDIA Geforce 9600M GT, AutoCAD 2013.
|
erstellt am: 17. Nov. 2016 20:54 <-- editieren / zitieren --> Unities abgeben:
Danke erst mal für Deine Rückmeldung, Tom. Das klingt zwar schon mal logisch, aber dann frage ich mich warum das bis ACAD 2014 so wie von mir angedacht funktioniert. Auszug aus dem Befehlsfenster: Befehl: l LINIE Ersten Punkt angeben: (command "'_+dsettings" 2) ;; hier wird +dsettings transparent aufgerufen '_+dsettings >>Registerkarte <0>:2 ;; das Dialogfenster geht mit Register2 auf Nehme LINIE-Befehl wieder auf. ;; Liniebebefehl wird fortgesetzt Ersten Punkt angeben: nil ;; dieses nil ist sicherlich die Rückgabe von (command ...) Ersten Punkt angeben: Nächsten Punkt angeben oder [Zurück]: *Abbruch* Mir geht es weniger darum, eine Lösung zu finden (ist also kein akutes Problem) als vielmehr den dahinterstehenden Mechanismus zu verstehen. Und warum reagieren ACAD 2015 und neuer anders als ACAD 2014 und älter?
Das oben gezeigte sollte auch nur das Problem verdeutlichen, weil es auch direkt in der Befehlszeile reproduzierbar ist. In Wirklichkeit soll das alles noch in einen Lispbefehl eingebettet sein, in etwa so: (defun c:test () (command "'_+dsettings" 2) ... ) und angewendet so: Befehl: Linie Erster Punkt: 'test ;; test transparent starten, Dialogfenster geht auf, ..., wird wieder geschlossen kehre zum LinieBefehl zurück Erster Punkt: Test wird hier also ausdrücklich transparent gestartet. Meine Bedenken waren eher: "Einen Transparenten Befehl kann man nicht benutzen, wenn bereits ein transparenter Befehl aktiv ist." (AutoCAD-Grundkurs 1. Semester ) Nach meiner Logik startet man den transparenten Befehl 'test und innerhalb dieses den transparenten Befehl 'dsettings, was theoretisch nicht gehen dürfte. Aber: Zu meinem großen Erstaunen funktioniert das in ältenen AutoCAD-Versionen sogar. Also habe ich den internen Mechanismus wohl doch nicht verstanden. Und AutoCAD 2015 ff. schließen sich nun zu meinem Bedauern diesem Nichtverständnis an Falls es interessiert: Der Auslöser dieser Geschichte ist dieser Thread. Vllt. guckt Du da ja auch mal rein. Aber für heute mache ich erst mal Schluß. lg Jürgen ------------------ Bildung kommt nicht vom Lesen, sondern vom Nachdenken über das Gelesene. (Carl Hilty) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
jupa Ehrenmitglied V.I.P. h.c. Ruheständler
Beiträge: 6052 Registriert: 16.09.2004 WINDOWS Vista Ultimate SP2 (64bit), NVIDIA Geforce 9600M GT, AutoCAD 2013.
|
erstellt am: 17. Nov. 2016 20:56 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von cadffm: D Wobei initcommandversion hier noch nicht erwähnt wurde,
Interessante Idee, (das hatte ich gar nicht mehr auf dem Schirm), werde ich morgen testen. Gruß Jürgen ------------------ Bildung kommt nicht vom Lesen, sondern vom Nachdenken über das Gelesene. (Carl Hilty) 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: 17. Nov. 2016 21:26 <-- editieren / zitieren --> Unities abgeben: Nur für jupa
Zitat: Original erstellt von jupa: Danke erst mal für Deine Rückmeldung, Tom. Das klingt zwar schon mal logisch, aber dann frage ich mich warum das bis ACAD 2014 so wie von mir angedacht funktioniert.
In AutoCAD 2012 geht das nicht. Ich vermute, dass das dort, wo's funktioniert, eher ein Bug ist, der sich da über ein paar AutoCAD Versionen gehalten hat, denn das sollte definitiv nicht funktionieren. Command: LINE Specify first point: (command "+dsettings" 3) +dsettings Invalid point. ; error: Function cancelled Specify first point: Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 17. Nov. 2016 21:30 <-- editieren / zitieren --> Unities abgeben: Nur für jupa
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|