VisualLispでプログラミング! 個人でできるAutoCADカスタマイズ 第3回
はじめに
本連載は「AutoCADのカスタマイズをやってみたいと思っている、基本的なプログラミングの概念は理解している個人の方」を対象にしています。
第3回です!
第2回となる前回は図形を作図する方法について解説しました。
掲載したプログラムは線を作図するだけのシンプルな作図でしたが、VisualLispで図形を作図できることがご理解いただけたと思います。
第3回となる今回は、前回の最後にお伝えした通りユーザ入力で図形のパラメータを変更する方法を解説します。
VisualLispを起動する!
VLISPコマンドを実行してVisualLispを起動してください。
(リボンインタフェイスでは「管理」タブの「アプリケーション」パネルから「Visual LISP エディタ」を選択)
起動したら「ファイルを新規作成」でカスタマイズコマンド作成の準備をしてください。
VisualLispで日本語が表示できない?!
本題からはそれますが、デフォルトのVisualLispの設定では日本語が文字化けしてしまいます。
今後、VisualLispに日本語を入力することもあるかと思います。次の設定を実施してVisualLispで日本語を表示できるようにしておきましょう。
- 「ツール(T)」->「ウィンドウの属性(W)」->「フォント(F)」を選択
- フォントダイアログ内の「フォント名(F)」にて「MS ゴシック」を選択(日本語フォントであればお好みで選択しても大丈夫です)
- フォントダイアログ内の「OK」ボタンを押下
作図する図形
閑話休題。
今回作図する図形はハンコ(テキストを円で囲んだ図形)とします。
ハンコを原点に作図する場合のサンプルプログラムは以下の通りです。
(defun C:MYSEAL ()
(command “text” “J” “M” “0.0,0.0” “2.5” “0.0” “キャパ”)
(command “circle” “0.0,0.0” “5.0”)
(princ)
)
プログラムを実行すると原点を中心としたハンコが作図されます。
ユーザ入力で変更するパラメータ
ハンコの作図でユーザ入力により変化するパラメータをハンコの位置と文字の2つとします。
カスタマイズコマンドを実行すると、座標と文字の入力を求めるようにします。座標と文字が入力されたらハンコを作図します。
VisualLispでユーザ入力からの図形作図
では、以下の「MYSEAL」カスタムコマンドのプログラムをVisualLispに入力してください。
(defun C:MYSEAL ()(setq location (getpoint “\n位置を指定:”))(setq name (getstring “\n名前を入力:”))(command “text” “J” “M” location “2.5” “0.0” name)(command “circle” location “5.0”)(princ))
VisualLispのメニューで「ツール – エディタ内のテキストをロード」を選択して、プログラムをAutoCADにロードします。
AutoCADのコマンドウィンドウに「MYSEAL」と入力してカスタマイズコマンドを実行し、位置と名前を入力すると、入力した位置に入力した名前の「ハンコ」が作図されます。
(コマンドラインは、位置に「(25.0,25.0)」を指定して名前に「CAPA」を入力した例です)
(画面の中央のハンコが今回作図したものです。画面の左下のハンコは原点に作図したサンプルです)
プログラムの解説
プログラムの内容について解説します。以前の解説から変わらない部分については解説を省略しています。
getpoint “\n位置を指定:”
ユーザに座標の入力を求めます。ユーザが入力した座標が戻ります。
引数として入力を求める際のメッセージを設定します。設定したメッセージは直前のメッセージに続けて表示されるのを防ぐため、先頭に「\n」(改行を意味する)を記述しています。
getstring “\n名前を入力:”
ユーザに文字列の入力を求めます。ユーザが入力した文字列が戻ります。
引数として入力を求める際のメッセージを設定します。設定したメッセージは直前のメッセージに続けて表示されるのを防ぐため、先頭に「\n」(改行を意味する)を記述しています。
setq location (getpoint “\n位置を指定:”)
変数に値を設定します。「setq」が命令で「location」が変数名です。
「getpoint “\n位置を指定:”」を値として指定していますので、ユーザが入力した座標が変数「location」に設定されます。
setq name (getstring “\n名前を入力:”)
変数に値を設定します。「setq」が命令で「name」が変数名です。
「getstring “\n名前を入力:”」を値として指定していますので、ユーザが入力した文字列が変数「name」に設定されます。
command “text” “J” “M” location “2.5” “0.0” name
「command」部分がAutoCADのコマンドを実行する命令で、続く「”text”」でテキスト(text)コマンドを指定しています。
それ以降の「”J” “M” location “2.5” “0.0” name」がコマンドのパラメータとなります。
パラメータの3つ目に変数「location」を指定しており、ユーザが入力した座標が作図するテキストの中央点となります。
パラメータの6つ目に変数「name」を指定しており、ユーザが入力した文字列が作図するテキストで文字列となります。
command “circle” location “5.0”
「command」部分がAutoCADのコマンドを実行する命令で、続く「”circle”」で円(circle)コマンドを指定しています。
それ以降の「”circle” location “5.0”」がコマンドのパラメータとなります。
パラメータの2つ目に変数「location」を指定しており、ユーザが入力した座標が作図する円の中心点となります。
まとめ
今回は、VisualLispでユーザ入力を受け取り、ユーザ入力をパラメータに反映して図形作図する方法を解説しました。
今回使用した「getpoint」や[getstring]をユーザ入力関数といいます。「getpoint」や[getstring]以外にもユーザ入力関数がありますので、次回はそれらをご紹介したいと考えています。
それでは。
▼キャパの公式Twitter・FacebookではITに関する情報を随時更新しています!
建設・土木業界向け 5分でわかるCAD・BIM・CIMの ホワイトペーパー配布中!
CAD・BIM・CIMの
❶データ活用方法
❷主要ソフトウェア
❸カスタマイズ
❹プログラミング
についてまとめたホワイトペーパーを配布中