卞正軍,袁紅兵
(南京理工大學(xué),南京 210000)
基于SolidWorks二次開發(fā)的生化分析儀加樣臂參數(shù)化設(shè)計(jì)
卞正軍,袁紅兵
(南京理工大學(xué),南京 210000)
介紹了利用Microsoft Visual Studio 2010編程工具對(duì)SolidWorks進(jìn)行二次開發(fā)的原理和方法,并以Access數(shù)據(jù)庫和Visual C++編程語言為支撐,通過調(diào)用SolidWorks API函數(shù),實(shí)現(xiàn)了全自動(dòng)生化分析儀中加樣臂三維模型的參數(shù)化設(shè)計(jì)和二維工程圖紙的半?yún)?shù)化設(shè)計(jì)。
SolidWorks二次開發(fā);Access數(shù)據(jù)庫;SolidWorks API;參數(shù)化設(shè)計(jì)
加樣臂作為全自動(dòng)生化分析儀中的關(guān)鍵部件,對(duì)生化分析儀的正常工作起著至關(guān)重要的作用。在全自動(dòng)生化分析儀的運(yùn)行過程中,需要加樣臂把相關(guān)的試劑和樣品從試劑盤和樣品盤中提取出來并加入到反應(yīng)盤中完成測(cè)試。在此期間,加樣臂至少需要完成一次取樣、一次注射、一次清洗和一次攪拌流程,對(duì)于更多功能的需求,加樣臂所需要完成的動(dòng)作也就更加復(fù)雜。對(duì)于此問題,在開發(fā)人員進(jìn)行設(shè)計(jì)的過程中,由于考慮的相關(guān)配合關(guān)較多,往往需要大量的修改三維圖和二維圖紙才能完成最后的設(shè)計(jì)工作。
借助于SolidWorks軟件自身的功能都可以通過調(diào)用其API函數(shù)來實(shí)現(xiàn)這一特性,而這些API函數(shù)是通過訪問SolidWorks的程序COM接口得到的[1]。本文通過Visual C++調(diào)用其相關(guān)COM接口,開發(fā)出了一款實(shí)現(xiàn)加樣臂參數(shù)化設(shè)計(jì)功能的DLL插件,該插件可以和SolidWorks軟件無縫結(jié)合[2]。用于參數(shù)化設(shè)計(jì)加樣臂,方便設(shè)計(jì)人員使用。
其次,在加樣臂開發(fā)設(shè)計(jì)過程中,由于三維模型只能顯示實(shí)體的外觀,導(dǎo)致尺寸值不能實(shí)時(shí)供設(shè)計(jì)人員查看也會(huì)導(dǎo)致開發(fā)難度的增加。對(duì)此本文利用MicrosoftAccess數(shù)據(jù)庫軟件,把開發(fā)設(shè)計(jì)中所需要的數(shù)據(jù)全部?jī)?chǔ)存到數(shù)據(jù)庫中,并且利用Visual Studio2010開發(fā)出可視化界面,使得數(shù)據(jù)庫中的數(shù)據(jù)能和用戶友好的交互并操作,有效的解決了這個(gè)問題。
零件參數(shù)化建模有兩種方法,一種是程序驅(qū)動(dòng)法,另一種是尺寸驅(qū)動(dòng)法[3]。
程序驅(qū)動(dòng)法是根據(jù)零件的實(shí)際尺寸,把零件草圖上的每個(gè)關(guān)鍵點(diǎn)根據(jù)當(dāng)前的單位系統(tǒng),利用方程式給算出來,并結(jié)合利用SolidWorks API函數(shù)中提供的草圖繪制工具函數(shù)把各個(gè)關(guān)鍵點(diǎn)連接起來,完成草圖的繪制。然后再運(yùn)用特征命令,把草圖轉(zhuǎn)換成三維實(shí)體。由此可見,程序驅(qū)動(dòng)法是一種自下到上的建模方法,由底層的點(diǎn)、線、面組成完整的模型,如果需要修改模型,必須重新修改尺寸數(shù)值,程序會(huì)根據(jù)方程式重新求解關(guān)鍵點(diǎn)的坐標(biāo),完成草圖的繪制[4]。這種方法需要設(shè)計(jì)人員大量的編寫程序方程式,且方程式之間的聯(lián)系也很復(fù)雜,開發(fā)程序的過程相當(dāng)繁瑣。
尺寸驅(qū)動(dòng)法適用于零件外形輪廓不變的情況下,在設(shè)計(jì)過程中把零件的尺寸參數(shù)定義為唯一變量,并確定輪廓尺寸變量間的關(guān)系,當(dāng)改變尺寸時(shí),就可以獲得結(jié)構(gòu)相同而尺寸不同的零件[5]。由于SolidWorks軟件也采用了參數(shù)化建模的設(shè)計(jì)方法,且提供了供開發(fā)人員二次開發(fā)的API,所以可以通過調(diào)用相關(guān)的API函數(shù)用新的尺寸值對(duì)預(yù)先定制的零件模板進(jìn)行尺寸驅(qū)動(dòng)來生成一個(gè)新的零件。
綜上所述,本文對(duì)加樣臂中的零件建模采用尺寸驅(qū)動(dòng)方法。
基于尺寸驅(qū)動(dòng)法建立三維模型后,還需要生成每個(gè)零件的二維圖紙。傳統(tǒng)CAD軟件需要繪制工程圖的每一個(gè)輪廓線和尺寸線,繪制過程相當(dāng)繁瑣。而借助于SolidWorks軟件自帶的功能,可以把所需零件的部分工程圖從三維模型直接轉(zhuǎn)換。但是這個(gè)轉(zhuǎn)化結(jié)果在三維模型較簡(jiǎn)單時(shí)使用效果較好,一旦三維模型的結(jié)構(gòu)比較復(fù)雜,還需要大量的視圖來確定相關(guān)的尺寸和結(jié)構(gòu)時(shí),這時(shí)候就需要人為的干預(yù)來完成想實(shí)現(xiàn)的目標(biāo)。據(jù)此本文運(yùn)用SolidWorks軟件自帶的功能以及相關(guān)API函數(shù),首先利用建立好的三維模板生成二維工程圖的標(biāo)準(zhǔn)三視圖并根據(jù)實(shí)際情形適當(dāng)添加剖視圖和局部視圖,使得二維工程圖能夠展現(xiàn)三維模型的結(jié)構(gòu);然后再調(diào)用API函數(shù)自動(dòng)標(biāo)注每個(gè)視圖中圖形的尺寸并調(diào)整尺寸線的位置使之不影響視圖的外觀;最后再設(shè)計(jì)工程圖紙上每個(gè)注釋的連接屬性,使之可以調(diào)用API函數(shù)對(duì)其進(jìn)行修改。由于在制作二維工程圖的過程中不能完全通過程序來實(shí)現(xiàn),所以最終只實(shí)現(xiàn)了從三維模型到二維圖紙轉(zhuǎn)換的半?yún)?shù)化設(shè)計(jì)。
2.1 模板文件及程序的設(shè)計(jì)思路
加樣臂參數(shù)化設(shè)計(jì)軟件的運(yùn)作是基于模板文件來運(yùn)行的,所以首先應(yīng)該建立加樣臂的三維模型和二維工程圖紙模板,具體實(shí)現(xiàn)過程如圖1所示。建立好模板文件之后,就需要設(shè)計(jì)參數(shù)化軟件,具體的軟件設(shè)計(jì)流程如圖2所示。
圖1 加樣臂模板建立
圖2 參數(shù)化軟件設(shè)計(jì)流程
2.2 建立參數(shù)化模板文件
以加樣臂中加樣臂側(cè)板零件為例,簡(jiǎn)要概述其模板文件建立過程,其他零件的模板文件建立過程類似。根據(jù)加樣臂側(cè)板的結(jié)構(gòu)首先繪制其草圖,并指定其位置和尺寸數(shù)值,使其草圖能得到固定約束。草圖繪制完成后,進(jìn)入特征命令選擇所需要的功能生成三維模型,最后生成的實(shí)體。加樣臂側(cè)板的三維模型生成后,還需要生成相對(duì)應(yīng)的加樣臂側(cè)板二維工程圖模板文件,由圖1可知,選用已經(jīng)制作好的二維工程圖模板文件來生成二維工程圖,并借助于SolidWorks軟件自帶的尺寸自動(dòng)標(biāo)注功能來完成尺寸線的標(biāo)注(軟件自動(dòng)標(biāo)注功能往往達(dá)不到要求,所以此時(shí)需要用戶做必要的調(diào)整才行),最后保存制作好的加樣臂側(cè)板二維工程圖模板。
最后建立好的三維模型和二維工程圖的模板文件如圖3和圖4所示。
圖3 三維模型圖
圖4 二維工程圖模板文件
2.3 DLL插件程序?qū)崿F(xiàn)過程
2.3.1 建立DLL插件與SolidWorks的連接
SolidWorks軟件通過COM/OLE技術(shù)為開發(fā)人員提供了強(qiáng)大功能接口(API),里面包含了能實(shí)現(xiàn)SolidWorks大多數(shù)功能的函數(shù)。這些接口都是采用面向?qū)ο蟮姆椒▉碓O(shè)計(jì)的,所以可以通過調(diào)用這些對(duì)象和方法可以實(shí)現(xiàn)一些特定的功能。Visual Studio2010開發(fā)工具很好的支持COM/OLE技術(shù),所以可以借助于此工具開發(fā)動(dòng)態(tài)鏈接庫DLL插件。
在DLL插件初始化時(shí)調(diào)用API函數(shù)中提供的SwAddin::ConnectToSW方法,就可以實(shí)現(xiàn)SolidWorks與DLL插件的連接。具體代碼如下:
運(yùn)行上述代碼后,SolidWorks就會(huì)與動(dòng)態(tài)鏈接庫DLL插件建立通訊,之后就可以調(diào)用API函數(shù)中的方法來實(shí)現(xiàn)特定的功能。
2.3.2 參數(shù)化建模實(shí)現(xiàn)過程
在上面完成與SolidWorks軟件的連接后,首先需要打開模板文件才能進(jìn)行參數(shù)化設(shè)計(jì)。打開模板文件的關(guān)鍵代碼如下:
首先需要在OpenDoc6方法中設(shè)置各個(gè)函數(shù)名的數(shù)值,然后再調(diào)用iSwApp指針中的OpenDoc6方法就可以打開指定的文件。
在模板文件打開后,需要設(shè)計(jì)對(duì)話框界面以便能輸入需要修改參數(shù)。設(shè)置默認(rèn)用戶輸入編輯框中的數(shù)據(jù)格式都是double類型,并且把每個(gè)編輯框中的內(nèi)容和模板文件中的尺寸信息相關(guān)聯(lián),這樣用戶所修改的結(jié)果就會(huì)在模型文件中體現(xiàn)。下面以修改一條尺寸參數(shù)為例簡(jiǎn)要說明:
其中m_iModelDoc2是對(duì)象模板文件的指針,里面包含了對(duì)模型對(duì)象具體操作的函數(shù),而IParameter的功能就是獲得相關(guān)模型文件的尺寸變量,在中間進(jìn)行相關(guān)數(shù)據(jù)的運(yùn)算后獲得了最終所需要的數(shù)據(jù),最后再調(diào)用IDimen指針中ISetSystemValue3函數(shù),把新得到的數(shù)據(jù)重新賦值給IParameter所獲得的尺寸變量,達(dá)到修改模型尺寸的目的。
2.3.3 工程圖半?yún)?shù)化實(shí)現(xiàn)過程
在進(jìn)行工程圖參數(shù)化設(shè)計(jì)的過程中,由于已經(jīng)建立好相對(duì)應(yīng)的模板文件,所以在進(jìn)行參數(shù)化建模的過程中,二維工程圖中模板文件的尺寸信息已經(jīng)更新完畢,不需要用戶再去重新標(biāo)注,省去了重復(fù)性設(shè)計(jì)工作,但是在實(shí)際工程運(yùn)用中,模型材料的替換等信息也需要修改,所以還需要修改工程圖上其他信息才能滿足實(shí)際的工程需求。下面以修改工程圖中的“工程圖號(hào)”信息簡(jiǎn)要說明代碼:
工程圖號(hào)信息是儲(chǔ)存在模板文件的自定義屬性中,調(diào)用m_iModelDoc2指針的AddCustomInfo3函數(shù),就能實(shí)現(xiàn)修改自定義屬性中的屬性值,達(dá)到修改工程圖的目的。
新建加樣臂數(shù)據(jù)庫并在數(shù)據(jù)庫中創(chuàng)建加樣臂零件的數(shù)據(jù)表,每個(gè)數(shù)據(jù)表都包含一個(gè)零件尺寸的完整信息,參數(shù)化建模時(shí)就是根據(jù)數(shù)據(jù)表中的數(shù)據(jù)來確定模型的尺寸以達(dá)到參數(shù)化建模的目的。設(shè)計(jì)好的數(shù)據(jù)表如圖5所示。
圖5 加樣臂數(shù)據(jù)表
數(shù)據(jù)表中的每個(gè)字母都與三維模型中的尺寸名稱唯一對(duì)應(yīng),確保了參數(shù)化建模時(shí)的數(shù)據(jù)準(zhǔn)確性。最后通過ADO技術(shù)訪問數(shù)據(jù)庫并與數(shù)據(jù)庫建立連接,實(shí)現(xiàn)了對(duì)數(shù)據(jù)庫中數(shù)據(jù)的添加、修改和刪除功能,大大提高了數(shù)據(jù)庫的使用功能,在開發(fā)過程中得到了很好的應(yīng)用。
整個(gè)系統(tǒng)主要包括項(xiàng)目的選擇界面、參數(shù)化建模設(shè)計(jì)界面、工程圖信息修改界面、加樣臂零件數(shù)據(jù)表和模板文件。項(xiàng)目選擇界面如圖6所示。
選擇所需要修改的項(xiàng)目后,點(diǎn)擊下一步按鈕,就會(huì)進(jìn)入?yún)?shù)化建模界面,下面以修改加樣臂側(cè)板為例,簡(jiǎn)要說明程序的運(yùn)行過程。
圖6 項(xiàng)目選擇
在加樣臂側(cè)板參數(shù)化設(shè)計(jì)界面中,List列表框會(huì)實(shí)時(shí)顯示加樣臂側(cè)板數(shù)據(jù)表中的數(shù)據(jù),用戶可以添加、修改和刪除數(shù)表中的數(shù)據(jù)來實(shí)現(xiàn)模型的重建。數(shù)據(jù)修改完成后點(diǎn)擊對(duì)話框界面中的繪圖按鈕,程序就會(huì)按用戶最后確定的數(shù)據(jù)重新建模。最后修改完成前后的對(duì)比圖如圖7和圖8所示。
圖7 加樣臂側(cè)板修改前
圖8 加樣臂側(cè)板修改后
建模完成后還需要更改工程圖的信息,由于之前已經(jīng)建立好相關(guān)的工程圖模板文件,所以相關(guān)的尺寸信息在重新建模時(shí)已經(jīng)更新,但是有時(shí)可能會(huì)出現(xiàn)尺寸線偏移問題,這時(shí)就需要用戶手動(dòng)修改尺寸線的位置。最后加樣臂側(cè)板二維工程圖修改完成后的結(jié)果如圖9所示。
【】【】
圖9 加樣臂側(cè)板工程圖修改結(jié)果
最終保存修改過的三維模型和二維工程圖,完成有關(guān)設(shè)計(jì)工作。
以Access數(shù)據(jù)庫為支撐,Visual Studio2010開發(fā)工具為平臺(tái),利用Visual C++編程語言,實(shí)現(xiàn)了基于SolidWorks二次開發(fā)的全自動(dòng)生化分析儀中的加樣臂參數(shù)化三維建模和二維工程圖的半?yún)?shù)化設(shè)計(jì),并開發(fā)了一個(gè)交互良好的用戶界面,使得加樣臂開發(fā)設(shè)計(jì)階段的用時(shí)大大縮短,減輕了工程師的重復(fù)性勞動(dòng),同時(shí)為企業(yè)快速開發(fā)新產(chǎn)品提供了可能。
[1] 王文波,徐海寧,熊君星.SolidWorks 2008二次開發(fā)基礎(chǔ)與實(shí)例(VC++)[M].北京:清華大學(xué)出版社,2009.8.
[2] 曹巖,方舟.SolidWorks開發(fā)篇[M].北京:化學(xué)工業(yè)出版社,2010.5.
[3] 王睿鵬,孟慶霞.基于C#的SolidWorks二次開發(fā)技術(shù)[J].寧夏工程技術(shù),2010,9(2):111-113,117.
[4] 許書生,徐兵,李春光,張斌.基于SolidWorks二次開發(fā)的軸向柱塞泵參數(shù)化建模設(shè)計(jì)[J].機(jī)床與液壓,2010.9.
[5] 阮勤超,董萬鵬.基于SolidWorks斜楔機(jī)構(gòu)的參數(shù)化建模[J].上海工程技術(shù)大學(xué)學(xué)報(bào),2016.2.
Parametric design of sample arm of biochemical analyzer based on SolidWorks secondary development
BIAN Zheng-jun, YUAN Hong-bing
TP391.7
:A
1009-0134(2017)07-0081-04
2017-05-03
卞正軍(1991 -),男,碩士研究生,研究方向?yàn)橛?jì)算軟件輔助設(shè)計(jì)。