APP下载

基于VB.NET的剪式升降平台参数化设计系统

2018-06-21张思彧仲梁维

软件导刊 2018年5期
关键词:参数化设计二次开发

张思彧 仲梁维

摘 要:剪式升降平台主要用于物流行业、生产流水线中货物举升、装卸,也可用于升降操作台等,结构稳固、故障率低、运行可靠、安全高效、维护简单方便、应用广泛。传统的设计方式费时费力,因此为提高设计效率,引入快速设计、参数化设计等知识,使用VB.net作为开发语言,借助SQLServer数据库的数据储存与读取功能,对SolidWorks进行二次开发,最终完成设计系统。简化了设计流程,实现了资源的重复利用,大大提高了设计效率,节约了设计成本,对于提高产品市场竞争力有很大帮助。

关键词:剪式升降平台;参数化设计;VB.net;二次开发;SolidWorks

DOI:10.11907/rjdk.172831

中图分类号:TP319

文献标识码:A 文章编号: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 引言

剪式升降平臺是一种垂直升降、室内外用途广泛的高空作业专用设备,可广泛用于设备维修,车站、码头、桥梁、大厅、厂房室内外机械安装、设备维修、建筑保养。然而其设计与结构比较复杂,不仅包含主体部分,还包括动力机构、标准件及很多零件,所以要对每个零件做到个性化设计,会造成开发周期长、效率低下、费时费力等问题[1]。因此,有必要引进二次开发技术,进行参数化设计,建立模型模板,在同类零件设计时即可直接调用已建立好的模板,然后进行参数化驱动,进行快速设计。

1 SolidWorks二次开发原理

SolidWorks进行二次开发的原理有两种:一种是基于COM(Component Object Model,组件对象模型)规范,另一种是基于OLE(Object Linking and Embedding,对象的链接与嵌入)技术,实现OLE自动化。为方便用户进行二次开发,SolidWorks提供了几百个API(Application Programming Interface,应用程序接口),涵盖SolidWorks的大部分功能[2],通过正确调用API,实际上是在调用SolidWorks的事件、方法、属性以及相关功能,以完成SolidWorks的二次开发,用户在应用程序中对SolidWorksAPI进行操作,等效于在SolidWorks软件中进行操作。SolidWorksAPI是一个自上而下的多层次树型网络结构,其部分组织结构关系如图1所示。从中可以看出,SldWorks位于SolidWorksAPI关系图的最顶端,包括ModelDoc、Environment、Frame、AttributeDef、Modeler、SWPropertySheet以及其它一些对象,是所有SolidWorksAPI的基础[3]。剪式升降平台参数化设计系统就是VB.net与OLE(对象链接和嵌入)或COM(组件对象模型)技术相结合,通过正确调用API对象,完成最终的参数化设计。

2 SolidWorks二次开发工具

任何OLE和COM编程语言都可以作为SolidWorks的开发工具,如VB.net、VBA、C、VC++等。开发者可以根据自身条件、工具特点等情况选择一种合适的开发语言[4]。VB.net是运行在Windows环境下的一种可视化编程语言,使用面向对象的编程方法,它所具有的图形设计工具、结构化编程模式和开放环境,可以使用户既快速又方便地编写出Windows下的应用程序。在SolidWorks中通过宏录制可以记录SolidWorks用户的整个产品设计过程,把用户在建模过程中用到的SolidWorks对象、方法都一一记录下来,其语法完全符合VB.net。根据宏文件中的对象和方法在应用程序中合理地调用,通过对变量的控制就可以实现产品的参数化设计[5]。

3 剪式升降平台参数化驱动系统设计

在设计中,首先通过用户的要求以及CAD工程图,用SolidWorks软件建立出相应的模型零件,并且装配起来,在建模过程中通过录宏,确定设计变量用来实现尺寸驱动,并且对录制的宏程序进行一些修改,调用API函数对象的方法、属性等,然后写入VB.net中,最终完成设计要求。完成的系统将会以一个SolidWorks的插件形式出现在SolidWorks中[6]。系统界面如图2,按用户需求的基本长宽高尺寸给定以后,点击模型驱动,会自动出现剪式升降平台模型,点击出工程图,就会自动生成相应的工程图、指定点受力分析以及基本数据的保存管理等多种功能,并且操作简单。

3.1 尺寸模型驱动

打开已经建立好的模型,通过对录制宏的分析,确定需要修改的设计变量,为了不影响零件在尺寸修改后对装配产生干涉,在建立零件模型时要注意建模选取的基准面,并且在装配时保证装配关系不会因为模型尺寸改变产生干涉。以剪刀臂销轴为例,如图3,通过对录制的宏程序代码分析后找到其设计变量,然后写入程序中,通过模型中零件与零件之间逻辑算数关系对剪刀臂销轴的尺寸进行合理赋值,以下是剪刀臂销轴的参数驱动相关代码:

part.Parameter("D1@凸台-拉伸1@DC-31-09剪刀臂销轴.Part").SystemValue=2*JuXingGang(1)+LiuJiaoLuoMu_HouDu+LiuJiaoBaoLuoMu_HouDu+0.002+0.007+0.01

part.Parameter("D1@切除-拉伸2@DC-31-09剪刀臂销轴.Part").SystemValue=LiuJiaoLuoMu_HouDu+LiuJiaoBaoLuoMu_HouDu+0.002

part.Parameter("D1@草图2@DC-31-09剪刀臂销轴.part").SystemValue=Diameter_DC_31_09/1000

part.Parameter("D1@草图3@DC-31-09剪刀臂销轴.part").SystemValue=LiuJiaoLuoMu_NeiJing

part.Parameter("D2@草图1@DC-31-09剪刀臂销轴.part").SystemValue=Diameter_DC_31_09/1000+0.007

part.Parameter("D1@草图1@DC-31-09剪刀臂销轴.part").SystemValue=Diameter_DC_31_09/2/1000+0.011

part.Parameter("D1@草图7@DC-31-09剪刀臂销轴.Part").SystemValue=(107/183)*(2*JuXingGang(1)+LiuJiaoLuoMu_HouDu+LiuJiaoBaoLuoMu_HouDu+0.002+0.007+0.01)

part.Parameter("D1@基准面2@DC-31-09剪刀臂销轴.Part").SystemValue=(107/183)*(2*JuXingGang(1)+LiuJiaoLuoMu_HouDu+LiuJiaoBaoLuoMu_HouDu+0.002+0.007+0.01)

part.Parameter("D1@草图12@DC-31-09剪刀臂销轴.Part").SystemValue=(40/183)*(2*JuXingGang(1)+LiuJiaoLuoMu_HouDu+LiuJiaoBaoLuoMu_HouDu+0.002+0.007+0.01)

part.Parameter("D1@基准面3@DC-31-09剪刀臂销轴.Part").SystemValue=(40/183)*(2*JuXingGang(1)+LiuJiaoLuoMu_HouDu+LiuJiaoBaoLuoMu_HouDu+0.002+0.007+0.01)

part.Parameter("孔深度@草圖17@DC-31-09剪刀臂销轴.Part").SystemValue=(112/183)*(2*JuXingGang(1)+LiuJiaoLuoMu_HouDu+LiuJiaoBaoLuoMu_HouDu+0.002+0.007+0.01)

part.Parameter("孔深度@草图5@DC-31-09剪刀臂销轴.Part").SystemValue=(Diameter_DC_31_09/1000)/2

part.Parameter("孔深度@草图11@DC-31-09剪刀臂销轴.Part").SystemValue=(Diameter_DC_31_09/1000)/2

剪刀臂销轴建模所需要的所有尺寸数据都通过数理逻辑关系赋值完成,这样就可以保证驱动出来的模型符合设计要求。大部分零件尺寸都是通过这种方式参数化驱动出来的,可以使零件与零件之间即使尺寸变化了,也有正确的装配关系。

3.2 设计计算

剪式升降平台是由上百个零件装配而成,如何调节这些零件的关系成为整个系统的关键。通过VB.net写入如何设计计算、模型与模型之间的距离等一系列关系,以及如何通过改变3个基本数值从而达到整个模型的改变,并且保证这些模型符合力学知识。首先简化模型,将复杂的剪式升降平台简化成力学模型,并且对模型进行力学分析,在给予基本的平台最大高度和宽度后,通过力学计算出各个主体部分的长度,计算公式可以作为函数写入VB.net中,以下是力学计算中的部分代码:

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

使用数学几何关系,计算出K点与IJ的距离,在得知这个距离以后,可以为下面的设计使用。这些只是最基本的主体部分,而剪式升降平台的模型中有许多标准件,以及一些用户指定的零件,不会随着外部输入数值的改变而改变,只会通过范围进行选取。

3.3 数据库访问

在剪式升降平台的设计中用到许多标准件,标准件的使用可以提高设计效率,节约成本。通过查看机械设计手册,从中选取合适的零件便可完成相关设计,因此对于标准件的选用也成为系统设计的一个关键,同时用到SQLServer2008这款软件。数据库是存储计算机相关数据的集合,一个完整的数据库应由数据库、数据库管理系统、数据库应用程序、计算机软件和硬件系统以及数据管理员几部分组成[7]。设计过程中往往需要对大量数据进行筛选,工作量大且复杂,如何高效简洁地获取所需数据至关重要。数据库的另一作用是标准数据管理,主要对标准件及固定尺寸模型参数进行存储[8]。使用过程中,通过代码对数据库进行调用,设计者可选择需要的参数型号,直接驱动该类模型生成。以矩形钢为例,以下是与之相关的驱动代码:

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'长边

JuXingGang(1)=myread("B")/1000'短边

JuXingGang(2)=myread("t")/1000'厚度

ExitWhile

EndIf

EndWhile

myread.Close()

con.Close()

该行代码可以大概理解为,建立一个sub过程方便其它程序调用,然后连接数据库,使用select語句从数据库的Table_JuXingGang表格中选取H、B、T(长边、短边、厚度),通过判定语句Val(myread("W_x"))/W_x>1与While循环共同完成矩形钢规格的选取。

3.4 装配模型驱动

在完成前面一系列零件驱动,以及装配位置调整后,可以确保修改尺寸参数不会对装配体的装配关系产生影响,于是就可以进行模型驱动,在输入相应的尺寸参数后,可以驱动出此模型[9]。以下是驱动所用部分代码:

SwApp=CreateObject("SldWorks.Application")

part=SwApp.ActiveDoc

SwApp.Visible=True

SwApp=GetObject("","sldworks.application")

part=SwApp.ActiveDoc

part=SwApp.OpenDoc6(destinationDirectoryName&"\DC-31.00剪式平台.SLDASM",2,0,"",longstatus,longwarnings)

SwApp.ActivateDoc2("DC-31.00剪式平台.SLDASM",False,longstatus)

以上只是打开模型样板的程序,之后通过前面所讲参数化驱动对原模型进行驱动,得到最终符合设计的模型。

3.5 工程图驱动

实际上工程图的驱动与零件驱动如出一辙,都是之前建立好的。由于工程图通过三维模型导出,当模型尺寸发生变化时,工程图也会自动发生变化以与设计相符合,所以就不需要像零件尺寸驱动一样编写程序为每一个零件尺寸赋值[10]。以下是打开工程图的部分代码:

SwApp=GetObject("","sldworks.application")

part=SwApp.ActiveDoc

part=SwApp.OpenDoc6(address_new&Trim;(TextBox_design_id.Text)&"\DC-31-06.00承载平台\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)

正如上文所讲,工程图的打开程序与模型驱动类似,只是增加了AdjustViewScale这个用来调试工程图位置与比例的sub过程,以及一些标注位置的调整,由于程序会自动驱动出除标准件以外所有零件的工程图以及装配图,因此只列举了“耳”这个零件的工程图代码,其它零件类似。

4 结语

本文以知识工程思想为指导,把参数化设计、模块化设计和实例推理思想引入到剪式升降平台的设计中,借助SolidWorks2016软件、SQLServer数据库、VB.net编程语言开发了剪式升降平台参数化设计系统。该系统实现了剪式升降平台的快速设计,实现了资源整合与重复利用,缩短了产品设计周期,具有一定的现实意义。

参考文獻:

[1] 姜文超.剪叉式液压升降平台参数化系统设计及优化[D].济南:济南大学,2015.

[2] 江伟光,武建伟.面向知识工程的产品信息模型[J].农业机械学报,2008(7):133-138.

[3] 彭波,莫堃,王立闻.基于VB和SolidworksAPI的零部件参数化设计方法[J].东方电气评论,2016(1):2-5.

[4] 李晓光,张链.基于VisualBasic的Solidworks二次开发[J].电大理工,2012(3):38-40.

[5] 田文涛,贺小华.基于VB技术的SolidWorks二次开发与应用[J].计算机工程与科学,2009,31(7):65-67,76.

[6] 吕正刚,刘恒丽,余竞超.基于模块化设计思想的电冰箱概念设计[J].包装工程,2011(8):34-35.

[7] 江凌,杨平利,杨梅,等.基于ADO.NET技术访问SQLSever数据库的编程实现[J].现代电子技术,2014(8):95-97.

[8] 殷国富,尹湘云,胡晓兵.SolidWorks二次开发实例精解[M].北京:机械工业出版社,2006.

[9] 鲍东,仲梁维.利用参数化设计技术的起重机快速设计研究[J].现代制造工程,2014(2):2-4.

[10] 江洪,魏峥,王涛威.SolidWorks二次开发实例解析[M].北京:机械工业出版社,2004.

(责任编辑:何 丽)

猜你喜欢

参数化设计二次开发
浅谈基于Revit平台的二次开发
浅谈Mastercam后处理器的二次开发
西门子Easy Screen对倒棱机床界面二次开发
基于SolidWorks的零件建模参数化设计应用简析
基于CATIA的飞机复杂结构件三维参数化设计①
基于Pro/E二次开发的推土铲参数化模块开发