李之圓,吳群彪,,梁 濤,陳 濤,方海峰,
(1.江蘇科技大學機電與動力工程學院,江蘇 張家港 215600) (2.江蘇科技大學蘇州理工學院,江蘇 張家港 215600)
減速器作為獨立的閉式傳動裝置連接原動機和工作機,用來增大轉矩和降低轉速,滿足不同的工作需求。減速器的種類很多,按照傳動類型可分為齒輪減速器、蝸桿減速器、行星減速器以及它們互相組合而成的減速器。按照傳動級數可以分為單級減速器和多級減速器;按照齒輪形狀可以分為圓柱齒輪減速器、圓錐齒輪減速器和圓錐圓柱齒輪減速器;按照傳動的布置形式可以分為展開式、分流式和同軸式減速器。
國外首先使用個人計算機進行參數化建模與界面實現,并且取得了令人矚目的成就。Chugunov等[1]研究了SolidWorks二次開發(fā)程序在實際應用和優(yōu)化方面的一些問題,對參數化建模與界面實現進行了比較全面的概述;Yu[2]系統(tǒng)闡述了基于SolidWorks的參數化設計和智能化裝配的工作原理與簡單的開發(fā)方法;Reddy等[3]基于SolidWorks API開發(fā)了一套智能化的軸承設計數據庫。
目前,國內關于SolidWorks二次開發(fā)的研究主要是使用SolidWorks自帶的二次開發(fā)語言VBA進行各種簡單零件加工程序的開發(fā)。顧忠新等[4]在減速器箱體類零件的參數化設計中使用SolidWorks自帶的VBA工具設計了一款能夠快速創(chuàng)建減速器箱體零件的窗口程序,但程序比較簡單,只能實現箱體零件的快速建模,不能實現箱體零件的自動化裝配;柏子剛[5]利用SolidWorks開發(fā)了一款簡易軟件進行壓縮機連桿類零件的快速參數化設計;印立康等[6]利用SolidWorks進行了中型鋼設計的二次開發(fā)研究。
國內除了利用VBA進行了一些簡單零件體的二次開發(fā),還進行了一些關于復雜系統(tǒng)和運動仿真方面的深入研究。劉勛[7]基于SolidWorks進行了帶式輸送機機架CAD(computer aided design)/CAE(computer aided engineering)系統(tǒng)的開發(fā)與研究;汪志軍[8]基于SolidWorks二次開發(fā)進行了帶式輸送機CAD系統(tǒng)的研究;趙方舟[9]基于SolidWorks進行了計算機輔助公差優(yōu)化設計的研究。
VBA比較適合制作一些簡單的或者是個人工作用的小工具,VBA編程比C#復雜,VBA所用到類庫少,且加載麻煩,而C#編程簡單且功能比VBA功能更加全面,因此本文著重介紹C#語言的使用。
本文運用開發(fā)工具Visual Studio中的C#編寫控制臺程序,再用編寫好的程序實現SolidWorks的二次開發(fā)。
SolidWorks二次開發(fā)的工作原理是:通過調用不同的API函數打開SolidWorks以進行不同的操作,如創(chuàng)建坐標系、繪制草圖、拉伸實體、對稱陣列等等。API工具保證不同應用之間用同一種編程語言進行交互,傳遞參數,并且這種語言編寫的代碼在兩個程序之間能夠互相通過數據傳遞確保二次開發(fā)的程序能成功運行,如C#語言對應的API函數保證了Microsoft.NET平臺與SolidWorks三維軟件之間的交互與二次開發(fā)程序的順利運行。除了調用相應的API函數外,在SolidWorks與其他平臺進行交互與共同開發(fā)時,還需要添加相應的引用協(xié)議,如在進行二次開發(fā)之前,需要添加Microsoft.NET平臺與SolidWorks三維軟件的引用協(xié)議SolidWorks. Interop.sldworks.dll和SolidWorks.Interop.swconst.dll。SolidWorks二次開發(fā)工作過程如圖1所示。
圖1 SolidWorks二次開發(fā)工作過程
二次開發(fā)的減速器箱體設計程序包含3個窗體界面,其中主界面是程序打開后展現的首個界面,包括1個裝配完成狀態(tài)下的減速器箱體二維示意圖和6個按鈕控件,6個按鈕分別為“打開SolidWorks”“箱體設計”“箱蓋設計”“打開裝配體”“生成工程圖”“退出”。主界面設計如圖2所示。
圖2 二級減速器箱體設計軟件主界面
減速器箱體裝配體的示意圖通過圖片框應用(PictureBox)實現。在進行二次開發(fā)時,根據實際圖片大小和整個開發(fā)窗口的大小,將圖片框位置設置為(22,30),圖片框大小設置為448×336,將圖片來源設置為存放減速器箱體裝配體二維示意圖的文件夾,并且選擇經過調整和修飾的圖片。
通過主窗口界面上的箱體設計按鈕,鏈接到箱體設計的子界面上,進行箱體數據的采集與錄入。箱體設計界面如圖3所示。
圖3 箱體設計的子界面
減速器箱體設計的子界面包含25個標簽控件(Label)、25個文本框控件(TextBox)和3個按鈕控件(Button)。其中,標簽控件用來設置提示文本,文本框控件用來錄入數據,按鈕控件用來執(zhí)行保存數據、建立箱體三維零件、繪制二維工程圖與關閉當前箱體設計子窗口等操作。
在完成箱體的設計之后,用戶返回主界面,再通過主界面上的箱蓋設計按鈕,鏈接到箱蓋設計的子界面上,進行箱蓋數據的采集與錄入。箱蓋設計界面如圖4所示。
圖4 箱蓋設計的子界面
箱蓋設計子界面一共包含9個標簽控件(Label)、9個文本框控件(TextBox)和3個按鈕控件(Button)。與箱體設計界面類似,標簽控件用來設置提示文本,文本框控件用來錄入數據,創(chuàng)建三維圖按鈕控件用來繪制三維模型,繪制工程圖按鈕用來繪制對應工程圖并且進行標注,退出按鈕用來關閉當前子界面并返回主界面。
在SolidWorks二次開發(fā)中,API函數中包含一個通用sldwork對象,sldwork對象存在一個通用的文檔對象ModelDoc2,可以通過SolidWorks API函數將SolidWorks中的零件體、裝配體和工程圖3種文檔賦給文檔ModelDoc2,然后運用ModelDoc2中的方法對3種文檔進行修改與調整。
3.1.1預備工作
進行零件體的SolidWorks二次開發(fā)時,首先要根據零件體文檔的存儲地址找到對應的零件體文檔,然后將零件體文檔賦給文檔ModelDoc2,再使用ModelDoc2包含的方法對零件體的各種參數進行修改。以箱蓋零件體為例,箱蓋零件體的參數來源比較復雜,一部分是從箱體零件上提取的,另一部分是從箱蓋設計界面上提取的,首先需要對這些數據進行處理,然后再使用這些數據驅動箱蓋零件進行修改。
創(chuàng)建箱蓋三維模型之前需要先提取箱體的部分參數,將箱體文檔賦給ModelDoc2所創(chuàng)建的對象。根據箱體文檔的存儲目錄,將箱體文檔賦給ModelDoc2類對象SWPartDoc,對應步驟和代碼如下。
1)打開文檔,判斷進程:
open_swfile("",getProcesson("SLDWORKS"), "SldWorks.Application");
2)文件目錄賦值:
int IntError=-1;
int IntWraning=-1;
string filepath1=ModleRoot+@"箱體.SLDPRT";
3)打開對應路徑下的文檔,并將這文檔賦給SwPartModelDoc2:
SwPartDoc=swApp.OpenDoc6(filepath1,(int)swDocumentTypes_e.swDocPART,(int)swOpenDocOptions_e.swOpenDocOptions_LoadModel, "", ref IntError, ref IntWraning);
3.1.2尺寸驅動法使用
箱體的參數賦給ModelDoc2類對象SWPartDoc,運用ModelDoc2中的方法獲得箱體所包含的數據,例如下箱體尺寸部分代碼見表1。
表1 下箱體尺寸的部分代碼
3.1.3后續(xù)工作
在修改完草圖尺寸之后,箱蓋的三維零件并不會發(fā)生改變,還需要使用代碼重新編輯箱蓋的零件體,才能改變箱蓋零件三維模型的尺寸。
在重新編輯完零件體之后,按照輸入的尺寸使用尺寸驅動法生成箱蓋零件體,如圖5所示。
圖5 箱蓋零件體
SolidWorks二次開發(fā)的另一項重要功能是繪制工程圖,并且實現自動化標注,這項功能能夠極大節(jié)省設計人員繪制二維圖的時間,設計人員可以在二次開發(fā)生成的工程圖的基礎之上,進行簡單的修改與零件剖視圖的生成,快速完成零件體與裝配體的二維圖繪制。
利用SolidWorks生成零件體的工程圖并進行修改的方法與三維模型的修改與裝配方法類似,需要先打開零件體的工程圖,其步驟和代碼如下。
1)打開文檔,判斷進程:
open_swfile("", getProcesson("SLDWORKS"), "SldWorks.Application");
2)文件目錄賦值:
int IntError=-1;
int IntWraning=-1;
string filepath2=ModleRoot+@"蓋.SLDDRW";
3)創(chuàng)建一個新的ModelDoc2的文檔用來存放打開工程圖:
ModelDoc2 SwDrawDoc=swApp.OpenDoc6(filepath2,int)swDocumentTypes_e.swDocDRAWING,(int)swOpenDocOptions_e.swOpenDocOptions_LoadModel, "", ref IntError, ref IntWraning);
4)重新編輯工程圖:
SwDrawDoc.EditRebuild3();
在生成的基礎零件圖上,開發(fā)者可以預先進行一些簡單的參數標注,標注樣式如圖6所示。使用者還可以根據具體情況,在基礎零件圖上再增加或者刪除一些參數,以滿足自己的設計要求。
零件體工程圖的標注包含了很多細節(jié),如圖7所示是箱蓋零件體俯視圖的局部展示。
圖6 零件體三視工程圖
圖7 零件體工程圖局部展示
與3.1.1相同,步驟和代碼如下。
1)打開文檔,判斷進程:
open_swfile("", getProcesson("SLDWORKS"), "SldWorks.Application");
2)文件目錄賦值:
式中:GNOx為澳斯麥特爐產生的氮氧化合物質量;B為消耗的粉煤量,暫定4 700 kg/h;β為燃料中氮的轉化率,25%;N為燃料中的含氮量,某冶煉廠燃煤中含氮量為1.29%。
int IntError=-1;
int IntWraning=-1;
string filepath1=ModleRoot+@"減速器.SLDASM";
3)創(chuàng)建一個新的ModelDoc2的文檔用來存放打開裝配體:
ModelDoc2SwAssemDoc = swApp.OpenDoc6(filepath1,(int)swDocumentTypes_e.swDocASSEMBLY,(int)swOpenDocOptions_e.swOpenDocOptions_LoadModel, "", ref IntError, ref IntWraning);
以一組裝配基準為例,說明配合驅動的方法,首先定義兩個零件體上需要配合的特征,然后選擇合適的裝配方法進行裝配,步驟和代碼如下。
1)定義需要裝配的一組基準對應的SelectByID2的字符串名稱:
#region 裝配一對基準;
2)清空選擇集后,選中基準面:
string MateBaseName2="RectangleWireConnectFace@PlugBottomBox-1@PowerStrip";
3)清空選擇集后,選中基準面:
swAssemModleDoc.Extension.SelectByID2(MateBaseName1, "PLANE", 0, 0, 0, false, 1, null, 0);
4)在選擇集中附加選擇與之配對的基準: swAssemModleDoc.Extension.SelectByID2(MateBaseName2, "PLANE", 0, 0, 0, true, 1, null, 0);
5)添加兩個基準之間距離為20 mm的距離配合:
int x=-1;
Mate2 SwMate = SwAssem.AddMate5(5, 1, true, 0.02, 0.02, 0.02, 0, 0, 0, 0, 0, false, true, 0, out x);
6)配合也是特征,將其轉化為特征對象:
Feature swMateFeature=(Feature)SwMate;
7)配合特征重命名:
if (swMateFeature !=null)
{
swMateFeature.Name="測試距離配合";
}
#endregion
利用SolidWorks生成零件體工程圖并進行修改,需要先打開裝配體的工程圖,步驟和代碼如下。
1)打開文檔,判斷進程:
open_swfile("", getProcesson("SLDWORKS"),
"SldWorks.Application");
2)文件目錄賦值:
int IntError=-1;
int IntWraning=-1;
string filepath2=ModleRoot+@"減速器.SLDDRW";
3)創(chuàng)建一個新的ModelDoc2的文檔用來存放打開的工程圖:
ModelDoc2 SwDrawDoc=swApp.OpenDoc6 (file path2, (int)swDocumentTypes_e.swDocDRAWING, (int)swOpenDocOptions_e.swOpenDocOptions_LoadModel, "", ref IntError, ref IntWraning);
4)重新編輯工程圖:
SwDrawDoc.EditRebuild3();
在生成的基礎裝配圖上,開發(fā)者可以預先進行一些簡單的參數標注,標注樣式如圖8所示。使用者也可以根據具體情況,在基礎裝配圖上再增加或者刪除一些參數,以滿足自己設計的要求。
圖8 裝配體三視工程圖
裝配體工程圖的標注包含了很多細節(jié),如圖9所示是減速器箱體主視圖的局部展示。
圖9 裝配體工程圖局部展示
本文運用C# 語言結合API函數對SolidWorks進行二次開發(fā),設計了一款能在Windows系統(tǒng)中獨立運行的減速器箱體設計軟件,該軟件能夠實現減速器箱體零件的快速參數化建模和工程圖生成,并能夠實現自動化裝配和生成裝配圖。本文的方法能夠大大提高減速器箱體的設計效率,并可為其他復雜曲面結構的參數化建模與裝配提供具有參考意義的思路。