中望3D Overdrive内核技术之“容差建模”

梅敬成  三维CAD软件发展历程:过去,如今和将来 (ACIS,Parasolid,OCC, 中望OV,华天CRUX IV )
算法


中望3D 2020 图层管理器(图层的设置+移动图层+复制图层)
ide


    当前,因为容差带来的数值计算不稳定性、几何表示不许确的问题广泛存在三维建模过程当中。如不一样的CAD平台进行数据交互会产生模型质量损失、容差模型在新的CAD平台中进行编辑修改发生错误或直接失败。
函数


    三维几何建模平台因为采用不一样的建模核心和几何建模方法,在几何计算、几何精度设定的方法.上面存在差别。目前80%三维CAD平台所采用的两大建模内核均为ACIS或Parasolid内核,其中ACIS内核使用的是0.001mm的建模公差精度,Parasolid 内核则使用的是0.0254mm。由于公差精度差别而致使的数据导入后几何丢失、实体布尔运算操做失败、工程图投影错误等几何容差问题客观存在。工具


     当前不一样的CAD平台均使用不一样的容差建模技术,用来优化由于几何精度而产生的问题,其中有使用全局的固定公差方法来保证模型全部设计和细节特征维持一致的几何建模精度,也有使用自适应公差的作法来提升建模的成功率。oop

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

    三维几何建模是指经过计算机及其图形系统来表示和构造形体的几何形状,创建计算机内部的三维模型。从最先的二维空间的手工图板绘图,到60年代开始的三维计算机绘图,期间三维建模技术经历了从线框建模、曲面建模、实体建模等发展过程。近年来直接建模、混合建模、细分曲面建模等细分技术也做为补充性的建模技术应用到不一样的三维CAD设计系统中。目前CAD集成化系统广泛采用实体模型做为产品造型系统,成为从微机到工做站上各类图形系统的核心。
测试


   实体建模技术(Solid Modeling)的核心是CSG(Constructive Solid Geometry)和B-Rep(Boundary Representation)模型。CSG表达的是建模的顺序过程,而B-REP表示的则是三维模型的点、线、面、体信息,及造型结果的三维实体信息。优化


    目前大多数主流的CAD开发平台广泛采用CSG和B-Rep混合的实体几何建模方式,随着几何建模技术在基础理论方面的日渐成熟,发展出几大著名的建模核心,包括Parasolid、ACIS、Granite,同时基于这些建模核心推出了许多商品化的通用及专用的CAD设计系统,诸如CATIA、NX、PRO/E、Solidworks,但目前这些著名的CAD/CAM系统知识产权均给欧美的公司所拥有并垄断。spa


    我国对三维几何建模技术的研究起步较之欧美晚,高校方面始于60年代末。当时只有为数很少的几个产业部门(如机械、航空、船舶等)和几所高等院校开始研究CAD技术,随着国家的重视,多所高校都逐渐加大这方面的研究投入,譬如北航的唐荣锡教授从1980年到1984年就与课题组教师和研究生研制出了中国第一个多面体实体造型原型系统PANDA,随即向国内研究所和学校低价或无偿提供源程序,公开技术;以后又开发出了基于线框和NURBS曲面的几何造型、数控加工原型系统PANDA4,但因为诸多缘由,PANDA4未能实现商品化。尽管如此,在三维几何建模研究的领域,我国逐渐积累了优秀的技术人才,并且关于几何计算、几何图形学的学科研究也愈来愈多,涉及的也愈来愈深刻。90年代初,浙江大学在著名数学家苏步青的指导下成立了几何设计与图形学科研组(CAGD&CGGroup),迄今为止一直是我国活跃在几何建模技术研究的有生科研团队,团队的成员也均在几何计算、几何逼近和几何处理等领域的研究取得必定的成果。设计



    企业方面,近年来,有不少CAD/CAM技术应用的公司也尝试转变方式,经过并购、重组和合做的方式,引入外国的核心建模技术。由于通过多年的经验教训,企业要直接开发一套全新的建模平台用以和成熟的建模核心进行竞争不大现实,因此经过技术引入的方式成为一-种新的技术尝试。2004 年,北京数码大方基于美国子公司IronCAD三维设计平台推出了《CAXA 实体设计软件》,其使用的是Parasolid和ACIS的双核心,目前最新版CAXA实体设置2020 ;2008年,山大华天与日本的UEL公司进行合做后,基于其三维设计平台CADMeister 推出了《SINOVATION 2008》,目前最新版为SINOVATION9.1,而且其源代码相互开放和共享;2010年,中望龙腾软件在年收购美国VX CAD/CAM后推出了《中望3D2010》,目前最新版为中望3D2021,其平台使用的是OverDrive的建模核心,享有源代码的彻底知识产权。这些企业的发展也为相关技术人才提供了深刻研究三维几何建模技术的机会与平台。3d



watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=


1.几何容差问题的研究状况


      在三维几何建模中,因为偏差带来的数值计算不稳定性、几何表示不许确一直是重要的研究问题。主要缘由是在几何建模当中广泛应用的边界表示法(B-Rep)中,其几何实体(点、线、面)在计算机当中均被看作理想的数学几何,但实际,上只有不多一部分数学物体可以在计算机中精确表示,而大部分的几何物体在计算机中都只能以浮点数来近似表示。浮点数表示的几何物体是不精确的,这个不精确的表示就致使了几何实体的几何与拓扑之间的不一致性,也就是偏差的产生。如图1-1a)中所示是正确的布尔求和的结果,可是由于半径的浮点表示以,及数值操做计算,其相交线如图1-1 b)所示该变成两条交线,这就是偏差致使的几何拓扑结构变化。



watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=


    针对上述偏差问题,从80年代以来,围绕关于如何进行稳定的几何表示及计算的问题,有大量的研究工做,也所以发展出两种主流的解决方法:精确方法和非精确方法,精确方法认为偏差产生的根源来源于计算机内采用的浮点算法,能够直接采用准确计算,但这种方法随之.给否认,由于整数运算和有理数运算能作到绝对精确,但watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=(根号2)这样的有理数没法作到绝对精确。随后Karasick 等人也指出就算是简单的有理运算也没法获得彻底精确的结果。以后一些研究者从另外一个角度考虑对几何设计与计算中偏差的处理,这一类方法并不以获得精确的计算结果或逼近结果为研究目的,二是经过适当的方法对运算后产生的偏差给予描述和界定,这种方法称之为“非精确方法”。



    基于“非精确方法”的理论,维也纳工业大学的Pottmann首次从纯几何的角度,研究几何计算中偏差的传播问题,开辟了几何容差(Geometric Tolerance)的研究领域。使用凸多边形表示偏差区域,基于偏差分析方法中的最坏状况法,实现一种偏差分析工具,用以检查几何算法或几何结构中引进的偏差量的传播状况和危险程度,从而提供几何算法优劣的判别标准。 


    随着几何建模技术的发展,对几何容差的研究和理解也逐渐深刻,建模平台应用当中由于容差引发的建模问题日渐受到几何建模平台的开发商所重视。EDS公司的几何建模内核Parasolid发现从其它CAD系统导入数据(尤为是裁剪曲面)存在数据丢失的问题,并且以后的编辑操做容易引发问题。为此Parasolid技术部门的David J.Jackson认为这些问题就是不一样CAD几何精度体系,致使数据交换后的几何容差问题,提出了一种容差几何(Tolerant geometry)和容差建模(Tolerantmodeling)的技术方案。经过为每条边赋予不一样的容差,使模型交互可靠、精确,避免了几何数据的丢失、缝隙的产生及其余偏差。而且从2008年发布UG4.0版本开始就在相关命令中支持局部的公差设置,用以解决此类容差模型的问题。图1-2中分别表示几何模型的三种状态,图1-2 a)是没有容差的精确模型、图1-2b)是存在间隙的问题模型、图1-2c)则是赋予了容差的容差模型。


watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=


     而另外一个主流的三维几何内核ACIS则提出一种基于经验判断的容差模型定义规则:当两点距离小于watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=时,认为两点重合;当两张邻面的法矢夹角小于watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=时,认定两面有公共切平面;用样条拟合一条精确曲线的逼近偏差为watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=;计算机对数字的最大分辨能力为watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=,即将watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=设定为零。对于计算中出现的其它建模问题,还须要约定特殊的处理方法。正由于这些不一样的CAD系统的精度设置方法和数值的差别,形成了异构系统间交换产品几何模型数据的困难,当前很多CAD设计系统都在完善修补本身产品的几何容差体系,以便与其余CAD系统更好集成。


2.几何容差的几何原理


    边界表示法(B-Rep)是当前被主流建模系统广泛使用的实体模型的表示方法,几何容差中的处理和操做对象都是基于B-Rep模型的,对B-Rep模型的几何拓扑结构分析,能够总结出几何容差在B-Rep模型中的存在形式。


2.1 B-Rep模型的几何拓扑结构


   计算机中表示三维几何模型,根据几何的特色能够分为线框模型、表面模型和实体模型三类。若是按照表示几何的表示方法进行分类,实体模型又能够分为分解构造表示CSG(Constructive Solid Geometry)和边界表示B-Rep(BoundaryRepresentation)两大类。基于两种表示方法的特色,目前在主流的几何建模系统中,都采用将二者结合起来、共同表示实体的方法。主要以CSG法为系统外部模型、B-Rep法为内部模型。其中CSG法适于作用户接口,B-Rep法则适合在计算机内部描述数据模型,这样能够完整的表达物体的几何、拓扑信息,便于构造产品模型。本文对容差建模的研究,其主要的研究对象也是基于B-Rep方法构造的几何模型。


边界表示法中通常将模型的拓扑结构按层次分解为如下对象:

1)体(Body):是实体对象的最高层次,由封闭表面围成的有效空间

2)壳(Shell):互联的线或面的集合,它能够界定实体的外部或内部区域

3)面(Face):如图2-1,面是被一个或多个边(Edge)组成的环(Loop)所界定的曲面中的联通区域

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

环(Loop):如图2-2中,面的边界中互相链接的部分,它由一系列的有向边组成,一般是封闭的。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

4)边(Edge):相邻面的交界,由顶点界定

5)有向边(Coedge/Pre-edge):如图2-3中,是两条共边缘的集合

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

6)顶点(Vertex):边的端点,为两条或两条以上边的交点

    图2-4的楔形体经过B-Rep的描述方法,展现了面(Face)、边缘(Edge)和顶点(Vertex)的构成,其中包含了4个面,6个边缘,6个顶点,同时6个有向边,又封闭成4个环。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

   综上,在边界表示法中,边界表示是按照体一壳一面一环一边一点的层次,并详细记录构成形体的全部几何元素的几何信息及其相互链接的拓扑关系。所以在进行各类运算和操做中,拓扑结构不断发生变化,拓扑关系也在不断重组,这个过程就涉及容差的计算。


2.2几何容差在拓扑结构中的三种存在形式


   对于边界表示法的B-Rep模型来讲,其主要构成就是一张张的面,所以不管是建模仍是模型修复,都必须以面做为基础。精确的没有容差的B-Rep模型,面与面之间的链接是彻底重合如图2-5 a),但由于几何容差,面与面之间将存在间隙,如图2-5 b)。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=


   在图2-5 b)的六面体中,提取三个相连面进行分析。如图2-6,描述面与面之间链接关系的边(Edge)以及描述边与边之间链接关系的顶点(Vertex)由于几何容差产生间隙,本来精确模型中的,3条共边缘分裂成6条,1个共顶点也分裂成3个。所以在存在几何容差在B-Rep模型中的存在形式主要是依赖于顶点、边缘和面,对几何容差模型的问题研究从根本.上来讲就是对容差顶点、容差边缘和容差面的分析研究。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=


1)容差顶点(Vertex)


     顶点(vertex)的位置用几何点(Gp__Pnt)来表示。点是几何造型中的最基本元素,自由曲线、曲面或其余形体都可用有序的点集表示。用计算机存储、管理、输出形体的实质就是对点集及其链接关系的处理。在正则形体定义中,不容许孤立点存在。顶点的另外一个 重要属性是容差(Tolerance),用来表示位置精度。


    如图2-7,顶点容差T的几何意义为以顶点为圆心半径为T的球。这个球包含全部与这个顶点相连的边的曲线的端点。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=


2)容差边缘(Edge)


    边(Edge)是边界表示法中的重要结构,由于边界表示法(B-Rep)是用形体的边界来描述形体的一种方法。B-Rep认为形体是由有限数量的边界表面(平面或曲面)构成,而每一个表面又由若干边界边与顶点构成,全部的单元面构成了形体的边界,形体的边界将形体和周围的环境分隔开来。


    图2-8是ACIS建模核心中对容差边的描述,容差模型从边缘(Edge),有向边(Pre-edge)获得一个新的容差边缘Tedge,其存储容差而且以静态参数化来约束边缘。边缘的公差值定义为有二维空间上有向边(Pre-edge)与相邻面的最大距离。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=


3)容差面:


   面(Face)是用来描述三维实体边界的拓扑实体。面是由底层的曲面及一个或多个环(Wire)来描述。例如,一个圆柱体包含三个面:底面、顶面和侧面。

   每一个面都是无限的(***的)(Geom_Plane 和Geom_CylindricalSurface),经过边界来限定无限的面获得面。即用位于Geom_Circle.上的边造成的环,限定出底面和顶面。侧面包含四条边:其中两条边与顶面和底面其享,剩下的两条边是缝合边(Seam edge)。

如图2-9所示,面的容差的几何意义是包围面的一个具备厚度的板。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

   与边和顶点的容差相比,建模算法中涉及处处理面的容差的状况相对要少。一般都使用建模公差的默认值,并且面的容差<=边的容差<=顶点的容差。


2.3几何容差产生的缘由


   经过对B-Rep模型中几何、拓扑关系分析,能够明确的了解到要在三维建模系统中要完整的描述一个几何模型的须要保证几何元素的完整性、拓扑关系的正确性。但在计算机进行几何建模(创建数学模型)的过程当中,对一个完整复杂的几何模型经过最基本的几何构造和拓扑关系描述的时候,首先在单一平台会由于计算偏差、几何的迭代产生几何容差,其次跨平台的核心算法差别,也会在数据交换后产生几何容差。


下面将对几何容差产生的缘由作具体的分析。


2.3.1不一样的几何建模核心


   几何建模核心是指几何建模平台使用的几何建模引擎,是几何建模中最关键的算法集合。目前主流的几何建模核心是美国的Parasolid和ACIS,发展比较早、应用也至关普遍。俄罗斯的C3D建模核心也在一-些软件平台获得应用,另一个代码开源的建模核心是Open CASCADE,主要一些教育机构和企业简单的CAX软件利用其进行开发,商业化程度较低。国产的建模核心的表明是中望3D使用的Overdrive核心。


    几何建模核心有一个线性公差(Linear tolerance),这个公差数值是用来严格零值使用的。当两个数的差值小于这个公差的时候,则认为它们是同样的。


如图2-10 中Parasolid的线性公差示意图,蓝色区域表示公差区域,只要在数值在 watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=区间内,都是等同零值。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=



    目前不一样建模核心自己使用的线性公差是不同的,主流的建模核心的公差可见表2-1。


     除线性公差外,全部几何建模平台还有-一个建模公差(Modeling tolerance),建模公差不一样于线性公差,其控制的不是数值的精度,而是几何拓扑结构中表明两个几何元素的间距在多少之内能够被视为是足够接近。譬如当顶点(Vertex)和边缘(Edge)小于这个公差的时候,建模系统就认为他们是重合一致的。


watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=


    如图2-11所示,蓝色点V一、V2是两个顶点,蓝色线则是两个边缘,红色圆柱区表示的就是建模公差带,只要顶点V一、V2在圆柱的顶面和底面圆圈内,建模系统认为共点,同理若是蓝色边缘在圆柱内,则系统认为共边缘。


watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=


    GB/T18784-2002(CAD/CAM 数据质量标准)推荐的建模公差值是0.02,但现实状况中,基于几何核心开发各个三维CAD/CAM设计平台所使用的建模公差各不相同,如表2-2是各主流CAD平台的建模公差值。


watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

    

    目前这种差别化的现实状况没法改变,其中一个主要缘由是不一样的几何造型引擎中对几何拓扑的组织和描述、几何算法的差别,每一个建模引擎都会根据实际的运算法则选择最适合本身的建模公差值;另一个缘由是应用几何造型的CAD/CAM平台因为面对的不一样行业和客户要求,难以使用统一的建模公差。如CATIA广泛应用于航天汽车制造的高端行业,其默认建模公差使用的是0.001mm,而面向通用机械制造行业的中端CAD平台Solidworks则用的是0.0254mm。


2.3.2 不一样的几何模型设计要求


    就算使用统一的几何建模平台进行设计,考虑到实际模型产品的应用场景和整体和局部的细节要求须要各类不一样的公差,首先就不一样产品的应用场景而已,如图2-12 a)中一款高端的汽车的几何模型的公差要求确定要比图2-10b)一个普通做业的小推车的几何模型公差要求要高。


watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=


      其次就模型自己而言,整体的公差和局部的公差也存在差别。这就是大尺寸用大公差、小尺寸用极小公差的设计原则。例如对图2-13的某推动器零件(外形尺寸1500x600x450mm)进行建模时,其外形的几何建模公差只要设定成0.1mm就能知足装配的要求。但对于某些内部的精密零件如机电装置或轴承表面,须要达到0.005mm的建模公差,才能保证后续CNC加工的质量。


watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=


   综上,几何模型的应用场景不同,其设计过程当中对几何的精度要求存在差别。固然理论,上均使用统一的极小的建模精度能够解决这个问题,但现实上这种方案是不可行也没有必要。首先基于几何计算考虑,极小的精度公差会致使计算过程更长、储存的数据量更大;其次从产品的开发制造流程分析,极小的精度公差会给后续CAM加工、CAE分析增长时间和人力的成本。


2.3.3数据交互标准和方法的差别


   若是仅在同一个CAD系统中进行数据交互,采用中性文件格式,如NX的中性格式X-T/X-B,CATIA中的SAT均是系统的中性格式,能够避免几何精度的损失,保证数据质量,从而减小几何容差的问题。但若是数据交互双方采用不一样的系统,就必须采用标准的协议格式进行转换,例如STEP、IGES、VDAFS、SET等交换数据。


     就应用最为普遍的数据格式IGES和STEP分析,二者均是通用的国际数据交换标准,IGES是最先出现的CAD产品数据交互规范,是1981由ANSI提出的标准,STEP则是1984 年由ISO(国际标准化组织)提出的数据标准。但IGES和STEP格式因为精度等级的差别、几何语义的差别,在二者间进行数据交互会出现精度的偏差。


     图2-14中的示例是一-种常见的设计情景,从A系统中把几何模型导出STEP格式后,导入B系统进行后续编辑,而后再导出IGES格式到其它系统,这个时候的IGES格式对比A系统的源数据就发生了精度的变化,也就产生了几何容差的问题。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=


2.4几何容差引发的建模问题


2.4.1数据导入后模型质量损失

    

    数据导入的质量问题广泛发生在不一样三维CAD/CAM系统平台之间的数据交互过程当中,而由几何容差引发的主要是由于不一样平台间建模精度的不统一。


2.4.1.1几何原型分析


1)高精度的模型导入到低精度的CAD系统当中


   图2-15由边缘(e1,e2,e3)构成的狭长面(facel),当facel 的面积区域小于建模公差的时候,由建模公差的定义可知:边缘el,e3被认为重合。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

    以后会有两种结果出现,具体根据不一样的CAD系统的算法处理。比较通用的算法处理如图2-16是延伸e五、e6建立相交点,而后从顶点v1链接此相交点建立新的v3,造成封闭的区域。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

从上述分析能够得出,在高精度的几何模型导入到低精度的建模公差的系统中,在交互过程当中,狭长面(Tiny face)导入后丢失了。

2)低精度的模型导入到高精度的CAD系统

低精度的模型导入到高精度的CAD系统中,更容易出现问题,是由于低精度系统中认为重合的有向边(Pre-edge)和顶点均被认为是宽松的,这个是致使顶点(Vertex)开叉和开放间隙(Gap)的主要缘由。

图2-17中的低精度模型的显示的两个平面face1和face2的有向边缘(Pre-edge)能够理解为右图示中的公差有向边(TPre-edge),因为在建模公差的公差带范围内,因此在原系统中是重合的。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

   

    但导入的高精度建模公差的系统中,如图2-18中因为新的系统使用更小的建模公差值,公差棒小于原低精度模型的有向边的间隙,在新的系统中就认为他们不是重合而是开放的,这就是导入质量中间隙造成的主要缘由。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

   图2-19中的低精度模型的4个边缘(e1,e2,e3,e4)构成的顶点v1在原几何建模系统由于大公差的缘由是认为重合的,但导入到新的系统后,在更小的建模公差的公差棒范围内,不被认为重合,因此形成顶点v1开叉。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

2.4.1.2实际案例呈现

1)面丢失

   图2-20中的轮毂的几何模型,从原设计系统导入的新的系统中,放大后如图2-21中一狭长条形面丢失;

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

2)缝隙(Gap)

    产生图2-22中的几何模型,从原设计系统导入的新的系统中,使用开放边检查工具可见多处存在开放的间隙(Gap):

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

3)顶点(Vertex)错误

图2-23中的汽车刹车钳的几何模型,从原设计系统导入的新的系统中,线框模式下查看或用专用的模型质量检查工具,可见顶点开叉:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

2.4.2布尔运算操做失败

   布尔运算做为建模主要操做之一,基本全部的基础建模特征以及增强筋、螺纹、用面裁剪/分割体等几何建模命令都会涉及,而布尔运算的底层是几何相交线的求交,因此因为几何容差致使的布尔运算失败就是相交线的求交失败。

2.4.2.1几何原型分析

图2-24中当几何容差的模型A在face1和face 2建的边缘处有几何容差,而模型B的求交面(face 3)恰好在此边缘求交,求交失败。

当几何容差的模型A在顶点v1处开叉,而模型B的求交边缘(edge 2)恰好穿过此顶点,求交失败。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

2.4.2.2实际案例呈现

如图2-25所示模具分型设计中,执行布尔求差的操做,从本体(Base)减去工具体(Operator),因为几何容差的问题,致使计算结果错误,出现开放面。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

2.4.3工程图投影错误

几何容差引发的工程图投影错误,主要是由于射线穿过了容差几何,本应被遮挡的轮廓线被误判成为了可见线。

2.4.3.1几何原型分析

1)当投影射线(Ray)穿过存在几何容差的e1,本来应该认为被遮挡的e1,因为容差间隙的存在,边缘e2会被误认为没有遮挡,致使本应显示为消隐虚线却成为可见实线。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

2)另一种状况是如图2-27,当投影射线(Ray)穿过存在边缘e1,e2.e3.

e4构成的几何容差的顶点v1,与射线相交的边缘e5的消隐状态会改变,此容差顶点区域的e5段会被误判为可见实线。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

2.4.3.2实际案例呈现

如图2-28所示的缸体模型,由于存在几何容差,如图2-29某些轮廓线本来属于消隐虚线,但投影后给误判成了可见线。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

3.容差建模的技术分析


   容差建模就是在三维设计平台中接受来自存在几何容差的“不许确数据",经过赋予存在偏差的非精确模型必定的容差范围,既增长了导入的数据的范围,也解决了与导入不许确的数据或模型几何泄露相关的问题。同时容差建模技术还能够保持有效拓扑的同时接受较不精确的几何数据、容忍顶点和边缘的逼近状况,修复顶点和边缘几何容差偏差,建立具备正确拓扑的容差模型。


   容差建模技术也可用于处理几何逼近的非精确的建模操做,包括布尔运算、混合计算等,并且应用容错建模的技术不会影响几何模型当中精确建模的稳健性和可靠性。


3.1基于全局单一容差的容差体系


传统的边界表示(B-Rep)实体建模使用固定统一的全局容差来执行计算,但其优势和缺点均是明显的。优势是全部计算都只执行一个容差数值来进行判断和计算,存储的信息量小,计算速度快。缺点是始终固定的容差值,数值过大会致使精度损失,模型质量降低,太小的数值反而会增长计算时间,并且会把导入的来自其它平台的数据识别成开放的间隙。

另一个更严重的问题是会致使建模不稳定。如图3-1中使用固定公差的一个建模例子,蓝色曲线分割一个面,若是上部短边缘的长短小于4倍的容差值,分割后的两条短边会因为两个顶点的容差重合,此条短边在系统中会被认为是重合的顶点而不能正确生成。


watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

3.2基于自适应的容差的容差体系

如图3-2中,基于自适应的容差方法是在涉及几何拓扑变化的过程当中,当涉及容差的计算的时候,经过特定的算法计算拓扑结构中的顶点、边缘位置,在几何模型不一样位置使用最适合的容差值,这种方法可以保证拓扑结构使用最优的容差值,不会出现固定统一容差方法的建模稳定问题.

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=


    理论上自适应的容差方法是最优的,但实践证实这种方法在应用上不可行,主要缘由是这种方法的计算过程复杂、计算速度慢。特别对于参数化过程的几何建模平台,因为有特征树驱动模型,只要重生成建模过程,就要从新进行计算,效率低下的问题严重。


3.3基于中望3D的容差建模的应用


   中望3D是国产的CAD平台,虽然和主流平台同样均使用B-Rep表示法的实体模型,可是使用的是不一样于Parasolid和ACIS的Overdrive建模核心,因此在底层核心的算法上面是有差别的。经过上述对容差建模的技术方法分析,使用一种基于局部容差的容差建模方法,完成容差模型的算法定义和计算法则,并基于这个定义和法则在软件中经过编写代码实现VxVtxGetTol和Vegetal两个获取容差顶点和容差边的数据的函数接口。


3.3.1基于局部容差的容差体系


    图3-3表示的是基于局部容差的容差建模方法,吸取了自适应容差方法中使用局部容差的优势,但容差值的计算方式不是自适应判断的,而是通过对实际几何容差状况的分析,设计一种定义规则,来计算和获取容差顶点和容差边缘的数据,并且对几何容差范围作一些限制,超过合理范围的大容差的几何拓扑不进行处理,维持其几何容差。


watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=


3.3.2容差边缘的定义与计算法则


   容差模型从边缘(Edge),环边(Pre-edge)获得一个新的容差边缘Tedge,其存储容差而且以静态参数化来约束边缘。边缘的公差值定义为有二维空间上有向边(Pre-edge)与相邻面的最大距离。


3.3.2.1容差边缘的模型分析


除了在数值上考虑对容差边缘的定义,在平台应用上,还要考虑能被判断为容差边缘的因素须要不至于破坏其它拓扑结构。所以对容差边缘的定义还须要基于一些应用的案例进行分析从而限定。

1)案例一:图3-4中Pre-edge和公差边缘间存在较小gap,但范围可控,没有破坏LoopA和LoopB,是合格的容差边缘。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

2)案例二:图3-5中Pre-edge和公差边缘存在较大gap,若是不进行修复或容差建模介入处理,当使用P1分割公差边缘的时候,新生成的Vertex会是一个坏的有问题的Vertex

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

具参考图3-6,能够看到公差范围已经跨越两个Vertex之间

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

3)案例三:在图3-7中,在Edge和Pre-edge端点存在gaps,当使用P1分割边缘的时候会引发失败,

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

3.3.2.2容差边缘的算法定义


综合上述对几何容差边在实际应用状况的分析和比较结果,在中望3D平台中对容差边缘的判断规则设定以下:

1)设定默认建模公差为VgTolPoint()-0.01mm,开放自定义设置的范围为

V_TOL PROX-MIN()=0.0001mm 

V-TOL PROX-MAX()=10.0mm

 2)容差的数值判断范围适用于容差边缘和容差顶点,与VgTolPoint()关联设定为:

TolPointExact()=0.001xVgTolPoint 

TolPointLoose()=10.0xVgTolPoint


在中望3D平台中对容差边的计算定义以下,并经过编写代码造成VxEdgGetTol函数在软件平台实现:

1)边的局部容差由环边的最大距离决定。若是边只有一条环边,那么边的局部容差为0;

2)若是边有两条环边,那么边的局部容差等于两条环边的最大距离;

3)若是边有多条环边,那么边的局部容差等于多条环边两两距离的最大值。

如图3-8所示,边有三条蓝色的有向边,若是有向边1和有向边2之间的距离为d一、有向边2和有向边3之间的距离为d二、有向边1和有向边3之间的距离为d3,那么边的局部容差dLocalTolerance=max(d1,d2,d3}

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

3.3.3容差顶点的定义与计算法则


  如图3-9中,包含容差值的容差顶点Tvertex派生自顶点Vertex,各自公差值表示从Vertex几何体到在顶点附近终止的全部相邻边缘的端点的最大距离。容差顶点是用于限制Edge或Tedge的二维拓扑实体,而几何模型的拓扑结构保持不变。

若是它们的点之间的距离小于容差顶点和全局建模公差的最大值,则容差顶点和顶点是被认为重合的。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=


3.2.2.1容差顶点的模型分析


跟容差边缘同样,不是全部在边缘的交叉处开裂的顶点,都应该被定义为容差顶点,除了数值的合理设定,还要考虑容差顶点不至于引发几何模型拓扑几何变化的,才能被定义为良好的容差顶点,下面将分析几种典型的容差顶点的案例。

1)案例一:如图3-10中的顶容差顶点,因为顶点的偏差范围小于Edge 1和Edge 2的距离,能够被认为是良好的容差顶点,在此处几何边缘的交点能够被认为是重合的。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

2)案例二:如图3-11中,Loop A和Loop D之间存在顶点位置一个更大的间隙,Edge1和Edge2之间的最短距离小于顶点公差的范围。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

不然如图3-12所示,假设在Edge2处存在一个分割点(Split point),而这个分割点恰好落在容差顶点区域上,Edge1也被认为受到分割,那么就会由于顶点公差太大,致使分割Edge2失败或者分割错误。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

所以这种顶点开叉的状况,不适宜定义为容差顶点,而须要把顶点开放间隙,必须使用模型修复和模型重建的方法来从新构造几何。

如图3-13中在LoopA和LoopB之间构建一条新的边缘。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

3)案例三:图3-14中,Loop A和Loop D之间存在在顶点位置一个间隙,小于Edge 1和Edge 2的之间的最短距离。可是顶点的偏差范围跨越了Edgel的Vertex1,会致使Edge1引发退化。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

所以这种顶点开叉的状况,也不适宜定义为容差顶点,一样须要进行几何修复。

图3-15和图3-16分别是两种能够修复的结果。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

经过上述的容差顶点案例的分析,容差模型中的容差顶点的定义不只要有合理的公差范围,并且须要考虑几何拓扑的结构。不然容差顶点不但没有起到增长模型容忍度的做用,反而引发其它的建模问题。


3.2.2.2容差顶点的算法定义

在中望3D平台中对容差顶点的判断规则跟容差边缘同样,均使用相同的范围限定。

对容差边的计算定义以下,并经过编写代码造成VxVtxGetTol函数在软件平台实现:

1)容差顶点的容差大小应该小于任何相邻边的最小距离Tvertex D(Edgel->Edge2)

2)容差顶点不该该跨越任何非相邻边缘

3)容差顶点不能跨越任一相邻的整边缘

4)顶点公差的大小应该小于V_TOL_PROX_MAX


3.4算法结果的测试


      在中望3D平台基于局部容差方法的优化,分别完成了对容差边缘和容差顶点的计算函数VxVtxGetTol和VxEdgGetTol并集成到中望3D平台中进行体现,如下是新版本中的成果体现及同平台新老版本的对比,及与其它主流平台的结果对比。


3.4.1中望3D平台中的结果验证


对全局默认建模公差设定:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

如图3-19中的组合和分割命令的对话框截图,全部涉及容差计算的建模命令均实现支持局部容差的设定:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

实际案例的结果验证:

使用实际的模型例子来验证局部容差的方法是否正确运行,首先如图3-20中,在中望3D的平台基于默认的0.01mm的容差来建立一个封闭的六面体,而后将几何体以偏移0.05mm的解散为6个单独的几何面。这时候边缘的间隙在0.06mm

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

验证一:从新以0.01mm的默认容差缝合,执行结果如图3-21,由于0.01mm<0.05mm,因此失败的结果符合预期。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

验证二:调整容差为大于间隙0.05mm的0.07mm。如图3-22,执行结果成功,几何模型从新缝合为封闭的一个几何实体。此处可判断局部容差的调整是有效的,得以保证使用到容差计算的建模操做能够调用局部容差的数值。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

因为中望3D平台优化了着色模式的显示,如图3-23切换到线框模式下观察,能够看到虽然模型分叉的容差顶点和容差边,也就是说局部容差成功应用到几何容差的顶点和边缘上,让不许确的模型成为容差模型,同时0.05mmkTolPointLoose(),因此这里对容差值的判断和容差顶点和边缘生成均是准确的。


3.4.2与其它主流平台的结果对比


经过与其它主流CAD软件平台NX.Solidworks进行对比,进一步验证中望3D实施的基于局部容差创建的容差体系在建模中的效果。实验思路将使用同一几何模型、使用同样的容差参数设定执行涉及容差计算的建模操做,分别比较三者的成功率、时间和精度。

1)图3-24的测试模型素材:两两相交,进行布尔运算,多处几何拓扑的重组均涉及容差的计算。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=



2)分别在中望3D 2020,NX十、Solidworks 2017的软件平台,执行布尔并集、差集、交集,理论的正确结果如图3-25所示。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

3)使用局部容差0.01mm执行计算:三个平台的布尔运算操做均失败。

4)调整局部容差为0.05mm从新执行计算:中望3D ,NX10可以获得正确结果,Solidworks失败。

5)调整局部容差为0.07mm从新执行计算:中望3D ,NX10和Solidworks中均能获得正确结果。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=


 经过测试结果分析,默认容差没法均没法处理操做获得结果,判断为容差模型,分别调整容差值到0.05mm、0.07mm后执行。

更小的容差值能获得正确的结果表示模型的精度会更高。因此成功率方面: 

中望3D=NX>Solidworks

在计算效率(时间)上:

中望3D>NX>Solidworks

因为在精度的判断上,经过容差值的成功率判断,只能得出中望3D和NX比Solidworks更高,但二者均在容差值为0.05mm的时候运行成功。因此二者还须要经过更进一步的验证比较。

如图3-26中分别在中望3D和NX中在一样0.05mm的容差值执行相交线,对比生成的相交线的曲线质量来判断其精度高低:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

    

    图3-27是中望3D中的相交线的控制点为6个,而右图中在NX中生成的相交线的控制点为10个。根据Nurbs样条曲线的几何逼近原理,控制点越多,越逼近精确结果,所以能够判断一样的容差值,布尔运算的结果:NX>中望3D

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

    

    综合判断,在和其它主流平台的结果对比上,中望3D上实施的局部容差的容差建模技术在效率和成功率上都要优于其它平台,在模型精度上比中端的Solidworks要好,但比高端的NX平台稍差。


4.数据导入的原理描述


   使用B-Rep数据描述三维模型,拓扑结构自顶到下包括:Shape,Shell.Face,Loop,Pre-edge,Edge.Vertex.Face关联几何曲面,Edge关联三维曲线,preEdge关联2维uv曲线,在导入时,读取源文件中的三维模型数据,而后使用目标平台的B-Rep结构描述。


4.1原数据导入策略的缺陷


    原基于精确建模的导入方式,其策略是在建立单个面的时候就完善几何,而后再使用缝合逻辑把面缝合到一块儿。这种方式对几何的优化是在局部进行的,会破坏全局的拓扑关系。其中,基于精确建模问题来源主要有2点:第一,在导入过程作太多的纠错工做,这极大地加大了算法设计的难度,致使不少正确性问题,以边次序错误为例,因为指望纠正边次序错误,致使不能直接利用原始文件中的次序信息,只能经过几何的链接性从新构建次序关系,当Loop中存在自交或相邻边在几何上不是严格相邻时很是困难,并且一旦构建错误,整个面就会出现严重问题,事实上,基本全部主流三维CAD平台均不支持边次序错误的纠正。第二,为了保证Loop几何上的封闭性,精确建模的导入方法进行了大量的计算,这些计算一方面破坏了文件中的原始数据,另外一方面加大了算法的难度而致使模型质量问题。


4.2 基于局部容差模型的导入策略


   基于局部容差模型的导入策略,是一种经过几何反算出拓扑,而后再依据拓扑完善几何的新的导入策略。相比基于精确建模的导入方式,导入单个面时先不尝试完善几何,先利用文件中的信息把拓扑构建起来,引入容差顶点和容差边的

判断和计算规则,识别容差模型,脱离范围而在容差模型外的几何容差问题,后续再经过平台的修复工具去优化几何,这样对几何的优化是基于全局数据进行的,正确性更高。

相比基于精确建模的导入方式,基于容差建模的导入更加信任和利用了更多的原始数据,只有发现原始数据存在明显问题时才尝试进行修正;其主要策略的算法流程以下:

1)利用原始文件中的Vertex信息.

2)利用原始文件中边次序信息。

3)利用原始文件中边的方向信息。

4)不轻易改变edge对应的三维曲线,当边界曲线不在surface上时,引入容差边。

5)不经过Trim,extend等方式进行几何优化。

)必要时引入容差顶点以保证loop拓扑上的封闭性。

7)导入时,不删除tiny edge,缝合完毕后再统一删除tiny edge。


4.3基于局部容差模型导入的算法优化


4.3.1维护和利用原始文件中的Vertex信息


因为基于精确建模的导入要求生成模型顶点必须在边上,而原始数据中顶点不必定知足这个要求,因此基于精确建模的导入方式忽略文件中的顶点信息。

当顶点为容差顶点时,若是不记录原始的顶点信息,后期经过计算还原原始的顶点信息基本是不可能的,所以,基于容差建模的导入策略引入了原始的顶点信息,并在整个导入模块中维护该数据:

1)Zs-XILpCv::startPoint和Zs-XILpCv::endPoint用于保存2个顶点坐标,若是从文件中传入顶点坐标,则使用传入的数据,不然根据几何曲线计算出2个顶点的坐标。

2)ZsXILpCv::idVtx1和ZsXILpCv::idVtx2用于存储顶点拓扑id.

3)维护一个Attfield-->VtxZwID的map


4.3.2边次序和边方向的处理


基于精确建模的导入忽略文件中边的次序信息,而边的方向信息也主要是通

过计算获得(注:原始方向信息会影响计算获得的结果),基本思路是分析全部的曲线,经过几何邻近关系,肯定次序和方向。


对于一些简单案例,这样是可行,可是对于某些复杂案例,考虑到可能的Loop自交和Gap,经过计算很可贵到正确的结果。事实上,涉及的各类格式都要求原始数据中边的次序是正确的,而其它主流软件,当边的次序信息错误时也都没法获得正确结果,所以基于容差建模的导入模块采信文件中边的次序信息,而边的方向信息则根据相邻边界信息进行必定程度的校订。

遍历每一条IpCv,假设其下一条lpCv为lpCvNxt,当知足如下条件时把IpCvNxt->fLoopDir设置为-1:

IdCurrent = IpCv->fLoopDir == 1pCv->idVtx2:1pCv->idVtx1;PointCurrent = lpCv->ILoopDir == IpCv->endPoint:IpCv->startPoint;(id1,point1)和(id2,poin2)分别对应1pCvNxt的起始点和终止点。

若idCurrent,idl,id2不等于-1,则根据拓扑判断,若是idCurrent==id2且idCurrent!= id1,须要把1pCvNxt->fLoopDir设置为-1.

不然根据几何临近关系进行判断,若是dist(pointCurrent,pointl)>10xdist(pointCurrent,point2)则须要把1pCvNxt->fLoopDir设置为-1,能够看出,软件只有当检测出明显错误时才进行方向纠正,不然软件选择信任文件中的原始数据。


4.3.3容差边的处理和Seam边的选择


当文件中存在容差边时,因为该边不在Surface上,基于精确建模的导入必须把该边拉到Surface上,这样破坏了原始的数据,致使后续缝合过程没法和相邻面缝合到一块儿。而基于容差建模的导入则不会修改边界曲线,这样确保后续缝合过程能够和相邻面正确地缝合到一块儿。

如图4-1,对于处于SEAM上的边,经过为其从两条备选UV曲线中选择一条做为最终使用的UV曲线,基于精确建模的导入采起比较复杂的逻辑来进行选择,基于容差建模的导入策略将根据SEAM边和相邻两条边的几何关系,以及Seam边的方向来进行判断。把备选UV曲线的两个端点和相邻两条UV曲线的两个端点的距离之和做为比较的标准,若是两条备选UV曲线存在明显差别时,则选择距离小的那条UV曲线,不然以确保Loop逆时针为原则根据边的方向进行选择,只要源数据中边的方向是正确的,则根据UV曲线的方向都能作出正确的选择。

软件不能简单地根据距离大小做出选择:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=


如图4-2所示,若是简单地根据距离大小进行选择,可能获得错误的结果,Seam边原本应该放在左边,可是却错误地把其放在右边,由于放在左边和放在右边算出的距离和基本是同样的。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

同时,若是边的端点处于极点上或者相邻边一样为Seam边时,和相邻边的距离也一样不做为判断依据:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

如图4-3,Loop包含2条UV曲线,其中一条在Seam上,该Seam边的两个端点都在pole上,所以不能根据和相邻边的距离选择Seam边,不然会错误地选择右边的Seam边。可是经过Seam边的方向,能够正确地选择左边的Seam边。


4.4新的Loop生成算法


基于精确建模的导入经过Trim.Extend等方式确保Loop在几何上是闭合的,该方式因为是在局部对几何进行优化,会致使后续出现开放边,基于容差建模的导入再也不采起该方式,可是必要时会引入容差顶点以确保Loop拓扑上的封闭性;新的导入策略主要经过如下几个步骤来保证Loop拓扑上的封闭性,下面经过一个实例来介绍:

如图4-4所示,曲面包含里外层2个Loop,两个Loop都跨Seam,并且里层Loop中存在局部容差,因此相邻的三维边界之间存在gap

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

从文件中获得的几何边界为((a3d,b3d,c3d,d3d),(e3d,f3d,g3d,h3d)}

投影后获得的uv曲线以下:

{(al,a2,b,cl,c2,d),(el,e2,f,gl,g2,h)},投影图如图4-5所示。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

在内存对应的两个Zs_LpCv双向链表图4-6所示。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

1)Zs_XILoop的分裂

遍历Zs_LpCv链表,当链表上两条相邻的lpCv的端点之间的距离显著大于端点和参数空间边界的距离时,把链表在该处打断,并登记参数空间边界上的打断点。

其中发现len(al->endpoint,a2->startPoint)远大于len(al->endPoint,v10),故把链表打断:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

同时登记{(V10,Near al->end),(V3,Near al->start)}

再依次处理每一个结点,最后获得图4-8所示的链表图:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

值得注意的是,虽然e2和f之间存在明显gap,可是并不会在该处打断链表,由于,这个gap并无明显大于e2,f端点到曲面参数空间边界的距离。

2)沿自然边界补边。

当对Zs_XILoop进行分裂时,软件记录了参数空间边界上的分裂点,接下来将利用这些数据沿自然边界进行补边。

软件将按照如下策略选择添边方案:

若是文件中明确给出了外层Loop,则优先选择只沿某一个参数方向补边的补边方案(只沿U向或只沿v向)。

默认状况下,根据边的方向进行补边,只要文件中边的方向正确,经过这种方向都可以获得正确的补边结果。

针对上例,将选择如图4-9的补边方案,由于该方案只沿v向进行了补边:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

相应地,前面获得的4个链表经过增长的4条IpCv链接成一个闭合的链表。

1)必要时从新计算Loop之间的里外层关系以及校订Loop的方向,和基于精确建模的导入同样。


5.布尔运算的原理解析


布尔运算是(Boolean)经过对两个以上的几何进行并集、差集、交集的运算,从而获得新的几何模型形态,几何建模主要的4种布尔运算方式:并集(Union)、交集(Intersection)、差集(Subtraction)和分割(Split)。


如图5-1所示,蓝色的长方体被黄色长方体的一个面分割成两块,而黄色长方体与蓝色长方体相交的面则被蓝色长方体分割成两个面。全部涉及布尔运算的操做(交集、分割、差集、联集)求交后产生了4条相交线,因此运算的成功与否能够分解为相交线可否正确生成,并造成封闭的区域。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

   在第三章中本文就分析了几何容差引发布尔运算失败的缘由,是由于算法不能保证找到正确的交线。所以布尔运算操做算法最关键的部分就是找到正确的交线。两个封闭实体对象的交点处应该至少有一个完整封闭的交点曲线(例如:循环),若是对象相交在多个点,那么有可能会产生多个循环,若是这些循环都是封闭的,那么这是没有问题的。相交线在几何容差的地方没法获得,也就表明着相交曲线不是封闭的,那么布尔操做将注定失败,这是由于相交曲线没法完整切割对象,而三维建模系统没法得知如何切割实体,所以没法布尔运算而给予运算失败的信息。


如图5-2所示,两实体两交,执行分割(Split)的布尔运算操做,会由于容差顶点和容差点,相交线生成存在间隙,没法造成有效的封闭区域,所以建模操做执行失败。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

5.2基于局部容差模型的求交线优化


容差建模技术在处理上述容差模型的建模问题,就是优化求交线的算法,当相交线穿过狭长面、容差顶点和容差边时,让相交线的间隙可以闭合,使布尔运算得以成功执行。这种方法在原来算法上增长了对相交线有间隙的三种状况的额外处理手段,让相交线能造成闭环。新的算法程序的流程图如图5-3.

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

5.3相交线穿过狭长面的算法处理


   如图5-4所示当f2相交的位置恰好穿过f1的狭长面区域求交,理论上能够求得一条短相交线,可是在当前运行的几何系统中的建模公差(虚线圆)大于狭长面边缘e4,e5与2的两个交点的距离,也就是说圆则上,此处要生成两个新的顶点,可是因为顶点的距离小于当前建模公差,它们被认为是重合的。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

为了保证整个布尔运算操做的成功,图5-5中的顶点v1和v2,软件系统将在完成布尔运算,获得建模结果后在新的模型中再对v1和v2进行合并。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

5.4相交线穿过容差顶点的算法优化


    经过实际的案例分析得出,边缘造成的容差顶点的状况有如图5-6中三种状况,其主要表象是边缘的端点在几何上不是绝对重合的,可是拓扑上面为了让几何模型可以继续工做下去,平台容忍了这种顶点错误,经过设置局部公差,拓扑上成为一个容差顶点。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

但在相交线的计算的时候是基于几何的相交,因此求出的交线就会在容差顶点处存在间隙。如图5-7在几何上的处理是,相互延伸修剪边缘的端点造成理论上的交点,而后再与相交面进行求交。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

5.5相交线穿过容差边的算法优化

相交线穿过容差边的状况能够分为两种:

1)当穿过容差边的相交线间隙小于容差顶点的公差:V(pl->p2)<V(Tvertex),如图5-8中所示f1,12与13求交,在Predge处的相交点为p1,p2,但pl到p2的距离小于容差棒的大小,那么能够认为此处新生成的容差顶点重合,相交计算有效。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

当穿过容差边的相交线间隙大于容差顶点的公差:V(pl->p2)<V(Tvertex)以下图所示,pl到p2的距离大于容差棒的大小,不能在此处建立容差顶点。如图5-9中经过p一、p2建立一条链接的直线line1,让相交线可以造成封闭的环,保证布尔运算的操做成功。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

相关文章
相关标签/搜索