摘要:該文介紹了利用AutoLISP與DCL語言開發工具,開發符合國家機械制圖標準的機械制圖序號標注實用工具的設計思想與實施方法。該實用工具,擴充了AutoCAD的功能,提高了機械制圖的繪圖效率,有一定的實用價值和推廣意義。
關鍵詞:序號標注;AutoCAD二次開發;CAD
中圖分類號:TP391文獻標識碼:A文章編號:1009-3044(2009)36-10549-02
Redevelopment of Serial Number Marking by AutoCAD
DAI Yan-xia, XIAO Shan-hua
(Yibin Vocational and Technical College, Yibin 644003, China)
Abstract: This paper introduces the design idea and actualize method which make use of Auto LISP and DCL language to develop the utility tools of marking the serial number. This tools accords with the national standard of mechanical drawing of our country, and have expand the function of AutoCAD, It can improve the efficiency of drawing by use of this tools in practice, and have a practical value of popularization.
Key words: serial number marks; redevelopment of AutoCAD; CAD
當前,CAD技術在企業的設計中被廣泛的使用,其中AutoCAD是一種使用最普遍的功能強大的通用繪圖軟件,但其交互式繪圖效率卻相對較低。但AutoCAD具有開放的體系結構,允許用戶和開發者在幾乎所有方面對其進行擴充和修改(即進行二次開發),能夠最大程度地滿足用戶的特殊要求。二次開發是CAD應用取得實效的關鍵環節。通過對AutoCAD進行二次開發,可以使繪圖工作變的簡單而高效。序號標注是在機械繪圖過程中被經常使用到的繪圖工作,使用AutoCAD的交互繪圖方式進行機械裝配圖的序號標注十分煩瑣,為了減少勞動強度,提高繪圖效率,對其進行二次開發是十分必要的。
1 設計思路
根據GB/T4458.2—1984《裝配圖中零、部件序號及其編排方法》的規定來設計,用戶通過DCL界面選擇序號表達方式和指引線表示方法后,再在屏幕上指定裝配圖中的零件和序號的書寫位置即可完成單個或整個裝配圖的序號標注。而且為了方便用戶操作,標注多個序號時,程序應有序號遞增功能。其設計開發思路流程如圖1所示。
2 程序設計及實施
2.1 參數的確定
根據GB/T4458.2—1984進行設計,主要有序號表達和指引線表達兩大內容。序號的表達方法有兩種:1)在指引線的水平線上或圓內注寫序號,其字高比裝配圖中所注尺寸數字的高度大一號或兩號;2)在指引線附近注寫序號,其字高比裝配圖中所注尺寸數字高度大兩號。通常來說,在機械繪圖中人們更習慣選擇第一方法。指引線的表達中,指引線的水平線要進行左右方向判斷,由于對于一組緊固件以及裝配關系清楚的零件組,可以采用公共指引線,所以需要考慮使用公共指引線進行連續序號標注。另考慮用戶在實際操作中可能分多次標注,應設置序號的其始數。
綜上,確定序號標注的參數有:序號表達方式、指引線表達方式、字體高度、序號總數、起始序號、終止序號。另有指定需要標注的零件及序號標注位置在程序運行中指定。
2.2 界面設計
根據確定的參數用DCL設計界面。序號表達方式與指引線表達方式用圖像按鈕來完成。由于標注序號時需要比裝配圖中所注尺寸數字的高度大一號或者兩號,所以在界面設計中用下拉列表框控件來完成字體高度的輸入。
在標注序號時,序號的數字通常是連續的,而且當單個序號連續標注的時候,為了簡化用戶操作,人們常常希望能夠一次標注一定數量的序號,所以引入一個序號總數概念,由序號總數的數值來決定標注的序號數值的變化范圍。再引入起始序號和終止序號兩個變量來完成對連續序號標注時,連續標注中序號數值的變化范圍。序號總數、起始序號、終止序號用三個編輯框來完成。
在指定序號表達方式后及標注方法以后,操作者就需要選擇所需標注的樣式,為了能使用公共指引線進行連續序號標注,所以需要將程序分為單個序號標注與連續序號標注兩個部分。在序號的連續標注樣式中,由于存在指引線的水平線或圓圈有左右連續和上下連續兩種樣式,所以需要將連續標注樣式再分為連續上下標注和連續左右標注兩個部分。界面設計如圖2所示。
2.3 序號數字的自動遞增
在標注序號時,序號通常是按照順序依次遞增的。為簡化用戶操作,在標注序號過程中,不需要用戶輸入序號數字,因而序號數字必須是自動遞增的。如果不對序號數字自動遞增,則在每次運行程序進行序號標注的時,都需要人工輸入一個序號數字,操作比較繁瑣,且容易出錯。所以,對序號數字進行自動遞增是十分有必要的。
序號數值的自動累加是依靠AutoLISP語言中的(1+ 數值)數學運算功能函數來完成的,將序號數值變量自加1,然后再賦值給序號數值變量,就可以做到序號數值的累加。
2.4 序號表達方式的保持
在序號標注時,同一張圖紙只能是一個序號表達方式,因而序號表達方式的保持是十分重要的問題。與序號數字自動遞增一樣,序號表達方式的保持也主要是簡化用戶的操作。如當選用圓圈序號表達方式進行序號標注時,完成一個序號標注后,需要標注下一個序號,如果序號表達方式不能保持,則程序會自動使用默認值(水平線式),操作者需要再次選擇圓圈樣式才可以完成第二次標注。所以在程序的設計中,保持序號表達方式是很有必要的。保持的序號表達方式一直要到操作者完全退出程序才重新變為默認值。
序號表達方式的保持是依靠對應變量的值進行判斷來完成的。
(defun keep_steyle( )
(setq new_style old_style);將函數運行后的old_style值返回給new_style
(if new_style (setq old_style new_style)
(setq old_style 1))
…
如果new_style為非空,將new_style賦值給old_style,使其保持old_style的值完成動作,如果old_style為空,則為old_style初值為1。old_style為序號樣式按鈕激活的數值。old_style的值的取得是由動作回調命令action_tile命令定義的,如:(action_tile “img” “(setq old_styl 1)”)。
將序號表達方式的保持方法移植使用到標注樣式上也可以對標注的樣式進行保持。
2.5 字體高度與水平線及圓的配合
由于不同裝配圖中尺寸標注的字體大小不同,為滿足不同裝配圖的要求,因而序號標注字體的大小應能根據裝配圖中尺寸標注的字體的大小進行改變。序號字體大小改變后,標注指引線的水平線及圓圈就不能固定,否則就不協調,因此必須由程序來完成序號字高與水平線及圓圈的協調配合。序號字體高度與水平線長和圓圈的直徑大小的配合是依靠序號字體高度與水平線長和直徑大小的比例計算得出的。通過調試得出字高乘1.6比較適合協調。如圖3所示。
由于字體高度一旦確定,在標注同一個裝配圖時,將不再改變,所以字體高度的大小也應該保持不變,方法與序號表達方式的保持類似。
2.6 起始序號與終止序號的顯示
在序號標注過程中,操作者不一定能記住序號的數字,且當操作者需要變動某些標注時,沒有確切的序號數字顯示出來,不易保證序號標注的正確性。如果能將所要標寫的序號數字顯示出來,就可以給操作者提供極大的方便。
將序號數字顯示在起始序號中,當進行單個序號標注時,終止序號的數值自動與序號數值對齊。當進行序號的連續標注時,起始序號自動對應遞增后的序號數字,終止序號由操作者指定,就可以很好的提供序號標注數字的信息。
在程序中,利用一個字符變量和set_tile命令相配合就能做到提供這些信息。
如:(setq ans (rtos num_start))
;賦值ans為字符型變量 為后來帶入起始序號和終止序號set_tile做準備
(set_tile \"num_start\" ans);設定起始序號數為變量
(set_tile \"num_end\"ans) ;設定終止序號數為變量
2.7 序號指引線的水平線指向與連續序號標注方向判斷
在繪制水平線式的序號樣式時,水平線的指向有向左和向右兩個方向,當給定了指引線所指零件的點坐標后如何由程序來自動判斷水平線的指向呢?可以通過水平線所在直線上的一個端點坐標與零件點坐標的坐標系上的x值的大小來判斷如圖4所示。
在程序中,使用if判斷語句對其進行判斷。
如:(if (< (car pt1) (car pt2));如果x1 (setq ang 0);則定義ang為0否則 (setq ang pi));定義ang為π,ang為角度變量 在序號的連續標注中,當序號進行連續上下標注時,僅判斷水平線的指向是不夠的,還需要為序號連續方向進行判斷。通過水平線所在直線的一個端點坐標與零件點坐標的y值大小來判斷。如圖5所示。 在程序中,使用if判斷語句對其進行判斷。 如:(if(<(cadr p1)(cadr p2));如果y1 (setq ang(* 0.5 pi));則定義ang為0.5π setq ang(* -0.5 pi)));否則定義ang為-0.5π,ang為一個角度變量。 將水平線的指向與序號的連續方向結合起來就可以很好的完成連續序號標注中所需要的兩個方向的判斷。2.8 運行實例程序運行時,在界面中選擇所需要的字體高度,填寫序號總數、起始序號、終止序號,點擊選取需要的序號樣式以及標注樣式。圖6為選擇字體高度為5,序號總數為1,起始序號為10,終止序號為13,序號樣式為圓圈樣式,標注樣式為上下連續標注的界面的運行界面。圖7為實際不同標注樣式在AutoCAD中的標注效果。 3 結論 本軟件經過多次調試運行,效果十分理想,能在Auto CAD 2004版本以上運行。序號標注符合國家機械制圖標準,可用于實際工程圖紙設計的序號標注,有較好的實用性和應用性,有一定的推廣和參考價值。 參考文獻: [1] 符純華.計算機輔助設計[M].成都:西南交通大學出版社,2006. [2] 汪琪美.AutoCAD13對話框與驅動程序設計[M].北京:海洋出版社,1998. [3] 郭劍鋒,陳杉,王寧.用Visual Lisp開發AutoCAD2000應用程序[M].北京:人民郵電出版社,2000. [4] 成大先.機械設計手冊(單行本).機械制圖、極限與配合[M].北京:化學工業出版社,2004.