張思彧 仲梁維
摘 要:剪式升降平臺(tái)主要用于物流行業(yè)、生產(chǎn)流水線(xiàn)中貨物舉升、裝卸,也可用于升降操作臺(tái)等,結(jié)構(gòu)穩(wěn)固、故障率低、運(yùn)行可靠、安全高效、維護(hù)簡(jiǎn)單方便、應(yīng)用廣泛。傳統(tǒng)的設(shè)計(jì)方式費(fèi)時(shí)費(fèi)力,因此為提高設(shè)計(jì)效率,引入快速設(shè)計(jì)、參數(shù)化設(shè)計(jì)等知識(shí),使用VB.net作為開(kāi)發(fā)語(yǔ)言,借助SQLServer數(shù)據(jù)庫(kù)的數(shù)據(jù)儲(chǔ)存與讀取功能,對(duì)SolidWorks進(jìn)行二次開(kāi)發(fā),最終完成設(shè)計(jì)系統(tǒng)。簡(jiǎn)化了設(shè)計(jì)流程,實(shí)現(xiàn)了資源的重復(fù)利用,大大提高了設(shè)計(jì)效率,節(jié)約了設(shè)計(jì)成本,對(duì)于提高產(chǎn)品市場(chǎng)競(jìng)爭(zhēng)力有很大幫助。
關(guān)鍵詞:剪式升降平臺(tái);參數(shù)化設(shè)計(jì);VB.net;二次開(kāi)發(fā);SolidWorks
DOI:10.11907/rjdk.172831
中圖分類(lèi)號(hào):TP319
文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-7800(2018)005-0086-04
Abstract:The scissor type lifting platform is mainly used in the logistics industry for lifting, loading and unloading goods in the production line, and also used for lifting and moving platforms. The utility model has the advantages of firm structure, low failure rate, reliable operation, safety, high efficiency and simple and convenient maintenance. Because of the wide application and the traditional design methods, the knowledge of rapid design and parametric design is introduced to improve the design efficiency. Taking VB.net as a development language, the system utilizes data storage and reading of SQLServer database, , for the secondary develipment of SolidWorks to complete the design of the system. It simplifies the design process, and realise the reuse of resources, which greatly improves the design efficiency and save design cost. It is of great help to improve the market competitiveness of the products, and has certain practical significance.
Key Words:scissor lifting platform; parametric design; VB.net; secondary development; SolidWorks
0 引言
剪式升降平臺(tái)是一種垂直升降、室內(nèi)外用途廣泛的高空作業(yè)專(zhuān)用設(shè)備,可廣泛用于設(shè)備維修,車(chē)站、碼頭、橋梁、大廳、廠(chǎng)房室內(nèi)外機(jī)械安裝、設(shè)備維修、建筑保養(yǎng)。然而其設(shè)計(jì)與結(jié)構(gòu)比較復(fù)雜,不僅包含主體部分,還包括動(dòng)力機(jī)構(gòu)、標(biāo)準(zhǔn)件及很多零件,所以要對(duì)每個(gè)零件做到個(gè)性化設(shè)計(jì),會(huì)造成開(kāi)發(fā)周期長(zhǎng)、效率低下、費(fèi)時(shí)費(fèi)力等問(wèn)題[1]。因此,有必要引進(jìn)二次開(kāi)發(fā)技術(shù),進(jìn)行參數(shù)化設(shè)計(jì),建立模型模板,在同類(lèi)零件設(shè)計(jì)時(shí)即可直接調(diào)用已建立好的模板,然后進(jìn)行參數(shù)化驅(qū)動(dòng),進(jìn)行快速設(shè)計(jì)。
1 SolidWorks二次開(kāi)發(fā)原理
SolidWorks進(jìn)行二次開(kāi)發(fā)的原理有兩種:一種是基于COM(Component Object Model,組件對(duì)象模型)規(guī)范,另一種是基于OLE(Object Linking and Embedding,對(duì)象的鏈接與嵌入)技術(shù),實(shí)現(xiàn)OLE自動(dòng)化。為方便用戶(hù)進(jìn)行二次開(kāi)發(fā),SolidWorks提供了幾百個(gè)API(Application Programming Interface,應(yīng)用程序接口),涵蓋SolidWorks的大部分功能[2],通過(guò)正確調(diào)用API,實(shí)際上是在調(diào)用SolidWorks的事件、方法、屬性以及相關(guān)功能,以完成SolidWorks的二次開(kāi)發(fā),用戶(hù)在應(yīng)用程序中對(duì)SolidWorksAPI進(jìn)行操作,等效于在SolidWorks軟件中進(jìn)行操作。SolidWorksAPI是一個(gè)自上而下的多層次樹(shù)型網(wǎng)絡(luò)結(jié)構(gòu),其部分組織結(jié)構(gòu)關(guān)系如圖1所示。從中可以看出,SldWorks位于SolidWorksAPI關(guān)系圖的最頂端,包括ModelDoc、Environment、Frame、AttributeDef、Modeler、SWPropertySheet以及其它一些對(duì)象,是所有SolidWorksAPI的基礎(chǔ)[3]。剪式升降平臺(tái)參數(shù)化設(shè)計(jì)系統(tǒng)就是VB.net與OLE(對(duì)象鏈接和嵌入)或COM(組件對(duì)象模型)技術(shù)相結(jié)合,通過(guò)正確調(diào)用API對(duì)象,完成最終的參數(shù)化設(shè)計(jì)。
2 SolidWorks二次開(kāi)發(fā)工具
任何OLE和COM編程語(yǔ)言都可以作為SolidWorks的開(kāi)發(fā)工具,如VB.net、VBA、C、VC++等。開(kāi)發(fā)者可以根據(jù)自身?xiàng)l件、工具特點(diǎn)等情況選擇一種合適的開(kāi)發(fā)語(yǔ)言[4]。VB.net是運(yùn)行在Windows環(huán)境下的一種可視化編程語(yǔ)言,使用面向?qū)ο蟮木幊谭椒?,它所具有的圖形設(shè)計(jì)工具、結(jié)構(gòu)化編程模式和開(kāi)放環(huán)境,可以使用戶(hù)既快速又方便地編寫(xiě)出Windows下的應(yīng)用程序。在SolidWorks中通過(guò)宏錄制可以記錄SolidWorks用戶(hù)的整個(gè)產(chǎn)品設(shè)計(jì)過(guò)程,把用戶(hù)在建模過(guò)程中用到的SolidWorks對(duì)象、方法都一一記錄下來(lái),其語(yǔ)法完全符合VB.net。根據(jù)宏文件中的對(duì)象和方法在應(yīng)用程序中合理地調(diào)用,通過(guò)對(duì)變量的控制就可以實(shí)現(xiàn)產(chǎn)品的參數(shù)化設(shè)計(jì)[5]。
3 剪式升降平臺(tái)參數(shù)化驅(qū)動(dòng)系統(tǒng)設(shè)計(jì)
在設(shè)計(jì)中,首先通過(guò)用戶(hù)的要求以及CAD工程圖,用SolidWorks軟件建立出相應(yīng)的模型零件,并且裝配起來(lái),在建模過(guò)程中通過(guò)錄宏,確定設(shè)計(jì)變量用來(lái)實(shí)現(xiàn)尺寸驅(qū)動(dòng),并且對(duì)錄制的宏程序進(jìn)行一些修改,調(diào)用API函數(shù)對(duì)象的方法、屬性等,然后寫(xiě)入VB.net中,最終完成設(shè)計(jì)要求。完成的系統(tǒng)將會(huì)以一個(gè)SolidWorks的插件形式出現(xiàn)在SolidWorks中[6]。系統(tǒng)界面如圖2,按用戶(hù)需求的基本長(zhǎng)寬高尺寸給定以后,點(diǎn)擊模型驅(qū)動(dòng),會(huì)自動(dòng)出現(xiàn)剪式升降平臺(tái)模型,點(diǎn)擊出工程圖,就會(huì)自動(dòng)生成相應(yīng)的工程圖、指定點(diǎn)受力分析以及基本數(shù)據(jù)的保存管理等多種功能,并且操作簡(jiǎn)單。
3.1 尺寸模型驅(qū)動(dòng)
打開(kāi)已經(jīng)建立好的模型,通過(guò)對(duì)錄制宏的分析,確定需要修改的設(shè)計(jì)變量,為了不影響零件在尺寸修改后對(duì)裝配產(chǎn)生干涉,在建立零件模型時(shí)要注意建模選取的基準(zhǔn)面,并且在裝配時(shí)保證裝配關(guān)系不會(huì)因?yàn)槟P统叽绺淖儺a(chǎn)生干涉。以剪刀臂銷(xiāo)軸為例,如圖3,通過(guò)對(duì)錄制的宏程序代碼分析后找到其設(shè)計(jì)變量,然后寫(xiě)入程序中,通過(guò)模型中零件與零件之間邏輯算數(shù)關(guān)系對(duì)剪刀臂銷(xiāo)軸的尺寸進(jìn)行合理賦值,以下是剪刀臂銷(xiāo)軸的參數(shù)驅(qū)動(dòng)相關(guān)代碼:
part.Parameter("D1@凸臺(tái)-拉伸1@DC-31-09剪刀臂銷(xiāo)軸.Part").SystemValue=2*JuXingGang(1)+LiuJiaoLuoMu_HouDu+LiuJiaoBaoLuoMu_HouDu+0.002+0.007+0.01
part.Parameter("D1@切除-拉伸2@DC-31-09剪刀臂銷(xiāo)軸.Part").SystemValue=LiuJiaoLuoMu_HouDu+LiuJiaoBaoLuoMu_HouDu+0.002
part.Parameter("D1@草圖2@DC-31-09剪刀臂銷(xiāo)軸.part").SystemValue=Diameter_DC_31_09/1000
part.Parameter("D1@草圖3@DC-31-09剪刀臂銷(xiāo)軸.part").SystemValue=LiuJiaoLuoMu_NeiJing
part.Parameter("D2@草圖1@DC-31-09剪刀臂銷(xiāo)軸.part").SystemValue=Diameter_DC_31_09/1000+0.007
part.Parameter("D1@草圖1@DC-31-09剪刀臂銷(xiāo)軸.part").SystemValue=Diameter_DC_31_09/2/1000+0.011
part.Parameter("D1@草圖7@DC-31-09剪刀臂銷(xiāo)軸.Part").SystemValue=(107/183)*(2*JuXingGang(1)+LiuJiaoLuoMu_HouDu+LiuJiaoBaoLuoMu_HouDu+0.002+0.007+0.01)
part.Parameter("D1@基準(zhǔn)面2@DC-31-09剪刀臂銷(xiāo)軸.Part").SystemValue=(107/183)*(2*JuXingGang(1)+LiuJiaoLuoMu_HouDu+LiuJiaoBaoLuoMu_HouDu+0.002+0.007+0.01)
part.Parameter("D1@草圖12@DC-31-09剪刀臂銷(xiāo)軸.Part").SystemValue=(40/183)*(2*JuXingGang(1)+LiuJiaoLuoMu_HouDu+LiuJiaoBaoLuoMu_HouDu+0.002+0.007+0.01)
part.Parameter("D1@基準(zhǔn)面3@DC-31-09剪刀臂銷(xiāo)軸.Part").SystemValue=(40/183)*(2*JuXingGang(1)+LiuJiaoLuoMu_HouDu+LiuJiaoBaoLuoMu_HouDu+0.002+0.007+0.01)
part.Parameter("孔深度@草圖17@DC-31-09剪刀臂銷(xiāo)軸.Part").SystemValue=(112/183)*(2*JuXingGang(1)+LiuJiaoLuoMu_HouDu+LiuJiaoBaoLuoMu_HouDu+0.002+0.007+0.01)
part.Parameter("孔深度@草圖5@DC-31-09剪刀臂銷(xiāo)軸.Part").SystemValue=(Diameter_DC_31_09/1000)/2
part.Parameter("孔深度@草圖11@DC-31-09剪刀臂銷(xiāo)軸.Part").SystemValue=(Diameter_DC_31_09/1000)/2
剪刀臂銷(xiāo)軸建模所需要的所有尺寸數(shù)據(jù)都通過(guò)數(shù)理邏輯關(guān)系賦值完成,這樣就可以保證驅(qū)動(dòng)出來(lái)的模型符合設(shè)計(jì)要求。大部分零件尺寸都是通過(guò)這種方式參數(shù)化驅(qū)動(dòng)出來(lái)的,可以使零件與零件之間即使尺寸變化了,也有正確的裝配關(guān)系。
3.2 設(shè)計(jì)計(jì)算
剪式升降平臺(tái)是由上百個(gè)零件裝配而成,如何調(diào)節(jié)這些零件的關(guān)系成為整個(gè)系統(tǒng)的關(guān)鍵。通過(guò)VB.net寫(xiě)入如何設(shè)計(jì)計(jì)算、模型與模型之間的距離等一系列關(guān)系,以及如何通過(guò)改變3個(gè)基本數(shù)值從而達(dá)到整個(gè)模型的改變,并且保證這些模型符合力學(xué)知識(shí)。首先簡(jiǎn)化模型,將復(fù)雜的剪式升降平臺(tái)簡(jiǎn)化成力學(xué)模型,并且對(duì)模型進(jìn)行力學(xué)分析,在給予基本的平臺(tái)最大高度和寬度后,通過(guò)力學(xué)計(jì)算出各個(gè)主體部分的長(zhǎng)度,計(jì)算公式可以作為函數(shù)寫(xiě)入VB.net中,以下是力學(xué)計(jì)算中的部分代碼:
PublicSubD_K_IJ()
DimL2AsSingle,L_DKAsSingle,L_BMAsSingle
DimL3AsSingle
DimX_maxAsSingle
DimthetaAsSingle
L2=Int(L1/(Cos(3.5*PI/180)))
L_DK=(5/22)*L2'單位mm
L_BM=(138/2200)*L2'單位mm
L3=200'單位mm
X_max=L1-Sqrt(L2*L2-H1*H1/4)
theta=Acos((L1-X_max)/L2)
Kx=(L2-L_DK)*Cos(theta)
Ky=(L2+L_DK)*Sin(theta)
Jx=L3*Cos(60*PI/180-theta)+L_BM*Cos(theta)
Jy=L_BM*Sin(theta)-L3*Sin(60*PI/180-theta)
Ix=(L2-L_DK)*Cos(theta)-L3*Cos(35*PI/180+theta)
Iy=(L2+L_DK)*Sin(theta)+L3*Sin(35*PI/180+theta)
Distance_K_IJ=(Abs(Kx*(Iy-Jy)+Ky*(Jx-Ix)+Jy*Ix-Jx*Iy))/Sqrt((Iy-Jy)^2+(Jx-Ix)^2)
Distance_K_IJ=Distance_K_IJ/1000
使用數(shù)學(xué)幾何關(guān)系,計(jì)算出K點(diǎn)與IJ的距離,在得知這個(gè)距離以后,可以為下面的設(shè)計(jì)使用。這些只是最基本的主體部分,而剪式升降平臺(tái)的模型中有許多標(biāo)準(zhǔn)件,以及一些用戶(hù)指定的零件,不會(huì)隨著外部輸入數(shù)值的改變而改變,只會(huì)通過(guò)范圍進(jìn)行選取。
3.3 數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)
在剪式升降平臺(tái)的設(shè)計(jì)中用到許多標(biāo)準(zhǔn)件,標(biāo)準(zhǔn)件的使用可以提高設(shè)計(jì)效率,節(jié)約成本。通過(guò)查看機(jī)械設(shè)計(jì)手冊(cè),從中選取合適的零件便可完成相關(guān)設(shè)計(jì),因此對(duì)于標(biāo)準(zhǔn)件的選用也成為系統(tǒng)設(shè)計(jì)的一個(gè)關(guān)鍵,同時(shí)用到SQLServer2008這款軟件。數(shù)據(jù)庫(kù)是存儲(chǔ)計(jì)算機(jī)相關(guān)數(shù)據(jù)的集合,一個(gè)完整的數(shù)據(jù)庫(kù)應(yīng)由數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)管理系統(tǒng)、數(shù)據(jù)庫(kù)應(yīng)用程序、計(jì)算機(jī)軟件和硬件系統(tǒng)以及數(shù)據(jù)管理員幾部分組成[7]。設(shè)計(jì)過(guò)程中往往需要對(duì)大量數(shù)據(jù)進(jìn)行篩選,工作量大且復(fù)雜,如何高效簡(jiǎn)潔地獲取所需數(shù)據(jù)至關(guān)重要。數(shù)據(jù)庫(kù)的另一作用是標(biāo)準(zhǔn)數(shù)據(jù)管理,主要對(duì)標(biāo)準(zhǔn)件及固定尺寸模型參數(shù)進(jìn)行存儲(chǔ)[8]。使用過(guò)程中,通過(guò)代碼對(duì)數(shù)據(jù)庫(kù)進(jìn)行調(diào)用,設(shè)計(jì)者可選擇需要的參數(shù)型號(hào),直接驅(qū)動(dòng)該類(lèi)模型生成。以矩形鋼為例,以下是與之相關(guān)的驅(qū)動(dòng)代碼:
PublicSubJuXingGang_Data()
W_x=Compute_M_Fmax(M,H1)/a_Q235
Ifcon.State=ConnectionState.ClosedThen
con.Open()
EndIf
sqlstr="select*fromTable_JuXingGang"
mycom=NewSqlCommand(sqlstr,con)
myread=mycom.ExecuteReader
Whilemyread.Read
IfVal(myread("W_x"))/W_x>1Then
JuXingGang(0)=myread("H")/1000'長(zhǎng)邊
JuXingGang(1)=myread("B")/1000'短邊
JuXingGang(2)=myread("t")/1000'厚度
ExitWhile
EndIf
EndWhile
myread.Close()
con.Close()
該行代碼可以大概理解為,建立一個(gè)sub過(guò)程方便其它程序調(diào)用,然后連接數(shù)據(jù)庫(kù),使用select語(yǔ)句從數(shù)據(jù)庫(kù)的Table_JuXingGang表格中選取H、B、T(長(zhǎng)邊、短邊、厚度),通過(guò)判定語(yǔ)句Val(myread("W_x"))/W_x>1與While循環(huán)共同完成矩形鋼規(guī)格的選取。
3.4 裝配模型驅(qū)動(dòng)
在完成前面一系列零件驅(qū)動(dòng),以及裝配位置調(diào)整后,可以確保修改尺寸參數(shù)不會(huì)對(duì)裝配體的裝配關(guān)系產(chǎn)生影響,于是就可以進(jìn)行模型驅(qū)動(dòng),在輸入相應(yīng)的尺寸參數(shù)后,可以驅(qū)動(dòng)出此模型[9]。以下是驅(qū)動(dòng)所用部分代碼:
SwApp=CreateObject("SldWorks.Application")
part=SwApp.ActiveDoc
SwApp.Visible=True
SwApp=GetObject("","sldworks.application")
part=SwApp.ActiveDoc
part=SwApp.OpenDoc6(destinationDirectoryName&"\DC-31.00剪式平臺(tái).SLDASM",2,0,"",longstatus,longwarnings)
SwApp.ActivateDoc2("DC-31.00剪式平臺(tái).SLDASM",F(xiàn)alse,longstatus)
以上只是打開(kāi)模型樣板的程序,之后通過(guò)前面所講參數(shù)化驅(qū)動(dòng)對(duì)原模型進(jìn)行驅(qū)動(dòng),得到最終符合設(shè)計(jì)的模型。
3.5 工程圖驅(qū)動(dòng)
實(shí)際上工程圖的驅(qū)動(dòng)與零件驅(qū)動(dòng)如出一轍,都是之前建立好的。由于工程圖通過(guò)三維模型導(dǎo)出,當(dāng)模型尺寸發(fā)生變化時(shí),工程圖也會(huì)自動(dòng)發(fā)生變化以與設(shè)計(jì)相符合,所以就不需要像零件尺寸驅(qū)動(dòng)一樣編寫(xiě)程序?yàn)槊恳粋€(gè)零件尺寸賦值[10]。以下是打開(kāi)工程圖的部分代碼:
SwApp=GetObject("","sldworks.application")
part=SwApp.ActiveDoc
part=SwApp.OpenDoc6(address_new&Trim;(TextBox_design_id.Text)&"\DC-31-06.00承載平臺(tái)\DC-31-06-01-02耳.SLDDRW",3,0,"",longstatus,longwarnings)
part=SwApp.ActivateDoc("DC-31-06-01-02耳.SLDDRW")
Table_Name="Bearing_platform"
CallAdjustViewScale(0.115,0.128,part,"工程圖視圖1")
CallDim_AdjustPosition()
part.Save3(4,errors,warnings)
正如上文所講,工程圖的打開(kāi)程序與模型驅(qū)動(dòng)類(lèi)似,只是增加了AdjustViewScale這個(gè)用來(lái)調(diào)試工程圖位置與比例的sub過(guò)程,以及一些標(biāo)注位置的調(diào)整,由于程序會(huì)自動(dòng)驅(qū)動(dòng)出除標(biāo)準(zhǔn)件以外所有零件的工程圖以及裝配圖,因此只列舉了“耳”這個(gè)零件的工程圖代碼,其它零件類(lèi)似。
4 結(jié)語(yǔ)
本文以知識(shí)工程思想為指導(dǎo),把參數(shù)化設(shè)計(jì)、模塊化設(shè)計(jì)和實(shí)例推理思想引入到剪式升降平臺(tái)的設(shè)計(jì)中,借助SolidWorks2016軟件、SQLServer數(shù)據(jù)庫(kù)、VB.net編程語(yǔ)言開(kāi)發(fā)了剪式升降平臺(tái)參數(shù)化設(shè)計(jì)系統(tǒng)。該系統(tǒng)實(shí)現(xiàn)了剪式升降平臺(tái)的快速設(shè)計(jì),實(shí)現(xiàn)了資源整合與重復(fù)利用,縮短了產(chǎn)品設(shè)計(jì)周期,具有一定的現(xiàn)實(shí)意義。
參考文獻(xiàn):
[1] 姜文超.剪叉式液壓升降平臺(tái)參數(shù)化系統(tǒng)設(shè)計(jì)及優(yōu)化[D].濟(jì)南:濟(jì)南大學(xué),2015.
[2] 江偉光,武建偉.面向知識(shí)工程的產(chǎn)品信息模型[J].農(nóng)業(yè)機(jī)械學(xué)報(bào),2008(7):133-138.
[3] 彭波,莫堃,王立聞.基于VB和SolidworksAPI的零部件參數(shù)化設(shè)計(jì)方法[J].東方電氣評(píng)論,2016(1):2-5.
[4] 李曉光,張鏈.基于VisualBasic的Solidworks二次開(kāi)發(fā)[J].電大理工,2012(3):38-40.
[5] 田文濤,賀小華.基于VB技術(shù)的SolidWorks二次開(kāi)發(fā)與應(yīng)用[J].計(jì)算機(jī)工程與科學(xué),2009,31(7):65-67,76.
[6] 呂正剛,劉恒麗,余競(jìng)超.基于模塊化設(shè)計(jì)思想的電冰箱概念設(shè)計(jì)[J].包裝工程,2011(8):34-35.
[7] 江凌,楊平利,楊梅,等.基于ADO.NET技術(shù)訪(fǎng)問(wèn)SQLSever數(shù)據(jù)庫(kù)的編程實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2014(8):95-97.
[8] 殷國(guó)富,尹湘云,胡曉兵.SolidWorks二次開(kāi)發(fā)實(shí)例精解[M].北京:機(jī)械工業(yè)出版社,2006.
[9] 鮑東,仲梁維.利用參數(shù)化設(shè)計(jì)技術(shù)的起重機(jī)快速設(shè)計(jì)研究[J].現(xiàn)代制造工程,2014(2):2-4.
[10] 江洪,魏崢,王濤威.SolidWorks二次開(kāi)發(fā)實(shí)例解析[M].北京:機(jī)械工業(yè)出版社,2004.
(責(zé)任編輯:何 麗)