2015年6月22日 星期一

外部命令~lisp呼叫外部 exe 執行檔,等待程式的方式!

因為lisp在開發上的限制,有時會藉由其它開發工具結合使用!

此時可應用 zwcad.pgp  或 acad.pgp

在裡面有些範例
DEL,       DEL,            8,要刪除的檔: ,
DIR,       DIR,            8,指定檔: ,
EDIT,      START EDIT,     9,要編輯的檔: ,



同理我們可以加入自已開發的命令
定義外部命令時,需要指定在 AutoCAD 命令提示中使用的命令名,以及傳遞給操作系統的可執行命令字符串。外部命令部分中的每行都包括以逗號分隔的五個字段,如下所示: 

在命令提示中輸入的命令。如果此名稱是 AutoCAD 內部命令名,則該命令將被忽略。命令名不區分大小寫。 

executable 

輸入命令名時傳遞給操作系統的常量字符串,可以是能在操作系統提示中執行的任何命令。字符串可包含開關或參數。該字符串是否區分大小寫由運行的應用程序決定。 

flags 

所需位碼參數。按任意組合將下面這些整數值相加以得到所需的結果。 

0 啟動應用程序並等待結束。 

1 不等待應用程序結束。 

2 最小化運行應用程序。 

4 「隱藏」運行應用程序。 

8 將參數字符串括在引號中。 

位值 2 和 4 是互斥的,如果同時指定了這兩個位值,那麼只使用 2 位。因為 AutoCAD 在應用程序運行時不能使用,所以應盡量避免不帶值 1 的值 2 或 4。 

位值 8 使 del 這類命令可以正確處理包含空格的文件名。注意這將導致不能向這些命令傳遞用空格分隔的文件名列表。如果想使用多文件支持,則不要使用位值 8。 

prompt 

可選字段。它指定顯示在 AutoCAD 命令行中的提示。此提示的響應被添加到 executable 字段提供的字符串後面。如果 prompt 字段的第一個字符是星號 (*),則響應可以包含

空格,用戶必須按ENTER鍵結束響應。或者,可以用空格鍵或ENTER鍵結束響應。如果未指定 prompt,則不需要輸入。但如果要提供返回碼或提示行需要後續空格,則必須添加

逗號。 

return_code 

可選位碼參數。可將這些整數值按任意組合相加以得到所需的結果。例如,如果需要值 1 和 2,可用 3 作為返回碼。值的定義如下(代碼 0 和 4 對窗口環境無意義,因此不

包括在此列表中): 

1 加載 DXB 文件。AutoCAD 在命令結束後將名為 $cmd.dxb 的 DXB 文件加載到圖形中。加載 DXB 文件後,$cmd.dxb 文件被刪除。此操作產生的結果與 DXBIN 命令相同。 

2 用 DXB 文件構造塊定義。AutoCAD 用名為 $cmd.dxb 的 DXB 文件創建塊定義。prompt 字段的響應用作塊名,此名稱必須是當前圖形中不存在的有效塊名,因此,這種模式

不能重定義以前定義的塊。AutoCAD 載入該 DXB 文件後,$cmd.dxb 文件被刪除。 INSERT 命令的默認名稱被設置為新定義的塊的名稱。 

此文件還可以用分號 (;) 引入說明文字。 

Windows 系統命令 

定義外部命令時,Windows 系統命令 start 和 cmd 非常有用。如果指定的 executable 字符串中未使用 start 或 cmd 命令,則必須等該窗口關閉後才能繼續使用 AutoCAD。 

start 命令啟動獨立的窗口並運行指定的程序或命令。不帶任何參數的 start 命令將打開新的命令提示窗口。start 命令有許多影響新窗口顯示的命令行開關。要啟動 Windows 

應用程序,請使用不帶任何開關的 start 命令。start 命令也可用於啟動與某個應用程序相關聯的文檔。例如,可以用 start 命令直接打開用字處理器創建的文檔或 HTML 文件。 

cmd 命令打開一個命令提示窗口,用作 AutoCAD 的 Shell。在將控制權返回給 AutoCAD 命令提示之前,必須關閉此窗口。/c 和 /k 命令行開關對外部命令相當有用。/c 開關

執行指定的命令,然後停止(關閉窗口)。/k 開關執行指定的命令,然後繼續(保持窗口打開)。使用 /k 開關時,用戶必須自己關閉命令窗口(用 exit 命令)。 

通常,使用start 啟動與 AutoCAD 相互獨立的新窗口或應用程序。而用 cmd 運行不創建獨立窗口的批處理文件或命令腳本,或者創建將控制權返回給 AutoCAD 之前必須關閉的

窗口。關於這些命令和開關的詳細信息,請參見 Windows 系統命令文檔。 

自定義命令 

下面的例子定義了三個新命令:RUN、LISTSET 和 DXB2BLK。 

RUN, cmd /c,0,*Batch file to run: ,

LISTSET,cmd /k SET,0

DXB2BLK,cmd /c DXBCOPY,0,DXB file: ,2

RUN 命令運行批處理文件或命令腳本。帶 /c 開關的 cmd 命令首先打開命令窗口,運行批處理文件,然後關閉。 

LISTSET 命令顯示當前 DOS 環境變量設置。因為此樣例使用 cmd /k,而不是 start,所以在返回 AutoCAD 之前,用戶必須自己關閉命令窗口。要使此窗口保持活動,請使用 

start /realtime。關於這些命令和開關的詳細信息,請參見 Windows 系統命令文檔。 

DXB2BLK 命令用指定的 DXB 文件創建塊定義。DXB 文件將所有對象轉換為直線。此過程有一個非常有用的附帶作用:它提供了一種將文字對像分解為直線的簡單方法。 

DXB2BLK 將指定的 DXB 文件名傳遞給 dxbcopy 批處理文件,此批處理文件將該文件名複製到名為 $cmd.dxb 的文件中。然後,AutoCAD 用指定的 DXB 文件創建塊。答覆 DXB 

文件提示的名稱被用作新塊的名稱。要創建 dxbcopy.cmd 文件,請在 DOS 提示下輸入以下命令: 

echo copy %1.dxb $cmd.dxb > dxbcopy.cmd

此命令在當前目錄中創建 dxbcopy.cmd 文件。將此文件移至 DOS 路徑下的目錄中,或者在 acad.pgp 文件中明確指出該文件的位置。例如,如果 dxbcopy.cmd 文件位於 

D:\cad,請在 acad.pgp 文件的外部命令部分輸入以下內容。 

DXB2BLK, cmd /c D:\CAD\DXBCOPY,0,DXB file: ,2

要創建 DXB 文件,請選擇「AutoCAD DXB 文件格式」作為當前打印機,然後打印到文件。關於配置打印機的詳細信息,請參見驅動程序和外圍設備手冊中的 設置繪圖儀和打印機。

沒有留言: