Sponsored links

【AutoLISP ドリル】コマンド操作1 解答編

Sponsored links
ドリル
Sponsored links
Jagaimo
Jagaimo

従来のAutoCADコマンドを使って自作コマンドを作る、点の指定の練習問題です。

Sponsored links

解答

点指定に文字列を使う方法

(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