CAD 軟件在國(guó)內(nèi)生產(chǎn)制造企業(yè)中的應(yīng)用越來(lái)越廣泛,大量二次開發(fā)的需求隨之產(chǎn)生,根據(jù)企業(yè)產(chǎn)品特點(diǎn)開發(fā)出一套專業(yè)設(shè)計(jì)軟件成為眾多企業(yè)設(shè)計(jì)部門的迫切要求。
PRO/ E,AutoCAD,SolidWorks 和SolidEdge 等著名CAD 設(shè)計(jì)軟件都提供了良好的二次開發(fā)平臺(tái),基于這些軟件的二次開發(fā)產(chǎn)品滿足了各種企業(yè)和行業(yè)的設(shè)計(jì)需求,然而這樣的軟件產(chǎn)品卻往往會(huì)遇到以下幾個(gè)方面的問(wèn)題:
(1)專業(yè)性強(qiáng)
企業(yè)往往無(wú)法在現(xiàn)有CAD 軟件中找到適合自己行業(yè)的零件庫(kù),在此情況下便產(chǎn)生了二次開發(fā)的需求,因此二次開發(fā)產(chǎn)生的零部庫(kù)一般都是針對(duì)某個(gè)設(shè)計(jì)行業(yè)。這樣的零部件庫(kù)日后很難從軟件市場(chǎng)上得到升級(jí)和補(bǔ)充,例如空氣分離設(shè)備行業(yè),全國(guó)只有近百家專業(yè)生產(chǎn)廠商,現(xiàn)在CAD 廠商通常不會(huì)為這樣的專業(yè)領(lǐng)域企業(yè)設(shè)計(jì)完善的零部件庫(kù)。
(2)保密性高
企業(yè)的設(shè)計(jì)軟件充分體現(xiàn)了企業(yè)的技術(shù)特點(diǎn)和技術(shù)優(yōu)勢(shì),這樣的二次開發(fā)軟件具有很強(qiáng)的保密性。為了防止技術(shù)資料泄漏并保持同行業(yè)內(nèi)的競(jìng)爭(zhēng)優(yōu)勢(shì),企業(yè)往往非常慎重地選擇軟件開發(fā)伙伴,這樣就為日后維護(hù)帶來(lái)很大的困難。以空氣分離設(shè)備行業(yè)為例,該行業(yè)準(zhǔn)入門檻低,擁有核心技術(shù)的人員可以很容易地組建新的生產(chǎn)企業(yè),因此資料的保密是關(guān)系到企業(yè)生存的大事。如何在保密的情況下,長(zhǎng)期維護(hù)和升級(jí)軟件成了企業(yè)面臨的新問(wèn)題。
(3)設(shè)計(jì)變動(dòng)頻繁
企業(yè)產(chǎn)品要更新?lián)Q代,進(jìn)而帶動(dòng)零部件庫(kù)的更新和程序設(shè)計(jì)流程的變化。從企業(yè)需求角度而言,創(chuàng)新設(shè)計(jì)是企業(yè)賴以生存的基石,設(shè)計(jì)變動(dòng)將頻繁發(fā)生;而從軟件的角度來(lái)說(shuō),涉及變動(dòng)嚴(yán)重威脅了軟件的壽命,任何改動(dòng)都可能導(dǎo)致既有軟件功能完全喪失。如果對(duì)每次設(shè)計(jì)變動(dòng)都要聯(lián)系軟件設(shè)計(jì)企業(yè),必然造成無(wú)謂的二次投資,而對(duì)于軟件企業(yè)更改原有軟件帶來(lái)的開銷往往是驚人的。
如何解決這些問(wèn)題成了企業(yè)發(fā)展創(chuàng)新道路上的新困難,由此產(chǎn)生了企業(yè)三次開發(fā)的需求———企業(yè)在有限的軟件開發(fā)能力之下,不必支付大量的維護(hù)升級(jí)成本就能自主進(jìn)行三次開發(fā),讓軟件適應(yīng)企業(yè)日益增長(zhǎng)的設(shè)計(jì)需求。
將以SolidWorks 為例,結(jié)合實(shí)際工程項(xiàng)目經(jīng)驗(yàn),探討在二次開發(fā)過(guò)程中充分考慮用戶三次開發(fā)需求而進(jìn)行的若干改進(jìn)和嘗試,從而保證用戶在軟件交付使用后仍然能夠自行升級(jí)和維護(hù)該軟件。
1 SoIidWorks三次開發(fā)的四種方法
SolidWorks 的二次開發(fā)通常是利用SolidWorks 公司提供的功能齊全的API 函數(shù)庫(kù),使用Visual C ++ 或者Visual Basic 語(yǔ)言設(shè)計(jì)完成的。這樣的工作對(duì)于軟件開發(fā)企業(yè)來(lái)說(shuō)比較簡(jiǎn)單,而一旦二次開發(fā)軟件交付用戶使用,理解和修改代碼的工作對(duì)于用戶來(lái)說(shuō)將變得十分困難。下面的討論就是基于用戶只具有基本的計(jì)算機(jī)操作能力,沒(méi)有軟件開發(fā)能力的前提之下,如何繞開代碼修改,仍能夠?qū)Χ伍_發(fā)軟件進(jìn)行補(bǔ)充和升級(jí)的四種方法,以滿足企業(yè)創(chuàng)新和發(fā)展的需要。
這四種方法分別是:
(1)使用配置的方法建立零部件庫(kù);
(2)使用和解除約束方程;
(3)使用壓縮的方法處理不同拓?fù)浣Y(jié)構(gòu)問(wèn)題;
(4)使用Access 數(shù)據(jù)庫(kù)便于用戶修改。
1.1 使用配置的方法建立零部件庫(kù)
二次開發(fā)中建立零部件庫(kù)有兩種方法:
(1)編程實(shí)現(xiàn)
SolidWorks 提供了完整的API 函數(shù),調(diào)用接口函數(shù)可以實(shí)現(xiàn)各種繪圖功能。以實(shí)現(xiàn)一個(gè)圓柱系列化為例,其步驟如下:
①使用ModelDoc 對(duì)象中的CreateCircle2 函數(shù)即可按照制定的圓心和圓周上一點(diǎn)繪制圓形。使用PartDoc 對(duì)象中的FeatureExtrusion3函數(shù)進(jìn)行拉伸,得到一個(gè)圓柱。
②在數(shù)據(jù)庫(kù)(如SQLServer)中建立一組不同規(guī)格的圓的直徑表。
③使用ODBC 或者JDBC 建立程序和數(shù)據(jù)庫(kù)的連接,調(diào)用不同的直徑值在SolidWorks 中生成不同尺寸的圓柱形。
這樣就完成了對(duì)一組圓柱零件庫(kù)的程序驅(qū)動(dòng)。
(2)使用配置實(shí)現(xiàn)
配置(Configurations)是SolidWorks 中實(shí)現(xiàn)零部件庫(kù)的一個(gè)重要方法,它可以在單一的文件中對(duì)零件或裝配體生成多個(gè)設(shè)計(jì)變化。配置提供了簡(jiǎn)便的方法來(lái)開發(fā)與管理一組有著不同尺寸、零部件或其他參數(shù)的模型,它是通過(guò)插入系列零件設(shè)計(jì)表實(shí)現(xiàn)的,SolidWorks 內(nèi)嵌Excell 表以支持此功能。
如圖1 所示,對(duì)于“管子”零件有兩個(gè)參數(shù)是系列化的,即管子外徑和管子壁厚。對(duì)于每一個(gè)公稱通徑,如當(dāng)前配置DN57,都有一組管子外徑57mm(管子外徑@ 草圖1)和管子壁厚3. 50mm(管子壁厚@ 拉伸-薄壁1)與之對(duì)應(yīng)。如此形成一組DN10-DN400 的配置就形成了管子的零件庫(kù)。
與方法一相比,這樣生成的零件庫(kù)可以巧妙地繞開程序,用不同的配置代替了程序?qū)L圖參數(shù)的控制,用Excell 表代替了數(shù)據(jù)庫(kù)存儲(chǔ)。在軟件交付使用后,工廠設(shè)計(jì)人員可以很方便地通過(guò)簡(jiǎn)單的修改Excell 表來(lái)增加和減少庫(kù)中零件數(shù)量,有效地保證了零件庫(kù)的可維護(hù)性。
除此之外,一個(gè)更突出的優(yōu)點(diǎn)是:增加或者減少配置參數(shù)的操作簡(jiǎn)便。如在圖1 表格中增加一列“ 管子長(zhǎng)度”,即對(duì)應(yīng)每個(gè)配置都增加一個(gè)相應(yīng)的管子長(zhǎng)度數(shù)據(jù),這樣的操作在方法一中必須通過(guò)修改程序代碼來(lái)實(shí)現(xiàn),而在方法二中則直接對(duì)Excell 表進(jìn)行簡(jiǎn)單的鼠標(biāo)和鍵盤操作即可完成。
1.2 使用和解除約束方程
零部件在繪制過(guò)程中經(jīng)常會(huì)有一些數(shù)學(xué)上的約束關(guān)系,仍然以圖1 管道為例。該段管路中有兩個(gè)彎頭,按照設(shè)計(jì)要求,彎頭的半徑應(yīng)該是管道直徑的1. 5 倍,如圖2 所示,管道當(dāng)前配置為DN50,對(duì)應(yīng)的管道直徑為57mm,相應(yīng)彎頭半徑為85. 5mm。
實(shí)現(xiàn)這個(gè)長(zhǎng)度關(guān)系有兩種方法:
(1)編程實(shí)現(xiàn)
可以按照如下步驟設(shè)定彎頭半徑和管道直徑的關(guān)系:
①使用ModelDoc2 對(duì)象的子對(duì)象Annotation 中的GetDimension函數(shù)獲得管道直徑參數(shù)。
②使用ModelDoc2 對(duì)象中的SetParamValue 方法設(shè)定彎頭直徑值為管道直徑的1. 5 倍。
這樣就設(shè)定了彎頭直徑和管道直徑的關(guān)系。
(2)使用方程式實(shí)現(xiàn)
方程式是SolidWorks 提供的一種重要的尺寸約束關(guān)系,在零部件尺寸實(shí)現(xiàn)參數(shù)驅(qū)動(dòng)后,可以使用尺寸名稱作為變量添加方程式。當(dāng)在裝配體中使用方程式時(shí),可以在零件之間、零件和子零部件之間,以配合尺寸來(lái)生成方程式。
使用方程式可以輕松地實(shí)現(xiàn)這個(gè)數(shù)學(xué)關(guān)系,同時(shí)又使用戶日后可以很方便地進(jìn)行修改。在圖2 中,兩個(gè)彎頭可以由下面兩個(gè)方程式進(jìn)行控制:
“D2@ 草圖2”=“管子外徑@ 草圖1”× 1. 5
“D2@ 草圖4”=“管子外徑@ 草圖1”× 1. 5
可以看出,與第一種方法相比,用方程式控制可以不必關(guān)心程序代碼,直接在SolidWorks 中實(shí)現(xiàn)數(shù)學(xué)關(guān)系的添加和修改。例如有些管路根據(jù)經(jīng)驗(yàn)要求彎頭直徑是管道直徑的2 倍,因?yàn)檫@樣一個(gè)微小的變動(dòng)而修改整個(gè)程序?qū)τ谟脩魜?lái)說(shuō)將非常困難,使用方程式則只需在SolidWorks 選擇“ 編輯方程式”,將系數(shù)1. 5 改成2 即可。
另外值得一提的是,使用方程式和配置一起配合使用,可以極大地簡(jiǎn)化零部件的復(fù)雜程度。如圖2 所示,整個(gè)管道是由拉伸-薄壁1、拉伸-薄壁2、拉伸-薄壁3、旋轉(zhuǎn)-薄壁1、旋轉(zhuǎn)-薄壁2 五部分組成,其中拉伸-薄壁1 的壁厚是配置中定義的,其余四部分沒(méi)有建立配置,其壁厚可以由如下方程式來(lái)控制:
“D5@ 拉伸-薄壁3”=“管子壁厚@ 拉伸-薄壁1”
“D3@ 旋轉(zhuǎn)-薄壁2”=“管子壁厚@ 拉伸-薄壁1”
“D5@ 拉伸-薄壁2”=“管子壁厚@ 拉伸-薄壁1”
“D3@ 旋轉(zhuǎn)-薄壁1”=“管子壁厚@ 拉伸-薄壁1”
這樣既減少了資源開銷,又方便用戶自行進(jìn)行變更和控制。
1.3 使用壓縮的方法處理不同拓?fù)浣Y(jié)構(gòu)問(wèn)題
拓?fù)鋯?wèn)題一直是CAD 軟件中的重要問(wèn)題,用戶在設(shè)計(jì)過(guò)程中也常常遇到這樣的需求。
如圖3 所示,在空氣分離設(shè)備中氮氧分離設(shè)備( 左)上部要安裝氣缸(右),常用的氣缸有QT100 和QT200 兩個(gè)型號(hào),根據(jù)設(shè)備尺寸的不同進(jìn)行選擇。
通常氮氧分離設(shè)備直徑小于1 500mm 時(shí)使用QT100,當(dāng)直徑大于1 500mm 時(shí)采用QT200,可以用如下兩種方法解決這個(gè)問(wèn)題:
(1)編輯實(shí)現(xiàn)
可用如下步驟編程實(shí)現(xiàn):①使用SolidWorks 對(duì)象的Open-Doc6 方法加載氮氧分離設(shè)備文件。②根據(jù)氮氧分離設(shè)備直徑判斷需要選擇的氣缸類型,并加載相應(yīng)文件。③使用Model-Doc2 對(duì)象里的AssemblyDoc 子對(duì)象中的Mate2 方法將兩個(gè)部分裝配在一起。
(2)壓縮實(shí)現(xiàn)
壓縮是暫時(shí)將零部件從裝配體中移除(而不是刪除)。它不裝入內(nèi)存,不再是裝配體中有功能的部分。
這里選用SolidWorks 的壓縮功能而沒(méi)有使用輕化或者隱藏,主要是考慮在對(duì)零部件進(jìn)行壓縮之后,該零部件包含的配合關(guān)系也被壓縮,這樣在同樣的位置裝配兩個(gè)類似的零部件,只要其中之一處于壓縮狀態(tài),則另一個(gè)完全不受影響。而輕化或者隱藏是部分零部件模型數(shù)據(jù)裝入內(nèi)存,其余的模型數(shù)據(jù)根據(jù)需要裝入,這樣會(huì)導(dǎo)致當(dāng)一個(gè)零部件處于當(dāng)前狀態(tài)時(shí),被輕化或者隱藏的零部件仍然有部分信息處于當(dāng)前狀態(tài),造成信息混亂和編輯困難。
在繪制如圖3 所示三維圖形時(shí),將兩種氣缸都裝配在氮氧分離設(shè)備頂端并都處于壓縮狀態(tài),設(shè)計(jì)過(guò)程中,用戶根據(jù)需要選擇一種氣缸之后,程序解除該氣缸的壓縮狀態(tài)。如果設(shè)計(jì)變動(dòng),需要選用另外一種氣缸,那么用戶可以很方便地刪除當(dāng)前氣缸,將另一種氣缸從壓縮狀態(tài)中釋放出來(lái)即可。以此類推,當(dāng)設(shè)計(jì)者開發(fā)出更多新型號(hào)的氣缸后,只需要在氮氧分離裝置頂部裝配新的氣缸并處于壓縮狀態(tài),待程序生成整套設(shè)備后,根據(jù)需要選擇每種氣缸的壓縮狀態(tài)。
另外,實(shí)際設(shè)計(jì)過(guò)程中,根據(jù)經(jīng)驗(yàn)往往需要對(duì)氣缸的選擇標(biāo)準(zhǔn)進(jìn)行調(diào)整。例如對(duì)于不同純度的要求,往往可以靈活選用,在氮氧分離設(shè)備直徑大于1 500mm 時(shí)仍然選擇QT100。
這樣的情況給程序設(shè)計(jì)帶來(lái)困難,用戶無(wú)法修改程序代碼調(diào)整這個(gè)尺度,而采用壓縮的方法可以有效地解決這個(gè)問(wèn)題。
1.4 使用Access 數(shù)據(jù)庫(kù)便于用戶修改
作為具有GUI 的設(shè)計(jì)軟件,總是不可避免地要用到數(shù)據(jù)庫(kù)。例如在工業(yè)制氧機(jī)產(chǎn)品設(shè)計(jì)界面上,主管路設(shè)計(jì)中的“ 公稱通徑型號(hào)”,AC 和CG 選型中的“AC 型號(hào)”、“AC 冷干機(jī)型號(hào)”和“CG 型號(hào)”等需要下拉菜單的控件都需要數(shù)據(jù)庫(kù)的支持,這里為了最大限度地降低用戶日后修改的難度,避免采用SQL Server 等中型以上的數(shù)據(jù)庫(kù),而是選用Access 數(shù)據(jù)庫(kù)。程序通過(guò)DAO 調(diào)用Access 數(shù)據(jù)庫(kù)中的相關(guān)表格,當(dāng)用戶需要添加新的下拉菜單內(nèi)容時(shí),只需要打開程序的Access 文件,在相關(guān)的表中進(jìn)行添加即可。
例如在Access 中對(duì)每個(gè)下拉菜單都有相關(guān)的表支持,對(duì)于圖4 中AC 和CG 選型下拉菜單,Access 中有表格“ACCG”相對(duì)應(yīng),存儲(chǔ)著從AC1. 2 至AC97 等17 行數(shù)據(jù)。當(dāng)用戶需要添加新的AC 類型時(shí),只需要在Access 中添加新的一行數(shù)據(jù),即可反映在設(shè)計(jì)界面的下拉菜單中,方便了用戶對(duì)AC 設(shè)備庫(kù)進(jìn)行升級(jí)和補(bǔ)充。
綜合以上四種方法,一個(gè)總的原則就是:讓程序最小限度地參與到設(shè)計(jì)中來(lái),為用戶提供最大的方便以及自由設(shè)計(jì)和修改的空間。
2 結(jié)論
本文詳細(xì)介紹了在SolidWorks 二次開發(fā)完成后,如何留給用戶一個(gè)三次開發(fā)空間的若干種方法。這是個(gè)很有意義的研究領(lǐng)域,使二次開發(fā)軟件保持長(zhǎng)久的生命力,同時(shí)最大限度地節(jié)省用戶的開發(fā)和維護(hù)成本。而如何更大程度地給用戶開放自由發(fā)揮的空間,還有待于進(jìn)一步的研究。
|