ユーザー出力関数

プロンプト

AutoLISP関数
(prompt string)
string:文字列
コマンドラインに文字列を表示します。
戻り値:nil
AutoLISP関数
(terpri)
コマンドラインに改行を出力します
戻り値:nil

prompt 関数と terpri 関数は、AutoCADの【コマンドライン】に文字列や改行を出力します。出力先は【コマンドライン】に限られ Visual LISPの【コンソール】やファイルへの出力には使えません。terpri 関数は、prompt 関数で改行の制御文字を出力させたもの「(prompt "¥n")」と同じ動作をします。

PRINx 系関数と大きく異なるのは、PRINx 系が LISP のデータ型を自動で画面に表示できる適切な文字列に変換するのに対して、prompt 関数は文字列しか受け付けないことです。

戻り値は常に nil です。

_$ (prompt "しばらくお待ちください...")⏎
nil
_$ (terpri) ⏎
nil
_$ (prompt "おまたせしました!")⏎
nil

上のように【コンソール】から実行すると【コマンドライン】には次のように表示されます。

コマンド:しばらくお待ちください...
おまたせしました!

メッセージダイアログ

AutoLISP関数
(alert string)
string:文字列
メッセージのダイアログ ボックスを表示します。
戻り値:nil

alert 関数はメッセージダイアログを表示します。string 引数は表示するメッセージの文字列を指定します。返り値は常に nil です。

使い方は以下のとおりです。

_$ (alert "お伝えしたいことがあります!")⏎
nil

実行すると、以下のようなダイアログが表示されます。

autolisp alert dialog

図形表示モード

AutoLISP関数
(redraw [ename mode])
ename:【図形名】
mode:整数
指定された図形の表示モードを変更します。
戻り値:nil

redraw 関数は、図形の画面の表示モードを変更します。これは、図面データベースの内容の変更ではなく、画面の表示だけです。

ename 引数には、表示変更する図形の【図形名】を指定します。

mode 引数には、以下のような意味があります。

mode引数 説明
1 図形を表示します。
2 図形を非表示にします。
3 図形をハイライト表示します。
4 図形をハイライト表示解除します。

非表示にされた図形は、図面データベースから削除こそされていませんが一時的に AutoCAD ユーザーは選択できなくなります。非表示やハイライト状態をリセットするためには、プログラムから再び redraw 関数で元に戻してやるか、REGENコマンドを行う必要があり【コマンドライン】のREDRAWコマンドでは元に戻りません。またハイライト表示は、グリップ表示までは行われません。グリップ表示を行いたい場合は、sssetfirst 関数を使用します。

引数は省略可能で、引数がない場合は、grdraw 関数や grvecs 関数で描いた一時的な画面描画をクリアします。ハイライトなど図形の変更した表示モードが元に戻るわけではありません。この関数は、二つの機能をもった少し妙な関数です。

下はオブジェクトを選択して、表示状態を変更するプログラム例です。

(while (setq ename (car (entsel "\nオブジェクトを選択(選択なしで終了)[最後(L)]:")))
  (initget 1 "0 1 2 3 4")
  (setq mode
         (atoi
           (getkword
             "\n表示モード(0:再描画、1:表示、2:非表示、3:ハイライト、4:ハイライト解除):"
           )
         )
  )
  (if (/= mode 0)
    (redraw ename mode)                 ;図形の表示モード変更
    (redraw)                            ;ビューポートの再描画
  )
)
AutoLISP関数
(sssetfirst gripset [pickset])
gripset:常にnil
pickset:選択セット
選択セットに含まれる図形の選択と非選択の表示状態をコントロールします。
戻り値:リスト

sssetfirst 関数は選択セットに含まれる図形の表示状態を変更します。

gripset 引数は、現在は使用されていません。しかし省略不可の引数ですから、常に nil とします。

pickset 引数に選択セットを与えると、選択セットに含まれる図形を画面上でハイライト表示し、グリップを表示します。選択セットが与えられないと、現在の画面のハイライトとグリップの表示をリセットします。なお、redraw 関数のハイライト表示とは異なり、AutoCAD ユーザーが ESC キーを押しても表示がリセットされます。ハイライト表示のみでグリップ表示が不要な場合は、redraw 関数を使用します。

下は、図面からすべての線分を含んだ選択セットを作成し、ハイライト表示しグリップを表示します。

_$ (sssetfirst nil (ssget "X" '((0 . "LINE"))))⏎
(nil <Selection set: 141>)

戻り値は、一番目が nil、二番目が指示された選択セット(選択セットが無い場合は nil )のリストが返ります。つまり、与えた引数と同じ内容をおさめたリストが返ります。

  redraw関数 sssetfirst関数
与える図形の引数 【図形名】 【選択セット】
元に戻し方 再度redraw関数で図形の表示モードを変更 sssetfirst関数を引数なしで実行
元に戻し方 (AutoCADコマンド) REGEN ESCキー
ハイライト表示 autolisp redraw highlight autolisp sssetfirst highlight