「Command」の版間の差分

提供:GizmoLabs - だいたい CAD LISP なサイト
編集の要約なし
編集の要約なし
 
(同じ利用者による、間の4版が非表示)
1行目: 1行目:
{{Template:AutoLISP}}
; 構文
; 構文
: (command [''arguments''] ...)
: (command [''arguments''] ...)
5行目: 7行目:
; 機能
; 機能
: コマンドを実行する。
: コマンドを実行する。


; 引数
; 引数
10行目: 13行目:
::: command 関数の arguments 引数には、文字列、実数、整数、座標値を指定することができ、これらは実行するコマンドのプロンプト シーケンスの要求によって決まる。空の文字列("")は、キーボードで[Enter]を押すのと同じ。引数を指定せずに command 関数を呼び出すと、[Esc]を押したのと同様に、ほとんどのコマンドがキャンセルされる。
::: command 関数の arguments 引数には、文字列、実数、整数、座標値を指定することができ、これらは実行するコマンドのプロンプト シーケンスの要求によって決まる。空の文字列("")は、キーボードで[Enter]を押すのと同じ。引数を指定せずに command 関数を呼び出すと、[Esc]を押したのと同様に、ほとんどのコマンドがキャンセルされる。
::: command 関数は各引数を評価し、次にくるプロンプトに応じてその引数を CAD に渡す。コマンド名とオプションは文字列として、2D 点は 2 つの実数のリストとして、3D 点は 3 つの実数のリストとして渡す。CAD はコマンド プロンプトが表示されているときにのみ、コマンド名を認識する。  
::: command 関数は各引数を評価し、次にくるプロンプトに応じてその引数を CAD に渡す。コマンド名とオプションは文字列として、2D 点は 2 つの実数のリストとして、3D 点は 3 つの実数のリストとして渡す。CAD はコマンド プロンプトが表示されているときにのみ、コマンド名を認識する。  


; 戻り値
; 戻り値
17行目: 21行目:
; サンプル
; サンプル
: 次の例では、2 つの変数 pt1 と pt2 に、2 つの点の値 1,1 と 1,5 を代入する。次に command 関数を使用して、LINEコマンドを呼び出し、2 つの点の値を渡す。
: 次の例では、2 つの変数 pt1 と pt2 に、2 つの点の値 1,1 と 1,5 を代入する。次に command 関数を使用して、LINEコマンドを呼び出し、2 つの点の値を渡す。
<pre class="brush:autolisp;">
  (setq pt1 '(1 1) pt2 '(1 5))
  (setq pt1 '(1 1) pt2 '(1 5))
  (1 5)
  (1 5)
23行目: 28行目:
  次の点を指定 または [元に戻す(U)]:
  次の点を指定 または [元に戻す(U)]:
  次の点を指定 または [元に戻す(U)]:
  次の点を指定 または [元に戻す(U)]:
  '''nil'''
  nil
</pre>


;
:* 制限と注意
:* 制限と注意
: AutoCAD の SKETCH コマンドは、デジタイザを直接読み取るので、AutoLISP の command 関数で使用することはできない。command 関数で SCRIPT コマンドを使用するときは、それが AutoLISP ルーチンの最後の関数呼び出しでなければならない。
: AutoCAD の SKETCH コマンドは、デジタイザを直接読み取るので、AutoLISP の command 関数で使用することはできない。command 関数で SCRIPT コマンドを使用するときは、それが AutoLISP ルーチンの最後の関数呼び出しでなければならない。
: また、command 関数を自動ロードの acad.lsp(AutoCAD) や icad.lsp(IJCAD)、.mnl ファイルで使用する場合は、defun 文の内側からのみ呼び出さなければならない。作図セッションの開始時にただちに実行することが必要なコマンドを定義するには、S::STARTUP 関数を使用する。
: また、command 関数を自動ロードの acad.lsp(AutoCAD) や icad.lsp(IJCAD)、.mnl ファイルなどで使用する場合は、defun 文の内側からのみ呼び出さなければならない。作図セッションの開始時にただちに実行することが必要なコマンドを定義するには、S::STARTUP 関数を使用する。


: オブジェクトの選択を必要とする CAD コマンド(BREAK や TRIM コマンドなど)の場合、点を指定する代わりに、entsel 関数で取得したリストを与えることにより、オブジェクトを選択できる。
: オブジェクトの選択を必要とする CAD コマンド(BREAK や TRIM コマンドなど)の場合、点を指定する代わりに、entsel 関数で取得したリストを与えることにより、オブジェクトを選択できる。
34行目: 39行目:
: システム変数 CMDECHO(setvar と getvar 関数でアクセス可能)が 0(ゼロ)に設定されていると、command 関数から実行されたコマンドは、コマンド ラインにエコーされない。  
: システム変数 CMDECHO(setvar と getvar 関数でアクセス可能)が 0(ゼロ)に設定されていると、command 関数から実行されたコマンドは、コマンド ラインにエコーされない。  


: * IntelliCAD (6.x系)では command 関数でなんかしら動作がこけるとそれ以降、動きが挙動不審になる事があるので注意が必要。(最悪落ちる。)
: * IntelliCAD 6.x系 では command 関数でなんかしら動作がこけるとそれ以降、動きが挙動不審になる事があるので注意が必要。(最悪落ちる。)IntelliCAD 7.x系では問題ない。
 
: command 関数の augment として getxxx 関数は使用できないと思った方がいい。(途中まで実行されてエラーになるのを避けるため。)
 
<pre class="brush:autolisp;">
;ダメな例
(command "line" '(0 0) '(100 100) (getpoint "点は?") "")
 
LINE 1 点目を指定: (0 0)
次の点を指定 または [元に戻す(U)]: (100 100)
次の点を指定 または [元に戻す(U)]: 点は?  ; <-ここででエラーになると以降は実行されない
コマンド: nil
 
 
;良い例
(setq pt1 (getpoint "点は?"))
(command "line" '(0 0) '(100 100) pt1 "")
点は?
LINE 1 点目を指定: (0 0)
次の点を指定 または [元に戻す(U)]: (100 100)
次の点を指定 または [元に戻す(U)]: (xxx xxx)
コマンド: nil
</pre>


-----
-----
関連事項
関連事項
* [[command-s]] 関数
* [[vl-cmdf]] 関数
* [[vl-cmdf]] 関数


[[Category:AutoLISP]]
[[Category:AutoLISP]]

2020年8月7日 (金) 09:40時点における最新版

構文
(command [arguments] ...)


機能
コマンドを実行する。


引数
  • arguments :コマンドとそのオプション。
command 関数の arguments 引数には、文字列、実数、整数、座標値を指定することができ、これらは実行するコマンドのプロンプト シーケンスの要求によって決まる。空の文字列("")は、キーボードで[Enter]を押すのと同じ。引数を指定せずに command 関数を呼び出すと、[Esc]を押したのと同様に、ほとんどのコマンドがキャンセルされる。
command 関数は各引数を評価し、次にくるプロンプトに応じてその引数を CAD に渡す。コマンド名とオプションは文字列として、2D 点は 2 つの実数のリストとして、3D 点は 3 つの実数のリストとして渡す。CAD はコマンド プロンプトが表示されているときにのみ、コマンド名を認識する。


戻り値
nil


サンプル
次の例では、2 つの変数 pt1 と pt2 に、2 つの点の値 1,1 と 1,5 を代入する。次に command 関数を使用して、LINEコマンドを呼び出し、2 つの点の値を渡す。
 (setq pt1 '(1 1) pt2 '(1 5))
 (1 5)
 (command "line" pt1 pt2 "")
 line 1 点目を指定:
 次の点を指定 または [元に戻す(U)]:
 次の点を指定 または [元に戻す(U)]:
 nil
  • 制限と注意
AutoCAD の SKETCH コマンドは、デジタイザを直接読み取るので、AutoLISP の command 関数で使用することはできない。command 関数で SCRIPT コマンドを使用するときは、それが AutoLISP ルーチンの最後の関数呼び出しでなければならない。
また、command 関数を自動ロードの acad.lsp(AutoCAD) や icad.lsp(IJCAD)、.mnl ファイルなどで使用する場合は、defun 文の内側からのみ呼び出さなければならない。作図セッションの開始時にただちに実行することが必要なコマンドを定義するには、S::STARTUP 関数を使用する。
オブジェクトの選択を必要とする CAD コマンド(BREAK や TRIM コマンドなど)の場合、点を指定する代わりに、entsel 関数で取得したリストを与えることにより、オブジェクトを選択できる。
システム変数 CMDECHO(setvar と getvar 関数でアクセス可能)が 0(ゼロ)に設定されていると、command 関数から実行されたコマンドは、コマンド ラインにエコーされない。
* IntelliCAD 6.x系 では command 関数でなんかしら動作がこけるとそれ以降、動きが挙動不審になる事があるので注意が必要。(最悪落ちる。)IntelliCAD 7.x系では問題ない。
command 関数の augment として getxxx 関数は使用できないと思った方がいい。(途中まで実行されてエラーになるのを避けるため。)
;ダメな例
(command "line" '(0 0) '(100 100) (getpoint "点は?") "")

LINE 1 点目を指定: (0 0)
次の点を指定 または [元に戻す(U)]: (100 100)
次の点を指定 または [元に戻す(U)]: 点は?  ; <-ここででエラーになると以降は実行されない
コマンド: nil


;良い例
(setq pt1 (getpoint "点は?"))
(command "line" '(0 0) '(100 100) pt1 "")
点は? 
LINE 1 点目を指定: (0 0)
次の点を指定 または [元に戻す(U)]: (100 100)
次の点を指定 または [元に戻す(U)]: (xxx xxx)
コマンド: nil

関連事項