0

AutoCAD 用の .arx アプリケーションはほとんどありません。これらのアプリケーションでは、メニュー ベースのものはほとんどなく、その他はコマンド ラインです。今、私がやろうとしていることは、

  1. .arx アプリをロードし、
  2. それを実行してから
  3. .arx アプリケーションが LISP コマンドを実行したら、アンロードします。提供されたタブをユーザーがクリックすると、.arx アプリケーションが実行されます。.arx アプリケーションは VC++ で記述されています。

これで、ユーザーが AutoCAD を起動するとロードされる Lisp ファイルができました。Lisp ファイルで、さまざまな .arx アプリケーションに対してこれらの関数を宣言しました。

(defun c:XYZ_program() (コマンド) (コマンド) (arxload "C:/ABC/XYZ.arx") (コマンド "XYZ_program") (arxunload "XYZ.arx") )

メニューベースのフォームからの入力データが必要なプログラムでは問題なく動作しますが、コマンドライン入力が必要なプログラムでは xyz.arx のアンロード中にエラーが発生します。

LISP に、arxunload "XYZ.arx" が 1 回だけ実行されるようにするコマンド (コマンド "XYZ_program") が実行されるかどうか疑問に思っていました。

この問題にアプローチする方法がわかりません。同じことで助けていただければ幸いです。

私が現在使用しているコードはこれです;

(
  defun c:XYZ_program() (command) (command)
   (arxload "C:/Example/Folder/XYZ.arx") 
   (command "XYZ_program") 
   ads_queueexpr( (arxunload "XYZ.arx") ) 
)
4

2 に答える 2

1

http://docs.autodesk.com/ACD/2013/ENU/index.html?url=files/GUID-3FF72BD0-9863-4739-8A45-B14AF1B67B06.htm,topicNumber=d30e502824

(defun c:Load()
    (arxload "the\\file\\path")
    ; run the app
)

これを試して:

(arxload "C:/ABC/XYZ.arx" nil) 

(defun c:XYZ_program() 
    (command) 
    (command)
    (command "XYZ_program")
    (arxunload "XYZ.arx" nil) 
);

幸運を。

于 2013-07-12T13:42:27.280 に答える