Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Transparenter Befehlsaufruf fehlerhaft

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:  Transparenter Befehlsaufruf fehlerhaft (938 / mal gelesen)
jupa
Ehrenmitglied V.I.P. h.c.
Ruheständler


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

Beiträge: 6050
Registriert: 16.09.2004

WINDOWS Vista Ultimate SP2 (64bit), NVIDIA Geforce 9600M GT, AutoCAD 2013.

erstellt am: 17. Nov. 2016 08: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

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



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: 17. Nov. 2016 19: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 jupa 10 Unities + Antwort hilfreich

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




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: 17. Nov. 2016 20: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 Nur für jupa 10 Unities + Antwort hilfreich

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


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

Beiträge: 6050
Registriert: 16.09.2004

WINDOWS Vista Ultimate SP2 (64bit), NVIDIA Geforce 9600M GT, AutoCAD 2013.

erstellt am: 17. Nov. 2016 20: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

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


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

Beiträge: 6050
Registriert: 16.09.2004

WINDOWS Vista Ultimate SP2 (64bit), NVIDIA Geforce 9600M GT, AutoCAD 2013.

erstellt am: 17. Nov. 2016 20:56    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

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



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: 17. Nov. 2016 21:26    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 jupa 10 Unities + Antwort hilfreich

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




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: 17. Nov. 2016 21:30    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 jupa 10 Unities + Antwort hilfreich

Du hast das Hochkomma im Command nicht drin, falsch, aber deutlicher geschrieben: ( command " '+dsettings" 3)

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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