|
在Autolisp Reference 中的V function 中 將指令加入 AutoCAD 內建指令集 (vlax-add-cmd global-name func-sym [local-name cmd-flags]) 利用 vlax-add-cmd,您可以將函數定義為 AutoCAD指令,而不需使用在函數名稱中前置 c: 。您也可以定義透通式 AutoLISP 指令,這種函數不可能會有 c: 。 vlax-add-cmd 函數使 AutoLISP 函數和 AutoCAD 階段作業期間, AutoCAD「指令」提示的 ObjectARX 型指令一樣可見。這個函數提供對 ObjectARX acedRegCmds 巨集的存取,此巨集提供 ObjectARX系統 AcEdCommandStack 物件的指標。 vlax-add-cmd 函數會自動將指令指定給指令群組。當從文件名稱空間發出 vlax-add-cmd 時,它會將指令加入群組具名的 doc-ID;doc-ID 是一個用來識別文件的十六進位值。如果vlax-add-cmd 是從分離名稱空間 VLX 發出,它會將指令加入群組具名的 VLC-Ddoc-ID:VLX-name,其中 VLX-name 是發出 vlax-add-cmd 的應用程式名稱。 請注意 您不能使用 vlax-add-cmd 宣告函數,以建立反應裝置物件或作為反應裝置回覆的用途。 引數 global-name 一個字串。 func-sym 具有零引數的 AutoLISP 函數名稱的符號。 local-name 字串 (global-name 的預設值)。 cmd-flags 整體(ACRX_CMD_MODAL + ACRX_CMD_REDRAW 的預設值) 主要的旗標是: ACRX_CMD_MODAL (0) 當其他指令在作用中時無法啟動的指令。 ACRX_CMD_TRANSPARENT (1) 當其他指令在作用中時可以啟動的指令。 次要的旗標是: ACRX_CMD_USEPICKSET (2) 當擷取 pickfirst 集時,它會在 AutoCAD 之中清除。指令可以擷取 pickfirst 集。指令無法擷取或設定掣點。 ACRX_CMD_REDRAW (4) 當擷取 pickfirst 集或掣點集時,AutoCAD 之中都不能清除。指令可以擷取 pickfirst 集和掣點集。 如果 ACRX_CMD_USEPICKSET 和 ACRX_CMD_REDRAW 兩者都設定,效用與 ACRX_CMD_REDRAW 設定相同。對於旗標的其他資訊,請參考「ObjectARX 參考手冊」中的「指令堆疊」主題。 傳回值 如果成功的話是 global-name 引數。函數傳回 nil 表示 acedRegCmds->addCommand(...) 傳回錯誤的狀態。 範例 hello-autocad 函數在下列的範例中沒有前置 c:,但是vlax-add-cmd 使它像 AutoCAD 指令提示的 ObjectARX 型指令一樣可見。 _$ (defun hello-autocad () (princ "hello Visual LISP")) HELLO-AUTOCAD _$ (vlax-add-cmd "hello-autocad" 'hello-autocad) "hello-autocad" |