CN117475093B - 一种从基于xml蒙卡几何表示到三维cad模型的自动转换方法 - Google Patents

一种从基于xml蒙卡几何表示到三维cad模型的自动转换方法 Download PDF

Info

Publication number
CN117475093B
CN117475093B CN202311823546.2A CN202311823546A CN117475093B CN 117475093 B CN117475093 B CN 117475093B CN 202311823546 A CN202311823546 A CN 202311823546A CN 117475093 B CN117475093 B CN 117475093B
Authority
CN
China
Prior art keywords
boolean
tree
gdml
entity
coordinates
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202311823546.2A
Other languages
English (en)
Other versions
CN117475093A (zh
Inventor
冯智勇
马志国
齐延宝
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qima Hainan Technology Co ltd
Original Assignee
Qima Hainan Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qima Hainan Technology Co ltd filed Critical Qima Hainan Technology Co ltd
Priority to CN202311823546.2A priority Critical patent/CN117475093B/zh
Publication of CN117475093A publication Critical patent/CN117475093A/zh
Application granted granted Critical
Publication of CN117475093B publication Critical patent/CN117475093B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/005Tree description, e.g. octree, quadtree
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Geometry (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本发明属于计算机辅助建模技术领域,公开了一种从基于XML蒙卡几何表示到三维CAD模型的自动转换方法,S1:通过XML解析器,提取GDML文件中的数据,将其中的数据信息归纳为关键字与属性,关键字与属性形成键‑值对;S2:根据GDML文件中的上下文的引用关系重建几何多叉树和布尔二叉树;S3:对几何多叉树和布尔二叉树进行遍历,计算绝对坐标值,并根据实体具体组成和布尔运算次序进行三维CAD绘制;通过使用XML解析器提取GDML文件中的数据,将GDML文件中的复杂几何信息转换成可视CAD三维模型,通过解析出的完整的几何多叉树和布尔二叉树,和正确的坐标变换顺序,实现了由相对坐标到绝对坐标的转换。

Description

一种从基于XML蒙卡几何表示到三维CAD模型的自动转换方法
技术领域
本发明属于计算机辅助建模技术领域,具体的说,涉及一种从基于XML蒙卡几何表示到三维CAD模型的自动转换方法。
背景技术
蒙特卡罗方法(Monte Carlo Method,简称“蒙卡方法”)是一种求解粒子输运方程的重要方法,该方法的特点是具有精确的几何描述能力。蒙卡方法一般采用构造实体几何(CSG,Constructive Solid Geometry)作为几何表述方式。在CSG中,通过基本的几何要素集合经由布尔运算(交、并、差)实现复杂几何的描述。
目前,基于蒙卡方法的大多计算机程序中,尽管具体的几何表述语法存在差异,但基于CSG的基本几何表述逻辑大体一致。GDML(Geometry Description Markup Language)是一种基于XML(可扩展标记语言)的几何表述语法,它提供了20余种基本实体形状、布尔运算、以及几何体的层次嵌套树形结构,可以用来完备描述蒙卡计算模型,因此得到了广泛应用。
然而GDML的可读性并不高,因其描述语句由大量文本数据组织而成,缺乏对几何模型直观地展示;GDML的数据嵌套关系复杂,语句存在相互依赖,几何信息的添加、删除牵一发动全身,数据的编辑、维护较困难。由于GDML的几何信息是完备的,理论上借助三维CAD平台就可以实现模型的三维绘制。通过将GDML文本中的复杂几何信息转换成可视三维CAD模型,能帮助蒙卡计算领域专家更加直观地了解模型,降低模型维护难度。
发明内容
本发明要解决的技术问题在于提供一种从基于XML蒙卡几何表示到三维CAD模型的自动转换方法,以实现GDML文本几何描述的三维可视化。
为解决上述技术问题,本发明提供如下技术方案:
一种从基于XML蒙卡几何表示到三维CAD模型的自动转换方法,包括以下步骤:
S1:通过XML解析器,提取GDML文件中的数据,将其中的数据信息归纳为关键字与属性,关键字与属性形成键-值对,其中键为关键字,值为与关键字相关的属性;
S2:根据GDML文件中的上下文的引用关系重建几何多叉树和布尔二叉树;
S3:对几何多叉树和布尔二叉树进行遍历,计算绝对坐标值,并根据实体具体组成和布尔运算次序进行三维CAD模型绘制。
以下是本发明对上述技术方案的进一步优化:
所述键是GDML文件中的一个基本实体的名称、一次布尔运算结果实体的名称或一级实体父子嵌套关系中几何父体的名称。
进一步优化:所述值为组成键或键包含的数据;一个基本实体的值包括种类、尺寸;一次布尔运算的值包括参与布尔运算的目标体、工具体的名称,工具体相对目标体的坐标,一级布尔运算种类;一级实体父子嵌套关系的值包括父体内部包含的几何子体名称,几何子体相对于父体的坐标产生的集合。
进一步优化:所述几何多叉树的每一个节点对应一个待绘制实体,每个实体对应一个布尔二叉树。
进一步优化:所述几何多叉树包含根节点,从根节点向下进行深度优先遍历,达到一个目标节点,从根节点到目标节点的路径对应完整的多级父子嵌套关系,在一级父子嵌套关系中,子体坐标相对于父体坐标由旋转量(α,β,γ)和平移量(x,y,z)描述,通过旋转平移矩阵:
,
计算得到子体坐标系下某点在父体坐标系下的坐标值,几何多叉树中一条路径上每两个相邻节点都对应一个旋转平移矩阵,一条路径上的所有旋转平移矩阵相乘得到根节点坐标系,根节点坐标系视为绝对坐标系,由此可完成相对坐标值到绝对坐标值的变换。
进一步优化:所述布尔二叉树的当前节点作为根节点向下进行深度优先遍历,到达一个目标节点,目标节点处于布尔二叉树的二叉左分支上,目标节点即目标体,不进行坐标变换;目标节点处于布尔二叉树的二叉右分支上,目标节点即刀具体,刀具体相对目标体的旋转量(α,β,γ)和平移量(x,y,z),通过旋转平移矩阵进行坐标变换:
,
布尔二叉树的遍历过程中,根节点到目标节点会形成一条路径,路径上的每一段是布尔二叉树的左分支或右分支,左分支上的目标节点不进行坐标变换,右分支上的目标节点坐标通过旋转平移矩阵进行变换,路径上的所有旋转平移矩阵相乘,得到布尔二叉树上对应目标节点相对根节点的旋转平移矩阵。
进一步优化:所述三维CAD模型绘制使用商软的二次开发接口,或开源CAD内核的接口,建立GDML支持的9种基本实体的绘制方法,9种基本实体包括:
Box,长方体,CAD平台直接提供长方体绘制接口;
Cone,广义圆锥,包括上下底的内外径和回转张角,绘制一个梯形,再以该梯形为轮廓线,绕梯形所在平面内垂直于上下底的一条直线进行回转;
Sphere,广义球,包括内外径、极角张角和方位角张角,绘制两条圆弧和两条线段,一条圆弧以球的外径为半径,一条圆弧以球的内径为半径,两条线段封闭两条圆弧形成扇形,再以扇形为轮廓线,绕扇形所在平面内一条直线进行回转;
Tube,广义圆柱,包括内外径和方位角张角,绘制两条圆弧和两条线段,一条圆弧以圆柱的外径为半径,一条圆弧以圆柱的内径为半径,两条线段封闭两条圆弧形成扇形,再以扇形为轮廓线,向垂直于轮廓线所在平面方向进行拉伸;
Ellipsoid,椭球,可首先调用Sphere的绘制得到一个球体,再按照椭球的半长轴参数进行不同方向上的放缩操作;
Ellipsoid Tube,椭圆柱,根据椭圆柱横截面的半长轴数值绘制一个椭圆,再以椭圆作为轮廓线,向垂直于轮廓线所在平面方向进行拉伸;
Tetrahedron,四面体,先确定四面体四个顶点的坐标,再从四个坐标中任选三个绘制三角形,共绘制四个三角形,由四个三角形围成四面体;
Extruded Solid,广义拉伸体,先确定多个坐标,用线段连接各坐标形成首尾相接的多边形,以多边形为轮廓线,向垂直于轮廓线所在平面方向进行拉伸;
Torus,广义圆环,包括内外径和回转张角,先以外径为半径绘制外径圆,以外径圆为轮廓线,绕外径圆形所在平面内的一条直线进行回转形成目标体,再以内径为半径绘制内径圆,绕内径圆所在平面内的一条直线进行回转形成刀具体,最后目标体与刀具体进行布尔差运算。
本发明通过使用XML解析器提取GDML文件中的数据,将GDML文件中的复杂几何信息转换成可视CAD三维模型,通过解析出的完整的几何多叉树和布尔二叉树,和正确的坐标变换顺序,实现了由相对坐标到绝对坐标的转换,再通过商软CAD二次开发接口实现三维模型的建立;该方法可将手工构建或编码生成的GDML文件中存储的CSG几何重建为CAD系统可以识别的便捷表示,进而实现可视化输出,能帮助蒙卡计算领域专家更加直观地了解模型、修改模型、确认模型的正确性,降低模型维护难度,从而显著提升建模效率。
下面结合附图和实施例对本发明进一步说明。
附图说明
图1为本发明从GDML蒙卡几何表示到三维CAD模型自动转换方法的流程图;
图2为本发明实施例GDML文件的实体组织树状关系图;
图3为本发明实施例GDML文件转换为三维CAD模型的结构示意图。
具体实施方式
如图1-3所示,一种从基于XML蒙卡几何表示到三维CAD模型的自动转换方法,包括一下步骤:
S1:通过XML解析器,提取GDML文件中的数据,根据XML的特点,所提取的数据信息可以归结为关键字加属性的模式;
GDML文件中的一个基本实体,经XML解析后,基本实体的名称作为关键字,基本实体的种类、尺寸作为属性;
GDML文件中的一次布尔运算,经XML解析后,布尔运算的结果实体的名称作为关键字,参与布尔运算的目标体、工具体的名称,工具体相对于目标体的坐标,以及布尔运算种类作为属性;
GDML文件中的一层实体父子嵌套关系,经XML解析后,嵌套关系中几何父体的名称作为关键字,父体内部可包含多个几何字体,一系列几何子体的名称以及它们各自相对父体的坐标产生的集合作为属性;
GDML文件中的所有的几何信息经XML解析后,可建立以关键字为键、已属性为值的键-值对,主要包含实体键-值对,布尔运算键-值对,父子关系键-值对。
S2:根据GDML上下文的引用关系重建几何多叉树和布尔二叉树;
父子嵌套关系,一个几何父体的属性中包含了几何子体名称,这实际上是父体引用了子体,若已知父体的名称,即可获得其所有子体的名称和对应坐标,取某个子体名称再在父子关系键-值对中查找,则可获得以这个子体作为父体时,其所有子体的名称和对应坐标;这一过程可以不断延伸,直到遇到某个实体不包含任何子体为止,通过这种方式将所有父子关系键-值对梳理完毕,就会形成一个几何多叉树。由于一个GDML上下文中只有一套嵌套关系,因此几何多叉树仅有一个;
布尔运算关系,一个布尔实体的属性中包含了目标体、刀具体的名称以及刀具体相对目标体的坐标,这实际上是布尔体引用了目标体和刀具体;若已知布尔体的名称,取目标体(或刀具体)再在布尔运算键-值对中查找,则可获得以这个实体作为布尔实体时,其对应的目标体和刀具体以及坐标值;这一过程可以不断延伸,直到遇到某个实体不包含目标体(或刀具体)为止;通过这种方式将所有布尔运算键-值对梳理完毕,就会形成布尔二叉树;由于每个实体都可能是复杂布尔实体,其基本实体组成和布尔运算次序各不相同,因此每个实体各自对应一个布尔二叉树;
S3:对几何多叉树和布尔二叉树进行遍历,计算绝对坐标值,并根据实体具体组成和布尔运算次序进行三维CAD模型绘制。
在S2中已经产生了几何多叉树,其中的每一个节点对应一个待绘制实体,每个实体又对应一个布尔二叉树。
首先,从几何多叉树的根节点向下进行深度优先遍历,到达某一个目标节点。由根节点到目标节点的路径对应完整的多级父子嵌套关系,在一级父子嵌套关系中,子体坐标相对于父体的坐标由旋转量(α,β,γ)和平移量(x,y,z)描述,通过以下旋转平移矩阵:
,
可以得到子体坐标系下某点在父体坐标系下的坐标值;而一条路径上每两个相邻节点都对应一个旋转平移矩阵,因此最终相对于根节点坐标系(视为绝对坐标系)的旋转平移矩阵可由上述一系列矩阵依次相乘得到,由此就可以完成相对坐标值到绝对坐标值的变换。
然后,从以当前节点为根节点的布尔二叉树向下进行深度优先遍历,到达某一个目标节点,如果该节点处于二叉左分支则认为是目标体,不进行坐标变换;如果处于右分支,则认为是刀具体,根据刀具体相对目标体的旋转量(α,β,γ)和平移量(x,y,z),通过如下旋转平移矩阵进行坐标变换:
,
类似几何多叉树的遍历过程,根节点到达目标节点也会形成一条路径,这条路径上的每一段不是二叉树左分支就是右分支,如果是左分支则不进行坐标变换,如果是右分支则进行上述坐标变换,矩阵依次相乘,就能得到二叉树上对应每个节点相对根节点的旋转平移矩阵,由此可完成所有实体相对坐标值到绝对坐标值的变换。
如前所述,布尔二叉树节点往下延伸的终止条件是该节点没有目标体和刀具体,即该节点是基本实体,而基本实体是完成三维CAD绘制的基本单位,目前无论是部分商软的二次开发接口,或开源CAD内核的接口,都提供基本的绘制功能。GDML包含20余种基本实体,其中常用的几种实体可采用如下的绘制手段。
所述三维CAD模型绘制使用商软的二次开发接口,或开源CAD内核的接口,建立GDML支持的9种基本实体的绘制方法,9种基本实体包括:
Box,长方体,CAD平台直接提供长方体绘制接口;
Cone,广义圆锥,包括上下底的内外径和回转张角,绘制一个梯形,再以该梯形为轮廓线,绕梯形所在平面内垂直于上下底的一条直线进行回转;
Sphere,广义球,包括内外径、极角张角和方位角张角,绘制两条圆弧和两条线段,一条圆弧以球的外径为半径,一条圆弧以球的内径为半径,两条线段封闭两条圆弧形成扇形,再以扇形为轮廓线,绕扇形所在平面内一条直线进行回转;
Tube,广义圆柱,包括内外径和方位角张角,绘制两条圆弧和两条线段,一条圆弧以圆柱的外径为半径,一条圆弧以圆柱的内径为半径,两条线段封闭两条圆弧形成扇形,再以扇形为轮廓线,向垂直于轮廓线所在平面方向进行拉伸;
Ellipsoid,椭球,可首先调用Sphere的绘制得到一个球体,再按照椭球的半长轴参数进行不同方向上的放缩操作;
Ellipsoid Tube,椭圆柱,根据椭圆柱横截面的半长轴数值绘制一个椭圆,再以椭圆作为轮廓线,向垂直于轮廓线所在平面方向进行拉伸;
Tetrahedron,四面体,先确定四面体四个顶点的坐标,再从四个坐标中任选三个绘制三角形,共绘制四个三角形,由四个三角形围成四面体;
Extruded Solid,广义拉伸体,先确定多个坐标,用线段连接各坐标形成首尾相接的多边形,以多边形为轮廓线,向垂直于轮廓线所在平面方向进行拉伸;
Torus,广义圆环,包括内外径和回转张角,先以外径为半径绘制外径圆,以外径圆为轮廓线,绕外径圆形所在平面内的一条直线进行回转形成目标体,再以内径为半径绘制内径圆,绕内径圆所在平面内的一条直线进行回转形成刀具体,最后目标体与刀具体进行布尔差运算。
例如一个文本化的GDML文件如下所示:
<?xml version="1.0" encoding="UTF-8" ?>
<gdml xmlns:gdml="http://cern.ch/2001/Schemas/GDML" xmlns:xsi=" "xsi:noNamespaceSchemaLocation="gdml.xsd" >
<define>
<constant name="PI" value="3.14159265358979" />
<constant name="TWOPI" value="6.28318530717959" />
<constant name="HALFPI" value="1.5707963267949" />
<position name="Pos_Boolean_41503_0" unit="mm" x="15" y="15" z="15"/>
<rotation name="Rot_Boolean_41503_0" unit="radian" x="0" y="0" z="0" />
<position name="Pos_Vol_S_S1" unit="mm" x="0" y="0" z="0" />
<rotation name="Rot_Vol_S_S1" unit="radian" x="0" y="0" z="0" />
<position name="Pos_Vol_S_S2" unit="mm" x="100" y="70.7106781186548" z="50" />
<rotation name="Rot_Vol_S_S2" unit="radian" x="0" y="0" z="0.785398163397448" />
<position name="Pos_Vol_S_S3" unit="mm" x="0" y="0" z="0" />
<rotation name="Rot_Vol_S_S3" unit="radian" x="4.71238898038469" y="-0.785398163397448" z="0" />
</define>
<materials>
<element Z="8" formula="O" name="Oxygen" >
<atom value="16" />
</element>
<element Z="7" formula="N" name="Nitrogen" >
<atom value="14.01" />
</element>
<material name="Air" >
<D value="0.00129" />
<fraction n="0.3" ref="Oxygen" />
<fraction n="0.7" ref="Nitrogen" />
</material>
</materials>
<solids>
<box aunit="radian" lunit="mm" name="WorldBox" x="10000" y="10000"z="10000" />
<sphere aunit="radian" deltaphi="6.29" deltatheta="3.15" lunit="mm"name="Sol_S_S1" rmax="10" rmin="0" startphi="0" starttheta="0" />
<box aunit="radian" lunit="mm" name="Sol_S_S2" x="100" y="100" z="100" />
<tube aunit="radian" deltaphi="6.29" lunit="mm" name="Sol_S_41503_1" rmax="15" rmin="0" startphi="0" z="20" />
<box aunit="radian" lunit="mm" name="Sol_S_41510_1" x="30" y="30" z="50" />
<subtraction name="Sol_S_S3" >
<first ref="Sol_S_41503_1" />
<second ref="Sol_S_41510_1" />
<positionref ref="Pos_Boolean_41503_0" />
<rotationref ref="Rot_Boolean_41503_0" />
</subtraction>
</solids>
<structure>
<volume name="Vol_S_S1" >
<materialref ref="Air" />
<solidref ref="Sol_S_S1" />
</volume>
<volume name="Vol_S_S3" >
<materialref ref="Air" />
<solidref ref="Sol_S_S3" />
</volume>
<volume name="Vol_S_S2" >
<materialref ref="Air" />
<solidref ref="Sol_S_S2" />
<physvol>
<volumeref ref="Vol_S_S3" />
<positionref ref="Pos_Vol_S_S3" />
<rotationref ref="Rot_Vol_S_S3" />
</physvol>
</volume>
<volume name="World" >
<materialref ref="Air" />
<solidref ref="WorldBox" />
<physvol>
<volumeref ref="Vol_S_S1" />
<positionref ref="Pos_Vol_S_S1" />
<rotationref ref="Rot_Vol_S_S1" />
</physvol>
<physvol>
<volumeref ref="Vol_S_S2" />
<positionref ref="Pos_Vol_S_S2" />
<rotationref ref="Rot_Vol_S_S2" />
</physvol>
</volume>
</structure>
<setup name="Default" version="1.0" >
<world ref="World" />
</setup>
</gdml>
在上述GDML文件中包括5个实体,分别为:1.长方体WorldBox,长宽高分别为10000、10000、10000;2.球体Sol_S_S1,半径10;3.长方体Sol_S_S2,长宽高分别为100、100、100;4.圆柱体Sol_S_41503_1,半径15、高20;5.长方体Sol_S_41510_1,长宽高分别为30、30、50;以上建立了实体键-值对。
上述GDML文件中存在一次布尔运算,由Sol_S_41503_1和Sol_S_41510_1进行差运算产生最终体Sol_S_S3,Sol_S_41503_1为左分支实体,Sol_S_41510_1为右分支实体,后者相对于前者的平移旋转分别为Pos_Boolean_41503_0和Rot_Boolean_41503_0;以上建立了布尔运算键-值对。
上述GDML文件中存在两层父子关系,第一层World有两个子体,其一为Vol_S_S1,它相对于World的平移旋转分别为Pos_Vol_S_S1和Rot_Vol_S_S1,其二为Vol_S_S2,它相对于World的平移旋转分别为Pos_Vol_S_S2和Rot_Vol_S_S2;第二层Vol_S_S2有一个子体Vol_S_S3,它相对于Vol_S_S2的平移旋转分别为Pos_Vol_S_S3和Rot_Vol_S_S3;以上建立了父子关系键-值对。
以上述键-值对为基础重建几何多叉树或布尔二叉树,首先查找World的子体,找到World的第一个子体Vol_S_S1,对应平移Pos_Vol_S_S1=0、0、0,旋转Rot_Vol_S_S1=0、0、0,Vol_S_S1没有子体,不是布尔体,于是对Vol_S_S1的处理结束。
继续找到World的第二个子体Vol_S_S2,对应平移Pos_Vol_S_S2=100、70.7106781186548、50,旋转Rot_Vol_S_S2=0、0、0.785398163397448,Vol_S_S2不是布尔体,有一个子体Vol_S_S3,于是对Vol_S_S2的处理结束。
继续找到Vol_S_S2的子体Vol_S_S3,对应平移Pos_Vol_S_S3=0、0、0,旋转Rot_Vol_S_S3= 4.71238898038469、-0.785398163397448、0,Vol_S_S3是布尔体,找到左分支和右分支分别为Sol_S_41503_1和Sol_S_41510_1,右分支相对左分支的平移Pos_Boolean_41503_0=15、15、15,旋转Rot_Boolean_41503_0=0、0、0,Vol_S_S3没有子体,至此所有体遍历完毕,整个过程结束,得到本例完整的树状结构。
从World根节点向下进行深度优先遍历,首先找到Vol_S_S1,根据子体相对父体的旋转平移矩阵,将(α,β,γ)=(0,0,0)和(x,y,z)=(0,0,0)代入,计算得到的矩阵为:
,
因此调用CAD绘制一个球心位于(0,0,0)、半径为10的球体;Vol_S_S1没有子体,于是返回上World继续查找子体;
然后找到Vol_S_S2,将(α,β,γ)=(0、0、0.785398163397448)和(x,y,z)=(100、70.7106781186548、50)代入,计算得到矩阵为:
,
因此调用CAD绘制一个长宽高为100、中心位于原点的长方体,将长方体绕z轴旋转45°,再将中心平移到(100、70.7106781186548、50);Vol_S_S2有一个子体,于是继续向下搜索;
然后找到Vol_S_S3,是布尔体,首先处理左分支,将(α,β,γ)=(4.71238898038469,-0.785398163397448,0)和(x,y,z)=(0,0,0)带入,计算得到矩阵为:
,
将该矩阵和上一步产生的其父体的矩阵相乘,得到最终矩阵为:
,
因此调用CAD绘制一个半径15、高20、中心位于原点的圆柱体,将圆柱体绕x轴转动90°,再将中心平移到(100、70.7106781186548、50),左分支处理完毕;再处理右分支,将(α,β,γ)=(0,0,0)和(x,y,z)=(15,15,15)代入,计算得到矩阵为:
,
将该矩阵和上一步产生的左分支的矩阵相乘,得到最终矩阵为
,
因此调用CAD绘制一个长宽高分别为30、30、50,中心位于原点的长方体,将圆柱体绕x轴转动90°,再将中心平移到(115、55.71067811865、65),右分支处理完毕;最后使用布尔差运算,将左分支实体(圆柱体)布尔减去右分支实体(长方体)。至此,所有体遍历完毕,绘制过程也结束,得到如图3所示三维模型。
本实施案例有80行文本,包含2层父子关系与1次布尔运算,经过解析与绘制,产生5个实体,其中World实体无需显式绘制。GDML解析时间0.02s,绘制时间0.1s。
对于本领域的普通技术人员而言,根据本发明的教导,在不脱离本发明的原理与精神的情况下,对实施方式所进行的改变、修改、替换和变型仍落入本发明的保护范围之内。

Claims (2)

1.一种从基于XML蒙卡几何表示到三维CAD模型的自动转换方法,其特征在于:包括以下步骤:
S1:通过XML解析器,提取GDML文件中的数据,将其中的数据信息归纳为关键字与属性,关键字与属性形成键-值对,其中键为关键字,值为与关键字相关的属性;
S2:根据GDML文件中的上下文的引用关系重建几何多叉树和布尔二叉树;
S3:对几何多叉树和布尔二叉树进行遍历,计算绝对坐标值,并根据实体具体组成和布尔运算次序进行三维CAD模型绘制;
所述键是GDML文件中的一个基本实体的名称、一次布尔运算结果实体的名称或一级实体父子嵌套关系中几何父体的名称;
所述值为组成键或键包含的数据;一个基本实体的值包括种类、尺寸;一次布尔运算的值包括参与布尔运算的目标体、工具体的名称,工具体相对目标体的坐标,一级布尔运算种类;一级实体父子嵌套关系的值包括父体内部包含的几何子体名称,几何子体相对于父体的坐标产生的集合;
所述几何多叉树的每一个节点对应一个待绘制实体,每个实体对应一个布尔二叉树;
所述几何多叉树包含根节点,从根节点向下进行深度优先遍历,达到一个目标节点,从根节点到目标节点的路径对应完整的多级父子嵌套关系,在一级父子嵌套关系中,子体坐标相对于父体坐标由旋转量(α,β,γ)和平移量(x,y,z)描述,通过旋转平移矩阵:
计算得到子体坐标系下某点在父体坐标系下的坐标值,几何多叉树中一条路径上每两个相邻节点都对应一个旋转平移矩阵,一条路径上的所有旋转平移矩阵相乘得到根节点坐标系,根节点坐标系视为绝对坐标系,由此完成相对坐标值到绝对坐标值的变换;
所述布尔二叉树的当前节点作为根节点向下进行深度优先遍历,到达一个目标节点,目标节点处于布尔二叉树的二叉左分支上,目标节点即目标体,不进行坐标变换;目标节点处于布尔二叉树的二叉右分支上,目标节点即刀具体,刀具体相对目标体的旋转量(α,β,γ)和平移量(x,y,z),通过旋转平移矩阵进行坐标变换:
布尔二叉树的遍历过程中,根节点到目标节点会形成一条路径,路径上的每一段是布尔二叉树的左分支或右分支,左分支上的目标节点不进行坐标变换,右分支上的目标节点坐标通过旋转平移矩阵进行变换,路径上的所有旋转平移矩阵相乘,得到布尔二叉树上对应目标节点相对根节点的旋转平移矩阵。
2.根据权利要求1所述的一种从基于XML蒙卡几何表示到三维CAD模型的自动转换方法,其特征在于:所述三维CAD模型绘制使用商软的二次开发接口,或开源CAD内核的接口,建立GDML支持的9种基本实体的绘制方法,9种基本实体包括:
Box,长方体,CAD平台直接提供长方体绘制接口;
Cone,广义圆锥,包括上下底的内外径和回转张角,绘制一个梯形,再以该梯形为轮廓线,绕梯形所在平面内垂直于上下底的一条直线进行回转;
Sphere,广义球,包括内外径、极角张角和方位角张角,绘制两条圆弧和两条线段,一条圆弧以球的外径为半径,一条圆弧以球的内径为半径,两条线段封闭两条圆弧形成扇形,再以扇形为轮廓线,绕扇形所在平面内一条直线进行回转;
Tube,广义圆柱,包括内外径和方位角张角,绘制两条圆弧和两条线段,一条圆弧以圆柱的外径为半径,一条圆弧以圆柱的内径为半径,两条线段封闭两条圆弧形成扇形,再以扇形为轮廓线,向垂直于轮廓线所在平面方向进行拉伸;
Ellipsoid,椭球,首先调用Sphere的绘制得到一个球体,再按照椭球的半长轴参数进行不同方向上的放缩操作;
Ellipsoid Tube,椭圆柱,根据椭圆柱横截面的半长轴数值绘制一个椭圆,再以椭圆作为轮廓线,向垂直于轮廓线所在平面方向进行拉伸;
Tetrahedron,四面体,先确定四面体四个顶点的坐标,再从四个坐标中任选三个绘制三角形,共绘制四个三角形,由四个三角形围成四面体;
Extruded Solid,广义拉伸体,先确定多个坐标,用线段连接各坐标形成首尾相接的多边形,以多边形为轮廓线,向垂直于轮廓线所在平面方向进行拉伸;
Torus,广义圆环,包括内外径和回转张角,先以外径为半径绘制外径圆,以外径圆为轮廓线,绕外径圆形所在平面内的一条直线进行回转形成目标体,再以内径为半径绘制内径圆,绕内径圆所在平面内的一条直线进行回转形成刀具体,最后目标体与刀具体进行布尔差运算。
CN202311823546.2A 2023-12-28 2023-12-28 一种从基于xml蒙卡几何表示到三维cad模型的自动转换方法 Active CN117475093B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311823546.2A CN117475093B (zh) 2023-12-28 2023-12-28 一种从基于xml蒙卡几何表示到三维cad模型的自动转换方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311823546.2A CN117475093B (zh) 2023-12-28 2023-12-28 一种从基于xml蒙卡几何表示到三维cad模型的自动转换方法

Publications (2)

Publication Number Publication Date
CN117475093A CN117475093A (zh) 2024-01-30
CN117475093B true CN117475093B (zh) 2024-04-16

Family

ID=89631575

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311823546.2A Active CN117475093B (zh) 2023-12-28 2023-12-28 一种从基于xml蒙卡几何表示到三维cad模型的自动转换方法

Country Status (1)

Country Link
CN (1) CN117475093B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008026003A2 (en) * 2006-09-01 2008-03-06 Visual Technology Services Ltd 3 d pdf document generator and method for generating 3d pdf documents
CN106709163A (zh) * 2016-12-06 2017-05-24 清华大学 一种从复杂cad三维模型到蒙卡几何的自动转换方法
CN109344459A (zh) * 2018-09-13 2019-02-15 北京应用物理与计算数学研究所 一种蒙特卡罗程序的可视建模与转换方法及系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060066609A1 (en) * 2004-09-28 2006-03-30 Iodice Arthur P Methods and systems for viewing geometry of an object model generated by a CAD tool
US20140281545A1 (en) * 2013-03-12 2014-09-18 Commvault Systems, Inc. Multi-layer embedded encryption

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008026003A2 (en) * 2006-09-01 2008-03-06 Visual Technology Services Ltd 3 d pdf document generator and method for generating 3d pdf documents
CN106709163A (zh) * 2016-12-06 2017-05-24 清华大学 一种从复杂cad三维模型到蒙卡几何的自动转换方法
CN109344459A (zh) * 2018-09-13 2019-02-15 北京应用物理与计算数学研究所 一种蒙特卡罗程序的可视建模与转换方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于XML的逆向重建模型与CAD系统数据交换研究;张勇等;航空制造技术;20111001;第84-86、90页 *

Also Published As

Publication number Publication date
CN117475093A (zh) 2024-01-30

Similar Documents

Publication Publication Date Title
CN108959433B (zh) 一种从软件项目数据中提取知识图谱并问答的方法与系统
CN111090461B (zh) 一种基于机器翻译模型的代码注释生成方法
US7492364B2 (en) System and method for creating and updating a three-dimensional model and creating a related neutral file format
US20190347077A1 (en) Process and system for automatic generation of functional architecture documents and software design and analysis specification documents from natural language
CN108717423B (zh) 一种基于深度语义挖掘的代码段推荐方法
WO2021147786A1 (zh) 知识图谱的构建方法及装置、存储介质、电子设备
Li et al. QVT-based model transformation using XSLT
CN105006023A (zh) 一种支持辅助设计的多类别三维模型组合建模方法
CN116594608A (zh) 可视化神经网络模型生成和训练的方法及装置
Gao et al. Scenehgn: Hierarchical graph networks for 3d indoor scene generation with fine-grained geometry
Huang et al. Flownl: Asking the flow data in natural languages
CN117475093B (zh) 一种从基于xml蒙卡几何表示到三维cad模型的自动转换方法
CN113467785B (zh) 一种拟态数据库的sql转译方法和系统
Preidel et al. Integrating relational algebra into a visual code checking language for information retrieval from building information models
Chen et al. NL2INTERFACE: Interactive Visualization Interface Generation from Natural Language Queries
Wang et al. Research on parsing and storage of BIM information based on IFC standard
Lizardo et al. OMT-G Designer: a Web tool for modeling geographic databases in OMT-G
Krijnen Efficient storage and retrieval of detailed building models: multi-disciplinary and long-term use of geometric and semantic construction information
Wagner et al. Geometry and geospatial data on the web
Chen et al. Automatic Generation of Semantic 3D City Models from Conceptual Massing Models
WO2024108580A1 (zh) 多维参数化城市信息模型构建方法、系统及计算机设备
Sadler et al. A neutral XML design framework for generating parametric parts in multiple CAD systems
Ma et al. Ontology-based computerized representation of specifications for construction cost estimation
Dave CDT: a computer-assisted diagramming tool
STOJANOVIC et al. Ontology-driven analytics for indoor point clouds

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant