萬盛學電腦網

 萬盛學電腦網 >> 圖文處理 >> CAD >> CAD使用教程 >> 常見案例解析 >> AUTOCAD的定制與開發

AUTOCAD的定制與開發

  在計算機技術高速發展的今天,AutoCAD已成為世界上最成功的計算機輔助設計系列軟件平台之一,該軟件得到了極廣泛的應用。這不僅是因為它功能強、支持的平台多、外設廣,更主要的原因是它具有開放的體系結構,AutoCAD允許用戶和開發者在幾乎所有方面對其進行擴充與修改(即進行定制與二次開發),能夠最大限度地滿足用戶的特殊要求。

  目前介紹AutoCAD的基本命令及用法的普及型讀物較多,而介紹AutoCAD定制與開發方法的提高型讀物較少。AutoCAD是計算機輔助繪圖軟件,具有普遍性,可廣泛適用於機械、電子、建築等多種領域,再加上各個行業的自身特點,這就要求有針對性的對AutoCAD進行定制與開發,以滿足不同領域和不同行業的需求。這篇文章以機械行業為例,與大家共同探討AutoCAD定制與開發的具體方法(功能、圖標、標准件庫、尺寸公差庫等),供大家學習和參考。

  一、AutoCAD的初始設置

  對於一幅完整的機械制圖(零件圖或裝配圖),需要有圖幅大小、圖幅比例、標題欄、明細欄、圖層、尺寸標注、粗糙度符號、形位公差標注、基准符號、零件與標准件等的引線序列號等等,這些都需要特殊定制與開發的。由於文章涉及的具體命令多且雜,在此就不逐一介紹說明了。如果您有一定的AutoCAD操作基礎,按下述步驟就可以編制本文所提到的功能。以AutoCAD2002為例(不同版本CAD的操作方法大同小異),具體的操作過程與程序內容如下:

  打開AutoCAD 2002(或R14),創建新圖,設置好圖層(例如:名稱為01、顏色為青、線型為center)、圖幅界限、文字樣式、尺寸樣式(保存於 STANDARD中)等一些重要的設置,然後另存為*.dwt格式(自命名,如:acad.dwt),該格式的文件保存在C:/Program Files/AutoCAD 2002/Template下。這樣,就建立了統一的模板文件。

  在該模板文件下,繪制您所需要的標題欄,然後在命令行輸入ddattdef (回車),彈出屬性定義對話框,輸入相應的值。例如:

  1. MODE設置屬性模式

  (1) Invisible控制為可見或不可見模式(選上)

  (2) Constant設置塊插入後的屬性常數為固定值

  (3) Verify在鍵入屬性後會要求您確認一次鍵入值的正確性

  (4) Preset設置可以改變的固定值

  2. Attribute屬性對話欄

  (1) Tag設置屬性標簽的名稱

  (2) Prompt設置提示的文字

  (3) Value設置提示文字的缺省值

  3. Text Options設置屬性文字的類型

  (1) Justification設置文字的對齊方式

  (2) Text Style設置文字的字形

  (3) Height設置文字的高度

  (4) Rotation設置文字的旋轉角度

  4、Pick Point直接使用鼠標在畫面上選取位置,選用移動命令使該屬性在理想的位置上將各個需要的屬性按上述方法輸入完畢後,接下來的操作是要將圖形與屬性結合為一個WBLOCK(塊),在命令行下輸入wblock回車,

  Command:wblock回車

  File Name:輸入一個文件名(回車)

  Block Name:回車

  Insertion Base Point:捕捉一個插入點(回車)

  Select Objects:選擇您所繪制的圖形與屬性(回車)

  Select Objects:回車

  Command:oops回車

  至此標題欄的屬性塊就定義完成了。如果您確實理解了的話,按照上述步驟就可以定制出明細表、粗糙度符號、基准符號的屬性塊。

  下面該定義圖幅的模板了,在統一的模板(acad.dwt)下,按國家標准繪制一幅圖如A0,在命令行下輸入ddinsert(回車)

  Command:ddinsert(回車)

  File Name:輸入一個文件名(回車)注:即建屬性塊的文件名

  Insert point:在圖幅上選擇理想的位置(回車)

  X scale factor <1> / Corner / XYZ: (回車)

  Y scale factor (default=X): (回車)

  Rotation angle <0>:(回車)

  屬性值(設置屬性提示的文字):(一直回車)直到Command狀態下,然後另存為圖幅A0.dwt(自命名)。

  同樣,建立A1、A2、A3、A4的圖幅模板。

  在命令行下輸入ddatte(回車)

  Command:ddatte(回車)

  Select block:選擇標題欄

  在彈出編輯屬性的對話框,輸入相應的屬性值,該屬性值就可自動的填充到您所定義的相應的位置上。

  二、AutoCAD的程序及圖標菜單、下拉菜單設置

  1. 介紹一下如何用LISP語言開發程序及程序中所涉及的函數的簡要說明。新建一文本文件*.lsp(例如mycad.lsp),在該文件中輸入下面的內容。

  (defun c:bscale(/ hk) “定義圖幅比例

  (setq hk (getdist "/n 請輸入圖幅比例:"))

  (command "SCALE" "all" "" "0,0" (/ 1 hk))

  (command "DIMSCALE" (/ 1 hk))

  (command "ZOOM" "all" "")

  (setvar "HPNAME" "ANSI31")

  (setvar "HPSCALE" 1.5)

  (setvar "TEXTSIZE" (/ 4 hk))

  )

  打開C:/ProgramFiles/Auto CAD2002/SUPPORT/AutoCAD2000 doc.lsp(AcadR14.lsp),在該文件的倒數第二行輸入(load "mycad.lsp" ""),保存該文件。(最好先把原文件做一個備份)。

  重新進入CAD,您所定義的功能就自動加載了,下面介紹一下這個功能的用法。打開一個標准的圖幅模板如A1.dwg,在命令行下輸入:

  Command:bscale(回車)

  請輸入圖幅比例:1/2(回車)

  注:如果建模板時,把該比例輸入為1,那麼A0~A4.dwt的圖幅比例始終默認為1。輸入圖幅比例的優點在於您所使用的屬性塊(例如粗糙度符號等)的放大縮小比例與圖幅比例相一致。

  2. 輸入命令的方式即難記又麻煩,那麼如何把上述命令變成圖標或菜單的形式呢?回答是肯定的。

  打開C:/ProgramFiles/Auto CAD2002(R14)/SUPPORT/acad.mnu(或acad.mns),在相應的位置插入如下內容,並保存:

AUTOCAD的定制與開發 三聯教程

  圖1 定義下拉菜單 (1)定義下拉菜單(插入在原有的下拉菜單之後)

  ***POPx

  [自制CAD(&Z)]

  [圖幅比例(&A)]^C^C_bscale

  [--]

  說明:

  1)設置第x個下拉菜單

  2)第x個下拉菜單的功能項名稱,快捷鍵代碼為Z

  3)下拉菜單的分項名稱,^C^C執行二次中斷操作然後執行後面的命令(功能中所定義的,如bscale)

  4)在下拉菜單中顯示分隔符

  圖2 定義圖標工具欄

  (2)定義圖標工具欄(插入在原有的圖標菜單之後)

  **MYCAD

  [_Toolbar("MYCAD", _Floating, _Show, 0, 1, 0)]

  [_Button("圖幅比例", "bscale.bmp", "bscale.bmp")] ^C^C_bscale

  [--]

  重新進入CAD,您就可以看到所編制的下拉菜單和圖標標工具欄了。如果沒有,請在Command狀態下輸入menu(回車),在彈出的對話框中選中您剛剛保存的acad.mun(或acad.mns),然後按確定按鈕。另外,圖標工具欄也可手工定制。在繪圖環境下的任意圖標上按鼠標右鍵,彈出菜單選擇自定義,在自定義對話框中選擇工具欄,按新建按鈕,在工具欄名稱中輸入MYCAD,按確定按鈕。再選擇命令中的用戶定義,按住鼠標左鍵拖動用戶定義的按鈕到 MYCAD的工具欄中後,鼠標左鍵單擊該按鈕,在按鈕特性中輸入用戶定義的按鈕名稱如“圖幅比例” ,在與此按鈕關聯的宏中輸入^C^C_bscale,然後選擇編輯按鈕,可以在按鈕編輯器上直接畫,也可打開bscale.bmp文件(如:用 Photoshop繪畫的),選中應用按鈕。其余的圖標定制方法以此類推。

  三、筆者開發的AutoCAD的功能及使用方法

  1.程序

  (1)定義對稱線

  (defun c:dcx (/ ss1 dist p1 p2 p3 p4 p5 len pn pm pn1 pm1 ee ang1 sb)

  (setvar "orthomode" 1)

  (setq sb (getvar "osmode"))

  (setvar "osmode" 33)

  (setq ss1 (ssget)

  dist (getdist "/n請輸入平行線間的距離:")

  p1 (getpoint "/n起始點或特征點:")

  len (getdist p1 "/n終點或特征點或長度:")

  ee (entget (ssname ss1 0))

  p2 (cdr (assoc 10 ee))

  p3 (cdr (assoc 11 ee))

  ang1 (angtos (angle p2 p3) 0 1)

  )

  (command "_UCS" "_Z" ang1 "")

  (setq p4 (trans p1 0 1)

  p5 (trans p2 0 1)

  pn (list (car p4) (+ (cadr p5) (/ dist 2.0)))

  pm (list (car p4) (- (cadr p5) (/ dist 2.0)))

  pn1 (polar pn 0 len)

  pm1 (polar pm 0 len)

  )

  (setvar "osmode" 0)

  (command "line" pn pn1 "" "line" pm pm1 "")

  (command "_

copyright © 萬盛學電腦網 all rights reserved