お世話になっております。
Lispでブロックを挿入後、下記ルーチンで移動、回転、鏡像、コピーをループさせております。
ですが、コピーを選択して複数回実行した後右クリックするとルーチンは終わってしまいます。
なのでこのコピーの部分を子ループにして右クリックした時に親ループに戻ることはできますでしょうか。色々試してみたのですがうまくいきません。ご教授いただけないでしょうか。
よろしくお願いします。
使用CAD: AutoCAD 2025
(defun my_move_rotate_mirror ()
(setq mrmi "init")
(while mrmi
(initget "M RO MI CO")
(setq mrmi (getkword "Escで終了 [M 移動/RO 回転/MI 鏡像/CO 複写]: "))
(cond ((= mrmi "M")
(setq basepoint1 (getpoint "基点を指示\n"))
(command "._move" "L" "" "_non" basepoint1 pause))
((= mrmi "RO")
(setq basepoint1 (getpoint "基点を指示\n"))
(command "._rotate" "L" "" "_non" basepoint1 pause))
((= mrmi "MI")
(setq basepoint1 (getpoint "1点目を指示\n"))
(setq basepoint2 (getpoint basepoint1 "2点目を指示\n"))
(initget "Y N")
(or (setq YN (getkword "元のオブジェクトを削除しますか? Yes or No [Yes/No]<No>"))(setq YN "N"))
(command "._mirror" "L" "" "_non" basepoint1 "_non" basepoint2 YN))
((= mrmi "CO")
(setq ob (ssget))(setq pt1 (getpoint "基点を指示\n"))
(command "._copy" ob "" "m" pt1 "co" pause) )
(t nil)))
(princ)
) ; Escが押された場合にループを抜ける
複写コマンドを子ループにしたい
- mappy
- 2025/09/19 (Fri) 19:39:39