LISP で座標値を取得するには、どうすればいいの?
こんにちは、メモだよ!!管理人です。
今回は、LISP で座標値を取得する方法について紹介します。
AuoCAD には、ID コマンドというのがあって、それを使用してクリックした点の座標値を表示することができます。
ID コマンドで表示される座標値の桁数は、単位管理 ダイアログの長さの精度で指定されている桁数になります。
なので、最大で小数点以下 8 桁です。
LISP では、最大で有効桁数 16 桁まで取得することが可能です。
getpoint 関数で座標値を取得
getpoint 関数を使用することで、座標値を取得することができます。
(defun C:GetId ()
(setq coordVal (getpoint "\n点を指定"))
; 取得した座標値を表示
(setq x (rtos (nth 0 coordVal) 2 16))
(setq y (rtos (nth 1 coordVal) 2 16))
(setq z (rtos (nth 2 coordVal) 2 16))
(alert (strcat "X = " x ", Y = " y ", Z = " z))
(princ)
)
※ 最初の行の「C:」のあとに書かれているのがコマンド名になります。コマンド名を変更したいときは、そこを変更してください。
LISP のロード方法がわからないときは、以下の記事を見てください。
【AutoCAD】AutoLISP の実行方法 - 図面を開いたときに自動的にロードする
上記 LISP を実行すると、以下のように指定した点の座標値が表示されます。😄
rtos 関数の 3 番目の引数を 16 にしているので、有効桁数 16 桁で座標値が表示されます。
正確な座標値を知りたいときに、LISP を使ったほうが多くの桁数を確認することができます。😉