| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Problem mit command-Aufruf ab 2015 version (971 mal gelesen)
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1832 Registriert: 28.04.2009
|
erstellt am: 03. Aug. 2015 09:01 <-- editieren / zitieren --> Unities abgeben:
Hier mal nachgehakt, wie die Profies mit command / command-s zwischen der jeweiligen Acadversion umgehen. Einmal warum hat man die command-Anweisung umgekrämpelt zum anderen, wenn meine Applikation ab der 2013-version laufen soll müsste ich quasi eine Abfrage nach der angew. Acadversion machen, um dann entweder command oder command-s zu verwenden. Ist das lösbar, ohne das ich jede command-zeile zweimal schreiben muss. Als Gedanke (defun commands() (wenn Acad2013-2014 (dann command (wenn Acad2015-> (dann command-s ) Das lässt sich so leiter nich umsetzen, wieso? Code: ((< (cadr (cd:SYS_AcadInfo)) 20.0) ; bis Acad 2014 version (defun commands () (command) ) ) ;_$ ; error: no function definition: nil
Als zweites Problem habe ich, das die *error*-Methode nicht richtig anspringt, wenn ich versuche eine command-s Anweisung abzubrechen, deshalb war mein erster Gedanke einen while-loop mit grread abzufragen Code: (while loop (setq code (grread T 8)) (cond ((equal code '(2 102)) (princ "\n Finished!") (break) ) (T (doLayout)) ) )
Wiederum eine Sackgasse, liege ich falsch, dass man command-s mit Esc abbrechen kann. Dann könnte ich mir das Gedöns sparen ? ------------------ Gruss Dirk Blog | Adolf Spende | Infra-Feed | ÅF AB
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 Alles
|
erstellt am: 03. Aug. 2015 10:11 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Teil1 Wenn du im echten Code "richtigen Code" und keine Schreib/Syntaxfehler machst, dann geht das. Wenn niedriger Version XY, dann Funktion command-s definieren.. So sollte es gehen und das machen auch andere. Teil2 Das steht eigentlich in der Doku zur Funktion beschrieben, auch wenn es Ausnahmen gibt(meine Meinung).
------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1832 Registriert: 28.04.2009
|
erstellt am: 03. Aug. 2015 11:17 <-- editieren / zitieren --> Unities abgeben:
Das hat funktioniert Meine Umsetzung so... Code: (defun commands(name arg1 arg2 arg3 arg4 arg5) (cond ((>= (cadr (cd:SYS_AcadInfo)) 20.0) ; Acad 2015 version (command-s name arg1 arg2 arg3 arg4 arg5) ) ((< (cadr (cd:SYS_AcadInfo)) 20.0) ; bis Acad 2014 version (command name arg1 arg2 arg3 arg4 arg5) ) ) )
Vielleicht gibt es eine bessere Lösung. Da ich hiermit eine Beschränkung in der Anzahl der Argumente an command-Aufruf habe. Gibt es eine Möglichkeit diese Beschränkung aufzuheben? ------------------ Gruss Dirk Blog | Adolf Spende | Infra-Feed | ÅF AB
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1832 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 03. Aug. 2015 11:21 <-- editieren / zitieren --> Unities abgeben:
|
Brischke Moderator CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 03. Aug. 2015 11:32 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Zitat: Original erstellt von cadplayer: ... wenn meine Applikation ab der 2013-version laufen soll müsste ich quasi eine Abfrage nach der angew. Acadversion machen...
AutoCAD versteht ab 2012 command wie command-s. Dein Vorgehen ist folglich überhaupt nicht erforderlich. Grüße! Holger
------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen.
defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1832 Registriert: 28.04.2009
|
erstellt am: 03. Aug. 2015 11:40 <-- editieren / zitieren --> Unities abgeben:
Führe ich selbigen Code, der in 2014er version einwandfrei läuft in 2015er version kommt es jedoch zu Problemen im command-Aufruf. Ersetze ich folglich alle Command-Aufrufe durch command-s, geht es wieder Problematik mit Argumenten ist so gelöst
Code: (defun commands(lst) (cond ((>= (cadr (cd:SYS_AcadInfo)) 20.0) ; Acad 2015 version (foreach n lst (command-s n) ) ) ((< (cadr (cd:SYS_AcadInfo)) 20.0) ; bis Acad 2014 version (foreach n lst (command n) ) ) ) )
------------------ Gruss Dirk Blog | Adolf Spende | Infra-Feed | ÅF AB
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 03. Aug. 2015 11:46 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
nimm Code, der in der 2015er einwandfrei läuft und lass den in 2014 laufen. Sollte ohne Probleme funktionieren. Grüße! Holger Zu dem Warum Autodesk dies überhaupt gemacht hat nur soviel: Durch die Umstellung des Commandhandlings ist nun eine asynchrone Befehlsausführung möglich. Das bedeutet, dass ein Befehl angestartet werden kann, und noch bevor dieser fertig ist, kann in der Zeichnung weiter gearbeitet werden. ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen.
defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1832 Registriert: 28.04.2009
|
erstellt am: 03. Aug. 2015 12:03 <-- editieren / zitieren --> Unities abgeben:
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1832 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 03. Aug. 2015 13:51 <-- editieren / zitieren --> Unities abgeben:
|