基于step文件的从cad模型到mcnp几何模型的转换算法

文档序号:8472967阅读:1006来源:国知局
基于step文件的从cad模型到mcnp几何模型的转换算法
【技术领域】
[0001] 本发明涉及物理、核科学技术和CAD建模等领域,核心内容是基于STEP文件的从 CAD模型到MCNP几何模型的转换算法。
【背景技术】
[0002] 蒙特卡洛中子-光子输运程序MCNP(MonteCarloN-ParticleCode)是美国 新墨西哥洛斯阿拉莫斯国家实验室应用理论物理部的MonteCarlo小组经过数十年的 研究开发的一个基于蒙特卡洛方法的大型多功能MonteCarlo粒子输运程序。因其良 好的粒子输运性能在物理、核科学领域有着广泛的应用。但其输入文件(INPfile)结 构复杂,手写容易出错等问题,国际上出现了很多解决这一问题的软件,类似Visual Editor,Moritz,DesignModeler,MCAM等软件,由于这些软件有的不能添加材料,有的不能 对导入的模型进行修改等原因不能满足用户的需求。另外,能解决上述问题的思路大致有 三类,意思从BREP表示到CSG表示的转换,二是基于大型三维建模软件的二次开发,三是基 于中性文件的转换。第一种由于两种转换的表示涉及到大量的数学知识和计算机图形学的 知识,在转换的过程中会带来诸多麻烦。第二种太容易受到软件本身数据结构定义的限制, 并在一般大型的三维建模软件像CATIA和solidworks等都是商业软件,版权很贵。因此我 们提出了基于中性文件STEP(StanderfortheExchangeofProductModelData)的从 CAD模型到MCNP几何模型的转换算法。因为CAD系统具有强大的几何建模功能,我们可以 将CAD系统构建的模型导出成STEP文件后在转换为INPfile。
[0003] STEP标准是ISO(国际标准化组织)提出的信息交换标准,通过一种不依赖于任 何系统的中性机制,为解决不同CAX系统间的数据交换和共享提供了可行性。STEP可以被 多种CAD建模软件支持,因此通过设计STEP文件到INP文件的转换算法以实现CAD模型到 MCNP模型的转换,最终实现MCNP辅助建模,这样的转换算法具有通用性,可实现多个CAD系 统与MCNP模型的交互。

【发明内容】

[0006] 针对INP文件格式,为了实现通用的CAD建模软件与MCNP模型之间的交互,本发 明公开一种全新的基于STEP文件的从CAD模型到MCNP几何模型的转换算法。
[0007] 本发明通过对STEP文件进行分析,提取文件中有用的几何信息,通过进一步几何 运算,得到INPfile需要的几何信息和拓扑信息,然后根据INP文件格式将CAD模型转换 成相应的栅元卡和曲面卡形式,完成CAD建模软件与MCNP模型之间的交互。为了提高算法 的灵活性,在前一阶段对体进行分析基础上进行了改进,改进之后的算法可以直接对模型 中的面进行分析,能够输出任意模型的曲面卡。对于栅元卡的输出则采用构造栅元树的方 法进行。本部分将分为四个部分来介绍
【发明内容】
,主要分为,本算法整体思路,对STEP文件 信息提取算法,构造栅元树算法和栅元树输出算法。
[0008] 本发明整体算法步骤如下: St印1提取STEP文件中封闭壳(CLOSED_SHELL)信息:根据不同的曲面卡生成所需参数 提取STEP文件中相对应的法方向、点坐标半径、角度等信息。根据不同的栅元卡生成所需 参数提取STEP文件中相当对应体的信息,并将对应的字符转换成数字; St印2组成封闭壳(CLOSED_SHELL)的所有曲面方程求取:根据STEP文件中的关键字先 判断出曲面的类型,然后根据Stepl中提取的信息,通过数学几何计算求出各种曲面的方 程。声明新的栅元节点并根据曲面卡形式,将封闭壳中所包含的所有曲面的参数以及面信 息均存于该节点中; St印3STEP文件中封闭壳(CLOSED_SHELL)之间包含关系判定:若封闭壳A包含封闭壳B,则Produce(A,B) =1;若封闭壳B包含封闭壳A,则Produce(A,B) =-1;若封闭壳A与封闭 壳B不存在包含关系,则Produce(A,B) =0 ; Step4栅元树构造:根据Step3中Produce(A,B)函数的返回值构造栅元树。这里假设Cl为新加入的栅元节点,C2为栅元树中的节点,将节点Cl与栅元树中的所有栅元节点进行 比较即求对应的Produce(Cl,C2)值。当Produce(Cl,C2)=l时,将A作为B的孩子节点;当 Produce(Cl,C2) =-1,将A作为B的父节点;当Produce(Cl,C2) =0时,将A作为B的兄弟节 占. St印5判断STEP文件中所有封闭壳搜索是否完成:完成时,转Step6 ;若没有,转Stepl; Step6选择标号方式对栅兀树中栅兀进行标号; Step7曲面卡、栅元卡输出:遍历栅元树,按序输出栅元树中所有栅元节点中所包含的 曲面卡的信息于txt文件中,同时将遍历到的栅元节点作为根节点,再次遍历该节点下面 所有层的所有节点,得到它们的栅元号并以"a±fl±f2~#b#c#d..."的形式输出于同一个 txt文件中(a表示当前栅元节点栅元号,fl、f2…表示该栅元边界曲面的曲面号土表示曲 面方向,b、c、d…表示当前栅元节点下面所有层栅元节点的栅元号); Step8算法结束。
[0009] 由于在STEP文件里的信息包括了产品的整个生命周期,信息丰富,我们只需获得 我们所需的信息即可。所以本算法在对STEP文件进行信息提取时只提取对栅元卡和曲面 卡输出有用的信息。
[0010] 在Stepl中对于STEP文件信息的提取时采用的是按索引号和关键字的方式提取 信息的。
[0011] 对于一般的STEP文件不能仅仅是按照行的模式读取,因为可能存在STEP文件不 是以行的形式来进行存储的,所以本算法采取以分号作为结束标志进行文件读取,避免了 格式不同而读取失败的情况发生。
[0012]STEP文件信息提取算法步骤如下: St印1 令K= "CL0SED_SHELL" ; Step2以分号作为读取结束标志读取STEP文件存于字符数组chi中; St印3判断K是否在该字符数组中,是则转Step4,否则转Step2 ; St印4将字符数组chi中括号里的索引数字存
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1