莫玉梅 甘文的
(肇慶科技職業技術學院,廣東 肇慶 526114)
利用二次開發技術在AutoCAD中實現快速繪制標題欄
莫玉梅 甘文的
(肇慶科技職業技術學院,廣東 肇慶 526114)
文章介紹以二次開發技術為手段, 運用AutoLISP編程、Visaul LISP編程開發工具,在AutoCAD實現快速繪標題欄,使得AutoCAD軟件更適用,使繪圖更方便、更快捷、更高效更準確,提高繪圖效率和準確性。
AutoCAD;AutoLISP;二次開發;標題欄
AutoCAD是目前微機上應用最為廣泛的通用交互式計算機輔助繪圖與設計軟件之一。在工程設計各專業中,AutoCAD以其強大的圖形支撐能力和開放的結構體系,無可爭辯地成為 CAD市場的龍頭。隨著 CAD制圖的普及,在 AutoCAD上開發出的各專業軟件也越來越多,但由于這些軟件大多不是具體為用戶量身定做,具有一定的普及適用性;或者由于用戶各人習慣原因,不適用;或者達不到用戶要求的高效率。針對上述問題,各行業的工程師應該利用相關的開發技術,開發符合各自設計工作特殊需要的應用程序,還有利于提高工作效率。
AutoLISP語言是一種嵌在AutoCAD內部的LISP編程語言,既具有一般高級語言的基本結構和功能,包括賦值、打印、條件、循環 、文件等函數。又具備AutoCAD所特有的圖形處理能力。利用AutoLISP語言編制的程序可以直接增加、修改和調用AutoCAD命令,在各種工程 CAD系統的開發中起著重要的作用。在 AutoCAD2000以后,通過 Visual LISP(VLISP)集成開發環境(Integrated Development Environment ,IDE)所提供的編輯器、凋試器以及其他工具,用戶可方便地編寫和修改AutoLISP源程序代碼,調試、運行AutoLISP程序。
本文利用AutoLISP開發了在AutoCAD中實現快速繪繪制標題欄的目標。希望開發一個程序,產生一個新命令,該命令能自動快速產生一個符合企業標準的標題欄。標題欄能根據用戶選擇的所需的圖長寬自動生成,還可以選擇橫裝還是豎裝、是否留裝訂邊,同時根據打印選擇的圖紙型號設定合理的比例,使得打印效果符合標準又美觀。標題欄上打印有所需的標準的文字,文字的樣式等都設置為標準。例如:使用該能在10秒內完成如圖1所示。

圖1
1.程序設計流程圖,豎裝、留邊的情況,如圖2所示:

圖2
2.變量的設置,如圖3所示:

圖3
3.程序的編寫
該程序的編寫過程的難點是分別列出四種情況供選擇,還分別對四種情況分別討論,下面是上述功能的程序:
(defun C:de (/ ss ssdim ss0 listA listB listC dimV n )
(setq obl (getvar "blipmode")
ocm (getvar "cmdecho")
col (getvar "cecolor"))
(command "_.UNDO" "_GROUP")
(setvar "blipmode" 0) (setvar "cmdecho" 0)
(command "_.style" "mlts0" "Times.ttf" 01 0 "N" "N"
"_.style" "mlts" "romand.shx" 01 0 "N" "N" "N")
(command "_.linetype" "s" "center" ""
"_.linetype" "s" "hidden" ""
"_.linetype" "s" "continuous" "")
(setq listA (list "dimalt" "dimaltd" "dimalttd""dimalttz" "dimaltu" "dimaltz" "dimapost" "dimasz"
"dimaunit" "dimblk" "dimblk1" "dimblk2" "dimcen""dimclrd" "dimclre" "dimclrt" "dimdec" "dimdle"
"dimdli" "dimexe" "dimexo" "dimfit" "dimgap""dimjust" "dimlfac" "dimlim" "dimlunit" "dimpost""dimrnd"
"dimsah" "dimscale" "dimsd1" "dimsd2" "dimse1""dimse2" "dimsoxd" "dimtad" "dimtdec" "dimtfac"
"dimtih" "dimtix" "dimtm" "dimtofl" "dimtoh""dimtol" "dimtolj" "dimtp" "dimtsz" "dimtvp" "dimtxsty"
"dimtxt" "dimtzin" "dimunit" "dimupt" "dimzin""dimdsep"
)
listB (list 02 2 02 0 "" 0.18
1 "" "" "" 03 32 2 0
0.02 0.1 03 0.05 01 02 "" 0
0 50 0 0 0 0 0 02 1
0 0 01 0 01 0 0 0 "mlts"
0.25 02 0 8 ".")
k 0)
(setq ssdim (tblsearch "dimstyle" "mlts"))
;;;;;
(if (= ssdim nil)
(progn
(command "_.dimstyle" "s" "mlts")
(setq ssdim (tblsearch "dimstyle" "mlts"))
)
(command "_.dimstyle" "r" "mlts")
)
(setq ss (assoc2 ssdim)
ss (strcase (cdr ss)))
(if (= ss "MLTS")
(foreach dimV listA
(setvar (nth k listA) (nth k listB))
(setq k (1+ k))
))
(setvar "blipmode" obl) (setvar "cecolor" col)(setvar "cmdecho" ocm)
(command "_.UNDO" "_E")
(princ)
)
(princ " ** de.LSP (V4.00) ** Date:2006.4.10
Product By:莫玉梅")
(princ " Company:肇慶科技職業技術學院 ")
(princ " Type-------------<de> to run this
program.")
(princ " 此程序用來創建文本樣式")
(princ)
1.命令行方式
(1)當回到AutoCAD環境下,用Load函數裝載就可以執行了。執行時,如果程序中沒有 defun函數,系統便邊裝入邊運行;若有 defun定義的命令或函數,裝載后只需在Command:(如果是中文AutoCAD,Command被漢化為了“命令:”)提示符下鍵入 defun函數定義的命令或或函數名即可運行相應的命令或函數。加載文件格式:
Command:(load“驅動器:\路徑\文件名”)
(2)在AutoCAD命令窗口輸入:“de”→“enter”→選擇所要加載的文件→加載。
2.對話框方式
選擇下拉菜單“工具(Tools)”→“AutoLISP”→“加載”。隨后出現“加載和卸載應用程序”窗口,如圖 5.1.2所示。在“加載和卸載應用程序”窗口中選擇所要加載的程序文件名,再單擊“加載”;或是雙擊該文件名。
3.自動加載
在AutoCAD工作目錄下有一個ACAD.LISP文件,它是當AutoCAD啟動、新建文件(new)、打開文件(open)時自動裝載的AutoLISP程序。用戶可以修改它;實現一定的目的。例如,用戶想要在 AutoCAD啟動時自動裝入自己定義的函數或程序,則可以在 ACAD.LISP程序中加入(defun xxx ())程序段或(load “xxx”)函數。
在裝入ACAD.LISP文件進若出現一條Visual LISP錯誤,剩余的文件就會被忽略而不裝入,并提示出錯。如果一個Load函數的調用是成功的,它就返回被加載的文件中最后的那個表達式的值。
本文介紹了用AutoLISP對AutoCAD進行二次開發,開發新命令,該命令實現快速繪繪制標題欄。在工程繪圖與打印圖紙的過程中,使得AutoCAD軟件更適用,使得繪圖更方便、更快捷、更高效更準確,從而提高繪圖效率和準確性。
[1] 魏崇光,等.AutoCAD 二次開發[M].北京:機械工業出版,2001.
[2] 趙景亮.AutoCAD 2004 與 AutoLISP二次開發技術[M].北京:清華大學出版社,2004.
[3] 文福安,等.AutoCAD R14 教程[M].北京:人民郵電出版社,1998.
[4] 梁雪春,等.AutoLISP 實用教程[M].北京:人民郵電出版社,2001.
[5] 陳啟發,等.人工智能——AutoLISP——認識與實踐-CAD漢字諧和技術-CQF軟件包揭秘[M].北京:中國電力出版社,2006.
TP311.52
A
1008-1151(2011)03-0031-02
2010-12-30
莫玉梅(1982-),女(壯族),廣西南寧人,肇慶科技職業技術學院機械工程助教,廣東工業大學在讀碩士生,研究方向為軟件二次開發。