AutoCAD LISP 載入或重新載入線型
內建線型定義檔(.lin),acad.lin 用於英制單位,而 acadiso.lin 則用於公制單位。(在 AutoCAD LT 則是 acadlt.lin 和 acadltiso.lin)
範例1:載入或重新載入內建所有線型(使用-linetype指令)
;;;程式說明:從 lin 檔案載入或重新載入內建所有線型
;;;作者:ronjonp
;;;來源:lsp 從 .lin 檔案載入或重新載入所有線型
(defun c:loadlt (/ ex v va)
(setq va (mapcar 'getvar (setq v '(cmdecho expert))))
(mapcar 'setvar v '(0 5))
(foreach lt (if (= 0 (getvar 'measurement)) ; <-是否英制
;; 或將您的自訂檔案新增至清單中,如果不在搜尋路徑中,請提供完整路徑
'("acad.lin")
;; 公制
'("acadiso.lin")
)
(and (findfile lt) (command "._-linetype" "_Load" "*" lt ""))
);_foreach
(mapcar 'setvar v va)
(princ)
);_defun_end
範例2:載入指定名稱清單的線型,如果已有載入則重新定義(使用-linetype指令)
(setq linelist '(("Dashed" . "acadiso.lin")
("Hidden" . "acadiso.lin")
("Special" . "Special.lin")))
(foreach lin linelist
(if (tblsearch "LTYPE" (car lin))
(command ".-linetype" "_Load" (car lin) (cdr lin) "_Yes" "")
(command ".-linetype" "_Load" (car lin) (cdr lin) "")
);_if
);_foreach
範例3:載入指定名稱的線型,如果已有載入則不載入(使用ActiveX)
;;;載入線型定義,如果已有則不載入
(defun loadLinetype (doc LineTypeName FileName)
(if (and
(not (tblsearch "LTYPE" LineTypeName))
(vl-catch-all-error-p
(vl-catch-all-apply
'vla-load
(list
(vla-get-Linetypes doc)
LineTypeName
FileName
);_list
);_vl-catch-all-apply
);_catch_all_error_p
);_and
nil
T
);_if
);_defun_end
;;;使用範例:
(setq Doc (vla-get-ActiveDocument (vlax-get-Acad-Object)))
(loadLinetype Doc "CENTER" "acadiso.lin")
範例4:載入指定名稱清單的線型(Lee Mac版)
Lee Mac 的載入線型( Load Linetypes)
函數語法:(LM:loadlinetypes <lts> <rdf>)
參數:lts,清單(LIST),要載入的線型列表
參數:rdf,布林值(Boolean),如果是 T,則所有線型都將從檔案重新定義(如果已經載入)
回傳:布林值(Boolean),如果所有線型都已加載,則傳回 T,否則返回 nil
使用範例:
_$ (LM:loadlinetypes '("hidden" "dot" "phantom") nil)
T
_$ (LM:loadlinetypes '("hidden" "dot" "phantom" "notfound") t)
nil
留言
張貼留言