朱悠悠
摘 要笔者通过对某型号电子样机的梳理,总结了其中复用频率较高的特征。通过对腰形草图的封装进行了探讨与研究,并对腰形草图定制过程中遇到的问题,例如腰形草图空间坐标变换、腰形草图自动生成全约束特征、腰形草图GUI图形显示等关键点提出了行之有效的解决方法,最终实现腰形草图的一键式创建,该方法为今后类似草图特征的封装起到了重要的借鉴作用。
【关键词】腰形草图 坐标转换 GUI
在UG的众多功能中,草图功能是最基本,使用频率最高的功能,因此对草图进行二次开发,是提高工作效率的重要方式。笔者通过对某型号电子样机的梳理,腰形草图在机匣类零件中复用频率较高,因此将腰形草图进行封装,得型号设计人员可以根据输入参数大小一键得到所需的腰形草图特征,从而将设计人员从重复的劳动中解放出来,提高了其型号设计的效率。本文详细介绍将腰形草图的封装以及封装过程遇到的技术难点。
1 腰形草图封装关键技术
1.1 腰形草图平面定位
对于UG软件设计人员来说,腰形草图的所有特征在任意空间的一个平面上,即平面XOY上,该平面需要人工进行选取获得,然而,对于任意腰形草图特征来说,其特征同时存在于空间的坐标系XYZ与人工选取的XOY平面上的,因此,需要将腰形草图特征的坐标转换成空间绝对坐标,才能保证成型的腰形草图的几何唯一性。
1.2 三维空间几何坐标变换原理
三维空间几何坐标变换包括三维平移变换、比例变换以及旋转变换,三维平移变化、比例变换是二维情况的直接推广;旋转变换因为可以选择空间任意方向作为旋转轴,因此三维空间旋转变换处理起来较为复杂。与二维变换相似,我们也采用齐次坐标技术来描述空间的各点坐标及其变换,这时,描述空间三维变换的变换矩阵是4×4的形式,由此产生的一系列变换可以用单个矩阵来表示。
1.3 三维坐标变换构造
本文笔者将腰形草图从一个参考坐标系下的位置变换成绝对坐标系下的位置,变换思路具体过程分为以下两步:
(1)平移坐标系oxyz,使它的坐标原点与新坐标原点重合;
(2)进行旋转变换,使两坐标系的坐标轴重合。
2 腰形草图封装方法
2.1 腰形草图封装环境
目前研究所UG使用版本为 NX7.5、腰形草图封装环境需安装对应的开发平台Microsoft Visual 2008以上版本,本文笔者安装的是Microsoft Visual2010,并且配置好UG NX7.5与Microsoft Visual 2010之C#接口信息。
2.2 腰形草图封装步骤
首先,在Microsoft Visual2010中新建一个NX7.5项目。
然后,在新建的项目中设计腰形草图GUI界面(见图1)。
根据GUI界面中填写的参数,在主函数中定义这些参数,并且将其与GUI界面中显示的参数关联。
然后新建一个类文件,并在该文件中定义三维坐标变换函数,在该函数中首先定义当前腰形草图工作坐标系单位矩阵。再根据三维坐标变换构造方法对空间坐标进行定义。然后定义一个腰形草图构建函数,由于腰形草图是由直线与圆弧组成的,因此腰形草图的构建可以分解成直线与圆弧的构建(以下是一段圆弧轮廓的创建代码)。
Point3d startPoint1 = new Point3d(0.0, 100, 100);Point3d pointOn1 = new Point3d(0.0, -100 100);Point3d endPoint1 = new Point3d(0.0, -300, 200); Arc arc1;arc1 = workPart.Curves.CreateArc(startPoint1, pointOn1, endPoint1, false, out startAndEndGotFlipped1); theSession.ActiveSketch.AddGeometry(arc1,NXOpen.Sketch.InferConstraintsOption.InferNoConstraints);
在完成腰形草图轮廓的构建之后,对于腰形草图的每一根轮廓线来说,在腰形草图中必须全约束才能保证腰形草图大小的唯一性,因此,需要对腰形草图轮廓进行尺寸约束(以下是一段圆弧的尺寸约束代码):
//圆弧C1圆心过原点
NXOpen.Sketch.ConstraintGeometry CL1;CL1.Geometry=CKX;CL1.PointType=NXOpen.Sketch.ConstraintPointType.StartVertex;CL1.SplineDefiningPointIndex = 0;//标注C1尺寸NXOpen.Sketch.DimensionGeometry dimC1;dimC1.Geometry = C1;dimC1.AssocType = NXOpen.Sketch.AssocType.Tangency;dimC1.AssocValue = 42;dimC1.HelpPoint.X = 0.0;dimC1.HelpPoint.Y = 0.0;dimC1.HelpPoint.Z = 0.0;dimC1.View =workPart.ModelingViews.WorkView;
对于腰形草图现有轮廓无法进行全约束时,可以通过新建的坐标轴和参考线来辅助其约束尺寸。
最后对该项目进行封装生成yaoxingcaotu.dll文件将其载入在NX7.5中使用就可以通過输入参数来一键式生成腰形草图了。
作者单位
中国航发湖南动力机械研究所 湖南省株洲市 412002