基于NX 二次开发的方向盘分型面自动设计
2023-09-20王齐东仲梁维
王齐东,仲梁维
(200093 上海市 上海理工大学 机械工程学院)
0 引言
模具的分模设计就是将工件分为型芯型腔的过程,型芯型腔的质量取决于分型面的设计。通常分型面设计依赖设计师的经验,利用NX 等三维软件通过拉伸、曲线网格、修剪与延伸等命令手动完成,效率较低。为提高生产效率,方向盘模具分型面设计的自动化、智能化势在必行。
在模具设计自动化方面,学者们在确定拔模方向和分型线的自动提取等方面均进行了研究[1-3]。在自动生成分型面方面,涂小文等[4]根据分型线的凸凹性,将组成分型线的线段按类型分组,对不同组按不同规则生成连续面片,但是该方法在空间曲线较为复杂时效率低,难以准确生成面片;王静等[5]提出了一种根据分模线不同类型、采用对应的模具体积块生成的方法,该实体分模方法的缺点是布尔运算有时无法生成型腔,导致无法分模。
本文针对上述方法的不足,结合企业模具设计经验,在给定方向盘拔模方向及分型线的前提下,提出一种基于规则与实例推理生成压铸模分型面的方法。分型面是基于分型线的形状设计的,分型线先分割离散为基本曲线,然后进行重组,形成拐角实例,通过匹配数据库已有的实例,找到对应的设计方案,形成该拐角的分型面,最后将各个拐角的分型面进行缝合,形成整个分型面。
1 基本方法
分型面的设计是一个“经验性强,理论性弱”的复杂过程[6],而采用基于规则与实例推理的方法能仿照手动制作分型面,可以通过借鉴和总结现有案例,解决分型面的设计困难问题。
压铸模的分型面是根据分型线具体形状进行设计的,利用曲线自身的切线信息(挠曲率等)将其离散分割重组后,一般可分为平面型分型线和空间混合型分型线。图1 所示为方向盘骨架压铸模型及其完整的分型线。
图1 方向盘骨架和分型线Fig.1 Steering wheel frame and parting line
平面型分型面根据平面分型线直接拉伸生成,因此按基于规则的方式设计,其原理是找到一个垂直于该分型线所附着实体表面的矢量,将分型线沿着该矢量进行拉伸。
复杂分型面形状变化很大,设计时无法遵循单一的规则,还需借助基于实例推理的设计方法。其过程是将成功的设计方案以实例的形式存储在实例库,然后在实例库匹配,设计时调用对应的分型面方案,若未检索到相似案例,则需手动完成设计。
基于规则与实例推理的分型面设计流程如图2 所示,步骤为:(1)将完成的设计案例存储在实例库中,提取这一类分型线的形状特征;(2)依据曲线自身形状,结合实例库常见的形状特征,离散分割分型线;(3)借助NX 二次开发技术,将不同形状特征的分型线与设计方案一一对应,分别设计不同的分型面方案;(4)识别分型线是否为平面型分型线,是则基于规则进行分型面设计;否则基于实例推理进行分型面设计,根据形状特征在实例库中匹配实例设计方案;(5)若匹配不到对应方案,则需要人工设计分型面。
图2 基于规则和实例推理的分型面设计流程图Fig.2 Flow chart of parting surface design based on rule and case reasoning
2 关键技术
2.1 NX 二次开发技术简介
Siemens NX 具有强大的CAD/CAM 功能,在模具行业运用广泛,NX 提供了NXOpenC(UG Open API)、NXOpenC++、NXOpen Python、NXOpen.Net 等多种开发方式,如图3 所示。
图3 NX 二次开发架构图Fig.3 NX secondary development architecture
UG Open API 是一系列库函数的集合,API 的核心包含约2 000 个C 函数,通过调用这些函数,用户可以建立、编辑、查询、修改UG 的各种实体对象;开发者通过调用这些函数实现特定的需要;通过UG Open API 编程几乎能够实现所有的造型功能。NXOpenC++面向对象开发、支持编辑等属性行为,几乎支持NX 所有的功能。NXOpen Python、NXOpen.Net 通过共享UG Open API 实现基本功能[7]。
NX 提供UIStyler 用户界面设计、MenuScript菜单脚本语言作为工具。UI Styler 是UG 自带的对话框界面编辑器,根据开发需求快速建立合适的对话框。本文使用NXOpenC 和NXOpenC++结合的方式开发。完整的NX 开发流程如图4 所示。
图4 NX 二次开发流程图Fig.4 Flow chart of NX secondary development
2.2 分割分型线
在分型线上进行点采样,根据分型线上采样点的特征信息,将曲线离散为由基本曲线段构成的多段线,进而得到由多个基本曲线组成的实例。
曲线点采样运用到了API 函数UF_MODL_ask_curve_props,该函数输入曲线的TAG(对象唯一标识符),以及点位于曲线的弧长百分比,输出曲线在该点的坐标、切线、主法线、副法线、挠率、曲率等数据。对这些点提供的数据进行参数分析,采用分割曲线构造器(Divide Curve Builder)进行曲线分割。分型线是连续的无参空间曲线,通过这种方法可以把曲线离散为样条、直线、圆弧等基本曲线,如图5 所示。
图5 分型线离散为基本曲线Fig.5 Parting line discretized into basic curves
曲线上的点采样UF_MODL_ask_curve_props 定义如表1 所示。
表1 曲线上的点采样函数定义Tab.1 Definition of point-on-curve sampling function
分割曲线构造器的伪代码如下:
曲线分割后,将基本曲线组合成实例。图6 所示为基本曲线组合成实例的简图(俯视图),其实例主要包括轮廓形状及其特征点信息。
图6 基本曲线组合的实例(俯视图)Fig.6 Example of basic curves combination (top view)
2.3 实例匹配
基本曲线组合成实例后,需要将其与已有实例进行匹配,这是一个曲线相似度问题[8]。本文采用实例已有特征结合曲线相似距离度量的方式[9],计算待匹配实例与现有实例的相似度,选出相似度最高的实例,并调用对应的分型面设计方案。
已有特征指的是在基本曲线组合成实例过程中,具体是几个数目的圆弧和直线组合成的实例,在实例都有记录,通过比对这些特征,衡量实例之间的匹配程度。
相似距离度量的策略是:实例是没有解析式的曲线,通过采样获得各自离散点集,再将分别代表不同实例的点集归一化处理,计算相似度则为计算经过处理后两个点集中对应点的距离问题。
待匹配实例曲线记为
同样的,已有实例曲线记为
则定义待匹配曲线和现有实例的相似度为
2 种方法各自占比权重为50%,最后计算得到最佳匹配实例。
2.4 分型面生成方案的设计
分型面的设计主要围绕以下经验原则进行:(1)尽可能减少不规则曲面;(2)避免薄铁;(3)有足够的平面承担分模压力。
在设计方向盘分型面时,并非所有的准则都能得到满足,在实际设计中,经常是采用拉伸的方式进行分型面的设计。表2 是部分实例及其对应的设计方案。
表2 部分实例及其设计方案Tab.2 Some examples and their design schemes
基于NX 二次开发技术,提供各种实例需要的设计方案,逐一将组合好的单个分型线段在实例库中匹配,选用合适的设计方案,然后将所有生成的单个分型面进行相应的修剪缝合,最后完成分型面的设计。
3 运用实例
基于本文所提出的方案,以C++为开发语言,NX10.0 为平台,借助VS2012 开发了一个方向盘压铸模分型面设计系统。图7 所示是利用菜单脚本(MenuScript)自定义的菜单,不仅与NX 无缝集成,而且可以方便调用所开发的程序。
图7 自定义菜单Fig.7 Custom menu
对于图8 的方向盘压铸模分型面设计,模型为方向盘骨架,具有较大的高度落差,且有多个凸台夹杂在上部分型线,按照传统设计需要对其进行逐一拉伸修剪操作。
图8 方向盘骨架图Fig.8 Steering wheel skeleton
借助本设计系统,在自定义菜单调用开发好的dll 程序,选择分型线就能完成分型面的设计。程序设计好的分型面如图9(a)所示,手动制作的分型面如图9(b)所示。
图9 2 种方式的分型面对比Fig.9 Comparison of two types of parting planes
4 结论
本文基于NX 二次开发,设计了一套方向盘压铸模分型面设计系统,可以提高方向盘压铸模模具设计的效率,有利于实现模具CAD 智能化设计。针对压铸模分型面自动化的设计有了一定进步,但实例库只能储存已有实例类型,对没有的实例类型还不能自我学习,加之压铸模形状的复杂性,使得本设计程序仍存在局限性,因此实现压铸模自动化设计还需不断完善。