国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

AutoCAD二次開發(fā)中的若干問題探析

2012-04-29 00:44:03王圍李波鄒元平
電腦知識(shí)與技術(shù) 2012年1期
關(guān)鍵詞:實(shí)現(xiàn)方法

王圍 李波 鄒元平

摘要:闡述了AutoCAD二次開發(fā)的原理及ActiveX自動(dòng)化界面技術(shù);介紹了幾種二次開發(fā)工具與性能特點(diǎn)、適用范圍;通過實(shí)例介紹了兩種AutoCAD二次開發(fā)的實(shí)現(xiàn)方法;為技術(shù)人員開發(fā)專用CAD系統(tǒng)提供一些幫助。

關(guān)鍵詞:AutoCAD二次開發(fā);開發(fā)原理;開發(fā)工具;實(shí)現(xiàn)方法

中圖分類號(hào):TP391.72文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2012)01-0163-03

Research on Some Techniques in AutoCAD Secondary Development

WANG Wei, LI Bo, ZOU Yuan-ping

(Shandong Energy Machinery Group Tongli Equipment Manufacturing Co.,Ltd., Laiwu 271100, China)

Abstract: Describes the principle of AutoCAD secondary development and the technique of ActiveX Automation Interface; introduces some tools in AutoCAD secondary development and define the situation of their using;using some examples to introduce two ways of realizing AutoCAD secondary development;providing some help to technical people developing professional CAD systems.

Key words: AutoCAD secondary development; development principle; development tool; ways of realizing

隨著計(jì)算機(jī)技術(shù)的發(fā)展,CAD(計(jì)算機(jī)輔助設(shè)計(jì))技術(shù)廣泛應(yīng)用于機(jī)械、電子、電氣、建筑等領(lǐng)域[1]。AutoCAD作為一種通用圖形處理軟件,其繪圖功能完善,易學(xué)易用,使廣大技術(shù)人員“甩掉”了傳統(tǒng)的圖板,是目前應(yīng)用最為廣泛的二維制圖軟件,幾乎是CAD的代名詞。AutoCAD的另一強(qiáng)大生命力在于其開放的結(jié)構(gòu)體系,而這種開發(fā)體系,使得不同行業(yè)、專業(yè)根據(jù)自身的特點(diǎn)能夠?qū)ζ溥M(jìn)行二次開發(fā)??梢哉f,AutoCAD的通用性為其二次開發(fā)提供了必要條件,而AutoCAD開放的體系結(jié)構(gòu)則使其二次開發(fā)成為可能,也只有通過對(duì)其進(jìn)行二次開發(fā),才能夠進(jìn)一步減少設(shè)計(jì)人員的制圖工作量,提高制圖效率[2]。本文將結(jié)合作者利用Visual Basic進(jìn)行Au? toCAD二次開發(fā)的經(jīng)驗(yàn),探析AutoCAD二次開發(fā)中的若干問題。

1 AutoCAD二次開發(fā)原理

廣義二次開發(fā)是指在某些系統(tǒng)軟件及支撐軟件的基礎(chǔ)上,針對(duì)特定應(yīng)用領(lǐng)域及用戶需求,結(jié)合專業(yè)知識(shí)約束集合,進(jìn)而開發(fā)的專業(yè)應(yīng)用軟件。AutoCAD二次開發(fā)(以下簡(jiǎn)稱二次開發(fā))通常指在AutoCAD的基礎(chǔ)上,通過利用AutoCAD提供的開放式資源和開放式體系結(jié)構(gòu),結(jié)合專業(yè)特點(diǎn),利用開發(fā)工具,對(duì)AutoCAD進(jìn)行的再開發(fā),以滿足本行業(yè)或本專業(yè)的特定需求,其原理示意圖如圖1所示。圖1二次開發(fā)原理示意圖

ActiveX自動(dòng)化界面技術(shù)(ActiveX Automation Interface)它由對(duì)象鏈接技術(shù)與嵌入技術(shù)發(fā)展而來,其核心在于允許外顯的對(duì)象由一個(gè)Windows應(yīng)用程序控制另外一個(gè)Windows應(yīng)用程序。自AutoCAD R14以后,AutoCAD都支持該技術(shù),通過該接口,使得用戶利用開發(fā)工具在內(nèi)部或者外部來操縱AutoCAD。AutoCAD的大部分功能通過ActiveX接口“暴露”出來,并以屬性、方法的方式被封裝在ActiveX對(duì)象中[3]。使用開發(fā)工具,通過聲明,引用這些“暴露”的對(duì)象,如AcadLine,AcadCircle等,實(shí)現(xiàn)在當(dāng)前圖形文檔或者模型空間中創(chuàng)建對(duì)象,進(jìn)而操作其方法、屬性,如Mirror,Layer,color等。

2二次開發(fā)常用開發(fā)工具

為滿足用戶需求,Autodesk公司相繼推出了三代開發(fā)工具。第一代開發(fā)工具是AutoLISP語(yǔ)言,它嵌入AutoCAD內(nèi)部,幾乎可直接調(diào)用所有AutoCAD命令,如繪制一條直線,直接使用(command "line" p1 p2 ""),是一種解釋性語(yǔ)言;第二代開發(fā)工具是ADS(AutoCAD Development System),它是AutoCAD R11開始支持的一種基于C語(yǔ)言的開發(fā)環(huán)境,具備大規(guī)模處理能力;第三代開發(fā)工具包括:Visual AutoLISP,ObjectARX,VBA,通過接口與對(duì)象交互,它們的一些性能如表1所示[4]。

可以看出,幾種開發(fā)語(yǔ)言特性各異,各有所長(zhǎng),第三代開發(fā)工具將成為二次開發(fā)的必然選擇,但在開發(fā)中具體選擇哪種語(yǔ)言,應(yīng)視需要及開發(fā)人員經(jīng)驗(yàn)而定,對(duì)于中小型的產(chǎn)品結(jié)構(gòu)設(shè)計(jì),如10KV及以下變壓器結(jié)構(gòu)參數(shù)化設(shè)計(jì),需要有自己的啟動(dòng)界面,推薦使用Visual Basic。本文所有代碼的書寫均采用Visual Basic語(yǔ)言。

3二次開發(fā)的實(shí)現(xiàn)

3.1二次開發(fā)的主要方法

二次開發(fā)主要方法是實(shí)現(xiàn)參數(shù)化設(shè)計(jì),即根據(jù)零部件相關(guān)參數(shù),確定其形狀的一種設(shè)計(jì)方法。這些參數(shù)是實(shí)現(xiàn)參數(shù)化設(shè)計(jì)的必要條件,條件改變新圖形隨之生成。產(chǎn)品的參數(shù)化設(shè)計(jì)大致可以分為以下三種情形[5]:

1)參數(shù)的改變,程序順序執(zhí)行預(yù)定表達(dá)式,通過與用戶交互,完成繪圖。該種方法使新圖形形狀發(fā)生改變,可稱之為成比例參數(shù)化設(shè)計(jì)。它繪圖直觀,產(chǎn)品真實(shí)形狀一目了然,適于形狀相對(duì)簡(jiǎn)單的零部件、標(biāo)準(zhǔn)件或復(fù)雜零部件某一視圖,如標(biāo)準(zhǔn)件、通用件等。

2)參數(shù)的改變,新圖形形狀不發(fā)生改變,相關(guān)標(biāo)注發(fā)生改變,可稱之為圖樣法參數(shù)化設(shè)計(jì)。這需要開發(fā)者預(yù)先對(duì)圖形必須的參數(shù)做出分析并標(biāo)識(shí)。程序運(yùn)行后,對(duì)標(biāo)識(shí)重新賦值、替換,完成繪圖。該種方法適于圖形復(fù)雜、變動(dòng)不大的圖形,如同一型號(hào)不同規(guī)格的總裝配圖等。它簡(jiǎn)單實(shí)用,但是不能反映零部件真實(shí)形狀。

3)上述兩種情形的組合,即在一張圖形當(dāng)中,不同視圖采用不同參數(shù)化實(shí)現(xiàn)方法。

3.2成比例參數(shù)化設(shè)計(jì)

成比例參數(shù)化設(shè)計(jì)首先須確定一個(gè)合適的比例,在過程中加以調(diào)用,以反映產(chǎn)品真實(shí)形狀。建議在模塊層級(jí)定義一個(gè)確定制圖比例的公共函數(shù),在過程中直接調(diào)用該函數(shù),確定制圖比例,節(jié)省代碼書寫。這可通過視圖實(shí)際尺寸與圖幅限定尺寸相比較來確定,代碼實(shí)現(xiàn)如下:

PublicFunctionDefineScale(ByValActualLAsDouble,ByValActualHAsDouble,DrawingLAsDouble,DrawingHAsDouble)asDouble

其中,ActualL為零部件全部視圖所需實(shí)際長(zhǎng)度,ActualH為零部件全部視圖實(shí)際寬度,DrawingL為圖紙限定長(zhǎng)度,DrawingH為圖紙限定寬度,如A4圖紙限定尺寸為230/180;

Dim I as Integer

I = 1

Do While (DrawingL - ActualL / I) < 0 Or (DrawingH - ActualH / I) < 0

I = I + 1

Loop

DefineScale = 1 / I

End Function

該函數(shù)有四個(gè)傳值參數(shù),參數(shù)確定后,可以方便的確定作圖比例,以保證按比例繪制的圖形不會(huì)超過圖幅限定的界限。按照上述比例繪制一個(gè)矩形,由于在成比例參數(shù)化設(shè)計(jì)中會(huì)經(jīng)常用到創(chuàng)建矩形,按照手工繪制矩形的方法,同樣可以在模塊層級(jí)定義一個(gè)繪制矩形的函數(shù),代碼實(shí)現(xiàn)如下所示:

Public Function CreatRectangle (ByVal x0 As Double, ByVal y0 As Double, ByVal Length As Double, ByVal Width As Double, ByVal sc As Double,ByVal Layer As String, Optional ByVal colour As String) As AcadLWPolyline

引用“暴露”的ActiveX對(duì)象輕量多義線AcadLWPolyline;其中,矩形插入點(diǎn)在矩形框的左上角,Length為矩形長(zhǎng)度,Width為矩形寬度,sc為確定的繪圖比例;Layer為矩形所在圖層,可選參數(shù)colour為矩形顏色;

Dim points(0 To 9) As Double

points(0) = x0: points(1) = y0

points(2) = points(0): points(3) = points(1)–Width*sc

points(4) = points(2) + Length*sc: points(5) = points(3)

points(6) = points(4): points(7) = points(1)

points(8) = points(0): points(9) = points(1)

Set CreatRectangle =Acad.ActiveDocument.ModelSpace.AddLightWeightPolyline(points)

CreatRectangle.Layer = Layer

If color <> "" Then

CreatRectangle.color = colour End If End Function

3.3圖樣法參數(shù)化設(shè)計(jì)

如上所述,圖樣法參數(shù)化設(shè)計(jì)關(guān)鍵在于分析結(jié)構(gòu)參數(shù)并做出標(biāo)識(shí),并對(duì)同一產(chǎn)品不同圖樣做出有效命名,按照一定規(guī)律分別調(diào)用,最后實(shí)現(xiàn)賦值替換,完成參數(shù)化設(shè)計(jì)。圖2所示,圖樣中的字母L、L/2、B、B/2等標(biāo)注是需要賦值、替換的參數(shù)對(duì)象。程序運(yùn)行調(diào)用圖樣,實(shí)現(xiàn)標(biāo)注替換完成新圖形,代碼實(shí)例如下:

Dim BlockStr as String

BlockStr = "實(shí)例"

Set blockRef=Acad.ActiveDocument.ModelSpace.InsertBlock(insertionPnt,BlkPath & "實(shí)例.dwg", 1#, 1#, 1#, 0)其中,insertionPnt為圖樣插入點(diǎn),BlkPath為圖樣相對(duì)查詢路徑。完成參數(shù)的替換:

ReplaceBlock "實(shí)例", "DimRotated", "L", L

其中,ReplaceBlock為模塊級(jí)定義的替換圖樣中對(duì)象的函數(shù);以此類推,替換其他字母標(biāo)注,最后對(duì)塊文件實(shí)施炸開,顯示新的替換值,完成設(shè)計(jì)。

4結(jié)束語(yǔ)

目前,AutoCAD二次開發(fā)技術(shù)正應(yīng)用于多個(gè)領(lǐng)域、行業(yè),是進(jìn)一步減少設(shè)計(jì)人員工作量,提高繪圖效率的有效手段。對(duì)于標(biāo)準(zhǔn)件、成系列化的產(chǎn)品、結(jié)構(gòu)相同或類似的產(chǎn)品的設(shè)計(jì),尤為適用;對(duì)于較為復(fù)雜的圖紙,兩種參數(shù)化設(shè)計(jì)方法的有效組合使用,可大大減少編碼書寫工作,縮短產(chǎn)品開發(fā)周期,進(jìn)一步提高參數(shù)化的水平。

參考文獻(xiàn):

[1]方貴盛,王建軍.AutoCAD二次開發(fā)技術(shù)及其應(yīng)用研究[J].機(jī)床與液壓,2007,35 (6):186-212.

[2]李長(zhǎng)勛.AutoCAD ObjectARX程序開發(fā)技術(shù)[M].北京:國(guó)防工業(yè)出版社,2005:1-4.

[3]原思聰,王憲章. AutoCAD二次開發(fā)技術(shù)及其在機(jī)械工程中的應(yīng)用[J].西安建筑科技大學(xué)學(xué)報(bào),2001,33(1):71-75.

[4]姜宏偉,李淼,鄧海鵬.變壓器輔助設(shè)計(jì)中的典型圖法[J].電器制造,2007(9):82-85.

[5]張晉西.Visual Basic與AutoCAD二次開發(fā)[M].北京:清華大學(xué)出版社,2002:7-10.

猜你喜歡
實(shí)現(xiàn)方法
試論恒壓供水變頻控制系統(tǒng)的組成與實(shí)現(xiàn)方法
建造高精度環(huán)境條件實(shí)驗(yàn)室方法初探
高職英語(yǔ)教學(xué)價(jià)值定位及其實(shí)現(xiàn)
東方教育(2016年20期)2017-01-17 21:21:45
淺談業(yè)務(wù)連續(xù)性管理的實(shí)現(xiàn)方法
工程地質(zhì)在優(yōu)慕課教學(xué)資源平臺(tái)信息化教學(xué)案例
考試周刊(2016年25期)2016-05-26 01:16:33
關(guān)于通信網(wǎng)絡(luò)安傘維護(hù)方法的認(rèn)識(shí)及研究
科技傳播(2016年1期)2016-03-22 00:41:19
在學(xué)習(xí)型社會(huì)視角下觀察社區(qū)成人教育的功能及實(shí)現(xiàn)方法
ERP實(shí)現(xiàn)的探索與研究
一種基于策略的SIP終端實(shí)現(xiàn)方法
建筑工程造價(jià)信息化管理實(shí)現(xiàn)方法探討
壶关县| 巴中市| 临江市| 鄂托克旗| 新源县| 马龙县| 运城市| 巧家县| 大连市| 灵川县| 游戏| 靖江市| 信阳市| 嘉祥县| 加查县| 观塘区| 夏河县| 双柏县| 河池市| 上杭县| 延寿县| 观塘区| 炉霍县| 乡城县| 松溪县| 军事| 隆安县| 泗阳县| 安多县| 金华市| 西林县| 社会| 洛阳市| 尖扎县| 盐城市| 中江县| 南木林县| 舟曲县| 城固县| 蓬安县| 高州市|