「Vla-sendcommand」の版間の差分

提供:GizmoLabs - だいたい CAD LISP なサイト
編集の要約なし
編集の要約なし
59行目: 59行目:
* [[vlax-get-acad-object]]
* [[vlax-get-acad-object]]
* [[vla-get-activedocument]]
* [[vla-get-activedocument]]
* [[vla-sendcommand]]
* [[vla-postcommand]]




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

2021年11月3日 (水) 21:36時点における版

構文
(vla-sendcommand vla-object command)


機能
処理のため、アプリケーションからコマンド文字列をドキュメントに送信する。


引数
  • vla-object … Document のVLAオブジェクト
  • command … コマンドの文字列


戻り値
nil


  • 注意

コマンドを終了させるために、コマンド文字列の最後に、スペースまたは ASCII のキャリッジ リターン制御文字(vbCr)を使用すること。キーボードの[Enter]を押すのと同じ。

このメソッドにより、AutoLISP 式を含む AutoCAD のコマンド ライン機能が処理される。 指定された図面がアクティブではない場合、図面はアクティブになる。

このメソッドは通常、同期をとるが、このメソッドで送られたコマンドがユーザに繰り返しを要求する場合(たとえば、スクリーン上で点を選択するなど)、このメソッドは、ユーザが入力を始めると直ちに継続する。このコマンドは次に非同期の処理を続行する。

このメソッドがイベント ハンドラから呼び出される場合、非同期的に処理される。 このメソッドを使用して、ActiveX メソッドが使用可能なコマンドを発行することは絶対にしてはならない。たとえば、SendCommand "VBALOAD" を実行してはならず、この場合は、代わりに LoadDVB メソッドを使用する。


サンプル
(vl-load-com)
(defun c:Example_SendCommand()
    ;; コメンどラインに命令を送信
    (setq acadObj (vlax-get-acad-object))
    (setq doc (vla-get-ActiveDocument acadObj))

    ;; 円を作成してズームする
    (vla-SendCommand doc (strcat "_circle 2,2,0 4 "))
    (vla-SendCommand doc (strcat "_zoom a "))
   
    ;; 表示を更新
    (vla-Regen doc acAllViewports)
   
    (alert "円コマンドをコマンドラインに送信して作図。")
)

; LISPからだと、command 関数使う方が常道
(progn
  (command "_circle" "2,2,0" "4")
  (command "_zoom" "a"))
)


関連事項