1 前言
随着塑料门窗的应用不断普及,对其设计质量、设计效率的要求越来越高。尽管目前出现了一批二维的塑料门窗辅助设计软件,但是在产品正式完成以前,二维塑料门窗辅助设计软件对产品的设计效果及制造、装配过程不能有一个全面的认识。如果能够判断设计是否合理可行,甚至能对制造、装配工艺性的做出评价,则能不断改进设计和工艺方案,获得理想的设计效果。采用三维设计软件,可以避免二维设计软件的局限性,达到直观的设计和虚拟装配效果。不但可以为生产制造提供更加详细的工艺数据和装配信息,而且便于CAD/CAM的信息集成。
我们以UGS公司的Solid Edge软件为平台,利用软件强大的特征造型技术、变量化设计技术和ActiveX Automation技术,以面向对象的Visual Basic语言为开发工具,开发了基于Solid Edge的塑料门窗设计系统。图1为系统的主界面。
图1 系统主界面
2 系统的总体结构与组成
如图2所示,系统主要包括工程管理、型材管理、窗型设计、优化下料和帮助信息等模块。主要模块的功能如下所述。
2.1 工程管理模块
当首次进入系统时,要根据客户需要,建立工程信息。其中应包括客户名称,建立日期,合同编号等常规信息。还应根据客户要求,为整个系统选择型材的厂家, 以保证整个工程颜色、风格、款式的一致性。根据设计要求保存所选择、设计的窗型及数量。保存窗型中各个部件的详细信息,如V口位置、方向,装配关系,窗型类型等。如果不是第一次进入系统,则可以选择新建或者打开以前的工程。
2.2 型材管理模块
对原材料厂家所生产的型材进行管理分类,以便于工程模块进行选择。型材库的创建与管理是进行窗型设计以及优化下料的前提之一。型材库存储各种型号型材及相关信息,以及进料、出料的管理。
2.3 窗型设计模块
是系统的核心内容,主要是通过对Solid Edge软件的二次开发,进行各种窗型的设计、添加或删除窗型零件、读取窗型特征信息以及进行窗型零部件装配等。
2.4 优化下料模块
当工程中所有窗型设计完毕,要进行下料之前,根据窗型中各个零件的尺寸,对其下料顺序进行优化,并使余料最小,并生成最优的下料顺序。优化下料模块可直接向型材库存取有关型材,通过从库中选取型材进行下料优化,是材料统一调度的核心。
3 关键技术问题
3.1 Solid Edge对象层次结构
Solid Edge对象之间一般通过对象层次结构的形式互相联系。Solid Edge 的对象层次结构可以描述为自上而下的树结构,其根节点对象通常是一个应用。要访问应用中的一个对象,必须从层次树中的顶部向底部遍历,直到找到需要访问的对象。Solid Edge拥有四种工作环境:零件(Part)、钣金(sheet Metal)、装配(Assembly)和工程图(Draft),其中 ,零件和钣金共用一个对象层次结构,而装配和工程图分别拥有各自独立的层次结构。每个文档对象都包含了各自的属性与方法,这些属性有包含很多子属性和方法。对象与方法的调用关系与使用Solid Edge建模的过程是一致的,在二次开发时只要按照设计的思路,分步调用适当的对象和方法,就可以实现所需要的功能[1]。
3.2 特征信息的提取和匹配
塑料门窗CAD系统的基础是变量化设计。系统首先创建了型材和常用窗型的参数化模型,用户可以通过选择不同的设计参数完成常用窗型的参数化设计。为了提高系统的柔性,增加了窗型编辑模块。在已经生成的参数化模型的基础上,有计算机提取相关特征信息并与窗型知识库相匹配。通过特征的识别,获取用户的输入信息,自动完成窗型零件类型的识别。特征信息提取的主要方法是利用Solid Edge的对象层次结构,遍历相关特征集合,找到实体中的所有特征[2]。利用特征对象的方法,提取特征属性,获得特征的定义信息。例如遍历窗型文件中每个零件,判别出边框和中梃的代码如下:
Set objApp = GetObject(, "solidedge.application")
If Err Then
Err.Clear
Set objApp = CreateObject("solidedge.application")
End If
objApp.Visible = False
Set objDocs = objApp.Documents
If objDocs.Count <> 0 Then
objApp.ActiveDocument.Close (False)
End If
Set objdoc = objDocs.Open(Bpath)
If Err Then
Err.Clear
MsgBox "不能打开所选窗型"
Else
Set objParts = objdoc.Occurrences
For i = 1 To objParts.Count
Set objpart = objParts.Item(i)
llx = Getlx(objpart)
If llx = "xk" Then
Text1.Text = Getedit(objpart)
QDKC = Getedit(objpart)
ElseIf llx = "zk" Then
Text2.Text = Getedit(objpart)
QDKG = Getedit(objpart)
End If
Next i
End If
3.3 装配件的实时编辑
图3为窗型设计模块中窗型编辑主界面。各种窗型实际上是由窗型零件构成的装配件。修改装配件的尺寸是通过修改其中的每一个窗型零件的尺寸进行的。因此,我们需要协调的改变装配件中的每一个零件的尺寸,才能保持装配件整体的装配关系,以及外形不改变,并维持一个完整的整体。每次修改尺寸时,我们要判断每个零件的类别以及其装配关系。修改完以后,必须调用objdoc.Updateall来保存所做的修改。
在Solid Edge装配环境中的自动化接口允许在装配体中添加零部件,这是由零部件集合对象提供的AddByFileName方法实现的。当在装配体中交互放置零件时,可以通过定义零件之间的关系来控制他们的相对位置;可以通过两个集合访问装配关系对象:AssemblyDocument对象中的Relations3d集合和每个零件对象的Relations3d集合。AssemblyDocument对象中的Relations3d集合允许对文档中的所有关系进行遍历,而每个零件对象的Relations3d集合允许对指定零件的关系进行遍历[1]。装配分为点匹配,面匹配,中心线重合,插入,角度等装配关系,我们这里需要采用的是两个点匹配和一个面匹配,来确定两个零件能够垂直贴合。首先是面匹配,通过GetParamRange方法得到一个面某一个方向上的最大值和最小值,就可以得到一个规则面的中点。通过两面的中点,对两个面进行连接。要创建一个连接关系(Connect),则需要调用AddPoint方法。
图3 窗型编辑主界面
3.4 装配关系的获取
为了便于修改和重新生成窗框,必须记录各个零件之间的装配关系,取得装配方式及其关键点或面。首先要取得装配关系集合,在该集合中遍历装配体中的每一个装配信息,及其方法与个数。采用多种方式装配的,一定要注意其匹配的顺序。否则生成的装配关系将无法还原。
3.5 优化下料
采用线性优化的算法,以下料后的余料的总长度最小为目标函数,对型材下料进行全局优化。优化下料的依据来自于窗型设计中窗型的尺寸,优化后的信息存放入优化数据库,此数据库将作为连接CAM 模块的主要接口[3]。
4 结论
塑料门窗CAD系统利用Solid Edge的特征造型技术,实现了塑料门窗的快速参数化建模,并可以进行渲染。这样,客户在塑料门窗生产之前就可以在计算机上看到一个可视化的塑料门窗三维模型,便于作出进一步的决策;对设计人员而言,能够利用Solid Edge软件与其他分析软件的接口,对当前的设计是否最优,甚至是否可行做出判断。从而可以实时改进设计或者工艺,缩短了产品的设计周期,提高产品设计质量。(E-works)