Sponsored links

【AutoLISP ユーザー入力】 点 getpoint

Sponsored links
AutoLISP
Sponsored links

getpoint は、ユーザーが入力した点の座標が戻り値です。

Sponsored links

基礎知識

関数 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