「Vlax-add-cmd」の版間の差分

提供:GizmoLabs - だいたい CAD LISP なサイト
編集の要約なし
編集の要約なし
 
(同じ利用者による、間の1版が非表示)
25行目: 25行目:
:* local-name : 文字列 (既定値は global-name)。
:* local-name : 文字列 (既定値は global-name)。
:* cmd-flags : 整数 (既定値は ACRX_CMD_MODAL + ACRX_CMD_REDRAW)。
:* cmd-flags : 整数 (既定値は ACRX_CMD_MODAL + ACRX_CMD_REDRAW)。
:: 主なフラグは、次のとおり。
{| class="wikitable mw-collapsible"
::* '''ACRX_CMD_MODAL''' (0) 他のコマンドがアクティブなときは、コマンドを呼び出せない。
|+cmd-flagsの内容
::* '''ACRX_CMD_TRANSPARENT''' (1) 他のコマンドがアクティブでも、コマンドを呼び出せる。
|cmd-flags
::
|ビットフラグ
:: 副次的なフラグは、次のとおり。
|内容
::* '''ACRX_CMD_USEPICKSET''' (2) コマンドがピックファースト セットを取得すると、AutoCAD 内部のピックファースト セットをクリアする。 コマンドは、ピックファースト セットを取得できる。コマンドは、グリップの取得および設定はできない。
|-
::* '''ACRX_CMD_REDRAW''' (4) コマンドがピックファースト セットやグリップ セットを取得しても、AutoCAD 内部のピックファースト セットやグリップ セットをクリアすることはない。 コマンドは、ピックファースト セットとグリップ セットを取得できる。
|acrx_cmd_modal
 
|0
|他のコマンドがアクティブなときは、コマンドを呼び出せない。
|-
|acrx_cmd_transparent
|1
|他のコマンドがアクティブでも、コマンドを呼び出せる。
|-
|acrx_cmd_usepickset
|2
|コマンドがピックファースト セットを取得すると、AutoCAD 内部のピックファースト セットをクリアする。 コマンドは、ピックファースト セットを取得できる。コマンドは、グリップの取得および設定はできない。
|-
|acrx_cmd_redraw
|4
|コマンドがピックファースト セットやグリップ セットを取得しても、CAD 内部のピックファースト セットやグリップ セットをクリアすることはない。 コマンドは、ピックファースト セットとグリップ セットを取得できる。
|-
|acrx_cmd_noperspective
|8
|パース表示では利用できない。
|-
|acrx_cmd_notilemode
|32
|タイルモードでは利用できない。
|-
|acrx_cmd_nopaperspace
|64
|ペーパー空間では利用できない。
|-
|acrx_cmd_nooem
|256
|OEM製品では利用できない。
|-
|acrx_cmd_nohistory
|8388608
|コマンド履歴なし。
|-
|acrx_cmd_no_undo_marker
|16777216
|アンドゥーマーカーなし。
|-
|acrx_cmd_nobedit
|33554432
|ブロック編集時は利用できない。
|}
ACRX_CMD_USEPICKSET と ACRX_CMD_REDRAW の両方を設定した場合、その効果は ACRX_CMD_REDRAW のみを設定したのと同じ。
ACRX_CMD_USEPICKSET と ACRX_CMD_REDRAW の両方を設定した場合、その効果は ACRX_CMD_REDRAW のみを設定したのと同じ。


フラグの詳細は、『ObjectARX リファレンス』の「Command Stack」を参照。




43行目: 84行目:


; サンプル
; サンプル
: 次の例の hello-autocad 関数には接頭の c: がないが、vlax-add-cmd 関数を使用して、AutoCAD コマンド プロンプトから ObjectARX スタイルのコマンドとして使用できるようにしている。
; 次の例の hello-autocad 関数には接頭の c: がないが、vlax-add-cmd 関数を使用して、
: (defun hello-autocad () (princ "hello Visual LISP"))  
; AutoCAD コマンド プロンプトから ObjectARX スタイルのコマンドとして使用できるようにしている。
: HELLO-AUTOCAD
(defun hello-cad () (princ "hello CAD LISP"))  
: (vlax-add-cmd "hello-autocad" 'hello-autocad)  
HELLO-CAD
: '''"hello-autocad"'''
(vlax-add-cmd "hello-cad" 'hello-cad)  
"hello-cad"
; コマンド hello-cad は ModelSpace でのみ実行され、PaperSpaceではブロックされる。
(vlax-add-cmd "hello-cad" 'hello-cad (+ acrx_cmd_transparent acrx_cmd_nopaperspace))
; BricsCADはcmd-flags が整数じゃなくて整数の文字列っぽい
(vlax-add-cmd "hello-cad" 'hello-cad (itoa (+ acrx_cmd_transparent acrx_cmd_nopaperspace))
 





2024年9月3日 (火) 06:42時点における最新版

構文
(vlax-add-cmd global-name func-sym [local-name cmd-flags])


機能
コマンドを AutoCAD の組み込みコマンド セットに追加する。
vlax-add-cmd 関数を使用すると、名前の先頭が c: 以外の関数を、AutoCAD コマンドとして定義することができる。 c: 関数では不可能な割り込み AutoLISP コマンドを定義することもできる。
  • 警告 割り込み定義された vlax-add-cmd 関数で、command 関数呼び出しを使用することはできない。使用すると CAD が異常終了する可能性がある。
vlax-add-cmd 関数は、現在の CAD セッションの間、CAD のコマンド プロンプトから AutoLISP 関数を、ObjectARX スタイルのコマンドとして使用できるようにする。 この関数は、ObjectARX acedRegCmds マクロへのアクセスを提供する。これは、ObjectARX システム AcEdCommandStack オブジェクトへのポインタを提供する。
vlax-add-cmd 関数は、コマンドをコマンド グループに自動的に割り当てる。 ドキュメント名前空間から実行した場合、vlax-add-cmd 関数はコマンドを doc-ID という名前のグループに追加される。doc-ID は、ドキュメントを識別する 16 進数の値。
独自の名前空間 VLX から実行した場合、vlax-add-cmd 関数はコマンドを VLC-Ddoc-ID:VLX-name という名前のグループに追加される。ここで VLX-name は、vlax-add-cmd 関数を呼び出したアプリケーションの名前。
vlax-add-cmd 関数を独自の名前空間 VLX から使用することが推奨される。 VLX をスタートアップ LISP ファイルからロードするのではなく、 APPLOAD[アプリケーション ロード]コマンドを使用して明示的にロードする。
  • リアクタ オブジェクトを作成する関数や、リアクタ コールバックとして機能する関数を、vlax-add-cmd 関数を使用して定義することはできない。


引数
  • global-name : 文字列。
  • func-sym : 引数のない AutoLISP 関数の名前を示すシンボル。
  • local-name : 文字列 (既定値は global-name)。
  • cmd-flags : 整数 (既定値は ACRX_CMD_MODAL + ACRX_CMD_REDRAW)。
cmd-flagsの内容
cmd-flags ビットフラグ 内容
acrx_cmd_modal 0 他のコマンドがアクティブなときは、コマンドを呼び出せない。
acrx_cmd_transparent 1 他のコマンドがアクティブでも、コマンドを呼び出せる。
acrx_cmd_usepickset 2 コマンドがピックファースト セットを取得すると、AutoCAD 内部のピックファースト セットをクリアする。 コマンドは、ピックファースト セットを取得できる。コマンドは、グリップの取得および設定はできない。
acrx_cmd_redraw 4 コマンドがピックファースト セットやグリップ セットを取得しても、CAD 内部のピックファースト セットやグリップ セットをクリアすることはない。 コマンドは、ピックファースト セットとグリップ セットを取得できる。
acrx_cmd_noperspective 8 パース表示では利用できない。
acrx_cmd_notilemode 32 タイルモードでは利用できない。
acrx_cmd_nopaperspace 64 ペーパー空間では利用できない。
acrx_cmd_nooem 256 OEM製品では利用できない。
acrx_cmd_nohistory 8388608 コマンド履歴なし。
acrx_cmd_no_undo_marker 16777216 アンドゥーマーカーなし。
acrx_cmd_nobedit 33554432 ブロック編集時は利用できない。

ACRX_CMD_USEPICKSET と ACRX_CMD_REDRAW の両方を設定した場合、その効果は ACRX_CMD_REDRAW のみを設定したのと同じ。


戻り値
成功した場合は、global-name 引数。 acedRegCmds->addCommand(...) がエラーを返した場合は、nil を返す。


サンプル
; 次の例の hello-autocad 関数には接頭の c: がないが、vlax-add-cmd 関数を使用して、
; AutoCAD コマンド プロンプトから ObjectARX スタイルのコマンドとして使用できるようにしている。
(defun hello-cad () (princ "hello CAD LISP")) 
HELLO-CAD 
(vlax-add-cmd "hello-cad" 'hello-cad) 
"hello-cad"

; コマンド hello-cad は ModelSpace でのみ実行され、PaperSpaceではブロックされる。
(vlax-add-cmd "hello-cad" 'hello-cad (+ acrx_cmd_transparent acrx_cmd_nopaperspace))

; BricsCADはcmd-flags が整数じゃなくて整数の文字列っぽい
(vlax-add-cmd "hello-cad" 'hello-cad (itoa (+ acrx_cmd_transparent acrx_cmd_nopaperspace))



関連事項