要解决一个问题,先要表述它!
以编制《三维CAD模型标准》作为工业软件的基础建设之首。
三维CAD模型标准
——“我国工业软件基础建设”系列之一
书同文车同轨。什么是标准?“标准”是一种“规则”,大家做事必须遵循的准则和依据。
CAD是基于“模型”的,先以几何模型的形式去表述工业领域的各类“形”和“型”,再加上工程信息,形成各种图形、各类零件。定下一些这类模型的表述规范,作为CAD软件的输入、计算源。达到信息共享、资源共用、方便交流。
所以,CAD模型标准一般是从数学的高度去抽象这些模型,表述它。这种表述应该是完整的、确定的,尽可能保持表示对象的唯一性,通用性。标准文本的表述应该是规范的,被业内接受的,交流是简单的。
例如,一个圆心和一个半径定义一个圆。圆心,既是圆的几何表述,也是圆的位置参数,单一的圆没有定向参数。这样表述的圆是完全确定的,没有异议。这是一种定义,一个约定,任何相关于圆的输入、输出、计算、表述和编程都要按照和满足这个约定。至于这个约定怎么实现,即圆怎么生成,数据结构如何设计以及算法如何编制,各种CAD系统可以不一样,但它保证了模型所表述的圆在设计中所起的作用是一样的,不同系统间的数据交换是确定的,而且这种交换的计算也是简单的。
CAD模型标准CAD标准中最重要的一个标准。
CAD模型标准通常分作两种,一种是“表示性”标准,另一种是“交换性”标准。俗称编制“交互标准”?还是编制“交换标准”?也有称作是“面向过程”的?还是“面向结果”的?
“表示性”标准。CAD系统是基于“模型”运行的,模型是支持CAD系统运行时的形状、形体的“表示”。如果按照某一个“标准”去表述模型的“定义”和“表示”,可以最大限度共享对这些模型进行处理的算法,例如几何引擎、渲染引擎等。这是编制“表示性”标准的出发点,它支持CAD系统的全过程,即“面向”交互操作“过程”、设计过程。
“交换性”标准。一个CAD系统输出作为另一个CAD系统的输入,达到信息共享。即定义一种所谓“中性”数据格式,用于系统间的数据交换。何谓“中性”?一类是普遍认同的,如STEP标准,另一类是CAD系统应用得比较普及的,例如AutoCAD,以它输出的数据格式(如DWG、DXF)作为“标准”。如果自己定义一套,因为各家的利益驱使,会出现无休止的争论,这样的讨论会使标准的编制过程延长甚至没有结果。
由此,编制“表示性”标准比编制“交换性”标准更合适一些。
支持它的另一个理由是在统一的模型表述下,共用“几何内核”的可能性就更大一些,模型表示一致了,对它们的处理范围、方法就“限定”了,这对国内已有CAD商品软件的冲击也小一些,接受度更大,也更容易实现国内CAD软件的“统一”。
特别地,当编制“三维CAD模型标准”与开发、推广自主几何内核联系在一起时,他们的意义与作用将更大,更有利于国内工业软件的全面发展。
这是为什么希望是编制“表示性”的“三维CAD模型标准”的原因。
三维CAD模型标准建议按照以下基本架构和内容:
1基本几何:点、线(向量)、圆、弧;矩形、三角形;平面等
2曲线曲面:设计型曲线曲面、拟合(逼近)型曲线曲面
3几何模型:球、柱、锥、环等基本形体,Breps模型等
4工程模型:PMI(产品制造信息Product Manufacturing Information)等
5变换模型:同维变换、降维变换等,采用变化几何化方式
6显示模型:颜色模型、渲染模型等
7零域模型:低、中、高零域,自适应零域
8应用模型:机械、钣金、模具、线材等选择性领域
9其他:自定义
不建议将图纸(Drawings)作为标准内容,这在工程制图标准中有很多了,而且他们更专业。
编制所谓“CAD数据模型标准”,就是解决“表示”问题、“表述”问题。
但是,解决“表示”问题和“表述”问题,并非容易。
1)CAD模型的“数学性”
CAD模型不同于数学表示。强调从数学的、抽象的角度表述CAD模型,但并非每个几何的数学“表示”都可用作CAD模型的表示。简单的一条直线,有点斜式、两点式、标准式、法线式等等,这些数学表述方式在CAD中可以使用,但作为模型表示需要选择。例如,由两个端点P1P2定义直线模型是常用的。
CAD模型中的几何是有界的。CAD模型中的几何不同于数学中的几何,直线、平面等在数学上是有界的,但用于表述工程上零件、装配件等,是有界的:直线是直线段、平面是多边形,有界的限制。
CAD模型中的几何是有方向的。CAD模型的边界有外边界和内边界之分,平面有前向面和后向面之分,交点有进和出之分,等等。所以CAD模型中的几何是需要有方向的,例如要用向量P1P2来表示两点间的直线段,所以在CAD模型中P2P1≠P1P2。在后面一节关于圆弧表示的例子中,更能说明圆弧方向在CAD模型需要审慎考虑。
2)Breps模型
Breps模型是CAD模型的重要模型,也是一个难点。不同的CAD系统对它的表述各不相同。
由于复杂平面形体与曲面形体的统一表述问题并未解决,所以,严格地说,Breps模型的表述并未解决。困难在于:表达统一和处理统一。
表达统一:如何用统一的数据结构去表达
0维(点云)、1维(线框)、2维(图形)、3维(实体)模型以及离散模型(Mesh)
处理统一:不同维度及类型的模型,能否在统一的框架下处理?
下面以信息方面标准“GB/T36341.1-2018信息技术 形状建模信息表述,第1部分:框架和基本组件[1]”的例子,说明编制三维CAD模型标准中的一些注意事项。
例一、一个长方体的模型标准表述
该表述由两个部分组成:
b)为长方体的长、宽、高,这是长方体模型的定义;
a)与c)分别是长方体的“定位”和“定向”数据。
分析一下这个表述。
1)b)所表示的“L、W、H”,决定了这个长方体的长、宽、高,即它所表示的长方体(模型)是完全确定的、唯一的。
2)a)与c)是长方体的定位与定向表述,但只是其中的一种表述形式。
这里,定位参数a)选择的是长方体的中心作为其定位(装配)点,另一个常用的定位点是以长方体的左下角位置作为定位点。两者均可表述长方体定位的确定性和唯一性。但是,长方体左下角定位比长方体中心定位在工程上更方便些。例如一闩窗门以左下角定位方便些,工程上更能接受。而且,与左下角点共点的三条边作为坐标轴的坐标系单位矢量描述长方体的方向也一致。
表述的权重。严格地说,这个标准的表述还需要作些调整。L、W、H三个参数的权重是最高的,需要放在长方体模型表述的首要位置,定位与定向是非唯一的,应放在后面。
如果标准都按这样的方式,以数学的、抽象的、唯一性的表述几何与几何模型,也就达到了建立国内“共识的、开放的、团体的、中立的三维CAD产品数据格式,用于实现国内三维CAD厂商之间无需再互相转化的目标”。
例二、一个圆的模型标准表述
这是一个空间圆的表述,圆心O既是圆心的定义,又是圆的定位点。圆所在平面由共点互相垂直的三个单位矢量定义。
分析一下这个表述。这个圆的表述有两个地方需要修正:
一是,圆的(模型)描述。
后半部分是圆(模型)的主体:
a)…… ,
b)…… ,
c)……”
前半部分是圆的补充描述,是建议部分:
为圆的数学表达式,它的作用不是定义圆的模型,而是圆的数学解释,作为一种理解和交流上的补充(在后面圆弧模型表述上也会用到)。
次序上,两部分前后要交换。
这个圆弧的表述与上面圆的表述只是“圆弧的参数域为[t1,t2]”及图示的不同。
分析这个表述。
小结一下。
从上面三个例子看出,CAD数据模型不仅仅是“数学的”,还要考虑“工程的”。
例如,
数学上是一个边界描述,工程上(CAD)有外边界与内边界
数学上是一个平面描述,工程上(CAD)有前向面与后向面
等等。
编制CAD模型标准,是我国工业软件基础建设之一。国家需要我们有自己的CAD模型标准,让国内各种CAD软件能够在一个相对独立的模型表述下共享信息。在一个“共识的、中立的”的模型下,在自己的几何内核基础上开发CAD软件以及国产工业软件。
CAD模型标准不应该是孤立的,要与CAD几何内核开发等联合起来,与国内外研究曲线、曲面定义、求交以及从事几何内核开发的力量综合起来,他们对相应的数据结构非常熟悉,可以特别贡献基本几何、曲线曲面、几何模型、显示模型等3D模型表示方面的经验,写入标准。这样也有利于将这些几何算法的数据模型作为模型标准推广。特别是前面提及的Breps模型。
[1] http://c.gb688.cn/bzgk/gb/showGb?type=online&hcno=83ED06C5071AE9601FEA6F841AE6DF8F