従来のAutoCADコマンドを使って自作コマンドを作る、点の指定の練習問題です。
解答
点指定に文字列を使う方法
(defun c:Test ()
(command-s "._RECTANG" "850, 60" "1150, 0")
(princ))
(command-s “RECTANG” “850, 60” “1150, 0”)
AutoCADコマンド RECTANG[長方形] を使い、2つの頂点をしていします。
command-s はAutoCADコマンドを実行する関数です。
頂点は”” で囲って文字列にして渡すことができます。
リストで点座標を作って渡す方法
(defun c:Test (/ Pt1 Pt2)
(setq
Pt1 (list 850 60 )
Pt2 (list 1150 0 )
)
(command-s "._RECTANG" Pt1 Pt2)
(princ))
AutoCADコマンド RECTANG[長方形] を使い、2つの頂点をしていします。
command-s はAutoCADコマンドを実行する関数です。
AutoLISPでは、3つの数値を並べたリストを点座標として使うことができます。
Z値を省略することもでき、今回はX値とY値、2つの数値のリストにしています
(setq
Pt1 (list 850 60 )
Pt2 (list 1150 0 )
)
変数Pt1 Pt2にそれぞれ点座標を入れ、
(command-s “RECTANG” Pt1 Pt2)
コマンド実行時に変数で点情報を渡しています。
リストで数値を並べた点座標は、AutoLISPプログラム内で計算をして点を指定するなど編集できて便利です。
Pt1 Pt2 変数に点座標を入れましたが、今回はシンプルだし変数を一度づつしか使わないので、変数を使わずに書いてもいいと思います。
変数を使わなかった場合はこうなります。
(defun c:Test ()
(command-s "._RECTANG" (list 850 60) (list 1150 0))
(princ))
関数 list はアポストロフィで省略することもできます。
(list 850 60 ) は、‘(850 60 ) と書くこともできます。
(defun c:Test ()
(command-s "._RECTANG" '(850 60) '(1150 0))
(princ))
リストの要素によっては省略形にできない場合もあります。詳しくはコチラの記事をご一読下さい。
Visual LISP を使った場合
関数名が vl-cmdf になるだけでほぼ同じです。
文字列で点指定も、リストで点座標を使うのも同じように使えます。
(defun c:Test ()
(vl-cmdf "._RECTANG" "850, 60" "1150, 0")
(princ))
(defun c:Test ()
(vl-cmdf "._RECTANG" '(850 60) '(1150 0))
(princ))
Comments