曾 凡,胡鑒源,李 涉
(廣州大學機械與電氣工程學院,廣東廣州 510006)
基于VB的SolidWorks二次開發(fā)
曾凡,胡鑒源,李涉
(廣州大學機械與電氣工程學院,廣東廣州510006)
摘要:闡述SolidWorks二次開發(fā)思路、組織結(jié)構(gòu)及開發(fā)步驟;利用VB對其進行開發(fā),開發(fā)出了SolidWorks各繪圖環(huán)境平臺;以參數(shù)化繪制拱形彎曲件為例介紹參數(shù)化繪制三維零件模型平臺的開發(fā)。結(jié)果表明,用VB對SolidWorks進行二次開發(fā),能加快SolidWorks的響應速度,縮短具體產(chǎn)品的設計周期及提高產(chǎn)品設計質(zhì)量。
關鍵詞:SolidWorks;二次開發(fā);VB;三維零件模型
計算機技術與網(wǎng)絡技術的高速發(fā)展,致使各大小機械制造企業(yè)加大了對產(chǎn)品制造過程的數(shù)字化、信息化建設力度,花費大量資金購買相應的三維設計軟件,以加快產(chǎn)品研發(fā)進程,縮短產(chǎn)品制造周期,提高效益。SolidWorks是三維機械設計軟件,其功能強大,組件繁多。SolidWorks能夠為用戶提供不同的設計方案,減少設計過程中的錯誤以及提高產(chǎn)品質(zhì)量。在其強大的設計功能和易學易用的操作協(xié)同下,使用SolidWorks,整個產(chǎn)品設計是百分百可編輯的,零件設計、裝配設計和工程圖之間是權相關的[1]。然而,Solid?Works針對的是全球整個機械設計行業(yè),要想使其在具體的制造企業(yè)中發(fā)揮其優(yōu)越的作用,還需要對其進行地域化、專業(yè)化的二次開發(fā),即根據(jù)具體企業(yè)生產(chǎn)的產(chǎn)品對其進行專業(yè)化開發(fā)。Solid? Works本身提供了大量的API(Application Pro?gramming Interface,應用編程接口)函數(shù),是SolidWorks的OLE(Object Linking and Embed?ding,對象連接與嵌入)或者COM(Component Object Model,組件對象模型)接口[2]。用戶可用VB等語言對SolidWorks進行二次開發(fā),建立適合用戶使用習慣的、專用的功能模塊,使其能在具體的機械制造企業(yè)更好地發(fā)揮作用。
以參數(shù)化和特征建模技術為核心的Solid?Works三維繪圖軟件,本身具備參數(shù)化功能,可用SolidWorks建立零件的模板模型,存放于數(shù)據(jù)庫中,并借用數(shù)據(jù)庫管理系統(tǒng)Access數(shù)據(jù)庫存放模板模型的參數(shù)數(shù)據(jù),最后利用Visual Basic6.0編輯應用程序,調(diào)用Access數(shù)據(jù)庫中的數(shù)據(jù),傳遞給SolidWorks,修改模型的相關尺寸,對模型進行驅(qū)動后生成新模型[3]。
1.1二次開發(fā)思路
SolidWorks二次開發(fā)具有兩種方式,即進程外組件方式和進程內(nèi)組件方式。進程外組件方式就是用戶通過匯編語言編譯生成獨立的EXE文件,采用外掛的工作模式,也即是需要在用戶的應用程序和SolidWorks之間進行前后臺切換;進程內(nèi)組件程序方式是每個進程都用于自己的內(nèi)存地址空間和系統(tǒng)資源,組件程序以DLL動態(tài)鏈接庫形式內(nèi)嵌到客戶程序中,在程序運行時,DLL文件快速加載到SolidWorks內(nèi)部,通過與DLL文件接口相對應的可視化菜單來調(diào)用封裝在里面的子功能,創(chuàng)建出用戶定制的、專用的功能模塊,即用戶可以使用SolidWorks本身的各種命令,也可以使用應用程序?qū)崿F(xiàn)的模塊功能,圖1所示為其二次開發(fā)的關系圖。由于進程內(nèi)組件方式方法容易導致用戶程序運行不正常,容易發(fā)生系統(tǒng)崩潰,如非正常退出[3-4];且考慮到要使二次開發(fā)能更符合特定企業(yè)對特定產(chǎn)品的設計具有專一化的特點,本論文將采取進程外組件方式,即生成獨立的EXE文件。
圖1 二次開發(fā)關系圖
1.2二次開發(fā)組織結(jié)構(gòu)
圖2為SolidWorks二次開發(fā)組織結(jié)構(gòu)圖,每一個功能模塊都組成獨立的單元,包括可執(zhí)行程序、模型庫以及數(shù)據(jù)庫。模型庫是實現(xiàn)參數(shù)化設計的前提,構(gòu)成了部件的基本幾何特征[3-4];數(shù)據(jù)庫可以根據(jù)用戶需要進行修改,為設計計算提供依據(jù);零部件設計模塊最終成為SolidWorks的插件,供用戶調(diào)用。
圖2 組織結(jié)構(gòu)圖
1.3二次開發(fā)的基本步驟
進行SolidWorks的二次開發(fā)的一般步驟如下。
(1)建立模型數(shù)據(jù)庫。
(2)進行零件的三維建模,同時應注意以下幾點:
①建模時首先建立重要的基本特征,再建立例如倒角、圓角等這種對零件整體影響不大卻容易造成參數(shù)化驅(qū)動繪圖失敗的輔助性特征;
②建模所采用的數(shù)據(jù)參數(shù)盡量規(guī)范化;
③零件的名稱、圖號、材料等屬性應在建模中建立,便于后續(xù)工作的進行;
④不同的零件特征及要求采用不同的驅(qū)動方式。
(3)建立程序應用模塊。
采用進程外組件方式,用VB對SolidWorks進行二次開發(fā),生成一個針對特定企業(yè)產(chǎn)品設計的獨立的EXE文件[5],即一個具有高度專一化的設計應用平臺。圖3為SolidWorks主頁面及各工作界面,圖4為拱形彎曲件的系統(tǒng)應用平臺。
圖3 SolidWorks各工作界面平臺
圖4 拱形彎曲件繪制平臺
2.1 SolidWorks主頁面及繪圖環(huán)境平臺
用VB建立SolidWorks主頁面及各個繪圖工作環(huán)境時,首先在VB的Form窗體中放置相應的控件,如圖5,并對相應控件屬性進行編輯,如表1;再點擊進入代碼窗口進行代碼編寫。
用VB對SolidWorks進行二次開發(fā)的程序代碼編寫時,首先需要與SolidWorks程序庫連接,即編寫“Set swApp=CreateObject("SolidWorks.appli?cation")”語句[3-4],若沒有此語句,則程序無法運行;接著需要與SolidWorks各個工作環(huán)境建立連接關系,例如零件圖環(huán)境,編寫“Set Part=swApp.newpart()”語句。需要注意的是,在調(diào)用SolidWorks API其他功能時,需要優(yōu)先調(diào)用Solid?Works的應用程序?qū)ο螅ㄔ赩B中聲明為swapp)。也即是說,用VB開發(fā)SolidWorks進行二次開發(fā)時,首先需要用VB語句連接SolidWorks的API,然后再進行相關代碼的編寫,才能達到開發(fā)的目的。
程序代碼編寫完畢,并確認無誤后,單擊【啟動】按鈕,分別單擊[啟動SolidWorks]、[零件圖]、[裝配圖]、[工程圖]按鈕,可分別打開Solid?Works主頁面、零件圖繪制環(huán)境、裝配圖繪制環(huán)境以及工程圖繪制環(huán)境。
以上為SolidWorks二次開發(fā)的簡單實例,其他開發(fā)類似于此,對不同的命令只需調(diào)用不同的SolidWorks API函數(shù)[6],SolidWorks API函數(shù)詳細信息可以參考【幫助】菜單欄下的[API幫助主題(p)。
2.2參數(shù)化繪制三維零件模型平臺開發(fā)
參數(shù)化建模指的就是通過改變原有模型中的相關參數(shù)建立和分析新的模型[1],這里的參數(shù)不是指特定的某個量或者是某個值,而是一個變量,它可以是任何的一個變量以及數(shù)值,即它不僅可以是幾何參數(shù),還可以是溫度、材料等等屬性參數(shù)。參數(shù)化建模通常應用在技術優(yōu)化上,即通過模型參數(shù)化,在優(yōu)化過程中通過不斷更改模型參數(shù),從而得出最優(yōu)解,達到優(yōu)化的目的,同時,也有助于設計周期的縮短。圖6為模型參數(shù)化設計流程圖。
圖5 控件排序
表1 Form1窗體命令及屬性
圖6 參數(shù)化設計流程圖
在本論文,以參數(shù)化繪制拱形彎曲件為例,(如圖7),對參數(shù)化繪制三維零件模型平臺的開發(fā)進行詳細說明。
圖7 拱形金屬線材彎曲件
(1)拱形彎曲件參數(shù)分析
如圖8所示,拱形彎曲件主要有以下幾個重要參數(shù):直線段L1,圓角半徑R1,直線段L2,圓角半徑R2,直線段L3,以及彎角α1,彎角α2以及截面半徑R。因此,在參數(shù)化作圖當中,輸入以上幾個參數(shù)就要能自動繪制出彎曲件的三維模型。
圖8 拱形彎曲件參數(shù)示意圖
(2)參數(shù)變量化
三維拱形彎曲件的繪制是利用截面形狀依據(jù)掃描路徑進行“掃描”命令而繪制的,而拱形彎曲件的掃描路徑由“直線”與“倒圓角”命令實現(xiàn)的。直線的繪制是通過幾個關鍵點的坐標來確定的,因此,路徑的參數(shù)化繪制首先就需要先將幾個關鍵點進行變量化,以下將對拱形彎曲件的掃描路徑中的關鍵點坐標進行計算,圖9為各變量示意圖。
圖9 拱形彎曲件變量示意圖
說明:如圖9,其中直線長a、b、c、以及角度α1、α2是人工輸入的參數(shù),為已知值?,F(xiàn)在需要做的是求出O、P、Q三點的坐標,通過分析計算可得以下結(jié)果:
(3)VB平臺搭建
在VB Form窗體中放置相關控件,并對各自屬性進行編輯,使其符合使用要求,最終控件放置方式及屬性編輯如圖10。
進入VB程序窗口進行程序代碼的編寫,檢查無誤后點擊運行,輸入相關參數(shù)(如圖11),運行結(jié)果如圖12。
通過上面的操作,金屬線材拱形彎曲件的參數(shù)化繪制平臺開發(fā)已完成,對于其他形狀、其他截面形狀的線材彎曲件通過對程序中一些相關參數(shù)的調(diào)整即可達到相關效果。
圖10 控件排列方式圖
圖11 彎曲件三維圖的繪制參數(shù)設置圖
圖12 彎曲件三維圖
根據(jù)SolidWorks本身提供的一套完整的API函數(shù),利用VB調(diào)用SolidWorks函數(shù)庫中的相關函數(shù),在VB系統(tǒng)中運用相關控件及編寫相關程序代碼,搭建具有較強目的性、針對性的三維機械零部件繪制平臺。運行所開發(fā)的平臺,執(zhí)行相關命令,相對于直接運行SolidWorks軟件本身,具有較快的響應速度;并且針對特定的零部件,通過輸入或者修改相關參數(shù),能更加快速地生成新的三維模型,顯著提高三維模型的設計周期,也即利用VB對SolidWorks進行二次開發(fā),能開發(fā)出密切嵌合具體企業(yè)具體機械零部件繪制的應用平臺,顯著提高機械零部件設計研發(fā)周期。
參考文獻:
[1]陸利鋒,江洪,伍錦輝,等.SolidWorks工程師高級教程[M].北京:化學工業(yè)出版社,2006.
[2]SolidWorks公司著,生信實維公司編譯.SolidWorks API二次開發(fā)[M].北京:機械工業(yè)出版社,2005.
[3]王宗彥.SolidWorks機械產(chǎn)品高級開發(fā)技術[M].北京:北京理工大學出版社,2005.
[4]王宗彥,曲昀卿.SolidWorks機械產(chǎn)品高級開發(fā)技術[M].北京:北京理工大學出版社,2012.
[5]國家863中部軟件孵化器.Visual Basic從入門到精通[M].北京:人民郵電出版社,2010.
[6]曹巖,方舟.SolidWorks開發(fā)篇[M].北京:化學工業(yè)出版社,2010.
(編輯:向飛)
TThe Secondary Development of SolidWorks Based on VB
ZENG Fan,HU Jian-yuan,LI She
(Mechanical and electrical engineering Department,Guangzhou University,Guangzhou510006,China)
Abstract:This paper briefly expounds the thought,organization structure and development steps of the secondary development of SolidWorks,making use of VB to develop SolidWorks,and building a platform for the environment of SolidWorks drawing.The paper takes parametric drawing of arch bending mechanical parts as an example,and introduces the development of platform for the parameterized drawing 3D mechanical parts model.In the condition of using VB to develop SolidWorks,the results show that it is feasible to accelerate the response speed of the SolidWorks,shorten the design cycle of product and improve the quality of product design.
Key words:SolidWorks;the secondary development;VB;models of 3D parts
作者簡介:第一曾凡,男,1991年生,廣東河源人,碩士研究生。研究領域:機械制造及其自動化。
收稿日期:2015-04-21
DOI:10.3969/j.issn.1009-9492.2015.08.043
中圖分類號:TP311
文獻標識碼:A
文章編號:1009-9492 (2015 ) 08-0153-05