getpoint は、ユーザーが入力した点の座標が戻り値です。
基礎知識
関数 getpoint
AutoLISP関数 getpoint は、ユーザーに点を指定するように促し、その点の座標を戻り値にする機能がある関数です。
(getpoint) で、ユーザー入力を促します。
(getpoint “メッセージ”) このように、文字列を引数にすると、コマンドラインと、ダイナミック入力ON時にはカーソル下にもメッセージを出してくれます。
使用例
では、実際にAutoLISPプログラムに入れて使ってみましょう。
AutoCADコマンドのSCALE[尺度変更]を使って、コマンドを作ります。
通常、SCALEは、基点と尺度を入力しますが、2点を選択して、オプションの[参照(R)]で尺度を変更するコマンドにします。
手順は、
- getpoint で基点(参照点1も同じ点を使う)を選択。
- getpoint でもう一つの参照点を選択
- AutoCADコマンドSCALE[尺度変更]を実行。オプションで[参照(R)]を使う。
これをAutoLISPにするとこうなります。
AutoLISP
(defun c:test ( / Objs Pt1 Pt2)
(setq Objs (ssget))
(setq Pt1 (getpoint "基点を選択: "))
(setq Pt2 (getpoint "参照点を選択: "))
(command-s "._SCALE" Objs "" Pt1 "R" Pt1 Pt2 pause)
);defun
AutoLISP の説明
(setq Objs (ssget))
まず、尺度変更をする図形をssgetでグループ選択して、変数Objsに入れています
(command-s “._scale” Objs “” Pt1 “R” Pt1 Pt2 pause) の所で Objsではなく、pause にしても同じようにユーザー選択になります。
しかし、その場合だと、点を2つ選んでから、最後に図形を選ぶことになるので、ここは私の好みですが、通常の尺度変更と同じように、まずは図形を選ぶようにしました。
(setq Pt1 (getpoint “基点を選択: “))
ここで、getpoint を使い、点をユーザー入力してもらいます。
ユーザー入力された点の座標が戻り値ですので、(setq Pt1 を使って、変数Pt1に1点目の座標を入れています。
次の行のも同じように、Pt2に参照点を入れています。
(command-s “._SCALE” Objs “” Pt1 “R” Pt1 Pt2 pause)
そして、最後に、AutoCADコマンドのSCALE[尺度変更]の実行です。
図形選択でObjsを入れ、基点にPt1、そしてオプションの[参照(R)]を選び、1つ目の参照点は基点と同じPt1、2つ目の参照点にPt2を入れ、最後の点はpauseを使って、コマンド内でユーザー入力です。
まとめ
- getpoint は、点をユーザー入力するように促し、その入力された点の座標を戻す。
- 引数にメッセージを付け加えることもできる。
Comments