「Initget」の版間の差分

提供:GizmoLabs - だいたい CAD LISP なサイト
 
(同じ利用者による、間の3版が非表示)
16行目: 16行目:
:* bits : ビットコード化された整数で、特定のタイプのユーザ入力を許可または禁止する。ビットは、値を加算して0から255の範囲で自由に組み合わせることができる。bits 引数を指定しなかった場合は、0とみなされる。
:* bits : ビットコード化された整数で、特定のタイプのユーザ入力を許可または禁止する。ビットは、値を加算して0から255の範囲で自由に組み合わせることができる。bits 引数を指定しなかった場合は、0とみなされる。
::: ビット値には次のものがある。
::: ビット値には次のものがある。
:::* 1 (ビット 0) 要求に対して[Enter]のみ入力することを禁止。
:::* 1 (ビット 0) 要求に対して[Enter]のみ入力することを禁止。
:::* 2 (ビット 1) 要求に対して 0 を入力することを禁止。
:::* 2 (ビット 1) 要求に対して 0 を入力することを禁止。
:::* 4 (ビット 2) 要求に対して負の値を入力することを禁止。
:::* 4 (ビット 2) 要求に対して負の値を入力することを禁止。
:::* 8 (ビット 3) ユーザが現在の図面範囲の外側に点を入力することを許可。システム変数 LIMCHECKは無視する。
:::* 8 (ビット 3) ユーザが現在の図面範囲の外側に点を入力することを許可。システム変数 LIMCHECKは無視する。
:::* 16 (ビット 4)  (現在は使用されてない)
:::* 16 (ビット 4)  (現在は使用されてない)
:::* 32 (ビット 5)破線を使用して、ラバーバンド線またはラバーバンドボックスを描く。作図領域内の位置を指定することによってユーザが点を指定できる関数の場合、このビットの値によってラバーバンド線またはラバーバンド ボックスを、実線ではなく破線で表示できる (ディスプレイ ドライバによっては、破線の代わりに独自の色が使用される)。システム変数 POPUPS が 0の場合、このビットを無視。
:::* 32 (ビット 5) 破線を使用して、ラバーバンド線またはラバーバンドボックスを描く。作図領域内の位置を指定することによってユーザが点を指定できる関数の場合、このビットの値によってラバーバンド線またはラバーバンド ボックスを、実線ではなく破線で表示できる (ディスプレイ ドライバによっては、破線の代わりに独自の色が使用される)。システム変数 POPUPS が 0の場合、このビットを無視。
:::* 64 (ビット 6) getdist 関数への Z 座標の入力を禁止する。getdist 関数が 2D 距離を返すことをアプリケーションに対して保証する。
:::* 64 (ビット 6) getdist 関数への Z 座標の入力を禁止する。getdist 関数が 2D 距離を返すことをアプリケーションに対して保証する。
:::* 128 (ビット 7) キーワードかどうかに関係なく、任意の入力ができるようにする。このビットは、ビット 0より優先される。ビット 7 とビット 0が設定されているときにユーザが[Enter]を押すと、空の文字列が返される。
:::* 128 (ビット 7) キーワードかどうかに関係なく、任意の入力ができるようにする。このビットは、ビット 0より優先される。ビット 7 とビット 0が設定されているときにユーザが[Enter]を押すと、空の文字列が返される。
:::* 256 (ビット 8) … 任意の入力より直接距離入力を優先させる。外部アプリケーションでは、既定で任意の入力が直接距離入力より優先される。CAD に、ユーザ入力を直接距離入力として評価させるには、このビットをオンにする。キーボードからの適切な点入力は、常に、直接距離入力または任意の入力より優先されることに注意。
:::* 512 (ビット 9) … getpoint または getcorner を呼び出す前にオンにすると、カーソルがソリッドの平面状の面のエッジに重なったときに、一時的な UCS が生成される。一時的な UCS は、カーソルが面から離れるとリセットされる。別の面にカーソルを移動するとダイナミックに再生成され、点が取得されるとダイナミック UCS は、現在の UCS にリセットされる。この機能は、円柱の側面のような非平面に対しては無効。
:::* 1024 (ビット 10) … getdist、getangle、getorient、getpoint、getcorner を呼び出すとき、距離、角度、点、コーナーが、Z 方向には、直交モード、極トラッキング、オブジェクト トラッキングの影響を受けたくない場合があるが、これらの関数を呼び出す前にこのビットをオンにすると、Z 方向の直交モード、極トラッキング、オブジェクト トラッキングが一時的に無効になる。この機能は、ポリライン、円弧、円などの 2D 図形を作成したり、ARRAY[配列複写]コマンドで 2D 配列を作成する場合に便利。
 
 
::: 注: initget 関数のコントロール ビットは今後のバージョンで 追加される可能性がある為、ここに示されている以外のビットは設定しない。
::: 注: initget 関数のコントロール ビットは今後のバージョンで 追加される可能性がある為、ここに示されている以外のビットは設定しない。
;
;
67行目: 72行目:
|}
|}


; キーワードの詳細
== キーワードの詳細 ==
: string 引数は、次の規則に従って解釈される。
: string 引数は、次の規則に従って解釈される。
:* 各キーワードは、1 つまたは複数のスペースによって他のキーワードと区切る。たとえば、"Width Height Depth" によって 3 つのキーワードが定義される。
:* 各キーワードは、1 つまたは複数のスペースによって他のキーワードと区切る。たとえば、"Width Height Depth" によって 3 つのキーワードが定義される。
77行目: 82行目:
: 以下は、IntelliCAD のみで有効
: 以下は、IntelliCAD のみで有効
:* IntelliCAD (IJCAD 2013 まで) では、キーワードをプロンプトメニューから選択できるようになっているが、プロンプトメニューに表示させたくない場合は、キーワードの先頭に ~ を付ける。(たとえば、"~LType"、"~eXit"、"~_toP" など)
:* IntelliCAD (IJCAD 2013 まで) では、キーワードをプロンプトメニューから選択できるようになっているが、プロンプトメニューに表示させたくない場合は、キーワードの先頭に ~ を付ける。(たとえば、"~LType"、"~eXit"、"~_toP" など)


; サンプル
; サンプル
88行目: 94行目:
: 次に例を示す。
: 次に例を示す。
<pre class="brush: autolisp;">
<pre class="brush: autolisp;">
(initget "Abc Def _Ghi Jkl")
(initget "Abc Def _Ghi Jkl")
(getkword "¥nオプションを入力 (Abc/Def): ")
(getkword "¥nオプションを入力 (Abc/Def): ")
</pre>
; A と入力すると "Ghi" が返され、_J と入力すると "Jkl" が返される。
: A と入力すると "Ghi" が返され、_J と入力すると "Jkl" が返される。


; 日本語でキーワード選択させたいケース
(initget "はい いいえ _Yes No")
(getkword "¥nオプションを入力 [はい/いいえ]: ")
; はい または _y と入力すると "Yes" が返され、いいえ または _N と入力すると "No" が返される。


<pre class="brush: autolisp;">
(initget (+ 1 2 4))
(initget (+ 1 2 4))
(setq op (getkword))
(setq op (getkword))

2020年11月17日 (火) 13:36時点における最新版

構文
(initget [bits] [string])


機能
次のユーザ入力関数の呼び出しで使用するキーワードを設定する。
キーワードを指定できる関数には、getint、getreal、getdist、getangle、getorient、getpoint、getcorner、getkword、entsel、nentsel、nentselp がある。キーワード指定できないユーザ入力関数は、getstringのみ。
次のユーザ入力関数の呼び出しで、予期されるタイプの入力(たとえば getpoint 関数に対しては点の指定)をユーザが行わないと、キーワードがチェックされる。ユーザの入力がリストに存在するキーワードのいずれかと一致した場合、関数はそのキーワードを文字列として返す。アプリケーションは、キーワードを調べ、それぞれに対応する動作を行うことができる。 ユーザ入力が予期したタイプではなくキーワードとも一致しない場合、CAD はもう一度入力するようユーザに要求する。initget 関数のビット値とキーワードは、次回のユーザ入力関数の呼び出しのみに適用される。


initget 関数でコントロール ビットを設定した後で、設定されたビットが意味を持たないユーザ入力関数をアプリケーションが呼び出すと、そのビットは無視される。指定された状態についてユーザの入力が正しくない場合(たとえば、0が許可されていないときに0を入力する等)、CAD はメッセージを表示して、もう一度入力するようユーザに要求する。


引数
  • bits : ビットコード化された整数で、特定のタイプのユーザ入力を許可または禁止する。ビットは、値を加算して0から255の範囲で自由に組み合わせることができる。bits 引数を指定しなかった場合は、0とみなされる。
ビット値には次のものがある。
  • 1 (ビット 0) … 要求に対して[Enter]のみ入力することを禁止。
  • 2 (ビット 1) … 要求に対して 0 を入力することを禁止。
  • 4 (ビット 2) … 要求に対して負の値を入力することを禁止。
  • 8 (ビット 3) … ユーザが現在の図面範囲の外側に点を入力することを許可。システム変数 LIMCHECKは無視する。
  • 16 (ビット 4) … (現在は使用されてない)
  • 32 (ビット 5) … 破線を使用して、ラバーバンド線またはラバーバンドボックスを描く。作図領域内の位置を指定することによってユーザが点を指定できる関数の場合、このビットの値によってラバーバンド線またはラバーバンド ボックスを、実線ではなく破線で表示できる (ディスプレイ ドライバによっては、破線の代わりに独自の色が使用される)。システム変数 POPUPS が 0の場合、このビットを無視。
  • 64 (ビット 6) … getdist 関数への Z 座標の入力を禁止する。getdist 関数が 2D 距離を返すことをアプリケーションに対して保証する。
  • 128 (ビット 7) … キーワードかどうかに関係なく、任意の入力ができるようにする。このビットは、ビット 0より優先される。ビット 7 とビット 0が設定されているときにユーザが[Enter]を押すと、空の文字列が返される。
  • 256 (ビット 8) … 任意の入力より直接距離入力を優先させる。外部アプリケーションでは、既定で任意の入力が直接距離入力より優先される。CAD に、ユーザ入力を直接距離入力として評価させるには、このビットをオンにする。キーボードからの適切な点入力は、常に、直接距離入力または任意の入力より優先されることに注意。
  • 512 (ビット 9) … getpoint または getcorner を呼び出す前にオンにすると、カーソルがソリッドの平面状の面のエッジに重なったときに、一時的な UCS が生成される。一時的な UCS は、カーソルが面から離れるとリセットされる。別の面にカーソルを移動するとダイナミックに再生成され、点が取得されるとダイナミック UCS は、現在の UCS にリセットされる。この機能は、円柱の側面のような非平面に対しては無効。
  • 1024 (ビット 10) … getdist、getangle、getorient、getpoint、getcorner を呼び出すとき、距離、角度、点、コーナーが、Z 方向には、直交モード、極トラッキング、オブジェクト トラッキングの影響を受けたくない場合があるが、これらの関数を呼び出す前にこのビットをオンにすると、Z 方向の直交モード、極トラッキング、オブジェクト トラッキングが一時的に無効になる。この機能は、ポリライン、円弧、円などの 2D 図形を作成したり、ARRAY[配列複写]コマンドで 2D 配列を作成する場合に便利。


注: initget 関数のコントロール ビットは今後のバージョンで 追加される可能性がある為、ここに示されている以外のビットは設定しない。
  • string : 一連のキーワードを示す文字列。キーワードの規則は、下記「キーワードの詳細」の通り。


戻り値
nil


キーワードとコントロールビット

関数に適用できるコントロール ビット
コントロール ビットは、次の表に示すように、それが意味を持つ getxxx 関数にのみ有効。
ユーザ入力関数と適用可能なコントロール ビット
コントロール ビットの値
関 数 キーワードが
有効
null 不可
(1)
ゼロ不可
(2)
負数不可
(4)
範囲なし
(8)
破線使用
(32)
2D距離
(64)
任意入力
(128)
直接距離
(256)
UCS 面トラッキング
(512)
Z トラッキング無効
(1024)
getint X X X X X
getreal X X X X X
getdist X X X X X X X X X
getangle X X X X X X X
getorient X X X X X X X
getpoint X X X X X X X X
getcorner X X X X X X X X
getkword X X X
entsel X
nentsel X
nentselp X

キーワードの詳細

string 引数は、次の規則に従って解釈される。
  • 各キーワードは、1 つまたは複数のスペースによって他のキーワードと区切る。たとえば、"Width Height Depth" によって 3 つのキーワードが定義される。
  • 各キーワードには、半角英数字とハイフン(-)のみを含めることができる。
キーワードの短縮形を指定する方法には、次の 2 つがある。
  • 入力が必要な部分を大文字で、その他の部分を小文字で指定する。大文字による短縮形の指定は、キーワード内のどの部分でも行える(たとえば、"LType"、"eXit"、"toP" など)。
  • キーワード全体を大文字で指定し、その直後にカンマと入力が必要な文字を続ける(たとえば "LTYPE,LT")。この場合、キーワード文字はキーワードの先頭の文字でなければならない。つまり、"EXIT,X" は無効。
以下は、IntelliCAD のみで有効
  • IntelliCAD (IJCAD 2013 まで) では、キーワードをプロンプトメニューから選択できるようになっているが、プロンプトメニューに表示させたくない場合は、キーワードの先頭に ~ を付ける。(たとえば、"~LType"、"~eXit"、"~_toP" など)


サンプル
2 つの簡単な例、"LType" と "LTYPE,LT" は同じ。 ユーザが LT(大文字と小文字のどちらも可)と入力するとキーワードとして認識される。キーワードのスペルどおりなら、ユーザは入力が必要な部分の後にも文字を入力できる。 この例では、LTY や LTYP も認識されるが、L は認識されない。
string 引数全体が大文字か小文字のどちらかのみで、カンマとその後の文字列が存在しない場合、CAD はユーザがキーワード全体を入力したときのみ、キーワードを認識する。
initget 関数は、英語以外の言語に翻訳されたキーワードをサポートしている。キーワード文字列に対する次の構文は、英語以外の言語に翻訳されたキーワードの入力が可能で、言語に依存しないキーワードを返す。
"local1local2localn_indep1indep2indepn"
ここで、local1 から localn は、英語以外の言語に翻訳されたキーワード。 indep1 から indepn は、言語に依存しないキーワード。
英語以外の言語に翻訳されたキーワードと、言語に依存しないキーワードの順序は常に同じでなければならない。 また、最初の言語に依存しないキーワードの先頭には、アンダースコアが必要。
次に例を示す。
(initget "Abc Def _Ghi Jkl")
(getkword "¥nオプションを入力 (Abc/Def): ")
; A と入力すると "Ghi" が返され、_J と入力すると "Jkl" が返される。

; 日本語でキーワード選択させたいケース
(initget "はい いいえ _Yes No")
(getkword "¥nオプションを入力 [はい/いいえ]: ")
; はい または _y と入力すると "Yes" が返され、いいえ または _N と入力すると "No" が返される。

(initget (+ 1 2 4))
(setq op (getkword))

関連事項