□ 目登臣□ 孫寶壽□ 黃吉平□ 劉韶華□ 劉忠洋
1.寧波大學 機械工程與力學學院 浙江寧波315211
2.寧波鎮(zhèn)海減變速機制造有限公司 浙江寧波315211
隨著三維造型技術的快速發(fā)展,越來越多的制造型企業(yè)運用各種三維造型軟件進行產品的前期設計和后期的宣傳展示。SolidWorks作為重要的實體建模軟件,以其優(yōu)異的設計性能、易用性和創(chuàng)新性等優(yōu)點受到廣大工程技術人員的青睞。而且,SolidWorks具有良好的兼容性和開放性,技術人員可以使用高級編程語言調用API(Application Program Interface,應用程序編程接口)函數對其進行二次開發(fā),實現(xiàn)某些復雜零件的快速設計,極大地提高了產品設計效率和質量。
漸開線齒輪傳動是目前各種機械傳動過程中應用最為廣泛的一種傳動機構。但是,在實際設計工作中漸開線齒輪的精準造型是一大難點,主要在于齒廓漸開線草圖的繪制。部分三維造型軟件是可以通過繁瑣的計算和一系列復雜的命令,利用圓弧或直線擬合漸開線或齒根過渡曲線,但這樣就造成齒廓精度較低,不利于后續(xù)的齒輪動態(tài)仿真及有限元分析。也有工程技術人員使用Visual Basic 6.0或Visual C++開發(fā)工具進行過齒輪的參數化設計,但是大部分實現(xiàn)的功能比較單一,對齒根過渡圓角的處理多選用經驗公式計算[1-3]。為此,筆者探討了在Visual Studio 2013集成開發(fā)環(huán)境下利用C#6.0高級編程語言對SolidWorks進行進程外二次開發(fā),實現(xiàn)了整個齒輪齒廓曲線的精確繪制,從而達到漸開線齒輪類零件的全參數化三維精確造型的目的。
SolidWorks具有良好的開放性,提供了開放的數據結構和便捷的二次開發(fā)環(huán)境,通過COM(Component Object Model,組件對象模型)或OLE(object Linking and Embeding,對象連接與嵌入)技術為開發(fā)者提供了強大的二次開發(fā)接口,即SolidWorks API。其中包涵了SolidWorks操作的所有功能函數,開發(fā)者只需在編程時調用所需的API函數即可開發(fā)出企業(yè)適用的相關軟件,實現(xiàn)SolidWorks功能的拓展。只要支持COM/OLE編程的開發(fā)工具語言如VC++、VB.Net、C#等均可用于SolidWorks的二次開發(fā)[4]。
用戶在對SolidWorks軟件進行二次開發(fā)時,首先要得到SolidWorks API對象的接口,才能使用接口所提供的方法。所以必須先了解API的對象模型,如圖1所示,SolidWorks API是樹形層次結構,每一層包含若干對象,每個對象又都有自己的屬性和方法。
▲圖1 SolidWorks API對象層次結構圖
由于SolidWorks提供了幾百個API函數,所以開發(fā)者不必掌握所有對象的用法,只需在開發(fā)過程中先使用宏錄制功能把操作過程記錄下來,然后確定需要使用哪些方法,再去創(chuàng)建能夠連接這些方法的對象。圖1中的SolidWorks接口對象是所有SolidWorks API中最高層的對象,它能夠直接或間接地訪問SolidWorks API中的所有其它子類對象[5]。此參數化設計系統(tǒng)中使用的對象有SolidWorks文件基類、草圖點、特征管理、模型視圖、草圖管理等,利用這些對象中的功能可以完成模型草圖的創(chuàng)建、特征的創(chuàng)建以及模型視角的轉換等。
筆者采用進程外組件開發(fā)方式對SolidWorks 2016進行二次開發(fā),開發(fā)的用戶程序以*.exe方式獨立運行于SolidWorks之外,并驅動SolidWorks完成相應的操作[6]?;舅悸肥?,在開發(fā)之前先搭建出系統(tǒng)的整體框架,把整個系統(tǒng)分為界面模塊、參數計算模塊、齒廓草圖繪制和實體造型四個模塊進行設計。再對零件模型特征進行分析,確定出最優(yōu)建模順序并利用SolidWorks的宏錄制功能對建模過程進行記錄,從生成的宏程序中找到建模所需的API函數供C#程序調用。開發(fā)方法如下。
(1)首先根據齒輪類零件的類型和建模所需的尺寸參數在開發(fā)工具Visual Studio 2013中創(chuàng)建用戶界面, 再添加引用SolidWorks.Interop.swcommands、SolidWorks.Interop.sldworks和SolidWorks.Interop.swconst三個類庫,聲明相關對象變量并建立起外部程序和SolidWorks的連接。
(2)然后根據功能要求調用API函數編寫不同模塊的執(zhí)行代碼,實現(xiàn)主要結構參數的計算,漸開線齒廓和齒根過渡曲線的生成以及零件的實體建模。
(3)最后調試修改完成之后打包發(fā)布即可。圖2所示是此系統(tǒng)完成齒輪零件建模過程的流程圖,其中的關鍵性步驟是繪制過渡曲線和漸開線,也是整個系統(tǒng)的核心模塊。
▲圖2 系統(tǒng)流程圖
根據上述建模思路分析,可知程序運行過程中需要通過人機交互獲取到齒輪的相關參數來實現(xiàn)齒輪類零件的快速建模。用戶界面作為人機交互的重要載體,在設計時要做到美觀大方、簡潔易操作。由于不同類型齒輪零件建模所需參數不同,所以采用嵌套二級子窗體的方式來完成不同類型齒輪的參數輸入。圖3所示是直齒輪造型參數輸入主界面,用來輸入齒輪零件主體建模所用的參數值。
▲圖3 直齒輪基本參數輸入界面
其中對直齒輪和斜齒輪建模提供了實心式、齒軸式、腹板式三種結構類型供用戶選擇,圖4(a)~(c)所示是用戶選擇下拉框中的不同齒輪結構類型時彈出的輸入對應參數的子窗體。
▲圖4 不同結構類型參數輸入子窗體
在Visual Studio2013的Visual C#選項下單擊新建窗體應用程序,首先創(chuàng)建出一個主窗體并重命名為FrmMain,然后把主窗體分割成左右兩欄,左欄放置所需的功能按鈕,右欄嵌入對應的齒輪主參數輸入界面。對于四種齒輪主參數輸入UI界面的設置可根據建模所需的參數在窗體上畫出相關的控件,比如Button按鈕控件、Label標簽控件和TextBox文本框控件,并修改各控件的屬性值,其中的模數m、齒數z、壓力角α、頂高因數ha*、頂隙因數c*的參數輸入框設置成Combox下拉框控件,用戶既可以直接從下拉列表中選擇參數,也可以在文本框中輸入相關參數。
當用戶點擊工具欄中的按鈕時,齒輪主參數輸入界面會嵌入到主窗體的右邊容器中,實現(xiàn)此功能的部分代碼為:
對于如何在主窗體中調用子窗體,并在子窗體中輸入相關參數來完成零件的三維建模,就要用到C#中的委托方法,其原理和方法可見參考文獻[7]。
筆者以斜齒輪軸參數化建模為例說明整個零件的造型過程,主要步驟是:首先拉伸出齒坯模型,根據齒根過渡曲線參數方程和漸開線參數方程繪制出漸開線上的若干坐標點,接著利用樣條曲線功能依次連接各坐標點完成單側齒廓的繪制,然后利用旋轉、鏡像、修剪等命令完成齒槽草圖輪廓的繪制,再插入螺旋線作為掃描軌跡,所有草圖繪制完成后調用掃描切除函數生成單個齒槽特征,然后使用圓周陣列命令完成整個齒輪的繪制,最后輸入軸段的參數完成整個齒輪軸的設計。
齒輪齒根過渡曲線雖然不參與嚙合過程,但是它的精準成形是計算齒根彎曲強度的重要依據,也是準確進行齒輪有限元分析的必要前提。
齒根過渡曲線實際是齒條型刀具齒頂圓角的圓在齒嚙合傳動時相對被切齒廓走過軌跡的包絡線,即刀具圓角圓心形成的延伸漸開線的等距曲線[8-10],如圖5所示。
▲圖5 齒條型刀具加工齒輪的齒廓
圖5的坐標系中,直線nn為刀具齒頂圓角和過渡曲線接觸點的公法線,當刀具圓角與齒根過渡曲線剛開始接觸時nn垂直于刀具的齒側直線并與嚙合線重合,此時α′等于齒輪與齒條的分度圓壓力角α′,當α′等于π/2時,刀具頂部直線與齒根過渡曲線末端接觸,并切出齒根圓弧,所以α′的取值范圍是α~π/2。齒根過渡曲線在直角坐標系下的參數方程為:
式中:φ為齒輪轉角;α′為nn與刀具加工節(jié)線之間的夾角,其取值范圍為(α,π/2);a為刀具圓角圓心到加工節(jié)線之間的距離;b為刀具圓角圓心到齒槽中線之間的距離;rρ為刀具圓角半徑;r為分度圓半徑;ha*為齒頂高因數;c*為頂隙因數。
齒輪齒廓部分的形狀是由齒數z、模數m、變位因數x、分度圓壓力角α、齒頂高因數ha*和頂隙因數c*等主要參數決定的漸開線曲線。由漸開線齒輪的形成原理,可以得到漸開線齒廓的繪制方法,具體方法就是繪制出漸開線齒廓上的若干坐標點,然后利用SolidWorks的API函數—CreateSpline函數依次連接各坐標點即可繪制出齒廓漸開線[11]。
漸開線上各點直角坐標方程表示為:
為了實現(xiàn)漸開線和過渡曲線的平滑連接并簡化程序算法,θi的起始角度和過渡曲線α′的起始角度取相同值,即壓力角α的值。
通過式(1)~(4)可編程求出過渡曲線和漸開線段上的若干點坐標,然后使用樣條曲線命令通過各個坐標點擬合出單側齒廓[12],再使用鏡像命令做出另一側齒廓曲線,最后做出齒頂圓和齒根圓并裁剪完成,如圖6所示。
▲圖6 齒輪齒廓草圖
由式(1)~(3)可得到過渡曲線的算法程序如下:
由式(4)可得出繪制漸開線上坐標點的主要程序代碼如下:
由于編程時SolidWorks中長度是以米為單位、角度是以弧度為單位計算的,所以在程序中進行值類型的運算時要把相關參數進行單位轉換。另外,在調用某個命令函數之前要先定義接口對象,才能獲取到對應的方法函數,此處進行了省略。
齒廓草圖創(chuàng)建三維實體步驟如下:
(1)插入螺旋線,程序代碼如下。
(3)圓周陣列齒槽特征,程序代碼如下。
生成的斜齒輪軸實體模型如圖8所示,直齒輪和內齒輪的生成過程與斜齒輪類似,只需刪除插入螺旋線的代碼即可。
對于直齒條的生成相對比較簡單,只需根據初始輸入值計算出齒條齒廓相關尺寸參數,繪制草圖即可,部分程序代碼如下:
▲圖7 齒槽實體
▲圖8 斜齒輪軸三維實體
以SolidWorks 2016為開發(fā)平臺、Visual Studio 2013為開發(fā)工具,使用C#編程語言調用API函數實現(xiàn)對SolidWorks的二次開發(fā),構建了一套齒輪類零件的參數化建模系統(tǒng)。
(1)系統(tǒng)操作簡單,界面友好并且獨立運行于SolidWorks之外,整個建模時間只需數秒鐘即可完成,避免同一進程內運行引起的卡頓、崩潰現(xiàn)象,提高了工作效率。
(2)通過對齒廓漸開線和齒根過渡曲線的成形原理的分析,得出整個齒廓草圖繪制的核心算法,實現(xiàn)了齒輪類零件的快速精確造型,為后續(xù)的運動仿真和有限元分析提供了可靠的三維模型。