基于VB的Solid Works自动装配技术研究
2013-10-22易炳刚
易炳刚,汪 雪
(1.深圳市特种设备安全检验研究院,广东 深圳 518029;2.上海大学 管理学院,上海 200444)
1 Solid Works二次开发技术
1.1 Solid Works二次开发机理
Solid Works提供了二次开发接口API函数(Application Program Interface应用程序接口),能使用户在该软件的基础上开发出新的功能模块,满足特定的需求[1]。为了能应用高级语言通过调用API成员与Solid Works应用程序的对象成员进行交互,首先应声明和实例化Solid Works API最高层对象以及声明和实例化一个文档对象,一旦应用程序对象和文档对象被实例化,这些API的对象成员就可以被访问了。Solid Works API结构图如图1所示。
图1 Solid Works API结构图
在进行Solid Works二次开发过程中可以通过录制宏获得相应的命令函数代码,宏代码与Visual Basic代码十分相似,只需要将其稍作变动就可以应用在Visual Basic代码中。因此应用Visual Basic对Solid Works进行二次开发有着得天独厚的优势。
1.2 Solid Works二次开发方法
Solid Works参数化设计主要有3种方法:①利用Solid Works添加“配置”生成一组新参数下的模型;②在内嵌的Excel工作表中指定参数,通过编辑系列零件表,即可生成系列零件;③通过Solid Works提供的API接口函数,利用高级语言(如Visual Basic、Visual C++、Del phi等)编写相应程序实现参数化设计。
利用Solid Works添加“配置”需要建立大量的模型,然后通过压缩放置在装配体中。此种方法在进行零部件自动装配时会出现整个装配体失效现象,复杂的装配体一般不采用此种方法。与添加“配置”相比内嵌Excel表存在明显优势,它只需将不同零部件的结构尺寸添加到装配体生成的Excel表中,但是对于结构比较复杂的零部件需要大量参数,此方法比较适合标准零部件模型的参数化设计。而利用高级语言对Solid Works进行底层二次开发,可以实现API应用程序接口驱动Solid Works本身自动建模、装配。且利用高级语言编辑的人机界面很容易与设计者进行交互,并且通用性、灵活性较好,适合专业CAD系统的参数化设计[2]。
2 自动装配的关键技术
自动装配过程主要包括以下几个步骤:新建装配体、插入零部件;添加配合关系;检查干涉;完成装配并保存。自动装配流程图如图2所示。
2.1 新建装配体、插入零件
开始自动装配之前需激活Solid Works文档、新建装配体文档,利用sw App.ActiveDoc来激活Solid Works文档,s w App.New Assembly()新建装配体文档。向装配体插入零部件之前,必须将该零部件装入内存,否则无法将零部件插入装配体。首先利用Open Doc6函数先将要插入的零部件打开即装入内存,再利用Add Component函数将零部件添加到装配体中,然后再利用函数Close Doc将其关闭并回收到内存空间。
图2 自动装配流程图
2.2 选择配合元素[3]
在实现装配的过程中,需要选择相互配合的元素,主要有以下3种方法:①在设计零件阶段添加配合基准面、基准轴等,以便在装配的过程中直接使用,此方法操作简单,但适用范围较窄;②利用零部件在装配体中的位置确定要配合元素的坐标,利用坐标选取,此方法需精确计算配合元素在装配体中的空间坐标,对于形状简单的零部件比较容易实现,不适用于形状复杂的零部件;③通过编写程序遍历零部件(组件)的所有元素(线、轴、面等)并选择已命名面的程序,此方法适用所有装配过程,通用性灵活性较好。本文主要研究第三种方法。
为了能实现遍历Solid Works中的几何体,必须理解Solid Works使用的边界表示模型(BREP)以及API如何表示这些对象。Solid Works API使用了两种途径来表示BREP模型[4]:①拓扑对象暴露的方法用于操作模型中所有几何体的边界;②几何对象暴露的方法用于操作拓扑包围的几何形体的实际数据。Selection Manager管理是Solid Works用户界面中一个被选中对象的对象接口。Solid Works中的每个文件都有自己的Selection Manager属性,这些属性可以通过API函数来访问。Set Sel Mgr= Mod Doc.Selection Manager()。通过程序判断选择的面是不是需要装配的面,如果是需要装配的面通过b Ret=Face.Select2(Tr ue,0)函数选择该面,并返回该面被选中的信息。
实现自动装配不仅仅要能够选择装配元素,并且要实现同时选择两个装配元素,只有这样自动装配才能顺利实现,否则无法进行装配。解决该问题需要利用选择函数的 b Ret= Face.Select2(Tr ue,0)和s w Model.And Select ByID语句,前者是返回选择的面,后者是再选择一个要装配的元素这样才能保证两个面同时被选中。值得注意的是利用s w Model.And Select ByID函数选择组件时,要将组件的名称赋给该函数,在Solid Works装配体中所添加的零件系统会自动给所加入的零部件添加一个序号(如:圆柱一-1),所以完整的组件名称为“零件名称-‘序号’”+“@”+“装配体名称”。
2.3 添加配合[5]
配合关系是指需要进行装配的零部件被赋予了一定的约束关系(共线、平行、同轴、相切等),这些约束关系只对于特定的几何实体组合有效。在API中使用Add Mate3()函数实现零部件之间的配合,并定义了20多种装配关系以及6种相应的对齐类型。
3 应用实例
以带式输送机驱动滚筒为例,具体说明基于VB的Solid Works自动装配的过程。在带式输送机驱动滚筒的装配过程中要实现轮毂与两个胀套之间圆柱面的同轴心、面与面的重合以及面与面的锁定配合,胀套与轴的面与面的同轴心、面与面的重合以及面与面的锁定配合,即可完成装配。
本实例使用了遍历命名面程序函数与选择装配面函数:Function On Face Traverse()//遍历并命名面函数、Function Select Component FaceBy Na me()//选择已命名面函数。
函数OnFaceTraverse通过Component的Get Body方法获得实体Body,利用Body的Get First Face获得Face,使用Get Next Face方法获得其他Face,并通过Selected FaceProperties函数给遍历过的面进行命名,以便装配选择使用。Select Component FaceBy Name函数的原理与On Face Traverse函数类似。
滚筒壳、胀套以及轴自动装配的具体过程如下:
自动生成的装配体如图3所示。
4 结论
以VB为开发语言,应用Solid Works API接口技术对Solid Works进行二次开发,应用遍历面技术可实现零部件的精确自动装配,从而可实现机械产品的参数化设计,提高设计质量和效率。
图3 自动生成装配体
[1]叶炜威.余才佳.Solid Works2006实体建模与二次开发教程[M].北京:国防工业出版社,2006.
[2]张亮有.文茂堂.桥式起重机运行机构三维参数化设计研究[J].陕西科技,2009(2):122-123.
[3]江洪.魏峥.王涛威,等.Solid Works二次开发实例解析[M].北京:机械工业出版社,2004.
[4]Solid Works公司,叶修梓,陈超祥.Solid Works高级教程:二次开发与API[M].杭州新迪数字工程系统有限公司,译.北京:机械工业出版社,2007.
[5]殷国富.尹湘云.胡晓兵.Solid Works二次开发实例精解·冲模标准件3D图库[M].北京:机械工业出版社,2006.