DCL入門

ボタンを表示しよう!DCLのOKキャンセルボタンを解説【AutoCAD】

button-1
はこ
はこ

こんにちは!はこです。
AutoLISPを独学し、5年以上業務で使用しています。

こんな方に向けた記事です

  • ダイアログボックスにボタンを表示したい
  • 「OKボタンもキャンセルボタンもない」というエラーが出て困っている

今回の記事ではダイアログボックスにボタンやOKキャンセルボタンを表示させる方法について解説していきます。

OKキャンセルボタンがないとダイアログボックスを表示できないので、必ず配置する必要があります。

AutoCADが提供している標準のOK,キャンセルボタンもありますが、DCLではオリジナルのボタンを作成することも可能です。

ダイアログボックスの基礎的な部分を知ることができるので、ぜひご覧ください。

ちなみに、DCLについてはこちらの記事で解説しています。
関連記事:ダイアログボックスを表示しよう!AutoCADのDCLを解説【AutoLISP】

ボタンを表示しよう!DCLのOKキャンセルボタンを解説【AutoCAD】

ok-1

今回ご紹介するタイルは次の4つです。OKボタンに関するタイルと任意のボタンを作成できるタイルについて解説していきます。

ダイアログボックスの例DCLの記述
ok_onlyok_only;
ok_cancelok_cancel;
ok_cancel_helpok_cancel_help;
button-1:button{}
はこ
はこ

1つずつ解説していきます。

「OK」「キャンセル」「ヘルプ」ボタン

AutoCADが提供している標準のOKキャンセルのボタンは主に3つあります。

OKボタンのみ ok_only

ok_only;
dclファイルに記述した箇所へOKボタンを表示することができます。キーは「accept」です。

ダイアログボックスが表示された段階でOKボタンがフォーカス(ボタンの中に点線が表示)されるので、そのままEnterキーを押すとOKボタンが押されます。

キャンセル(Escキーを押す)した場合もOKボタンを押した扱いになります。
返り値は数値の「1」
OKボタンを押すとダイアログボックスが閉じます。

AutoLISP側への返り値は数値の「1」となります。
ok_onlyの記述例
test_ok_only:dialog {
  label = "ok_only";
  ok_only;
}
ok_only

OK・キャンセルボタン ok_cancel

ok_cancel;
OKボタンとキャンセルボタンの両方を表示することができます。OKボタンのキーは「accept」、キャンセルボタンのキーは「cancel」です。

ok_onlyと同様にOKボタンがフォーカスされていますが、キャンセルしたときはキャンセルボタンを押すことになります。
返り値は数値の「1」,「0」
OKボタンまたはキャンセルボタンを押すとダイアログボックスが閉じます。

AutoLISP側への返り値はOKボタンの場合は数値の「1」、キャンセルボタンの場合は数値の「0」です。
ok_cancelの記述例
test_ok_cancel:dialog {
  label = "ok_cancel";
  ok_cancel;
}
ok_cancel

OK・キャンセル・ヘルプボタン ok_cancel_help

ok_cancel_help;
OKボタンとキャンセルボタンに加えてヘルプボタンを表示できます。OKボタンのキーは「accept」、キャンセルボタンのキーは「cancel」です。

ヘルプボタンはlspファイル側でボタンを押したときの動作を記述しておく必要があります。ちなみにヘルプボタンのキーは「help」です。

ヘルプボタンを押してもAutoCADのヘルプが表示されるわけではないので注意してください。
返り値は数値の「1」,「0」またはヘルプボタンの動作結果
OKボタンまたはキャンセルボタンを押すとダイアログボックスが閉じます。

AutoLISP側への返り値はOKボタンの場合は数値の「1」、キャンセルボタンの場合は数値の「0」です。

ヘルプボタンを押したときはlspファイル側で記述した動作を行います。
ok_cancel_helpの記述例
test_ok_cancel_help:dialog {
  label = "ok_cancel_help";
  ok_cancel_help;
}
ok_cancel_help

ボタン button

標準のOKキャンセルボタン以外のボタンを作成したい場合は「button」を使用します。

:button{}
ボタンのタイルを表示します。{}内に属性(設定)を記述することで任意のボタンを作成できます。
返り値はボタンの動作結果
ボタンを押すとlspファイル側に記述されている動作を行います。
buttonの記述例
test_button:dialog {
  label = "button";
  :button {
    label = "button-1";
    key = "button-1";
    is_tab_stop = true;
    is_cancel = false;
    is_default = false;
  }
  ok_cancel;
}
button-1

buttonの属性を解説

buttonの{}に記述されている属性について解説します。

この他にもサイズや位置の属性も記述することができます。こちらの記事でご紹介していますのでよろしければご覧ください。
関連記事:準備中

label = "button-1";(省略可能)
記述した文字列がボタン上に表示されます。今回の場合は「button-1」です。
key = "button-1";(必須)
lspファイル側でこのタイルを参照するための名前です。「action_tile」や「mode_tile」でタイルを指定するときに使用するので必ず記述する必要があります。

「action_tile」や「mode_tile」ってなに?という方はこちらの記事をご覧ください。
関連記事:タイルを使いこなそう!DCLのタイル処理関数を解説【AutoCAD】

今回はラベルと同じ「button-1」としていますが、プログラムの変数名と同じにしてしまうとエラーになるので注意してください。
is_tab_stop = true;(省略可能)
Tabキーを押したときにフォーカスするか設定します。trueでフォーカスされ、falseでフォーカスされない設定になります。
is_cancel = false;(省略可能)
Escキーを押したとき、キャンセルする前にこのボタンを押すか設定できます。trueでこのボタンが押され、falseではこのボタンは押されません。

ただし、前述したOKキャンセルボタンを配置している場合はOKキャンセルボタンが優先されるのでボタンは押されずにキャンセルします。
is_default = false;(省略可能)
ダイアログボックスを表示したときにこのボタンにフォーカスするか設定できます。trueでフォーカスされます。

OKキャンセルボタンを配置しない場合は「is_cancel = false;」または「is_default = true;」を記述しないとエラーとなるので注意してください。

まとめ

DCLでダイアログボックスにOK,キャンセルボタンを表示する方法について解説してきました。

ボタンはダイアログボックスの基本的なタイルの一つですので活用してみてください。

ダイアログボックスの例DCLの記述内容
ok_onlyok_only;OKボタンのみを表示する
ok_cancelok_cancel;OKボタンと
キャンセルボタンを表示する
ok_cancel_helpok_cancel_help;OK,キャンセルボタンと
ヘルプボタンを表示する
button-1:button{}任意のボタンを表示できる
{}内に属性を記述する

記事の内容やAutoLISP、DCLのことでよく分からないところがあるようでしたら、コメントやメールでお気軽にご連絡ください!

はこ
はこ

お待ちしております。

プログラミングをもっと学びたい方におすすめ

AutoLISPをより理解しやすくするためには他のプログラミング言語を覚えることをおすすめします。こちらの記事ではおすすめのオンラインプログラミングスクールを紹介していますのでぜひご覧ください。

関連記事:学習目的別にご紹介!おすすめオンラインプログラミングスクール3選

無料体験もできるオンラインプログラミングスクールです!

-DCL入門

独学おすすめ書籍はコチラ
独学おすすめ書籍はコチラ