基于ODB++文件转化为三维几何模型的方法

文档序号:32211169发布日期:2022-11-16 06:05阅读:1295来源:国知局
基于ODB++文件转化为三维几何模型的方法
基于odb++文件转化为三维几何模型的方法
技术领域
1.本发明属于计算机技术领域,更进一步涉及计算机辅助设计cad(computer aided design)技术领域中的一种基于开放式数据库odb++(open data base)文件转化为三维几何模型的方法。本发明可应用于集成电路三维电磁仿真系统中三维电磁建模的设计。


背景技术:

2.随着越来越高的带宽和更快的信号边缘速率,集成电路中电路板和封装的细微结构造成的不连续性显著影响了信号传输的质量。由此引发的信号与电源完整性问题日益严重,因此在制版之前需要及时发现并修正pcb(printed circuit board)版图电磁仿真中潜在的电磁问题。目前,用于版图的电磁仿真分析的主要是平面二维版图,但是,二维版图存在可视化性低的问题,并且仿真分析的结果精度较低。此外,各eda(electronics design automation)系统间的pcb数据格式不统一,从而导致需要对不同pcb数据格式开展不同的建模方式研究。
3.中国电子科技集团公司第五十四研究所在其申请的专利文献“一种基于odb++文件转化为可编辑pcb版图的方法”(申请日:2014年12月5日,申请号:201410734543.6,申请公布号:cn104346502a)中公开了一种odb++文件转化为可编辑pcb版图的方法。该方法的具体步骤为:第一步,创建支持pcb版图设计的软件平台plv;第二步,设计菜单界面作为odb++文件的输入口;第三步,用c++高级语言编写代码读取由eda软件到处的odb++文件;第四步,根据odb++文件定义的标准符号筛选出pcb版图的边框信息并存储到软件平台plv的内部数据结构中;第五步,根据odb++文件定义的标准符号筛选出pcb版图的封装信息、器件信息网络信息和丝印层的文本信息;第六步,将得到的pcb版图边框信息、封装信息、器件信息、网络信息和丝印层的文本信息统一转存到plv平台的内部数据结构中,然后调用显示函数即可显示出可选择可编辑的pcb版图。该方法存在的不足之处有两点:第一,平面二维版图不能够直观的反映出pcb板的各个细节以及整体,并且存在有一个或多个跨层网络无法显示的局限性,导致可视化性很低;第二,平面二维版图不能对跨层的网络和任意目标区域进行电磁仿真,只能对固定的传输线进行仿真,不满足实际工程的需求。


技术实现要素:

4.本发明的目的在于针对上述技术中存在的不足,提出一种基于odb++文件转化为三维几何模型的方法,用于解决不能用一种建模的方法对不同pcb文件格式进行三维几何建模的问题,用于解决平面二维版图不能够直观的反映pcb跨层网络结构或整个pcb版图模型的问题,以及用于解决平面二维版图不能满足对跨层的网络和任意目标区域进行电磁仿真需求的问题。
5.实现本发明目的的技术思路是:本发明采用odb++文件进形三维几何模型构建。由于odb++能够提供智能、单一的数据结构,同时支持与目前主流pcb数据格式如gerber、ipc-2581之间的相互转换。因此基于odb++这一数据格式,可以解决不能用一种建模的方法对不
同pcb文件格式进行三维几何建模的问题。本发明采用平面几何离散算法,通过在水平方向对pcb二维几何模型进行离散,根据水平方向的离散数据计算出垂直方向上的离散数据并对其进行处理,实现三维版图模型的构建,克服了现有技术中平面二维版图模型可视化性低的问题。本发明采用自定义裁剪技术,通过对pcb三维版图模型上目标区域的裁剪和目标网络的提取,对平面二维几何模型进行布尔运算、平面离散和渲染生成三维几何模型,解决了现有技术不能满足对跨层的网络和pcb任意目标区域电磁仿真需求的问题。相较于现有技术只能对固定的平面二维传输线进行电磁仿真,本发明构建的三维几何模型更能满足实际工程的需求。
6.本发明采取的技术方案包括如下步骤:
7.步骤1,分别搭建odb++压缩文件的导入界面和pcb模型的三维显示界面;
8.步骤2,筛选构建pcb二维几何模型所需的建模信息:
9.步骤2.1,从创建的文件导入界面中选定存放odb++压缩文件的文件路径,对odb++压缩文件进行解压,得到结构为目录树形式的odb++文件;设计存放图层堆叠顺序信息和图层属性信息的数据结构;选定odb++文件中的matrix文件夹的存放路径,从解压后matrix文件夹下的matrix文件中分别筛选出定义pcb图层堆叠顺序信息和各个图层的属性信息,将图层的堆叠顺序信息和属性信息存放到设计的数据结构中;
10.步骤2.2,设计存放解析非器件层信息的数据结构;选定odb++文件中的layers文件夹的存放路径,从解压后的layers文件夹下的features文件和attrlist文件中分别筛选出构建图层的图形信息和属性信息,将构建图层的图形信息和属性信息分类存放到设计的数据结构中;
11.步骤2.3,设计存放解析器件层信息的数据结构;选定odb++文件中存放components的文件路径,从解压后的layers文件夹下的components文件中分别筛选出pcb顶层和底层的器件信息,将顶层和底层的器件信息存放到设计的数据结构中;
12.步骤2.4,设计存放解析网络信息和封装信息的数据结构;选定odb++文件中的steps文件夹的存放路径,从解压后的steps文件夹下的data文件中分别筛选出网络信息和封装信息,将网络信息和封装信息存放到设计的数据结构中;
13.步骤3,构建pcb的三维版图模型:
14.步骤3.1,查找存放pcb图层堆叠顺序和图层属性信息数据结构中的图层堆叠顺序和图层属性信息,通过图层属性信息对图层进行分类;确定分类后过孔层中过孔的起始层和终止层,将过孔信息分别分配给其所跨过的金属图层;按照特征数据不同的基本图形类型,编写不同的函数接口创建出构建图层的基本图形,将所有的基本图形以指针的形式存放到构建的列表中;根据图层名称和图层上的所有基本图形指针列表,形成图层名称和基本图形指针列表能够双向查找的映射关系,得到按层构建的pcb二维几何模型;
15.步骤3.2,查找存放pcb网络信息数据结构中所包含的网络信息,根据网络信息所包含的图层名称,按照图层名称和图层上所有基本图形指针列表的映射关系,查找图层名称所对应的基本图形指针列表,在查找的基本图形指针列表中查找对应的基本图形指针,将查找的基本图形指针存放到列表中;根据网络名称和基本图形指针列表,形成网络名称和基本图形指针列表能够双向查找的映射关系,得到按网络构建的pcb二维几何模型;
16.步骤3.3,设计存放离散信息的数据结构,采用平面网格离散算法,对按层创建的
平面二维几何模型分别在水平和垂直方向上进行离散,得到三维版图模型的离散数据,将图层名称和图层上的离散数据存放到设计的数据结构中;
17.步骤3.4,查找存放图层名称和图层上离散数据数据结构中的图层离散数据信息,根据离散数据类型不同,将离散数据转换为可渲染的图形数据,通过调用渲染函数接口只对线网格进行渲染,实现将离散后三维模型数据渲染成三维版图模型,并且在三维版图模型显示界面中显示;
18.步骤4,构建pcb的三维几何模型:
19.步骤4.1,搭建pcb三维版图模型的自定义裁剪设置界面;
20.步骤4.2,通过在三维版图显示界面上的菜单栏中对目标网络名称的选择,实现一个或多个目标网络的提取;通过在自定义裁剪设置界面上设置自定义裁剪参数,对目标区域与整个pcb进行布尔运算,实现pcb目标区域的提取;
21.步骤4.3,根据网络名称与基本图形指针列表的映射关系,通过网络名称找到相对应的图形指针;对目标区域进行裁剪后得到目标区域的图形指针,编写函数接口对图形指针所指的二维平面几何模型进行拉伸和布尔运算,实现将目标网络的三维版图模型转换为三维几何实体模型;
22.步骤4.4,对三维几何实体模型进行离散,将离散后的数据转换为可渲染的图形数据,对图形数据进行渲染并显示到三维几何模型显示界面上。
23.本发明与现有技术相比,具有如下优点:
24.第一,本发明采用将odb++数据格式转化为三维参数化几何模型,通过将gerber、ipc-2581等主流pcb数据格式转换为odb++这一数据格式。解决了目前针对不同pcb数据格式,需要开发不同的三维几何建模方法的问题,提高了不同pcb数据格式三维几何建模的效率。
25.第二,本发明采用平面网格离散算法,通过在水平方向对pcb二维几何模型进行离散,根据水平方向的离散数据计算出垂直方向上的离散数据并对其进行处理,实现三维版图模型的构建,提高了pcb版图模型的可视化性。
26.第三,本发明采用自定义裁剪技术,通过对pcb三维版图模型上目标区域的裁剪和目标网络的提取,对平面二维几何模型进行布尔运算、平面离散和渲染生成三维几何模型。相较于现有技术只能对固定的平面二维传输线进行电磁仿真,本发明构建的三维几何模型更能满足实际工程的需求。
附图说明:
27.图1为本发明实现的流程图;
28.图2为本发明中生成的多层pcb三维版图模型示意图。
29.图3为本发明中生成的多层pcb三维版图模型局部放大示意图。
30.图4为本发明中生成的多层pcb三维几何模型示意图。
具体实施方式:
31.下面结合附图和实施例,对本发明作进一步详细描述。
32.参照图1和实施例,对本发明的实现步骤做进一步的描述。
33.本发明采用acis几何造型引擎和视觉化工具函数库vtk将odb++文件转化为三维几何模型。
34.步骤1,分别搭建odb++压缩文件的导入界面和模型三维显示界面。
35.步骤1.1,本发明的实施例采用跨平台的c++图形用户界面应用程序开发框架qt,用高级编程语言c++搭建一个支持导入odb++压缩文件的界面。
36.步骤1.2,分别搭建pcb三维版图模型和pcb三维几何模型的两个显示界面,三维版图模型和三维几何模型显示界面均包括菜单栏和属性栏。本发明的实施例采用的是cadence软件生成的odb++文件,由于odb++文件是一种国际标准文件,所以各eda软件导出的odb++文件格式都一样。
37.步骤2,筛选构建pcb二维几何模型所需的建模信息。
38.步骤2.1,从创建的文件导入界面中选定存放odb++压缩文件的文件路径,对odb++压缩文件进行解压,得到结构为目录树形式的odb++文件将读取后的压缩文件解压到指定文件夹中。
39.步骤2.2,筛选与pcb版图图层堆叠顺序相关的矩阵信息。
40.本发明通过读取解压之后matrix文件夹下的matrix文件,设计存放解析matrix文件信息的数据结构,将得到pcb图层堆叠顺序信息以及各个图层的属性信息存储到设计的数据结构中。matrix文件是产品模型的一种表示形式,其中行是产品模型的图层表,列是产品模型的步骤多层实体。
41.本发明的实施例中,由于矩阵文件是结构化文本文件,因此采用语法分析器生成器bison对《product_model_name》/matrix/matrix路径下的矩阵文件进行解析,得到图层的名称和图层的属性信息。将图层名称作为key值,图层属性信息作为value值,并存放到所设计的数据结构下的关联式容器map中。
42.步骤2.3,筛选与pcb二维几何模型相关的图层信息、器件信息。
43.本发明通过读取解压之后layers文件夹下的features文件以及attrlist文件,分别得到构成图层的图形信息和图层的属性信息。其中,features文件主要包含符号表、属性名称文本表和特征数据列表。特征数据列表中包含了构成图层的所有图形数据。特征数据由图形类型描述,具体由符号表中的基本符号,如矩形rect、圆形r、椭圆oval,或用户自定义符号构造而成,用户自定义符号通过symbols文件下各个features文件描述。attrlist文件主要包含了图层的属性信息,分为系统属性和用户自定义属性两类。按照图形类型设计数据结构,并将解析之后得到的图层特征信息按图层分类并存储。其中图形类型包括直线l、弧线a、不规则多边形s、焊盘型p、文本型t。
44.本发明的实施例中,由于features文件是行记录文本文件,参考步骤2.2中解析matrix文件所得到的图层堆叠顺序。因此采用逐行读取的方式分别对路径《product_name》/steps/《step_name》/layers/《layer_name》/features下和路径《product_name》/symbols/《symbol_name》/features下的features文件进行解析。创建layer类用来管理解析得到的图层信息,创建symbol类来管理标准符号和用户自定义符号的信息,创建shape类来管理特征数据信息。对格式units=《mm/inch》的数据行进行解析,作为特征信息数据的参考单位,将参考单位存储到layer类下的成员变量中。读取#feature symbol names文本行后的$(n)《symbol_type》data《m/i》格式中的data值,获得标准符号的编号、大小和形状
供行记录参考,标准符号的大小和形状存储到symbol类中。将得到的编号作为key值,将存放标准符号的大小和形状的结构体对象指针列表作为value值,存放到c++的关联式容器map中。读取#feature attribute names文本行后的@(n)《text_string》格式中的n和test_string可以获得属性编号和文本字符串供行记录参考,将编号n作为key值,test_string字符串作为value值,存放到c++的关联式容器map中。最后逐行读取#layer features文本行后特征数据行,根据特征数据行的索引分别从存放符号的map容器中和属性的map容器中取到相对应的数据信息。对取到的数据信息进行重组并存放到shape类下的成员变量中。根据首字符将得到的特征数据信息进行分类,将shape类对象指针列表存储到layer类下的成员变量中。
45.本发明通过读取解压之后顶器件层和底器件层文件夹下的components文件,得到pcb二维几何模型的器件信息。设计存储器件信息的数据结构,将得到的顶层器件信息与底层器件信息存储到定义的数据结构中。
46.本发明的实施例中,由于components文件是行记录文本文件,因此采用逐行读取的方式对路径《product_model_name》/steps/《step_name》/layers/《layer_name》/components下的components文件进行解析。创建component类来管理器件层的信息,将解析后顶器件层和底器件层中每一个器件的编号、属性、位置和器件引用的包编号信息存放到component类的成员变量中。
47.步骤2.4,筛选与构建pcb二维几何模型相关的网络信息和封装信息。
48.本发明通过读取解压之后steps文件夹下的data文件,得到pcb二维几何模型的网络信息和封装信息。设计数据结构来存放解析后得到网络信息和封装信息。data文件包含直接从eda系统读取的信息,涵盖cad库和用户自定义的器件包,器件包的轮廓和属性,以及网络互联的信息。依据解析的网络结构特性和封装结构特性,对按层解析得到的信息进行重组,将重组后的信息存储到所设计的数据结构中。
49.本发明的实施例中,由于data文件是行结构文本文件,因此采用逐行读取的方式对《product_model_name》/steps/《step_name》/eda/data路径下数据文件进行解析。设计net类管理解析后的网络信息,设计subnet类管理网络下的子网络信息,设计fid类管理子网络下的特征数据信息。对格式为lyr《name1》

《namen》的数据行进行解析,得到子网络中fid数据行参考的图层名称和图层顺序。将图层顺序作为key值,将图层名称作为value值,存放到c++的关联式容器map中。对格式为#@《m》《text_string》的数据行进行解析,得到网络参考的属性编号和属性文本,将属性编号m作为key值,将test_string作为value值,存放到c++的关联式容器map中。对格式为#&《n》《attribute_name》的数据行进行解析,得到属性名称编号和属性名称,将属性名称编号作为key值,将属性名称作为value值,存放到c++关联式容器map中。对格式为#net《x》的数据行解析得到当前网络的编号,对格式为net《net_name》;《attributes》;id=《id》的数据行解析得到当前网络的名称、属性和唯一标识符,将得到的信息存放到net类的成员变量中。通过对当前网络下的子网络进行遍历,对以snt开头的数据行解析获得当前子网络的类型和子网络的编号,将得到的子网络类型和编号信息存放到subnet类的成员变量中。通过对当前子网络下的fid数据行进行遍历,对子网络下格式为fid《type》《lyr_num》《f_num》的数据行进行解析,将得到特征数据的类型、特征数据,以及相对应的图层名称和特征数据的编号存放到fid类的成员变量中,将fid类对象指针存
储到所属当前subnet类的成员变量中,直至当前子网络遍历结束。将当前subnet类对象指针存放到当前net类的成员变量中,直至当前网络遍历结束。本发明的实施例中,设计package类管理由data文件解析得到的器件包信息。由于步骤2.3中对components文件解析得到器件引用的器件包编号信息,因此对以pkg开头的数据段解析,获得pcb上描述器件的图形形状。对pin开头的数据段解析,得到当前器件包中引脚的信息,该引脚信息中包括引脚名称、类型、位置和形状。器件包的信息和引脚信息共同构成了pcb的封装信息。每个pkg和pin数据行后都会跟随一个或多个轮廓记录,轮廓记录描述了器件和引脚的形状。将得到的引脚信息存放到package类的成员变量中,将器件包的编号作为key值,package类对象指针作为value值,存放到c++的关联式容器map中。
50.步骤3,构建pcb的三维版图模型。
51.参照图2,对构建的pcb三维版图模型做进一步的描述。
52.本发明根据步骤2筛选构建pcb二维几何模型的信息,分别按层和按网络两种划分方式构建pcb的二维几何模型。通过对构建的pcb二维几何模型进行离散,生成三维几何模型的离散数据,将生成的三维几何模型离散数据转换可渲染的图形数据。为了提高渲染的效率,通过调用渲染函数的接口只对离散后的线网格进行显示,实现将离散后三维几何模型数据渲染成三维版图模型,并且在搭建的三维版图模型显示界面中显示。图3是对图2中生成的多层pcb三维几何版图模型的左下角进行局部放大后的图。
53.步骤3.1,按层创建二维几何模型。
54.本发明根据matrix文件规定的图层顺序,通过图层属性对图层进行分类,如金属层、介质层、钻孔层和器件层等图层属性。在确定过孔的起始层和终止层后,根据过孔的类型,如通孔、埋孔和盲孔,将过孔信息如过孔尺寸,过孔形状和过孔中心的点位信息分别分配给其跨过的金属层。查找存放pcb图层堆叠顺序和图层属性信息数据结构中的图层堆叠顺序和图层属性信息,按照特征数据不同的基本图形类型,编写不同的函数接口创建出构建图层的基本图形,将所有的基本图形以指针的形式存放到构建的列表中。根据图层名称和图层上的所有基本图形指针列表,形成图层名称和基本图形指针列表能够双向查找的映射关系,得到按层构建的pcb二维几何模型。
55.本发明的实施例中,查找存放图层信息、基本符号和用户自定义符号数据结构中的图层信息和符号信息。按照基本图形类型的不同,如直线l,弧线a,焊盘形p,多边形s,编写不同的函数接口实现基本图形的创建。基本图形由符号形状和点位信息确定,用c++调用不同的acis几何造型的应用程序接口,并编写创建符号和基本图元的函数接口,对创建的符号和基本图元进行操作,如扫掠、布尔并运算和布尔减运算,实现将特征数据转化为二维几何模型。其中多边形s的构成不需要基本符号和用户自定义符号,只由没有宽度的直线和弧线首尾相接而成,并且多边形具有闭合且不自交的特性。因此需要对多边形进行特殊处理,通过调用api_mk_ed_line和api_curve_arc_3pt创建出多段闭合线,再调用api_make_ewire和api_cover_wires函数分别对其首尾相接并填充成二维平面。对存放器件信息的component类下的成员变量进行遍历,得到器件的名称、属性、类型和器件引用的器件包的编号信息。根据步骤2.4中解析的封装信息,以引用器件包的编号作为检索条件,获取到描述器件的形状信息。由于描述器件的信息和描述多边形面的数据结构一样,因此采用解析多边形的方式对描述器件的形状信息进行解析。将器件的名称作为key值,将得到的描述器
件形状的图形指针作为value值,以键值-对的方式存放到c++的关联式容器map中。
56.步骤3.2,按网络创建二维几何模型。
57.本发明根据data文件解析得到的网络信息,通过网络下包含的特征数据信息属性不同,将网络从功能上分为电源/地网络和非电源/地网络两类。
58.按照每个网络中所包含的特征数据信息,按照步骤3.1中图层名称和图层上所有基本图形指针列表的映射关系,得到按网络构建的pcb二维几何模型。
59.本发明的实施例中,通过获取net类下的成员变量,按照fid数据行所包含参考图层编号和参考图层中相对应的特征数据编号,在存放参考图层信息的map容器中查找到图层名称。以图层名称作为检索条件,在步骤3.1的关联式容器map中根据图层名称查找对应的基本图形指针列表。以特征数据的编号为检索条件,查找步骤3.1中创建的与之相对应的基本图形指针。将网络名称作为key值,将一个网络下所有的基本图形指针列表作为value值,存储到c++关联式容器map中。根据网络名称和基本图形指针列表,形成网络名称和基本图形指针列表能够双向查找的映射关系,得到按网络构建的pcb二维几何模型。
60.步骤3.3,对按层创建的二维几何模型进行数据离散。
61.本发明采用平面离散网格算法,对步骤3.1中按层创建的平面二维几何模型进行离散。在水平方向上对平面二维几何模型进行离散,将不必要的数据简化压缩。由于在pcb三维版图模型在垂直方向上面片数据相同,因此根据水平方向上的离散数据在高度方向拉伸即可直接计算出垂直方向的面片数据。
62.本发明的实施例中,编写displaymesh类来管理离散后数据。对步骤3.1中存储图层和图形指针列表的map容器进行遍历,对每一层对应的图形指针列表vector进行遍历。用c++编写离散平面二维几何模型的函数接口meshentity,将图形指针作为函数入参,displaymesh类对象指针作为函数出参。根据图形指针所指图形的类型,分别调用acis应用程序接口api_get_faces和api_get_edges两个函数接口,实现获取所指图形的面(face)或边(edge),将所获取的面和边存在c++的list容器中。用c++编写函数接口get_triangles_from_faceted_face,将存放图形所有面数据的list容器作为函数入参,displaymesh类对象指针作为函数出参,能够获取离散面的顶点坐标、离散面的三角网格和离散面的法向坐标。将存放图形所有边的list容器作为函数入参,将displaymesh类对象指针作为函数出参,采用delaunay离散算法能够获取线段离散后的线网格、和边顶点坐标。得到水平离散数据后,通过编写getverticalmeshdata函数接口,将步骤2.3中获得的叠层厚度和displaymesh类对象指针作为函数入参,获得垂直方向的三角网格数据和线段离散数据。根据对称性计算出离散面对立面的离散数据,从而将平面二维版图模型数据扩展到三维版图模型离散数据,用得到的三维版图模型数据替换displaymesh类成员变量下的平面二维版图模型数据。以图层名称作为key值,displaymesh类对象存放到序列式容器vector中,以vector作为value值,按键值-对的方式存放到c++关联式容器map中。
63.步骤3.4,渲染并显示生成的三维版图模型。
64.本发明对存放三维版图模型离散数据的map容器进行遍历,根据不同的数据类型,将离散后的数据转换为构建三维版图的图形数据。调用渲染图形数据的函数接口对生成的平面二维几何模型进行渲染,实现将平面二维几何模型转换成三维版图模型,并且在三维版图模型界面中显示。
65.本发明的实施例中,采用视觉化工具函数库vtk的函数接口,对离散后的数据进行转换并渲染。对步骤3.3中存放三维离散数据的map容器进行遍历,将离散后的数据转换为vtkpolydata数据结构。通过定义vtkpolydatamapper对象,用来接收vtkpolydata数据,实现从图形数据到渲染图元的转换。通过创建vtkactor对象,用来在场景中描述渲染图元。通过创建render对象,将vtkactor对象作为函数入参传入到addactor函数中,实现对离散后的三维版图模型渲染,将最终渲染图形的render对象按顺序存放到c++序列式容器vector中。以图层名称为key值,存放render对象的vetcor容器为value值,按照键值-对的方式存放到c++关联式容器map中,实现图层名称和渲染后的模型一一映射。对步骤3.2中存放网络信息的map容器进行遍历,按照基本图形指针列表和存放render对象的vector容器一一对应关系,对存放网络信息的map容器进行重新映射,实现能够从网络名称分别可以找到基本图形指针列表和存放渲染对象的列表。对存放图层名称和渲染模型对象列表的map容器进行遍历,通过调用在步骤1中搭建的三维版图模型显示界面的对象,实现对整个pcb三维版图模型的渲染显示。
66.步骤4,构建pcb的三维几何模型。
67.提取目标网络或对目标区域进行裁剪,对提取的目标网络或目标区域进行三维几何模型创建。
68.参照图4,对构建的pcb三维几何模型做进一步的描述。
69.本发明通过搭建自定义裁剪设置界面,设置的自定义裁剪参数,实现对pcb目标区域进行自由裁剪。提取目标网络或目标区域的三维版图模型后,通过网络名称与基本图形指针的映射关系,查找与三维版图模型对应的二维平面几何模型。对二维平面几何模型进行拉伸和布尔运算,实现将二维平面几何模型转换为三维几何实体模型。对三维几何实体模型进行面离散,将离散后的数据转换为可渲染的图形数据,调用创建的渲染函数接口对图形数据渲染,在三维几何模型显示界面中显示。
70.步骤4.1,搭建裁剪设置界面。
71.本发明采用自裁剪技术实现对pcb三维版图模型自由裁剪。搭建一个对三维版图模型裁剪设置的界面,通过设置自定义裁剪的参数,实现对pcb上目标区域的自由裁剪。
72.本发明的实施例中,采用跨平台的c++图形用户界面应用程序开发框架qt,用c++语言搭建一个三维版图模型裁剪设置的界面。对需要保留在自定义区域中的网络名称进行勾选,通过设置自定义裁剪参数如延伸距离和拐角形状,根据保留在区域信号内信号网络大小形状,可以确定切割目标区域的大小和形状。
73.步骤4.2,提取目标网络或目标区域并对其进行三维几何建模。
74.本发明的实施例中,创建存放生成三维几何实体模型的数据结构。通过三维版图模型显示界面上网络名称的选择,可以实现对目标网络的提取。通过图层名称和基本图形指针列表能够双向查找的映射关系,和网络名称和基本图形指针列表能够双向查找的映射关系,能够查找目标网络的三维版图模型对应的图形指针。用c++编写exporttogeometry函数,将查找到的基本图形指针列表作为函数入参,通过调用acis几何造型引擎中的应用程序函数接口,实现对平面几何模型进行拉伸和布尔运算。通过拉伸和布尔运算将平面二维模型转换为三维几何实体模型,将生成的三维实体模型指针存放到设计的数据结构中。其中布尔运算的应用程序函数接口如api_unite,实现布尔并操作;模型拉伸的函数接口为
api_sweep_eith_options。
75.步骤4.3,对三维几何实体模型进行离散并渲染。
76.本发明的实施例中,由于步骤3.3中只是对平面二维几何模型的离散,通过拉伸计算出垂直方向的离散数据。对创建的三维几何实体模型进行离散,不仅需要对上下的平行面进行离散,而且在垂直方向上的面也需要离散。模型越不规则,离散数据更大,因此若三维几何实体模型经过布尔运算会存在大量的细微结构,离散效率会大大降低。通过调用步骤3.3编写的面离散接口,对生成的三维几何实体模型进行面离散,创建displaymesh类对象来管理离散后的网格数据。将生成的离散数据转换为可渲染的图形数据,通过调用步骤3.4编写的渲染接口,将生成的pcb三维模型显示在三维几何模型的显示界面中。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1