(江蘇省大豐中等專業(yè)學(xué)校,江蘇 大豐 224100)
利用VB實(shí)現(xiàn)AutoCAD二次開發(fā)中參數(shù)化繪圖
陳 煒
(江蘇省大豐中等專業(yè)學(xué)校,江蘇 大豐 224100)
通過(guò)參數(shù)化繪圖的背景分析和AutoCAD二次開發(fā)五種常用工具的分析比較,利用VB對(duì)AutoCAD二次開發(fā)實(shí)現(xiàn)參數(shù)化繪圖是可行的。再利用彈簧繪制為例詳細(xì)描述了VB實(shí)現(xiàn)參數(shù)化繪圖的具體步驟。更加確定了VB實(shí)現(xiàn)AutoCAD二次開發(fā)中參數(shù)化繪圖是具有優(yōu)勢(shì)的,它縮短繪圖操作時(shí)間,提高工作效率。
參數(shù)化繪圖;AutoCAD ;二次開發(fā);VB
AutoCAD作為一款工程方面非常出色的軟件,因其優(yōu)秀圖形處理能力和通用性而得到廣泛普及與應(yīng)用,正因?yàn)樵撥浖ㄓ眯院軓?qiáng),從而在進(jìn)行具體圖形繪制和數(shù)據(jù)處理綜合應(yīng)用的時(shí)候自身所具有的功能就顯得相形見絀。比如在機(jī)械制圖時(shí),如螺母、墊圈、軸承、彈簧、齒輪等一些標(biāo)準(zhǔn)件、常用件的設(shè)計(jì)和繪制,都需要用戶逐一繪制,這些標(biāo)準(zhǔn)件都會(huì)有大量數(shù)據(jù),用戶繪圖時(shí)必須查找各種標(biāo)準(zhǔn),不僅費(fèi)時(shí)而且容易出錯(cuò)。為了解決上述問(wèn)題,盡可能的不重復(fù)勞動(dòng),提高設(shè)計(jì)效率,減少設(shè)計(jì)開發(fā)周期,因此我們想到了實(shí)現(xiàn)圖形的自動(dòng)繪制方法。根據(jù)機(jī)械制圖中各種標(biāo)準(zhǔn)件結(jié)構(gòu)特點(diǎn),同一個(gè)系列內(nèi),它們基本結(jié)構(gòu)相似,僅是尺寸上有些變化。對(duì)于齒輪、彈簧等常用件,盡管不能像螺栓、螺母那樣完全實(shí)現(xiàn)標(biāo)準(zhǔn)化,但可以實(shí)現(xiàn)部分結(jié)構(gòu)標(biāo)準(zhǔn)化。比如彈簧,我們只需輸入起始半徑、垂直增量、水平增量、圈數(shù)、分段數(shù)等參數(shù),即可編程實(shí)現(xiàn)該二維或三維圖形的自動(dòng)繪制。
為了使重復(fù)性較大的計(jì)算繪圖工作量減小和更加規(guī)范準(zhǔn)確,AutoCAD提供了二次開發(fā)的功能接口。進(jìn)行其二次開發(fā)的常用工具目前大體有五種,分別是ADS、ObjectARX、AutoLISP、.NET、VBA。其中,ADS是AutoCAD的C語(yǔ)言開發(fā)系統(tǒng),直接利用C語(yǔ)言編譯器,因涉及到C語(yǔ)言的編程它的開發(fā)不易上手并且難度較大;ObjectARX的功能強(qiáng)大,效率較高,但是開發(fā)人員必須掌握VC++,難度很大,而且開發(fā)效率不高,容易出現(xiàn)內(nèi)存泄漏;AutoLISP語(yǔ)言雖然其語(yǔ)法規(guī)則簡(jiǎn)單、靈活,但是缺乏綜合性的開發(fā)環(huán)境,綜合能力差;.NET是微軟新一代技術(shù)平臺(tái),功能強(qiáng)大,但對(duì)開發(fā)環(huán)境要求較高,而且可供學(xué)習(xí)參考的資料較少;VBA即McrosoftOffice中的Visual Basic(簡(jiǎn)稱VB) for Applications開發(fā)環(huán)境,被集成到AutoCAD中,從AutoCADR14版本以后,就增加了ActiveX Automation 自動(dòng)化服務(wù)的功能。而VisualBasic是Windows 操作系統(tǒng)下最常用的支持 ActiveXAutomation 技術(shù)的開發(fā)工具。VB是一種面向?qū)ο蟮目梢暬绦蜷_發(fā)工具,它入門簡(jiǎn)單易學(xué),具有快速的程序開發(fā)環(huán)境,代碼的編寫量小,開發(fā)人員改動(dòng)界面方便直接、所見即所得,并且支持各類最新的 Windows 技術(shù),擁有強(qiáng)大的數(shù)據(jù)庫(kù)編程能力,廣泛使用于Windows平臺(tái)上。
根據(jù)以上五個(gè)工具的比較,利用VB對(duì)AutoCAD二次開發(fā)實(shí)現(xiàn)參數(shù)化繪圖將更具優(yōu)勢(shì),用VB語(yǔ)言編程開發(fā),將AutoCAD看著VB程序中一個(gè)繪圖的窗口,對(duì)其進(jìn)行打開、編輯、繪圖、打印和關(guān)閉等操作,其速度相對(duì)較快。為此,可以作為我們進(jìn)行程序設(shè)計(jì)的首選工具。
下面以彈簧繪制為例用VB實(shí)現(xiàn)參數(shù)化繪圖對(duì)AutoCAD進(jìn)行二次開發(fā),解決機(jī)械制圖中標(biāo)準(zhǔn)件、常用件的參數(shù)化繪圖問(wèn)題。
1 建立主界面。打開在Microsoft Visual Basic設(shè)計(jì)工具,選擇文件中“新建工程”,進(jìn)入窗體設(shè)計(jì)器。首先,在“工程”菜單中選擇“移除 Form1”。然后,在“工程”菜單中選擇“添加 MDI 窗體”,即可添加MDIForm1主控窗體。最后,在“文件”菜單中保存該工程,將窗體保存為 默認(rèn)文件名,把新工程保存為“VB實(shí)現(xiàn)參數(shù)化繪圖.vbp”。
2 在MDI主窗體中建立菜單。點(diǎn)擊MDIForm1主窗體,在其上右擊,選擇“菜單編輯器”,在彈出的對(duì)話框中根據(jù)需求完成相應(yīng)的菜單設(shè)計(jì),注意每個(gè)菜單的名稱的命名必須符合語(yǔ)法規(guī)范并要有意義,這里統(tǒng)一用菜單名的拼音首字母命名,如標(biāo)題為“彈簧”,名稱為“th”。
3 添加子窗體。選擇“工程”菜單中“添加窗體”,在彈出的對(duì)話框中選擇“窗體”并打開,然后修改新建窗體的MDIChild屬性為“True”,最后保存該窗體。
采用相同的方法,將2中所有菜單全部建立好相對(duì)應(yīng)的子窗體,并在菜單中用“窗體名.show”命令調(diào)用各自子窗體。如:“彈簧”子菜單,打開它對(duì)應(yīng)的窗體(窗體名為frmTh),則用命令frmTh.show,代碼如下:
Private Sub th_Click()
frmTh.show
End Sub最后添加Label、TextBox、CommandButton控件完成參數(shù)化繪圖窗口的設(shè)計(jì)。
4編程流程圖。開 始->連接CAD->參數(shù)賦值->根據(jù)每圈分段數(shù)計(jì)算角度間隔->用循環(huán)計(jì)算每個(gè)控制點(diǎn)坐標(biāo)->把所有控制點(diǎn)連接成多段線->繪制截面圓生成面域->完 成->結(jié) 束
5 實(shí)現(xiàn)結(jié)果和結(jié)論
(1)輸入?yún)?shù)如下時(shí),繪制彈簧并生成彈簧圖形每一圈大小都相同,且彈簧圈數(shù)為4圈。
起始半徑:60,垂直增量:10,水平增量:0,旋轉(zhuǎn)圈數(shù):4,分段數(shù):50。
(2)當(dāng)改變參數(shù)為下所示時(shí),生成彈簧圖形每一圈大小按增量遞增,其彈簧圈數(shù)為3圈。
起始半徑:30,垂直增量:20,水平增量:10,旋轉(zhuǎn)圈數(shù):3,分段數(shù):100。
通過(guò)上述2組數(shù)據(jù)的實(shí)驗(yàn),輸入的參數(shù)不同生成的圖形也不同,說(shuō)明VB實(shí)現(xiàn)參數(shù)化繪圖是可行的。
通過(guò)VB編程對(duì)AutoCAD進(jìn)行二次開發(fā),可以使標(biāo)準(zhǔn)件繪圖繁瑣的問(wèn)題得以圓滿解決,操作起來(lái)也簡(jiǎn)單易行。大家還可利用ImageList與ToolBar控件制作一個(gè)工具條,通過(guò)工具條按鈕點(diǎn)擊常用菜單命令繪圖將會(huì)更加方便快捷。
[1]張帆.AutoCAD VBA二次開發(fā)教程[M].北京:清華大學(xué)出版社,2006.
[2]劉永波.分析AutoCAD二次開發(fā)方法的研究[J].軟件.2013.34(5).
TP39
:A