Hallo Gemeinde,
Bisher habe ich ein Objekt immer mit grread visuell verschoben.
Nun möchte ich aber nicht mehr auf den Objektfang verzichten und
versuche es nun mit der command-funktion _move:
(defun block-insert (Blockname /)
(setvar "osmode" 0)
(command "_insert" Blockname (car(cdr(grread 't 5 0))) 1. 1. 0. "")
;holt Block ans Fadenkreuz
(command "_move" (entlast)(setvar "osmode" 3) "") ;verschiebt ihn
)
Block hereinholen und verschieben funtioniert als standalone-Funktion
einwandfrei, im Gesamtprogramm aber nicht, weil die Funktion abgearbeitet
wird bevor ich den Block verschoben habe. Das kann man auch zeigen in der
Vlisp-Konsole z.B.:
(command "_move" (entlast)(setvar "osmode" 3) "")
(princ "XXXXX") <enter>
Den Block kann ich wohl verschieben im Modelspace aber der string "XXXXX"
wird bereits vorher ausgegeben.
In meinem Hauptprogram treffe ich nach Abarbeitung der Unterfunktion
wieder auf eine grread-Tastaturabfrage. Da wird nun mit der Maustaste
ein falsches Argument eingegeben (3d-point statt key) , weil ich den
Block noch nicht verschoben habe, aber die Funktion "block-insert"
bereits ein "return" ausgeführt hat.
Ich habe mit wait-funktion oder irgendeiner dummy-funtion nach dem _move
probiert, aber es nützt alles nichts.
Warum kehrt die Funktion zurück bevor das _move command erledigt ist.
Ist das System- oder Lisp-bedingt? Hilfe wid dankend angenommen
Peter
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP