三维引擎AnyCAD在坐标测量软件开发中的应用研究

2021-07-30 09:13:10鲍晨兴王锴磊郭天茂
测控技术 2021年7期
关键词:数据处理可视化解析

鲍晨兴, 王锴磊, 郭天茂

(北京航天计量测试技术研究所,北京 100076)

三维坐标测量软件是测量仪器与检测人员之间的人机交互接口,软件一般具有设备控制、模型导入、数据显示、数据处理、逆向建模等功能[1-3],三维坐标测量软件既是数据采集、处理应用软件,也是多元化检测系统的集成平台和信息展示的窗口。国内军工行业各大主机厂所使用的高端坐标检测设备大多数仍然依靠国外进口,配套的坐标测量软件也基本是国外的商业软件,价格昂贵,存在信息安全隐患,无法定制开发,不能满足工业互联网和车间数字化的发展需求,因此亟需开发具有国产自主知识产权的通用型坐标测量软件。

国外的商业化三维坐标测量软件如NRK公司的Spatial Analyzer、InnoveMetric公司的PolyWorks、3D System公司的Geometric等在几何检测领域有广泛的应用[4],它们均是通用型的坐标测量软件,检测功能较完善,能够兼容多种仪器设备,虽然提供二次开发接口,但二次开发接口的功能有限,对国产设备不能兼容。随着中国制造业的快速发展,国内高校、研究机构也进行了三维坐标测量软件的开发[5],常用于坐标测量软件开发的三维引擎有ACIS、HOOP、OpenCASCADE、OpenSceneGraph等[6-8],ACIS和HOOPS属于商业库,价格昂贵,系统庞大,开发上手比较困难;OpenCASCADE属于开源库,虽然免费,但是相关资料较少,稳定性较差,开发起来也很困难。目前国内还没有成熟稳定的通用型坐标测量软件,国内现有的测量软件一般由测量仪器设备厂家定制开发,数据处理功能不够完善,无法兼容多种仪器设备,不具备通用性。

AnyCAD Rapid SDK(以下简称AnyCAD)是一个包含三维几何造型、图形显示、数据管理等模块的综合三维图形平台,AnyCAD核心功能基于C++实现,由几何造型、显示引擎、数据管理和交互框架组成,在开发接口上又分为AnyGeom几何造型模块和AnyViz三维显示模块[9]。本文采用AnyCAD搭建坐标测量软件的基础框架,实现三维模型导入和解析、三维显示和人机交互等功能。检测数据处理时借助AnyCAD良好的交互功能,实现形位公差的构建和测量结果的显示。

本文旨在搭建一款通用型的坐标测量软件平台,能够连接多种国产和进口的测量仪器和设备,具备良好的三维显示交互和完善的数据处理功能。通过研究,验证了基于AnyCAD引擎快速搭建三维坐标测量软件的可行性,为通用型三维坐标测量软件的国产自主化提供有力的支撑,为军工行业测量数据信息安全提供有力的保障,为车间实现测量仪器的统一管理和多种设备互联等目标做好准备。

1 三维坐标测量软件的系统设计

三维坐标测量仪器种类繁多,常见的有三坐标测量机、激光跟踪仪、经纬仪、激光雷达等[10],每类测量仪器的测量原理不尽相同,但测量数据的类型基本一致,均为三维坐标点。三维坐标测量软件的测量数据均源于此类测量仪器,坐标测量软件一般具有三维可视化功能,可以实时显示测量数据[11];具备多种格式的数据导入功能,可以实现CAD模型的导入和不同设备测量数据的导入;具有通用的程序接口,便于连接多种设备;具备完善的数据处理功能,可以进行三维几何重建、尺寸测量、公差评价、模型匹配等。

1.1 系统组成

本文研究的三维坐标测量软件的主要功能分为以下4部分:三维可视化及交互[12]、设备管理及数据采集、CAD模型导入及几何解析、测量数据处理,具体如图1所示。

图1 三维坐标测量软件组成原理

1.2 软件架构

本文开发的三维坐标测量软件是基于Windows操作系统开发的WinForm类型应用程序,采用模块化设计方便更新和维护,主要包括三维显示交互模块、三维几何造型模块、仪器接口模块、数据处理算法模块等,如图2所示。

图2 三维坐标测量软件架构

2 软件功能模块设计

2.1 CAD模型导入及解析

CAD模型是零件加工制造的基础,在三维坐标测量软件中CAD模型主要有以下两种作用:① 利用CAD模型进行测量路径规划;② 测量数据与CAD模型进行比对从而计算误差。CAD模型数据中不仅包含结构化的数据如三维点坐标,也包含几何信息如直线的方向、平面的法向等信息,对CAD模型进行几何解析就是获取所有的数据信息,以便于后续的测量和计算。

AnyGeom几何造型引擎具备几何造型和模型解析的功能,模型解析的原理如图3所示,从CAD模型上可以获取其包含的所有几何形状的解析表达。

图3 CAD模型解析原理

2.2 三维可视化原理

三维可视化显示是采用AnyViz显示引擎,其原理如图4所示,待显示的物体通过SceneNode类进行实例化,通过Geometry、Shape等相关类来描述形状,通过Material类来描述外观、材质,通过Matrix、Transform类来管理物体位置及观察视角。

图4 三维可视化原理

测量点数据三维可视化的代码如下,其中mRenderView是AnyViz渲染器(以下简称渲染器)的实例对象。

var material =PointsMaterial.Create("point-material");//创建显示的外观

material.SetPointSize(2.0f);//设置显示点的大小 material.GetTemplate().SetVertexColors(true);

var geometry = GeometryBuilder.CreatePoints(new Float32Array(mPositions),new Float32Array(mColors));//通过点数据创建几何对象

var node = new PrimitiveSceneNode(geometry,material);//通过几何对象创建显示节点

mRenderView.ShowSceneNode(node);//显示节点

2.3 测量数据处理

测量数据为离散的三维坐标点,通过数据处理才能得到测量结果。数据处理功能是利用测量点数据进行几何形状重建、距离计算、角度计算、投影、相交等。

2.4 测量设备管理

三维坐标测量仪器采集的数据一般均为三维坐标点,因此可以通过设计统一的数据接口实现从不同的测量设备采集测量数据。测量设备生产商一般会向使用者提供用于二次开发的SDK。利用这些SDK可以通过软件接口连接设备并获取测量数据,然后根据数据接口的格式进行转换,就可以将数据导入到三维坐标测量软件中。

3 软件的开发与实现

本软件基于Windows10 64-bit系统,采用Visual Studio2017进行开发,利用AnyCAD SDK实现三维显示、交互操作及模型导入,图5为三维坐标测量软件主界面,主要包括软件功能工具栏、设备与数据管理区、三维可视化显示与交互区、仪器操作区等。

图5 三维坐标测量软件操作界面及主要功能展示

3.1 三维可视化数据管理及人机交互的实现

三维可视化数据管理是指对创建的测量数据、导入的几何模型等进行显示、隐藏、删除等操作。渲染器中的每个显示节点可以设置唯一的id,可以通过id从渲染器中获取某个显示节点,从而进行管理操作。本文创建字典类型对象Dictionary m_displayNodes用于存储已创建的数据,其中string类型数据代表节点数据的名称,uint代表节点数据在渲染器中的id。创建显示数据的流程如图6所示。隐藏、删除操作是通过名称获取显示节点的id,再通过id从渲染器中获取节点对象,最后执行隐藏、删除操作。

图6 可视化数据管理流程图

人机交互是通过用户输入(鼠标、键盘等)实现对显示数据的操作,如旋转、平移、缩放、拾取等。其中拾取操作是测量数据处理时的必要功能,本文设计了pickDisplayInfo函数用于响应渲染器的选择事件。

public void pickDisplayInfo(PickedItem item)

{ switch (item.GetShapeType())

{ case EnumShapeFilter.Vertex:

//处理函数;break;

case EnumShapeFilter.Face:

//处理函数;break;..}}

其中,PickedItem对象包含了被选中的节点信息,如节点的几何类型、id等,然后通过id获取数据并处理。

3.2 CAD模型解析的实现

导入CAD模型是为了获取待测零件各种几何参数的理论设计值,借助AnyGeom几何造型引擎可以实现对STP和IGES格式的三维模型导入,导入后得到TopoShape类型的对象,通过GetTopoShape()方法可以得到所有几何拓扑结构和几何参数,GetChildren(EnumTopoShapeType)方法可以获取指定类型的子拓扑结构的对象列表,比如获取一个体的所有边,一个边的所有点等。通过TopoShape:FindChild()方法可以获取指定索引和类型的子拓扑对象。模型解析的代码实现如下。

var shape = StepIO.Open(file);

TopoShape totalshape = shape.GetTopoShape();

TopoShapeList edgeList = totalshape.GetChildren(EnumTopoShapeType.Topo_EDGE);

foreach (TopoShape edge in edgeList)

{TopoShapeList vertexList=edge.GetChildren(EnumTopoShapeType.Topo_Vertex);

foreach (TopoShape vertex in vertexList)

{ … //处理数据} }

通过以上方法可以从CAD模型中获取测量目标的理论参数。图7为CAD模型拾取某个面获取其几何解析参数的界面,信息包括原点坐标和法线方向。

图7 CAD模型获取几何解析参数

3.3 多种设备兼容的实现

分别选取Leica激光跟踪仪AT960和北京航天计量测试技术研究所研制的调频激光雷达扫描仪,作为国外测量设备和国产设备的代表,以此验证多设备兼容的可行性,图5中右测区域即为两种仪器的操作界面。

设计了测量数据接口函数addSinglePoint(string pointname,double x,double y,double z),其中包含测量点名称和三维坐标值。设计了设备管理类Class_Device用于管理不同的测量仪器,该类包含设备的操作界面、设备实例对象和设备名称等属性。Leica激光跟踪仪提供的SDK为LMF.Tracker.Connection,通过其MeasurementArrived事件响应函数可以获取测量点的三维坐标值;调频激光雷达提供的SDK为LaserRanderDLL,通过其sendSingleMeas事件响应函数可以获取测量点的三维坐标值。将测量点的三维坐标值再添加自定义名称,调用addSinglePoint函数即可将测量数据传入测量软件中。

public class Class_Device

{ public Form_Device _formDevice;

public Device _device;

public string _name; }

4 结束语

本文将AnyCAD三维引擎应用于三维坐标测量软件的开发,通过AnyGeom几何造型引擎实现CAD模型的导入及解析,通过AnyViz显示引擎实现测量数据和数据处理结果的显示,开发了一款通用型三维坐标测量软件,具备良好的三维可视化及人机交互、模型导入与解析等功能,同时能够兼容多种测量仪器设备。通过研究,验证了基于AnyCAD平台快速搭建具有国产自主知识产权坐标测量软件的可行性,并验证了对国内外坐标测量仪器同时兼容的可能性。

猜你喜欢
数据处理可视化解析
基于CiteSpace的足三里穴研究可视化分析
认知诊断缺失数据处理方法的比较:零替换、多重插补与极大似然估计法*
心理学报(2022年4期)2022-04-12 07:38:02
基于Power BI的油田注水运行动态分析与可视化展示
云南化工(2021年8期)2021-12-21 06:37:54
ILWT-EEMD数据处理的ELM滚动轴承故障诊断
水泵技术(2021年3期)2021-08-14 02:09:20
三角函数解析式中ω的几种求法
基于CGAL和OpenGL的海底地形三维可视化
“融评”:党媒评论的可视化创新
传媒评论(2019年4期)2019-07-13 05:49:14
睡梦解析仪
电竞初解析
商周刊(2017年12期)2017-06-22 12:02:01
相机解析