手機(jī)版WPS 手機(jī)版wps免費(fèi)下載
2022-11-29
更新時(shí)間:2022-04-03 14:39:44作者:未知
由于AutoCAD軟件提供了友好的人機(jī)交互模式、良好的二次開發(fā)平臺(tái)、實(shí)惠的價(jià)格而深受廣大企業(yè)的青睞。目前所選用的CAD軟件首推AutoCAD各版本軟件或是在其基礎(chǔ)上二次開發(fā)的軟件,如高華CAD、華中理工大學(xué)IntelCAD等。許多用戶正是看中AutoCAD提供的二次開發(fā)功能,有利于開發(fā)出適合廠情的功能模塊,但是,AutoCAD的版本升級(jí)較快,在近幾年推出了AutoCAD R13、AutoCAD R14、AutoCAD、R2000,使得用戶在使用特別是在二次開發(fā)上變得無所適從。本文正是從這一情況出發(fā),探討在AutoCAD平臺(tái)上使用的開發(fā)工具。
一、引言
AutoCAD技術(shù)的應(yīng)用已涉及到航空航天、汽車、機(jī)械、建筑、電子電器等各行各業(yè),它從根本上改變了傳統(tǒng)手工繪圖、依靠圖紙組織整個(gè)生產(chǎn)過程的技術(shù)管理模式。采用CAD技術(shù)能快速地進(jìn)行新產(chǎn)品設(shè)計(jì)、提高設(shè)計(jì)質(zhì)量和縮短新產(chǎn)品設(shè)計(jì)周期以加強(qiáng)企業(yè)的競(jìng)爭(zhēng)力,對(duì)傳統(tǒng)產(chǎn)業(yè)的改造、新興技術(shù)和產(chǎn)業(yè)的興起與發(fā)展、我國(guó)產(chǎn)業(yè)國(guó)際化的增強(qiáng)等方面,均能產(chǎn)生巨大的推動(dòng)作用。
AutoCAD的二次開發(fā)途徑主要有兩個(gè),即文件開發(fā)和程序開發(fā)。文件開發(fā)是指根據(jù)用戶的具體開發(fā)需要,按照AutoCAD提供的方法和文件格式,通過編輯AutoCAD系統(tǒng)所支持的文本文件(如菜單文件和線型文件等)或建立同種類型新的文本文件,來開發(fā)AutoCAD,使其滿足用戶特定需要的方法。程序開發(fā)是指利用AutoCAD提供的編程環(huán)境和開發(fā)工具(稱為AutoCAD應(yīng)用程序接口,縮寫為API),通過編寫程序來實(shí)現(xiàn)對(duì)AutoCAD開發(fā)的方法。借助于程序開發(fā),可為AutoCAD擴(kuò)充新的命令或定義,以滿足用戶具體需要。
從目前各行各業(yè)對(duì)AutoCAD的應(yīng)用情況來看,主要表現(xiàn)在直接應(yīng)用和間接應(yīng)用兩個(gè)方面。其中,前者為直接利用提供的強(qiáng)大的繪圖功能進(jìn)行圖形的繪制;后者為利用提供的強(qiáng)大的開發(fā)工具結(jié)合本行業(yè)的實(shí)際情況對(duì)AutoCAD進(jìn)行的二次開發(fā),這種應(yīng)用是對(duì)AutoCAD的更高層次的應(yīng)用。
二、開發(fā)常用工具
1.AutoLISP
AutousP出現(xiàn)于1985年推出的AutoCADRZ.18中,是一種嵌人在AutoCAD內(nèi)部的編程語(yǔ)言,完全針對(duì)AutocAD進(jìn)行編程,是UsP原版的一個(gè)子集,它一直是低版本AutoCAD的首選編程語(yǔ)言。它可以直接訪問和修改AutoCAD當(dāng)前的圖形數(shù)據(jù)庫(kù),為AutoCAD增加新命令或修改AutocAD,實(shí)現(xiàn)參數(shù)化繪圖程序設(shè)計(jì)。它與主流編程語(yǔ)言如C/C++、BAsIC等相比語(yǔ)法非常簡(jiǎn)單,也較靈活,但功能也相對(duì)簡(jiǎn)單些。其缺點(diǎn)是繼承了USP語(yǔ)言的編程規(guī)則而導(dǎo)致繁多的括號(hào)。
2.ADS
ADS是AutoCAD提供的運(yùn)用C語(yǔ)言開發(fā)應(yīng)用程序的系統(tǒng),本質(zhì)上是一組可以用C語(yǔ)言編寫的頭文件和目標(biāo)庫(kù),它直接利用用戶熟悉的各種流行的C語(yǔ)言編譯器,將應(yīng)用程序編譯成可
執(zhí)行的文件在AutoCAD環(huán)境下運(yùn)行,這種可以在AutoCAD環(huán)境中直接運(yùn)行的可執(zhí)行文件叫做ADS應(yīng)用程序。它要求開發(fā)者既懂C語(yǔ)言又熟悉AutocAD,因此,被認(rèn)為比AutoUsP更高級(jí)的開發(fā)手段。使用ADS既可以開發(fā)獨(dú)立的應(yīng)用程序,也可以開發(fā)常用函數(shù)供Autollsp程序調(diào)用。后者的好處是既可提高編程效率,又可對(duì)程序進(jìn)行保護(hù),國(guó)內(nèi)開發(fā)商大多采用這種方式。ADS由于其速度快,又采用結(jié)構(gòu)化的編程體系,因而很適合于高強(qiáng)度的數(shù)據(jù)處理,如二次開發(fā)的機(jī)械設(shè)計(jì)CAD、工程分析CAD、建筑結(jié)構(gòu)CAD、土木工程CAD、化學(xué)工程CAD、電氣工程CAD等。
3.ARX
盡管ADS有很多值得稱贊之處,但它也有一個(gè)先天不足之處,這就是ADS程序必須通過AutousP解釋器加載,并非最低層的代碼,各方面的條件都會(huì)打折扣。正因?yàn)槿绱?,在R13版中AutoCAD提供了更為高級(jí)的開發(fā)工具ARXoARX是Autodesk公司在AutoCAD13版之后推出的一個(gè)全新的面向?qū)ο蟮亩伍_發(fā)環(huán)境,也是AutocAD第一次提供面向?qū)ο蟮亩伍_發(fā)工具。使用ARx編寫的應(yīng)用程序不需經(jīng)過USP解釋器加載,它可以和AutocAD的進(jìn)程共享內(nèi)存空間,即用ARx編寫的命令可以和AutoCAD中l(wèi)ine、協(xié)i二等命令于同一級(jí)別,顯然要比AutoUSP、ADS形式得到更快的響應(yīng)11]。ARx有一個(gè)更為重要的功能,即允許用戶定義自己的對(duì)象,構(gòu)造自己的圖形數(shù)據(jù),可以像管理內(nèi)部定義對(duì)象一樣進(jìn)行處理。ARx同樣使用C++語(yǔ)言,用VB、vc++進(jìn)行編程,開發(fā)環(huán)境與ADS相同,目前ARx已經(jīng)升級(jí)為objectARX了。
三、開發(fā)工具之間的關(guān)系
1.AutoLISP、ADS及ARX與AutoCAD的關(guān)系
三者都是AutoCAD的內(nèi)嵌式編程語(yǔ)言,用戶利用這些語(yǔ)言建立新的命令,擴(kuò)充AutoCAD原有功能。AutoLISP可以很方便地為AutoCAD增加新命令,它通過內(nèi)部進(jìn)程通訊與AutoCAD通信;ADS是用C語(yǔ)言應(yīng)用程序,它作為外部函數(shù)加載到AutoCAD,需要由AutoLISP解釋器來調(diào)用,它也是通過IPC和AutoCAD通訊,它們與AutoCAD是分離進(jìn)程,如圖1所示。ARX是可編譯的C++程序,與ADS不同的是,ARX以動(dòng)態(tài)鏈接庫(kù)(DLL)的形式與AutoCAD共享地址空間,直接調(diào)用AutoCAD的核心函數(shù),并可直接訪問AutoCAD數(shù)據(jù)庫(kù)。
2.AutoLISP和ADS的關(guān)系
從圖1可以看出,ADS和AutoLISP它們都是通過IPC來和AutoCAD實(shí)現(xiàn)通訊的。每個(gè)ADS應(yīng)用程序都必須支持由ADS環(huán)境定義的與AutoLISP的接口,這種接口要求每個(gè)應(yīng)用程序要使用特定的數(shù)值,并按特定的數(shù)值調(diào)用ADS庫(kù)函數(shù)。通常,AutoLISP是按一定的順序調(diào)用ADS應(yīng)用程序,如:在初始化時(shí)或在調(diào)用(xload)函數(shù)時(shí),AutoLISP加載一個(gè)ADS應(yīng)用程序;ADS應(yīng)用
程序通過調(diào)用ads_init(),初始化與AutoLISP的接口聯(lián)系; ADS應(yīng)用程序通過調(diào)用ads_link()并傳入一個(gè)應(yīng)用程序的結(jié)果碼RSRSLT,指示接受和處理來自AutoLISP的請(qǐng)求;從ads_link ( )中返回一個(gè)請(qǐng)求碼RQXLOAD;每調(diào)用一次ads_defun(),該應(yīng)用程序即定義一個(gè)外部函數(shù)等。由此可知,一個(gè)ADS應(yīng)用程序基本上是AutoLISP的一個(gè)“奴隸”,一直在等待著AutoLISP的請(qǐng)求,需要反復(fù)調(diào)用ads_link(),所以保持請(qǐng)求順序的最自然的作法就是將該函數(shù)放在一個(gè)“無限”循環(huán)的開始。
3.ADS與ARX的關(guān)系
從功能上可以描述為包容或包含的關(guān)系。實(shí)際上,一個(gè)完整的ADS庫(kù)函數(shù)是ARX環(huán)境的一部分,通常稱為ADSRX。ADSRX和標(biāo)準(zhǔn)的C語(yǔ)言版本的ADS庫(kù)在功能上是完全一致的。不同的是ADSRX作為AutoCAD的一部分,它同樣分享著AutoCAD的地址空間,而ADS則需要通過IPC才能實(shí)現(xiàn)通訊。也就是說ADS的功能可以通過ADSRX完全替代。一個(gè)ADS應(yīng)用程序包含一個(gè)無限循環(huán),一直在等待著AutoLISP的請(qǐng)求;而ARX有一個(gè)為使用消息提供的入口。當(dāng)用戶登記命令時(shí),它實(shí)現(xiàn)了同AutoCAD的通信,當(dāng)用戶重載在ARX庫(kù)中C++類的虛構(gòu)函數(shù)上時(shí),這些函數(shù)便實(shí)現(xiàn)了應(yīng)用程序的入口功能。
四、結(jié)束語(yǔ)
隨著AutoCAD應(yīng)用的日益普及,軟件開發(fā)工具與硬件設(shè)備不斷地更新,使得人們對(duì)應(yīng)用程序功能的需求與日俱增,對(duì)其進(jìn)行二次開發(fā)的工具也不斷更新。VisualllSP、objectARX、ActiveXAu-tolnation等工具也顯示出它們的優(yōu)勢(shì),使得應(yīng)用程序在修改上更具彈性,在使用上更加智能。對(duì)于用戶來說,應(yīng)根據(jù)本身所熟悉的AutoCAD的版本,以及所熟悉的開發(fā)環(huán)境、需求的特點(diǎn)來選擇AutoCAD的開發(fā)工具,不必刻意追求新奇的開發(fā)工具,但也應(yīng)逐漸地了解和接受它,以備將來開發(fā)出更適合廠情和國(guó)情的AutoCAD增值模塊和軟件。