AutoCAD

官網可查詢指令
 https://knowledge.autodesk.com/search-result/caas/CloudHelp/cloudhelp/2016/ENU/AutoCAD-AutoLISP/files/GUID-36F8701B-7AB7-47BE-AC31-8508A2DF46A2-htm.html

AutoCAD系統參數
◎系統變數控制開啟舊檔的對話框→ FILEDIA → 1
◎繪圖命令的對話框不見了→ CMDDIA → 1
◎下拉式功能表→ MENULOAD → 選取所需的mnc檔 →"功能表列"中 "插入" 所需要的功能

AutoLisp(.lsp)使用方法(載入方法)
 
AutoLisp(.lsp)程式碼分享
;;;====================================================
;;; MDT匯出
視圖 dxf 及視圖檔名清單(用來製作BOM)
;;;====================================================

(defun c:dxf ()  'command要下的指令名稱
(setq old_filedia (getvar "filedia") old_cmddia (getvar "cmddia") ) 


(setvar "filedia" 0)
(setvar "cmddia" 0)

(setq layout_list (layoutlist)
dxf_prefix (getvar "dwgprefix")
dxf_name (getvar "dwgname")
)
(setq dxf_name (substr dxf_name 1 (- (strlen dxf_name) 4)))
(if (= create_folder "Y")
(setq dxf_path (strcat dxf_prefix))
(setq dxf_path dxf_prefix)
)
(setq aa (strcat dxf_path "a.txt"))
(setq f (open aa "w"))


(setq TOPname (getstring  "\nInput file name <TOP14-ABC001>:") ) ;輸入機構名稱
(if (= TOPname "") (setq TOPname dxf_name)) ;如果沒有名稱,就用原檔案名稱

(setq file_format "dxf")


(foreach n layout_list
    (command "_.layout" "s" n)   
    (setq nn (substr n 1 4))
    (setq file_name (strcat dxf_path TOPname "-" nn "A"))

    (command "-amviewout" "T" "Y" "C" file_format "C" file_name)

    (setq nn (substr n 1 99))

    (if (= (substr nn 1 1) "A")      
        (setq nn (substr nn 5 99))
    )
    (if (= (substr nn 1 1) "a")
        (setq nn (substr nn 5 99))
    )  
    (if (and (> (strlen nn) 4) (= (substr nn (- (strlen nn) 3) 1) "A"))
        (setq nn (substr nn 1 (- (strlen nn) 4) ))  
    )
    (if (and (> (strlen nn) 4) (= (substr nn (- (strlen nn) 3) 1) "a"))
        (setq nn (substr nn 1 (- (strlen nn) 4) ))  
    )
  
    (write-line nn f )
)
(command "start" (strcat "NOTEPAD " aa) )
(setvar "filedia" old_filedia)
(setvar "cmddia" old_cmddia)
(princ)
)


AutoLisp(.lsp)備註
■(setq 變數名稱 設定值)
■(getvar 取得系統變數的值)
■(setvar 設定系統變數的值)
■(foreach name list exp1 exp2) 把list元素分別指定給name,並執行exp1、exp2
■(repeat N exp1 exp2)
ex:(setq a 10 b 100)
(repeat 4 (setq a (+ a 10)))
(repeat 4 (setq b (+ b 10)))
==> a=40, b=140
■Autolisp語法有127位元的路徑和存檔名稱限制。
■欲在autocad的環境中,檢視一變數值,指令:「!變數名」。
■以(defun c:函式名(引數/變數)…)程式中,程式中的變數若在「/」右邊變數內,則稱為「區域變數」,否則為「整體變數」。



沒有留言:

張貼留言