「Vl-cmdf」の版間の差分

提供:GizmoLabs - だいたい CAD LISP なサイト
編集の要約なし
編集の要約なし
 
(同じ利用者による、間の6版が非表示)
8行目: 8行目:
: vl-cmdf 関数は command 関数に似ているが、渡された引数の評価方法が異なる。vl-cmdf 関数は、CAD コマンドを実行する前に指定されたすべての引数を評価し、引数の評価中にエラーが検出された場合は、CAD コマンドを実行しない。 これに対して command 関数は、それぞれの引数を順に渡すので、エラーが検出される前に一部が実行される可能性がある。
: vl-cmdf 関数は command 関数に似ているが、渡された引数の評価方法が異なる。vl-cmdf 関数は、CAD コマンドを実行する前に指定されたすべての引数を評価し、引数の評価中にエラーが検出された場合は、CAD コマンドを実行しない。 これに対して command 関数は、それぞれの引数を順に渡すので、エラーが検出される前に一部が実行される可能性がある。
:  
:  
: 独自に作成したコマンド呼び出しに他の関数の呼び出しが含まれている場合、vl-cmdf 関数は独自に作成されたコマンドを実行する前に、含まれている他の関数呼び出しを実行する。しかし、command 関数は、独自に作成されたコマンドの実行を開始した後に、その関数呼び出しを実行する。  
:* 独自に作成したコマンド呼び出しに他の関数の呼び出しが含まれている場合、vl-cmdf 関数は独自に作成されたコマンドを実行する前に、含まれている他の関数呼び出しを実行する。しかし、command 関数は、独自に作成されたコマンドの実行を開始した後に、その関数呼び出しを実行する。  
: PRODNAME; コマンドの中には、vl-cmdf 関数から呼び出すと正常に動作し、command 関数から呼び出すと失敗するものがある。 command 関数内では getxxx 関数を使用することはできないが、vl-cmdf 関数にはこの制限はない。
:* コマンドの中には、vl-cmdf 関数から呼び出すと正常に動作し、command 関数から呼び出すと失敗するものがある。 command 関数内では getxxx 関数を使用することはできないが、vl-cmdf 関数にはこの制限はない。
 


; 引数
; 引数
:* arguments : CAD のコマンドとそのオプション。
:* arguments : CAD のコマンドとそのオプション。
: vl-cmdf 関数の arguments 引数には、文字列、実数、整数、座標値を指定することができ、これらは実行するコマンドのプロンプト シーケンスの要求によって決まる。 空の文字列("")は、キーボードで[Enter]を押すのと同じ。 引数を指定せずに vl-cmdf 関数を呼び出すと、[Esc]を押したのと同様に、ほとんどの CAD コマンドがキャンセルされる。
: vl-cmdf 関数の arguments 引数には、文字列、実数、整数、座標値を指定することができ、これらは実行するコマンドのプロンプト シーケンスの要求によって決まる。 空の文字列("")は、キーボードで[Enter]を押すのと同じ。 引数を指定せずに vl-cmdf 関数を呼び出すと、[Esc]を押したのと同様に、ほとんどの CAD コマンドがキャンセルされる。


; 戻り値
; 戻り値
: T  
: T  
: Visual LISP から vl-cmdf 関数を実行しても、フォーカスは AutoCAD ウィンドウに移動しないことに注意。 コマンドがユーザ入力を要求した場合、コンソール ウィンドウに戻り値(T)が表示されるが、CAD は入力を待ち続けている。手動で CAD のウィンドウをアクティブにし、プロンプトに応答する必要があり、そうしない限り、それ以降のコマンドは実行されない。
 
 
* Visual LISP から vl-cmdf 関数を実行しても、フォーカスは AutoCAD ウィンドウに移動しないことに注意。 コマンドがユーザ入力を要求した場合、コンソール ウィンドウに戻り値(T)が表示されるが、CAD は入力を待ち続けている。手動で CAD のウィンドウをアクティブにし、プロンプトに応答する必要があり、そうしない限り、それ以降のコマンドは実行されない。




; サンプル
; サンプル
: command 関数と vl-cmdf 関数の違いは、Visual LISP コンソール プロンプトに対してではなく、CAD コマンド プロンプトに対して次の呼び出しを入力すると、簡単に確認できる。
<pre class="brush:autolisp;">
(command "line" (getpoint "point?") '(0 0) "")
;; command 関数と vl-cmdf 関数の違いは、Visual LISP コンソール プロンプトに対してではなく、CAD コマンド プロンプトに対して次の呼び出しを入力すると、簡単に確認できる。
LINE 1 点目を指定: point?
(command "line" (getpoint "point?") '(0 0) "")  
次の点を指定 または [元に戻す(U)]:
LINE 1 点目を指定: point?  
nil
次の点を指定 または [元に戻す(U)]:
: command 関数を使用すると、まず LINE[線分]コマンドが実行され、次に getpoint 関数が呼び出される。
(VL-CMDF "line" (getpoint "point?") '(0 0) "")  
point?LINE 1 点目を指定:
次の点を指定 または [元に戻す(U)]:
T
: vl-cmdf 関数を使用すると、まず getpoint 関数が呼び出され (getpoint のプロンプト「point?」に注目)、次に LINE[線分]コマンドが実行される。
:
:次の例は、上記と同じコードだが、LINE[線分]コマンドの最後の引数として無効な点を渡している。結果の違いに注目。
(command "line" (getpoint "point?") '(0) "")
LINE 1 点目を指定: point?
次の点を指定 または [元に戻す(U)]:
ERASE nil
オブジェクトを選択: もう一方のコーナーを指定: *キャンセル*
認識された数: 0
: command 関数は、各引数を評価せず、順に AutoCAD に渡すので、無効な点リストが検出される。
(VL-CMDF "line" (getpoint "point?") '(0) "")
point?アプリケーション エラー: 図形/点リストが無効です.
  nil
  nil
;; command 関数を使用すると、まず LINE[線分]コマンドが実行され、次に getpoint 関数が呼び出される。
(VL-CMDF "line" (getpoint "point?") '(0 0) "")
point?LINE 1 点目を指定:
次の点を指定 または [元に戻す(U)]:
T
;; vl-cmdf 関数を使用すると、まず getpoint 関数が呼び出され (getpoint のプロンプト「point?」に注目)、次に LINE[線分]コマンドが実行される。
;;
;; 次の例は、上記と同じコードだが、LINE[線分]コマンドの最後の引数として無効な点を渡している。結果の違いに注目。
(command "line" (getpoint "point?") '(0) "")
LINE 1 点目を指定: point?
次の点を指定 または [元に戻す(U)]:
ERASE nil
オブジェクトを選択: もう一方のコーナーを指定: *キャンセル*
認識された数: 0
;; command 関数は、各引数を評価せず、順に AutoCAD に渡すので、無効な点リストが検出される。
(VL-CMDF "line" (getpoint "point?") '(0) "")
point?アプリケーション エラー: 図形/点リストが無効です.
nil
;; commandを安全に終わらせたい場合に vl-catch-all-apply と共に使う
(if (not (vl-catch-all-error-p
          (vl-catch-all-apply
            'vl-cmdf
            '("._circle" pause pause) ; 実行したいコマンドと引数のリスト
          )
        )
    )
  ; --- 成功した場合の処理 ---
  (princ "\n円が正常に作成されました。")
  ; --- 失敗・キャンセルした場合の処理 ---
  (princ "\nコマンドがキャンセルされました。")
)
</pre>
: vl-cmdf 関数は、AutoCAD にコマンドを渡す前に各引数を評価するので、無効な点リストが検出され、コマンドは実行されない。
: vl-cmdf 関数は、AutoCAD にコマンドを渡す前に各引数を評価するので、無効な点リストが検出され、コマンドは実行されない。


49行目: 76行目:
-----
-----
関連事項
関連事項
* [[command]] 関数
* [[acet-safe-command]]
* [[command]]
* [[command-s]]




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

2025年8月5日 (火) 05:51時点における最新版

構文
(vl-cmdf [arguments] ...)


機能
CAD のコマンドを実行する。
vl-cmdf 関数は command 関数に似ているが、渡された引数の評価方法が異なる。vl-cmdf 関数は、CAD コマンドを実行する前に指定されたすべての引数を評価し、引数の評価中にエラーが検出された場合は、CAD コマンドを実行しない。 これに対して command 関数は、それぞれの引数を順に渡すので、エラーが検出される前に一部が実行される可能性がある。
  • 独自に作成したコマンド呼び出しに他の関数の呼び出しが含まれている場合、vl-cmdf 関数は独自に作成されたコマンドを実行する前に、含まれている他の関数呼び出しを実行する。しかし、command 関数は、独自に作成されたコマンドの実行を開始した後に、その関数呼び出しを実行する。
  • コマンドの中には、vl-cmdf 関数から呼び出すと正常に動作し、command 関数から呼び出すと失敗するものがある。 command 関数内では getxxx 関数を使用することはできないが、vl-cmdf 関数にはこの制限はない。


引数
  • arguments : CAD のコマンドとそのオプション。
vl-cmdf 関数の arguments 引数には、文字列、実数、整数、座標値を指定することができ、これらは実行するコマンドのプロンプト シーケンスの要求によって決まる。 空の文字列("")は、キーボードで[Enter]を押すのと同じ。 引数を指定せずに vl-cmdf 関数を呼び出すと、[Esc]を押したのと同様に、ほとんどの CAD コマンドがキャンセルされる。


戻り値
T


  • Visual LISP から vl-cmdf 関数を実行しても、フォーカスは AutoCAD ウィンドウに移動しないことに注意。 コマンドがユーザ入力を要求した場合、コンソール ウィンドウに戻り値(T)が表示されるが、CAD は入力を待ち続けている。手動で CAD のウィンドウをアクティブにし、プロンプトに応答する必要があり、そうしない限り、それ以降のコマンドは実行されない。


サンプル
;; command 関数と vl-cmdf 関数の違いは、Visual LISP コンソール プロンプトに対してではなく、CAD コマンド プロンプトに対して次の呼び出しを入力すると、簡単に確認できる。
(command "line" (getpoint "point?") '(0 0) "") 
LINE 1 点目を指定: point? 
次の点を指定 または [元に戻す(U)]:
 nil

;; command 関数を使用すると、まず LINE[線分]コマンドが実行され、次に getpoint 関数が呼び出される。
(VL-CMDF "line" (getpoint "point?") '(0 0) "") 
point?LINE 1 点目を指定:
次の点を指定 または [元に戻す(U)]:
T

;; vl-cmdf 関数を使用すると、まず getpoint 関数が呼び出され (getpoint のプロンプト「point?」に注目)、次に LINE[線分]コマンドが実行される。
;;
;; 次の例は、上記と同じコードだが、LINE[線分]コマンドの最後の引数として無効な点を渡している。結果の違いに注目。

(command "line" (getpoint "point?") '(0) "") 
LINE 1 点目を指定: point?
次の点を指定 または [元に戻す(U)]:
ERASE nil
オブジェクトを選択: もう一方のコーナーを指定: *キャンセル*
認識された数: 0

;; command 関数は、各引数を評価せず、順に AutoCAD に渡すので、無効な点リストが検出される。 
(VL-CMDF "line" (getpoint "point?") '(0) "") 
point?アプリケーション エラー: 図形/点リストが無効です. 
nil

;; commandを安全に終わらせたい場合に vl-catch-all-apply と共に使う
(if (not (vl-catch-all-error-p
           (vl-catch-all-apply
             'vl-cmdf
             '("._circle" pause pause) ; 実行したいコマンドと引数のリスト
           )
         )
    )
  ; --- 成功した場合の処理 ---
  (princ "\n円が正常に作成されました。")

  ; --- 失敗・キャンセルした場合の処理 ---
  (princ "\nコマンドがキャンセルされました。")
)

vl-cmdf 関数は、AutoCAD にコマンドを渡す前に各引数を評価するので、無効な点リストが検出され、コマンドは実行されない。



関連事項