FORUM论坛50航空制造技术·2013年第7期本文对点数据的提取过程及CATIA的相关操作命令进行了细致的分析,整理出了数据自动提取的构思。文中对CATIA提供的关于点数据提取的二次开发接口函数的功能进行了探索,找出了数据提取的最佳函数及途径,最终,通过VB完成了数据提取程序的编制。上海交通大学机械与动力工程学院 张守银CATIA模型中测量数据的提取技术RefineMeasurementDatainCATIAModel本文对点数据的提取过程及CATIA的相关操作命令进行了细致的分析,整理出了数据自动提取的构思。文中对CATIA提供的关于点数据提取的二次开发接口函数的功能进行了探索,找出了数据提取的最佳函数及途径,最终,通过VB完成了数据提取程序的编制。数据提取的第一个关键点:获取被提取数据点的关联面、关联线/轴线。手动采集方向矢量时,可以目视并选取被测点的关联元素(线、面),但计算机如何判断被测点的关联元素呢?文中分析了获得面点的方向矢量关联面的方法及获取孔点的方向矢量关联线/轴线的方法,从而为点数据的自动提取奠定了基础。数据提取的第二个关键点:自动寻找、判断点的测量矢量方向(即三坐标测量机的测量方向)。点沿直线可以有相反的2个矢量方向,文中随着航空制造技术的不断发展,国际航空市场的竞争将日趋激烈。当今,产品质量已从竞争的“获胜标准”演变为竞争的“资格标准”,而且,飞机具有高安全、高可靠性的要求,因此,航空产品的质量异常重要。三坐标测量机作为现代化先进检测设备之一,被广泛地应用到飞机零部件及其工装的检测中。需要使用CMM检测的零部件数量正在急剧增加,以上海飞机制造有限公司的工装零部件的检测为例,2010~2012年期间用CMM检测的零部件数量多达2000多件(不包括飞机本体件的测量数量)。每件产品的测量都需要编制坐标测量机测量计划,其中包括产品被测点的坐标值及方向矢量值的提取工作。当被测点数量众多的时候,数值的提取将花费很多时间,通常提取100点的数值需要1h左右。数值提取工作在CATIA操作平台中进行,提取过程是一系列的反复重复操作,而CATIA为用户提供了VisualBasic、VC++二次开发接口(AutomationAPI)[1],其中VC++就包含2种方法[2],这使点数值的自动提取成为可能。点数值自动提取可以提高工作效率,在生产任务紧迫的情况下其效果尤为显著,可以缩短零部件的交付周期。张守银上海飞机制造有限公司高级主管,高级工程师。毕业于南京航空航天大学,现正在职读上海交通大学工程硕士。主要从事民用飞机装配工艺、飞机工艺装备质量控制等方面的工作。未来测量FutureMeasurement2013年第7期·航空制造技术51提出了判断正确矢量方向的方法。本文还叙述了数据提取过程中辅助设置被测点的方法以实现被测点的快速、准确、方便的设置,也对通过VB语言实现坐标转换的方法进行了说明,这些方法都来自于工作实践中的摸索与思考。CMM检测点数据常规获取方法介绍点数据常规获取方法(需要CATIA具有高级机械加工模块)流程如图1所示。1设置被测点使用CATIA的“点”命令,选取孔、曲面、平面、轴线等,在数模上建立需要测量的点。重复上述操作,完成所有点的设置。2打孔点(1)切换到CATIA的高级机械平台,双击CATIA结构树上的“PartOperation”以弹出窗口。点击弹窗按钮“Machine”,然后点击按钮“5-axisMachine”,点“确定”。点击按钮“ReferenceMachiningAxisSystem”,并确定原点及X、Y、Z轴的方向(点弹窗中的原点/轴,再在数模中选择元素作为原点/轴),点“确定”关闭弹窗。(2)点CATIA的工具条按钮“SpotDrilling”,点数模,弹出点钻窗口。点弹窗图形上的“ClicktoSelectaPartSurface”,然后在数模上选取确定方向矢量的支撑面,点按钮“OK”返回(或鼠标双击数模空间空白处返回)。点弹窗图形上的“ClicktoAddPosition”,并在数模中选取上述中设置的点,双击数模空间空白处返回。右键点击“FixedAxis”,在弹出菜单中点选“NormalToPSAxis”,以使方向矢量垂直于支撑面。点击弹窗图形上的方向箭头“ClicktoInverttheToolAxis”,并观察数模窗口中的矢量方向指示箭头,确保矢量方向指向产品内部。在弹窗中切换第1个复合窗口,然后取消选择框“OutputCYCLEsyntax”中的勾选,并将“Approachclearance”设置为0。(3)重复步骤(2),逐个完成所有点的方向矢量的设置。3数据输出及选取点击CATIA工具条命令“GenerateNCCodeinBatchMode”以输出文本文件,然后用记事本打开输出的文本文件,并从中挑选出需要的坐标、矢量数据。总之,手工采点的整个过程有很多重复、繁琐的工作,特别是当采点数量多时,工作量很大。CMM检测点数据自动提取技术的实现1检测点数据自动提取流程分析读取/识别数模几何图形集上设置的被测点,分析点并找出其关联元素(支撑元素),根据属性判断关联元素的类型(面、圆、椭圆)。根据面、圆、椭圆的性质,分别绘制确定点方向矢量的直线。通过相关接口函数得到原始坐标系下点的坐标值及方向矢量值,通过坐标转换运算,获得指定坐标系下的坐标值及方向矢量值。按CMM需求的格式输出文本。以上过程由计算机自动完成。流程见图2。2点数据自动提取关键功能的实现(1)提高设置被测点的效率。通过Catia.StartCommand(点)、Catia.StartCommand(轴线...)、Catia.StartCommand(填充)语句,实现建立被测点时,智能打开CATIA的建面点及孔点窗口,辅助被测点的建立,以快速完成被测点的设置。此外,可以增加点距限制功能,在设置面点时,通过HybridShapes.Item(i).Offset.Value自动限制新设置点与上一个设置点的距离,从而确保设置的点距满足相关规范的要求。“点”、“轴线...”、“填充”等来源于CATIA的“自定义”窗口中的“命令”中的“所有命令”,当然,在此窗口中自定义的在数模上设置被测点(在CATIA的线框和曲面设计操作平台环境中)转换操作平台为高级机械,并进行打孔点操作通过“输出NC代码”操作输出包含点坐标及方向矢量的文本文件,最后从文件中选出数据图1常规点数据获取方法流程图ギギ图2数据提取流程图读几何图形集点过点作圆垂线读点结束数据输出得到垂线指向物体内部的方向转换点坐标及方向到当前坐标系下取原始坐标系下点法向量(即垂线方面向量)取原始坐标系下的点坐标值判断点类型过点作面垂线找椭圆点的孔作此孔的轴线椭圆点(斜孔)圆点面点否是FORUM论坛52航空制造技术·2013年第7期别名也同样有效。(2)确定提取程序能识别的确定被测点方向矢量的关联元素。让程序识别出被测点的确定点方向矢量的关联元素是提取技术的关键之一。CATIA建点有如下特点:被建点与数模零件不属于同一零件时,建点时CATIA会自动提取点的关联面、线等到被建点所在的零件中。利用此特性,在数模产品中新建零件clsj.CATPart(程序自动完成),将所有被测点全部建立在此零件中(即在建点时激活该零件),如图3所示,“点.1”是手工建立的,“曲面.1”是CATIA自动产生的辅助元素。(3)使程序在CATIA或DELMIA下都能运行。使用下列语句,实现程序在CATIA或DELMIA环境下都能运行。其中“If”语句很关键,当你没打开CATIA,而打开DELMIA时,“If”语句的条件的判断将为真,此后,将执行“Setcatia=GetObject(,DELMIA.Application)”[3]语句,而使程序与DELMIA建立通信联系。DimcatiaAsObjectSetcatia=GetObject(,CATIA.Application)IfcatiaIsNothingOrLen(catia.Caption)=0ThenOnErrorResumeNextSetcatia=GetObject(,DELMIA.Application)EndIfSetGetCATIA=catia(4)确定方向向量。首先,要建立确定方向向量的直线,相关接口的函数为AddNewPointOnPlane、AddNewPointOnSurface、AddNewPointOnCurveWithReferenceFromDistance及AddNewLinePtPt、AddNewLinePtDir等。其次,进行方向向量方向的判断。通过方向指引线末端点到数模实体的距离判断方向向量的方向。实现方式:通过端点绘制半径为0.0005mm的球面,然后通过函数catDistanceComputationTypeAgainstAll计算球到数模的距离,此距离与指引线长度进行比较后可确定被测点方向向量的正确方向;此外,也可以利用孔轴线的开始点、中点、结束点判断方向,使用接口函数GetPointsOnCurve可以得到轴线的上述3个点的坐标值,计算被判断点到轴线开始点的距离,距离大者为需要的确定方向向量的点。最后,可以通过接口函数GetXVal、GetYVal、GetZVal分别获取指引线相对于原始坐标系的方向向量的X、Y、Z方向的双精度分向量值,此方向代表坐标测量机测针的运行方向,但其坐标系是原始坐标值。(5)进行坐标转换。使用CATIA的接口函数“GetPoint”、“GetAxisSystem”及“GetXVal”、“GetYVal”、“GetZVal”可以让程序自动得到点的坐标值及方向矢量值。由于使用接口函数得到的点坐标/方向向量值都是相对于原始坐标系的,因此,需要对坐标进行转换,将原始坐标系坐标值转换为指定坐标系下的坐标值。坐标转换方法:针对数模零件“Part1”,设O轴系统为零件“Part1”的原始坐标系,O1轴系统为零件“Part1”的轴系统1,Xo、Yo、Zo与X1、Y1、Z1分别为O1轴系统的原点Q1、空间点P在原始坐标系下的坐标值,目标是求点P在轴系统1下的坐标值X、Y、Z。通过VXx=CATIA.ActiveDocument.Part.Parameters.Item(Part1\轴系统.1\X轴\X).Value语句(注:Part1\轴系统.1\X轴\X是根据CATIA中树结构中的轴系统参数构建的,需与CAITA的用户界面语言相符,当CATIA的用户界面语言选择英语时,则应为Part1\AxisSystem.1\XAxis\X)可以得到零件“Part1”的“轴系统.1”的X′轴方向的单位向量沿原始坐标系X轴的分向量VXx。同理可得Y′轴方向的单位向量沿原始坐标系X轴的分向量VYx。从而可求出“轴系统.1”各轴方向的单位向量在原始坐标系上的各分向量为:VXx、VXy、VXz、VYx、VYy、VYz、VZx、VZy、VZz。Xo、Yo、Zo与X1、Y1、Z1可通过CATIA接口函数直接获取。分别求向量O1P在原始坐标系下的各分向量[4],可得下列方程组:VXx+VYx+VZxVXy+VYy+VZyVXz+VYz+VZzXYZ=X1−XoY1−YoZ1−ZoVXx+VYx+VZxVXy+VYy+VZyVXz+VYz+VZzXYZ=X1−XoY1−YoZ1−Zo。求解上述方程组,可以得到P点从原始坐标系转换到轴系统1后的坐标值X、Y、Z。将坐标转换编制成子函数,以便于坐标转换时调用。图3建立新零件让CATIA自动建立关联面zyx点1曲面1未来测量FutureMeasurement2013年第7期·航空制造技术53(6)点的方向、取点路径方向及方向向量的调整。