史素華
關鍵詞:模塊化設計 ? 變速箱 ? 二次開發 ? SW ? VB
模塊化思想起源大工業生產,其目的在于簡化設計程序和制造過程,縮短產品研制和設備準備的時間。在保持產品基本模塊的基礎上,通過模塊化、系列化設計,可以方便地實現內部功能的整合、外部功能的擴展,既保持了成熟產品的內在優勢,又大大拓寬了產品創新發展的空間。模塊化設計思想是建立在系統化設計方法的基礎之上,將設計任務由抽象到具體(由設計的任務要求到實現該任務的方案或結構)進行層次劃分,擬定出每一層欲實現的目標和方法,由淺入深、由抽象至具體地將各層有機地聯系在一起,整個設計過程系統化,設計有規律可循,有方法可依,易于設計過程的計算機輔助實現。本文主要介紹了基于SolidWorks、采用支持ActiveX技術的面向對象的編程語言VB對某型變速箱的模塊化設計。
一、開發原理
變速箱的模塊化設計按照模塊化的設計思想將其模塊劃分
SolidWorks為二次開發提供了大量的API對象,這些對象涵蓋了全部的SolidWorks的數據模型,通過對這些對象屬性的設置和方法的調用,就可以在用戶自己開發的DLL中實現與SolidWorks相同的功能。Sldworks對象為VB對SolidWorks工作環境進行訪問處理提供了接口。通過此對象可以對SolidWorks工作環境添加菜單、刪除菜單、添加工具條、打開文件、新建文件、退出SolidWorks系統。用VB調用SolidWorks中的API函數,還可以完成零件的建造和修改;零件各特征的建立、修改、刪除和壓縮等各項控制;零件特征信息的提取,如特征尺寸的設置與提取,特征所在面的信息提取及各種幾何和拓撲信息;零件的裝配信息;零件工程圖紙中的各項信息等。SW系統開發主要有兩種方法:
第一種:用人機交互形式建立模型,設置合理的設計變量,再通過V B程序驅動設計變量實現模型的更新,這種方法編程較簡單,通用性好;
第二種:是完全用程序,實現三維模型的參數化設計以及模型的編輯,這種方法編程較前者復雜,但可以實現對具有復雜形體的零件造型,如生成精確的漸開線齒輪齒廓。
二、某型變速箱計算機輔助模塊化設計系統
變速箱本身復雜,功能邏輯強,可靠性要高,二次開發系統相應的較單個模型龐大的多。本文采用兩種交互的方法,依據變速箱零部件的結構,功能以及零部件的特征,結合參數化進行設計。第一種方法主要用于單個零件的靜態特征參數設定,這樣可以達到時時對零件進行參數修改;第二種方法主要是編程利用SW平臺提供的API接口編寫應用程序,通過應用程序來開發,動態建立參數化的模型。變速箱的復雜特征、運動特征是一系列的點擬合形成。尺寸驅動對簡單的、非復合特征容易驅動,對于復合、交叉特征就只能用編程的方法。
該系統主要由四個模塊組成,即用戶界面模塊、變速箱結構數據模塊、變速箱基體模型模塊、變速箱開發模塊。
(一)用戶界面模塊
根據前述變速箱設計方法和特點,利用VB開發用戶界面。
(二)變速箱結構數據模塊
變速箱結構數據模塊包括兩類數據,一是典型變速箱各個零件尺寸參數數據,二是,變速箱的動力傳動參數數據。用戶可根據設計需要選擇和調用,并可以通過系統界面對原始的變速箱參數進行更改,生成設計需要的實體三維模型。
(三)變速箱基體模型
變速箱基體模型是使用SW 2008實體三維建模軟件按照1:1模型創建的,綜合了通用變速箱的基本特征和零部件。為變速箱的開發模塊奠定基礎。
(四)變速箱開發模塊
變速箱開發模塊是在用戶界面的管理下,在變速箱結構數據模塊和變速箱基體模塊的基礎上更具自己的實際設計在界面中修改變速箱參數數據。
模塊應用程序開發與VB開發其他程序類似。SW本身提供了大量的接口函數,所有的函數名與VB Script的函數名相類似,靈活運用接口函數可以方便地在SW中實現變速箱的參數化實體建模。SW的調用和變速箱單個零件實體模型生成的部分代碼如下:
Dim swApp As Object
Dim Part As Object
Dim SelMgr As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Dim Feature As Object
'建立零件
Set swApp = CreateObject("SldWorks.Application")
Set swModel = swApp.ActiveDoc
Set Part = swApp.NewPart
Set Part = swApp.ActiveDoc
變速箱單個零件實體模型生成的部分代碼:
Sub main ()
Set swApp = CreateObject("sldworks.application")
Set Part = swApp.NewPart
Set Part = swApp.ActiveDoc
Set SelMgr = Part.SelectionManager
swApp.ActiveDoc.ActiveView.FrameState = 1
boolstatus = Part.Extension.SelectByID2("前視基準面", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
Part.ActivateSelectedFeature
Part.ClearSelection2 ?True
Part.ClearSelection2 ?True
Dim SkCircle As Object
Set SkCircle = Part.SketchManager.CreateCircle(0, 0, 0, -0.07061428243474, 0.03353548752834, 0)
Part.ClearSelection2 ?True
Set SkCircle = Part.SketchManager.CreateCircle(0, 0, 0, -0.0358548720039, 0.007588321995465, 0)
Part.ClearSelection2 ?True
boolstatus = Part.Extension.SelectByID2("Arc1","SKETC
HSEGMENT", -0.0789369581717, 0.00220306122449, 0,False,
0, Nothing, 0)
Dim Annotation As Object
Set Annotation = Part.AddDimension2(-0.125446,0.019338,
0)
Part.ClearSelection2 ?True
Part.Parameter("D1@草圖1").SystemValue = 0.12
boolstatus = Part.Extension.SelectByID2("Arc2", "SKETC
HSEGMENT",-0.0343861645209,0.01346315192744, 0, False, 0, Nothing, 0)
Set Annotation = Part.AddDimension2(-0.0911762, 0.0144423, 0)
Part.ClearSelection2 ?True
boolstatus = Part.Extension.SelectByID2("D1@草圖1@零件5.SLDPRT", "DIMENSION", 0, 0, 0, False, 0, Nothing, 0)
Part.Parameter("D2@草圖1").SystemValue = 0.09
Part.ClearSelection2 ?True
Part.ShowNamedView2 ?"*上下二等角軸測", 8
Part.ClearSelection2 ?True
Part.FeatureManager.FeatureExtrusion2 ?True, False, False, 0, 0, 0.01, 0.01, False, False, False, False, 0.01745329251994, 0.01745329251994, False, False, False, False, 1, 1, 1, 0, 0, False
Part.SelectionManager.EnableContourSelection = 0
End Sub
三、結語
零件的參數化設計可以極大地提高設計效率,基于ActiveX技術是當今軟件開發的熱點。這里基于SW的應用程序二次開發,利用模塊化的設計思想設計系統開發的總體框架和實現方法,利用VB編程和SW建模技術,實現了變速箱的模塊化計算機輔助設計,減少了設計周期,提高了生產效率。
參考文獻:
[1]朱朝寬.利用VB開發solidworks標準件實體庫[J].機械設計與制造工程,2005,(03):37.
(作者單位:山東省民族中等專業學校)