元器件建模及参数化的方法、系统、电子设备及存储介质与流程

文档序号:30089477发布日期:2022-05-18 08:16阅读:197来源:国知局
元器件建模及参数化的方法、系统、电子设备及存储介质与流程

1.本发明属于电子制造技术领域,具体涉及一种元器件建模及参数化的方法、系统、电子设备及存储介质。


背景技术:

2.在pcba(printed circuit board assembly)设计环节中,各种元器件模型类型众多,数量庞大,模型的设计和仿真分析比较困难,原来的器件描述主要是边界表示法、网格模型等方式,这些方式表示的cad模型过于详细、复杂,如果直接用于dfm(design for manufacturability,可制造性设计)、仿真等软件,数据量大,分析、计算效率较低。
3.目前,行业内只能通过人工,手动提取cad模型的关键尺寸,创建元器件参数化模型供dfm、仿真等软件使用。
4.然而,人工简化模型效率太低,且容易出错,审核困难,造成模型库维护成本高。


技术实现要素:

5.为了解决现有技术中存在的上述问题,本发明提供了一种元器件建模及参数化的方法、系统、电子设备及存储介质。本发明要解决的技术问题通过以下技术方案实现:
6.一种元器件建模及参数化的方法,包括:
7.获取元器件模型数据;
8.根据所述模型数据中的信息,对元器件模型进行拆分聚类;
9.根据所述拆分聚类的结果,区分所述元器件模型的本体和引脚,得到本体序列集和引脚序列集,所述本体序列集中包含各个本体包围盒,所述引脚序列集中包含各个引脚的包围盒;
10.分别判断所述本体和引脚的形状,并识别所述引脚的形状类型;
11.基于所述本体的形状及本体的包围盒得到所述本体尺寸,基于所述引脚的形状、形状类型及引脚的包围盒得到所述引脚的尺寸;
12.输出参数化模型数据。
13.本发明的一个实施例还提供一种元器件建模及模型参数化系统,包括:
14.获取模块,用于获取元器件模型数据;
15.拆分聚类模块,用于根据所述模型数据中的信息,对元器件模型进行拆分聚类;
16.序列集生成模块,根据所述拆分聚类的结果,区分所述元器件模型的本体和引脚,得到本体序列集和引脚序列集,所述本体序列集中包含各个本体包围盒,所述引脚序列集中包含各个引脚的包围盒;
17.识别模块,用于分别判断所述本体和引脚的形状,并识别所述引脚的形状类型;
18.尺寸计算模块,用于基于所述本体的形状及本体的包围盒得到所述本体尺寸,基于所述引脚的形状、形状类型及引脚的包围盒得到所述引脚的尺寸;
19.输出模块,用于输出参数化模型数据。
20.本发明的一个实施例还提供一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
21.存储器,用于存储计算机程序;
22.处理器,用于执行所述计算机程序时,实现上述任一项实施例所述的方法步骤。
23.本发明的一个实施例还提供一种存储介质,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项实施例所述的方法步骤。
24.本发明的有益效果:
25.1、相较于以前人工简化模型,使用本发明的方法可自动输出简化后的模型文件,且元器件本体、引脚区分度高,人工干预少,大大减少建模人员的工作量,有效提高了模型分析、仿真软件的计算速度,以及结果的准确性。
26.2、通过本发明的方法可自动生成参数化模型,通过软件自动识别模型的本体和引脚、及本体和引脚形状,提取本体和引脚的关键尺寸,使用参数化的本体、引脚形状代替原模型,从而可以简化模型结构,大大减少模型数据量。
27.3、通过本发明的方法可自动生成元器件模型参数,通过区分元器件本体和引脚,赋不同的属性值,方便参数化建模,便于分别使用于不同的场景。
28.4、本发明的方法可以服务于mbd(model based definition),提供完整的产品定义信息,使数据质量更准确,有效降低生产过程的出错率。
29.以下将结合附图及实施例对本发明做进一步详细说明。
附图说明
30.图1是本发明实施例提供的一种元器件建模及参数化的方法的流程示意图;
31.图2是本发明实施例提供的一种包围盒序列集的获取方法的流程示意图;
32.图3是本发明实施例提供的一种包围盒的示意图;
33.图4是本发明实施例提供的三种不同形状的本体的示意图;
34.图5是本发明实施例提供的一种j6引脚布局的示意图;
35.图6是本发明实施例提供的一种j8引脚布局的示意图;
36.图7是本发明实施例提供的一种j6引脚多边形投影的示意图;
37.图8是本发明实施例提供的一种j8引脚多边形投影的示意图;
38.图9是本发明实施例提供的一种j2引脚的立体图;
39.图10是本发明实施例提供的一种j6引脚的立体图;
40.图11是本发明实施例提供的一种j8引脚的立体图;
41.图12是本发明实施例提供的一种j10引脚的立体图;
42.图13是本发明实施例提供的一种j14引脚的立体图;
43.图14是本发明实施例提供的一种计算外轮廓算法的示意图;
44.图15是本发明实施例提供的一种元器件模型的示意图;
45.图16是本发明实施例提供的一种j6引脚的截面示意图;
46.图17是本发明实施例提供的一种j8引脚的截面示意图;
47.图18是本发明实施例提供的一种j10引脚的截面示意图;
48.图19是本发明实施例提供的一种元器件建模及模型参数化系统的示意图;
49.图20是本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
50.下面结合具体实施例对本发明做进一步详细的描述,但本发明的实施方式不限于此。
51.实施例一
52.请参见图1,图1是本发明实施例提供的一种元器件建模及参数化的方法的流程示意图,本实施例提供了一种元器件建模及参数化的方法,该方法可以包括步骤1至步骤10,应该清楚的,本实施例所设定的步骤的顺序仅是一种具体的实施方式,在实际应用时,可以根据实际情况调整顺序,因此,本实施例不对具体的步骤顺序进行限定。其中:
53.步骤1、获取元器件模型数据。
54.具体地,首先读入机械三维cad设计文件,包括step、stl等格式的文件。然后从以上机械三维cad设计文件中获取元器件的模型数据,模型数据包括:模型类型(零件和装配)、零件的名称、装配关系、绝对坐标系worldcsys(原点为(0.0,0.0,0.0)、x轴方向向量(1.0,0.0,0.0)、y轴方向向量(0.0,1.0,0.0)、z轴方向向量(0.0,0.0,1.0))、点线面的几何数据以及颜色信息。
55.步骤2、根据模型数据中的信息,对元器件模型进行拆分聚类。
56.在一个具体实施例中,步骤2可以包括:
57.基于模型数据中面的颜色信息划分的num个组得到若干个子组,以根据所有子组得到序列集list。
58.具体地,本实施例将所有的面按照颜色进行分组,根据各个面的颜色将相同颜色的面划分为一个组,共num个组,然后再将num个组划分为若干个子组,每个子组包括:单个零件的所有面、或若干颜色相同且外轮廓相连的面,通过计算得到每个子组的包围盒,基于上述内容,便可以得到一包括所有子组的序列集list,序列集list包括若干按照预设顺序排列的子组,包围盒为子组的最小外接立方体,其中,预设顺序可以为按照包围盒的大小进行排序,例如预设顺序为将包围盒体积按照从大到小进行排序。
59.在一个具体实施例中,请参见图2,序列集list的具体获取方式可以包括:
60.步骤2.1、根据模型数据中面的颜色信息将所有的面进行分组,得到num个组,其中,每个组中所有面的颜色均相同。
61.步骤2.2、当num>1、或者num=1且模型类型为零件时,将每个组中所有的面依据外轮廓相连的原则划分为若干个子组,当num=1且模型类型为装配时,将模型的各个零件分别分入不同的子组,也即一个零件对应一个子组。因此,每个子组可以包括:单个零件的所有面、或若干颜色相同且外轮廓相连的面。
62.也就是说,如果num>1,则忽略装配关系,执行2.21所示步骤;如果num=1,若模型类型=装配,则将各个零件的所有面分别分入不同的子组,并执行2.3所示步骤,若模型类型=零件,则执行2.21所示步骤。
63.步骤2.21、将每一组中所有面依据外轮廓相连的原则划分为n个子组。
64.其中,外轮廓相连是指相邻两个面的外轮廓之间至少有一条线共线。
65.步骤2.3、循环遍历所有面,提取每个子组中每个面的轮廓点。
66.步骤2.4、根据轮廓点中x、y和z的最大坐标值和最小坐标值得到包围盒的体积。
67.具体地,如图3所示,对于每个子组而言,获取所有点的x坐标值中的最大x坐标值和最小x坐标值、y坐标值中的最大y坐标值和最小y坐标值、z坐标值中的最大z坐标值和最小z坐标值,将最小的x、y、z坐标值作为包围盒最小点minpnt,最大x、y、z坐标值作为包围盒最大点maxpnt。
68.计算各个包围盒的长、宽、高,其中,长lbox=maxpnt.x

minpnt.x,宽wbox=maxpnt.y

minpnt.y,高hbox=maxpnt.z

minpnt.z,包围盒的体积vbox=lbox
×
wbox
×
hbox,其中,maxpnt.x、maxpnt.y和maxpnt.z分别表示包围盒最大点maxpnt的x、y和z坐标值,minpnt.x、minpnt.y和minpnt.z分别表示包围盒最小点minpnt的x、y和z坐标值。
69.步骤2.5、根据包围盒体积的大小将所有的子组进行排序,以得到排序结果。
70.具体地,根据包围盒体积vbox按照从大到小或者从小到大的顺序将所有的子组进行排序,以形成排序结果,该排序结果为初始的序列集list,如果包围盒体积相同,则按照子组序号的先后进行排序,例如,按照从大到小的顺序排序(本实施例以此为例进行说明),初始的序列集list={box1:子组1,box2:子组2,box3:子组3,
……
,boxn:子组n}。
71.步骤2.6、基于排序结果,根据第i个包围盒和第i个包围盒之后的各个包围盒的包含关系得到list序列集。
72.具体地,分别判断第i个包围盒和第i个包围盒之后的各个包围盒的包含关系,若为包含关系,则将被包含的包围盒及该包围盒对应的子组从初始的序列集list中删除,以得到最终的序列集list。
73.在一个具体实施例中,步骤2.6可以包括:
74.基于排序结果,分别判断第i个包围盒和第i个包围盒之后的各个包围盒的坐标值的关系,若第i个包围盒的最小x、y和z坐标值均对应小于或者等于第j个包围盒的最小x、y和z坐标值,且第i个包围盒的最大x、y和z坐标值均对应大于或者等于第j个包围盒的最大x、y和z坐标值,则第i个包围盒包含第j个包围盒,将第j个包围盒及第j个包围盒对应的子组从初始序列集中删除,以得到序列集list,其中,第j个包围盒为第i个包围盒之后的任意一个包围盒。
75.也就是说,依据上述包围盒排序结果,将初始的序列集list中每一个子组包围盒与其后的所有子组包围盒分别计算包含关系,计算过程如box1.minpnt.x≤box2.minpnt.x,box1.minpnt.y≤box2.minpnt.y,box1.minpnt.z≤box2.minpnt.z,box1.maxpnt.x≥box2.maxpnt.x,box1.maxpnt.y≥box2.maxpnt.y,box1.maxpnt.z≥box2.maxpnt.z,当以上6个条件同时满足时,则包围盒box1完全包含包围盒box2,在初始的序列集list中删除元素(box2:子组2);否则继续,直至所有子组去重完成,其中,box1.minpnt.x、box1.minpnt.y、box1.minpnt.z、box2.minpnt.x、box2.minpnt.y和box2.minpnt.z分别表示包围盒box1和包围盒box2最小点minpnt的x、y和z坐标值,box1.maxpnt.x、box1.maxpnt.y、box1.maxpnt.z、box2.maxpnt.x、box2.maxpnt.y和box2.maxpnt.z分别表示包围盒box1和包围盒box2最大点maxpnt的x、y和z坐标值。
76.步骤3、根据拆分聚类的结果,区分元器件模型的本体和引脚,得到本体序列集和引脚序列集。
77.在一个具体实施例中,步骤3可以包括:
78.根据第一体积比r1、第二体积比r2得到本体序列集和引脚序列集,r1=vbox/vmax,r2=vmin/vbox,vbox为当前待区分的子组包围盒的体积,vmax为最大包围盒的体积,vmin为最小包围盒的体积;其中,本体序列集中包含各个本体包围盒,引脚序列集中包含各个引脚的包围盒。
79.具体地,判断第一体积比r1和第二体积比r2的关系,若第一体积比r1大于或者等于第二体积比r2,则当前待区分的子组为本体,否则当前待区分的子组为引脚,直至区分完所有子组,得到本体序列集和引脚序列集。
80.也就是说,将所有子组中包围盒体积最大的子组当作本体(体积为vmax),体积最小的子组当作引脚(体积为vmin),其余的子组计算过程如下,按照包围盒体积vbox分别计算与上述本体和引脚的体积比r1、r2,如果r1≥r2,此子组为本体,否则为引脚,直至所有子组区分完,最终形成本体序列集bodylist={box1':子组1',box2':子组2',box3':子组3',
……
,boxn':子组n'}(大部分元器件只有一个本体,极少数元器件有多个本体),引脚序列集pinlist={box1”:子组1”,box2”:子组2”,box3”:子组3”,
……
,boxn”:子组n”},其中list=bodylist∪pinlist,n=n'+n”。
81.步骤4、分别判断本体和引脚的形状,并识别引脚的形状类型。
82.步骤4.1、将本体序列集中每个本体沿局部坐标系的x、y和z轴方向分别进行投影,以得到本体的形状。
83.在本实施例中,需要创建局部坐标系localcsys,局部坐标系localcsys的建立方法为:
84.step1、在绝对坐标系worldcsys中,获取从所有引脚的中心指向所有本体的中心的向量zv(vx,vy,vz)。
85.step2、根据步骤3所得到的引脚包围盒判断所有引脚的包围盒沿坐标轴x、y和z方向的投影是否有重叠,若某方向无重叠,则将该方向对应的向量zv的坐标值添入序列集vlist,例如x轴方向无重叠,则将向量zv中的vx加入序列集vlist中,且序列集vlist按坐标值的绝对值从大到小的顺序对坐标值进行排序,其中,当坐标值的绝对值相同时,排序的优先级顺序为vz、vy、vx,即vz优先于vy,vy优先于vx。其中,有重叠方向上对应的向量zv的坐标值属于无用数据。
86.step3、选取序列集vlist中第一个坐标值对应的方向作为局部坐标系localcsys的z轴的方向。
87.step4、基于序列集vlist中第一个坐标值的正负,确定局部坐标系localcsys的z轴方向相对于绝对坐标系worldcsys对应坐标轴的正反,即第一个坐标值为大于或者等于0时,局部坐标系localcsys的z轴方向与绝对坐标系worldcsys对应坐标轴的方向相同,否则局部坐标系localcsys的z轴方向与绝对坐标系worldcsys对应坐标轴的方向相反。
88.在一个具体实施例中,步骤4.1可以包括步骤4.11-步骤4.12,其中:
89.步骤4.11、将本体沿着局部坐标系localcsys的x、y、z轴方向分别进行投影,以得到x、y、z轴方向的三个第一投影形状,即在局部坐标系localcsys下,将引脚沿着坐标轴x、y、z方向分别投影到坐标系平面yoz、zox、xoy,以得到投影后的形状。
90.步骤4.12、如图4所示,根据三个第一投影形状判断本体的形状,若三个第一投影形状均为矩形,则本体的形状为立方体;若三个第一投影形状中的一个为圆形,则本体的形
状为圆柱体;其余本体的形状均为多边体。
91.步骤4.2、将引脚序列集中每个引脚沿局部坐标系的x、y和z轴方向分别进行投影,以得到引脚的形状,并识别引脚所属的形状类型。
92.在一个具体实施例中,步骤4.2可以包括步骤4.21-步骤4.26,其中:
93.步骤4.21、将引脚序列集pinlist中的每个引脚沿着局部坐标系localcsys的x、y、z轴方向分别进行投影,以得到x、y、z轴方向的三个第二投影形状,即在局部坐标系localcsys下,将本体沿着坐标轴x、y、z方向分别投影到坐标系平面yoz、zox、xoy,以得到投影后的形状,三个第二投影形状分别记为sx、sy、sz。
94.步骤4.22、根据三个第二投影形状判断引脚的形状,首先,若三个第二投影形状均为矩形,则引脚的形状为立方体;其次,若三个第二投影形状均为圆形,则引脚的形状为球体;再次,若三个第二投影形状中的一个为圆形,则引脚的形状为圆柱体;最后,其余引脚的形状为多边体;
95.步骤4.23、计算每个引脚在元器件俯视图(从z轴正向往z轴负向看)中的分布特征,将在俯视图中引脚与本体的位置关系作为引脚的分布特征。
96.在一个具体实施例中,步骤4.23可以包括步骤4.231-步骤4.232,其中:
97.步骤4.231、获取本体沿z轴方向投影的外轮廓线和引脚沿z轴方向投影的外轮廓点。
98.步骤4.232、判断引脚的外轮廓点与本体的外轮廓线的位置关系,若所述引脚外轮廓点全部在本体外轮廓线上,则视为引脚处于所述本体的外轮廓线内;其余均依据引脚外轮廓点在本体外轮廓线内或外轮廓线外,且忽略在本体外轮廓线上的点,基于剩余的点判断引脚的外轮廓点与本体外轮廓线的位置关系:若所述引脚的剩余外轮廓点都处于所述本体的外轮廓线内,则该所述引脚的外轮廓点处于所述本体的外轮廓线内;若所述引脚的剩余外轮廓点都处于所述本体的外轮廓线外,则该所述引脚的外轮廓点处于所述本体的外轮廓线外;若所述引脚剩余的部分外轮廓点处于所述本体的外轮廓线外且所述引脚剩余的部分外轮廓点处于所述本体的外轮廓线内,则该所述引脚与所述本体相交,例如如图5和图6所示。
99.步骤4.24、基于局部坐标系localcsys,分别计算每个引脚与所有本体在x、y和z轴上的重叠长度,基于重叠长度分别计算本体重叠度和引脚重叠度,以将该本体重叠度和引脚重叠度作为引脚的局部特征。
100.在一个具体实施例中,步骤4.24可以包括步骤4.241-步骤4.243,其中:
101.步骤4.241、在局部坐标系localcsys下,计算所有本体的包围盒bodybox1和当前引脚的包围盒pinbox1,以坐标轴x为例:取bodybox1.minpnt.x和pinbox1.minpnt.x中的较大值作为x1,取bodybox1.maxpnt.x和pinbox1.maxpnt.x中的较小值作为x2,如果x1≥x2,x轴上本体和引脚的重叠度都为0;否则,重叠长度overlen=x2

x1,其中,bodybox1.minpnt.x和bodybox1.maxpnt.x分别表示包围盒bodybox1和包围盒pinbox1最小点minpnt的x坐标值,bodybox1.maxpnt.x和pinbox1.maxpnt.x分别表示包围盒bodybox1和包围盒pinbox1最大点maxpnt的x坐标值,关于坐标轴y和坐标轴z的重叠长度的计算方式同上,在此不再赘述。
102.步骤4.242、基于预设轴,选取所有本体的包围盒的坐标值的最小值与当前引脚的
包围盒的坐标值的最小值中的较大值作为d1,选取本体的包围盒的坐标值的最大值与当前引脚的包围盒的坐标值的最大值中的较小值作为d2,其中,预设轴包括x轴、y轴和z轴,以x轴为例,d1即为步骤4.241的x1,d2即为步骤4.241的x2。
103.步骤4.243、判断d1和d2的关系,若d1≥d2,则在预设轴上本体重叠度和引脚重叠度均为0,若d1《d2,本体重叠度为overlen/(body1-body2),引脚重叠度为overlen/(pin1-pin2),其中,body1和body2分别为在预设轴上本体的包围盒的坐标值的最大值和最小值,pin1和pin2分别为在预设轴上引脚的包围盒的坐标值的最大值和最小值。
104.具体地,以坐标轴x为例,如果x1≥x2,x轴上本体和引脚的重叠度都为0;否则,本体在x轴上的重叠度为overlen/(bodybox1.maxpnt.x-bodybox1.minpnt.x),引脚在x轴上的重叠度为overlen/(pinbox1.maxpnt.x-pinbox1.minpnt.x)。同理,坐标轴y、z轴上的本体和引脚重叠度计算方法与上述方法相同。
105.步骤4.25、根据引脚的三个第二投影形状,分别得到每个投影的轮廓特征。
106.在一个具体实施例中,步骤4.25可以包括步骤4.251-步骤4.253,其中:
107.步骤4.251、如图7和图8所示,基于预设轴,通过过引脚投影形状的中心做水平辅助线guid1,得到水平辅助线guid1与引脚投影形状的两个交点。
108.步骤4.252、经过两个交点做两条竖直辅助线guid2、guid3,其中,竖直辅助线guid3处于竖直辅助线guid2的右侧;
109.步骤4.253、判断引脚投影的顶点与水平辅助线guid1、竖直辅助线guid2、guid3的关系,若顶点在水平辅助线guid1之上且处于竖直辅助线guid3右侧,则顶点处在第一区域,即第

区域;若顶点在水平辅助线guid1之上且处于竖直辅助线guid2左侧,则顶点处在第二区域,即第

区域;若顶点在水平辅助线guid1之下且处于竖直辅助线guid2左侧,则顶点处在第三区域,即第

区域;若顶点在水平辅助线guid1之下且处于竖直辅助线guid3右侧,则顶点处在第四区域,即第

区域,将竖直辅助线guid2和竖直辅助线guid3两侧的所有顶点所处的区域构成的组合作为引脚投影的轮廓特征;当所有顶点处于竖直辅助线guid2和竖直辅助线guid3上或/和之间时,则轮廓特征为空。
110.需说明的是,本发明对上述局部特征、分布特征以及轮廓特征的获取顺序不进行唯一性限制,在实际过程中可进行顺序的调整。
111.步骤4.26、根据引脚的形状和/或分布特征和/或局部特征和/或轮廓特征,区分引脚所属的形状类型。
112.具体地,对于不同的引脚类型,均可以根据上述内容确定每个引脚的形状类型,本实施例以5种引脚类型为例进行说明,分别命名为j2、j6、j8、j10、j14,并对其进行分析和判断,对于其它类型引脚的判断方式可以根据具体的引脚参考上述内容进行判断,本实施例对其他引脚类型不再赘述。
113.根据以下判别标准,依次判别每个引脚的形状类型,具体判别标准如下
114.(1)j2引脚判别标准,j2引脚如图9所示。
115.1)引脚形状:本体和引脚都为立方体;
116.2)轮廓特征:引脚的三个投影的轮廓特征均为空;
117.3)局部特征:对于每个引脚,至少在坐标轴x、y、z中的两个方向上,本体重叠度都为100%;
118.当同时满足以上三个条件时,引脚形状类型即为j2。
119.(2)j6引脚判别标准,j6引脚如图10所示。
120.1)分布特征:如图5所示,在俯视图中,引脚处于本体外轮廓线外;
121.2)引脚形状:引脚为多边体(引脚的三个投影中,sz为矩形,sx和sy其中之一为多边形);
122.3)轮廓特征:引脚的三个投影形状中,有一个投影形状满足其两条竖直辅助线之外的所有顶点处于



区域或者



区域;
123.当同时满足以上三个条件时,引脚形状类型为j6。
124.(3)j8引脚判别标准,j8引脚如图11所示。
125.1)分布特征:如图6所示,在俯视图中,引脚与本体外轮廓线相交;
126.2)引脚形状:引脚为多边体(引脚的三个投影中,sz为矩形,sx和sy至少有一个为多边形);
127.3)轮廓特征:引脚的投影中至少有一个多边形的轮廓特征为:引脚的三个投影形状中,有一个投影形状满足其两条竖直辅助线之外的所有多边形顶点处于



区域或者



区域;
128.4)局部特征:对于每个引脚,在坐标轴z方向上,本体和引脚的重叠度都小于100%;
129.当同时满足以上四个条件时,引脚形状类型为j8。
130.(4)j10引脚判别标准,j10引脚如图12所示。
131.1)分布特征:在俯视图中,引脚处于本体外轮廓线内部;
132.2)引脚形状:引脚形状为球体;
133.当同时满足以上两个条件时,引脚形状类型为j10。
134.(5)j14引脚的判别标准,j14引脚如图13所示。
135.1)分布特征:在俯视图中,引脚处于本体外轮廓线内部;
136.2)引脚形状:为立方体或者为圆柱体或者为多边体(引脚的三个投影中,sx和sy为矩形,sz为多边形);
137.3)轮廓特征:当引脚形状为立方体或圆柱体时,引脚三个投影的轮廓特征均为空;当引脚形状为多边体时,引脚在x、y方向的投影的轮廓特征均为空;
138.4)局部特征:在坐标轴x、y方向上引脚的重叠度为100%,在坐标轴z方向上引脚的重叠度为0,且完全处于本体下方(z向的负方向);
139.当同时满足以上四个条件时,引脚形状类型为j14。
140.在一个具体实施例中,投影形状判断方法包括:
141.step1、曲线离散化。遍历本体或引脚所有的边,按长度离散化所有的边,依次分割所有的边,得到线段集set,set={seg1,seg2,
……
,segn}。
142.step2、依次将线段集set中的线段沿着预设方向投影到坐标系平面上,得到投影后的线段集set',set'={seg1',seg2',
……
,segn'},预设方向包括x、y和z轴方向,例如预设方向为z轴方向,则线段集set中的线段沿着坐标轴z轴方向投影到坐标系xoy平面,得到投影后的线段集set'。
143.step3、根据线段集set'的外轮廓线的顶点得到轮廓面积s、最小外接矩形的面积s矩形
和最小外接圆的面积s


144.具体地,计算线段集set'的外轮廓线的顶点集合w,提取其轮廓面积s,分别获取外轮廓顶点集合w的矩形包围盒r矩形(即最小外接矩形)的面积s
矩形
和最小外接圆c外接圆的面积s


145.step4、根据r
矩形
、r
矩形
的面积比阀值k、r

和r

的面积比阀值k1判断投影形状,若r
矩形
>r

且r
矩形
>k,则投影形状为矩形;若r

>r
矩形
且r

>k1,则投影形状为圆形,否则投影形状为多边形,其中,r
矩形
=s/s
矩形
,r

=s/s

。在实际应用中,k及k1预设值分别优先设置为0.85和0.9,k及k1可以根据实际需要自行调整,本实施例对此不作具体限定。
146.在一个具体实施例中,线段集set'的外轮廓线的顶点的获取方法包括:
147.step1、依次判断线段集set'中的每一条线段与其他线段是否相交(线段重合的情况下,重合部分的端点视为2个交点),若有交点且交点不在该线段的端点,则将该线段从交点处分割,若无交点或有交点且交点在线段端点,则继续计算下一条线段,直至所有线段均计算完成。
148.step2、基于分割后的所有线段,将具有相同顶点的线段归为一组,且两个端点都相同的线段仅保留一个线段。
149.step3、在step2的基础上,将所有顶点均投影至x轴上,基于投影之后的点,在x轴上选取间距最大的两个相邻点,以两个相邻点在x轴的坐标值的中点做垂直于x轴的直线,请参见图14,两个相邻点为x1、x2,中点c=(x1+x2)/2,则垂直于x轴的直线即为l2;
150.step4、获取直线l2与线段集set'中所有的线段的交点的y轴坐标的最小值,该最小值如图14中的ymin;
151.step5、取具有最小y轴坐标值的交点的线段作为外轮廓线的起始线段,以该线段的一端顶点为起点pstart,另一端顶点为终点pend;
152.step6、遍历线段集set'中线段的顶点与起始线段的终点pend坐标值相同的所有线段,在这些线段中选取与起始线段夹角最大的一条线段作为新的起始线段,将新的起始线段的另一端顶点作为新的终点pend,循环迭代step6,直到新的终点pend坐标等于起点pstart坐标,则迭代结束,将所有找到的线段作为外轮廓线,取外轮廓线的顶点形成序列w={p1,p2,p3,
……
,pn},以此确定外轮廓线的线段及外轮廓线的顶点。
153.步骤5、根据引脚包围盒和本体包围盒中的至少一项、以及引脚类型确定安装平面,将局部坐标系移动到安装平面上。
154.一般情况下,对于元器件来说,安装面在元器件引脚底部或者本体底部,在局部坐标系localcsys下,根据引脚的形状类型选择以下与该形状类型对应的步骤,计算元器件安装平面的z坐标值zcoord,计算过程如下:
155.如果引脚类型为贴装类引脚,如j2、j6、j8、j10时,元器件安装平面在引脚底部,计算所有引脚的包围盒jpinbox,即zcoord=jpinbox.minpnt.z,其中,jpinbox.minpnt.z为包围盒jpinbox的最小点minpnt的z坐标值。
156.如果引脚的形状类型为插装类引脚,如j14时,元器件安装平面在本体底部,计算所有本体的包围盒localbodybox,即zcoord=localbodybox.minpnt.z,localbodybox.minpnt.z为包围盒localbodybox的最小点minpnt的z坐标值。
157.在上述计算完元器件安装平面之后,将局部坐标系localcsys移动到安装平面上。
158.另外,在实际中存在引脚形状类型为多种引脚组合的情况(即一个本体上有多种类型的引脚),此时依据引脚类型确定该组合型引脚的安装平面的优先级顺序为贴装类引脚类型>插装类引脚类型。例如,引脚形状类型同时包括j6和j14,按上述优先级,j6优于j14,所以选择j6类型的引脚对应的元器件安装平面作为上述多种引脚组合情况下对应的安装平面。
159.步骤6、基于本体的形状和本体的包围盒得到本体的尺寸。
160.如图4所示,在局部坐标系localcsys下,根据前述步骤计算所得到的本体形状,针对每个本体,依次计算每个本体对应的尺寸信息。具体的,当本体形状为立方体时,执行如下步骤6.1;当本体形状为圆柱体时,执行如下步骤6.2;当本体形状为多边体时,执行如下步骤6.3。
161.6.1计算立方体本体的长、宽、高以及中心点。
162.具体地,在局部坐标系localcsys下,计算本体的包围盒cubebox,根据包围盒cubebox的坐标确定立方体本体的长、宽、高以及中心点,返回计算结果。
163.6.2计算圆柱体本体的半径、高度以及中心点。
164.在局部坐标系localcsys下,计算本体的包围盒cylinderbox,计算包围盒cylinderbox在x、y、z三个方向上的长度d1、d2、d3,根据d1、d2、d3之间的关系,确定圆柱体本体的半径、高度以及中心点,返回计算结果。
165.6.3计算多边体本体的高度、轮廓点集合以及中心点。
166.第一步,分别获取本体在x、y、z方向投影形状的外轮廓点集wx、wy、wz,提取其三个方向投影后的外轮廓的面积sx、sy、sz;
167.第二步,在局部坐标系localcsys下,计算本体的包围盒polygonbox,根据包围盒polygonbox的坐标计算本体中心点坐标,基于该包围盒polygonbox的坐标和上述sx、sy、sz计算近似体积mx、my、mz,其中:
168.mx=sx*(polygonbox.maxpnt.x-polygonbox.minpnt.x)
169.my=sy*(polygonbox.maxpnt.y-polygonbox.minpnt.y)
170.mz=sz*(polygonbox.maxpnt.z-polygonbox.minpnt.z)
171.式中,polygonbox.maxpnt.x、polygonbox.maxpnt.y和polygonbox.maxpnt.z分别表示包围盒polygonbox最大点maxpnt的x、y和z坐标值,polygonbox.minpnt.x、polygonbox.minpnt.y和polygonbox.minpnt.z分别表示包围盒polygonbox最小点minpnt的x、y和z坐标值。
172.mx、my和mz中体积最小的方向上的投影形状最接近本体真实形状,以此便可以确定多边体本体的高度、轮廓点集合,例如mx≤my并且mx≤mz,即x方向的投影形状最接近本体真实形状,wx即为所求轮廓点集合,高度h=polygonbox.maxpnt.x-polygonbox.minpnt.x,当my或mz最小时,与wx的计算方式相同,在此不再赘述。
173.步骤7、计算所有本体上平行于局部坐标系的预设轴的通孔。
174.具体地,在局部坐标系localcsys下,针对所有的本体,计算所有本体上平行于坐标系localcsys的预设轴的通孔(通孔有矩形、圆形、多边形三种截面形状,例如图15所示)。
175.在一个具体实施例中,步骤7可以包括步骤7.1-步骤7.4,其中:
176.步骤7.1、基于局部坐标系,将所有本体沿着局部坐标系的预设轴方向投影,得到
所有本体投影后的第一线段集set”,参考前述步骤4.26中“线段集set'的外轮廓线的顶点的获取方法”得到第一线段集set”中的外轮廓线,预设轴例如为z轴。
177.步骤7.2、删除第一线段集set”中的外轮廓线,得到第二线段集set”。
178.具体地,由于第一线段集set”中包含外轮廓线,因此将第一线段集set”中的外轮廓线删除,便可以得到第二线段集set”。
179.步骤7.3、删除第二线段集set”中没有贯通本体的投影线段,得到第三线段集set”。
180.具体地,依次循环遍历第二线段集set”中的每一条线段,以线段两个端点做两条直线,两条直线的方向平行于坐标系z轴方向,获取两条直线与本体所有的面的交点,在所有的交点中,只要其中任意一个交点没有在面的轮廓线上,则在第二线段集set”中删除此线段,否则(所有交点都在面的轮廓线上)继续计算下一条线段,直到第二线段集set”中的所有线段计算完成,得到第三线段集set”。
181.步骤7.4、从第三线段集set”中选择首尾相连的线段,得到第四线段集set”,第四线段集set”中包括若干通孔的截面形状。
182.具体地,依次循环遍历第三线段集set”中的每一条线段,根据线段首尾相连的原则,如果线段两端都存在一条线段与其端点相连,则继续计算下一条线段,否则(该线段至少有一端不与任何线段相连),在第三线段集set”中删除此线段。迭代执行此步骤,如果第三线段集set”中剩余线段个数为零,说明本体上没有通孔,结束执行;否则,直到所有的线段都首尾相连,得到第四线段集set”。
183.根据线段首尾相连的原则,将第四线段集set”中剩余的所有的线段划分为m个子集合,确保每个子集合中的所有线段依次首尾相连,这样每一个子集分别构成一个内轮廓,每一个内轮廓代表一个通孔的截面形状,形成截面集合序列s截面={s1,s2,
……
,sm}。
184.之后,便可以依次计算每个通孔的截面形状。具体计算过程如下:
185.通过投影形状判别方法,判别截面集合序列s截面中每个通孔的截面形状,结果为矩形、圆形或多边形。
186.1)如果通孔截面形状为矩形,根据矩形包围盒的坐标计算矩形通孔的截面长度、宽度以及中心点,返回计算结果。
187.2)如果通孔截面形状为圆形,根据最小外接圆计算圆形通孔的截面圆心和半径,返回计算结果。
188.3)如果通孔截面形状为多边形,根据矩形包围盒的坐标计算多边形通孔的截面中心点,轮廓点可根据截面子集中首尾相连的线段端点获取,返回计算结果。
189.步骤8、基于引脚的形状、引脚的形状类型、所述引脚的包围盒得到引脚的尺寸。
190.在局部坐标系localcsys下,根据前述步骤计算所得到的引脚形状及形状类型,依次计算每个引脚的尺寸信息,即计算每个引脚的驱动尺寸,在每个引脚的驱动尺寸确定下,便可以自动生成相应的引脚模型。对于不同的引脚类型,均可以根据上述内容确定每个引脚的尺寸,本实施例以j2、j6、j8、j10、j14为例进行说明,对于其它类型引脚尺寸的计算方式可以根据具体的引脚参考上述内容进行计算,本实施例对其他引脚类型不再赘述。
191.8.1引脚形状类型为j2,如图9所示:
192.第一步,在局部坐标系localcsys下,计算引脚的包围盒j2box。
193.第二步,基于包围盒j2box,计算j2引脚的尺寸b、a、c和中心点坐标。
194.具体地,尺寸b=j2box.maxpnt.x-j2box.minpnt.x,尺寸a=j2box.maxpnt.y-j2box.minpnt.y,尺寸c=j2box.maxpnt.z-j2box.minpnt.z,中心点center=((j2box.minpnt.x+j2box.maxpnt.x)/2,(j2box.minpnt.y+j2box.maxpnt.y)/2,(j2box.minpnt.z+j2box.maxpnt.z)/2),其中,j2box.minpnt.x、j2box.minpnt.y和j2box.minpnt.z分别表示包围盒j2box最小点minpnt的x、y和z坐标值,j2box.maxpnt.x、j2box.maxpnt.y和j2box.maxpnt.z分别表示包围盒j2box最大点maxpnt的x、y和z坐标值。
195.8.2引脚形状类型为j6,如图10所示:
196.第一步,一般情况下j6引脚分布在本体四周,如图5所示,据此调整局部坐标系localcsys使之匹配此引脚位姿。
197.第二步,在最新的(经上述步骤调整后)局部坐标系localcsys下计算引脚的包围盒j6box。
198.第三步,如图16所示,基于包围盒j6box,计算j6引脚的尺寸a、d、中心点坐标。
199.具体地,尺寸a=j6box.maxpnt.x

j6box.minpnt.x,j6引脚的尺寸d=j6box.maxpnt.z

j6box.minpnt.z,其中,j6box.minpnt.x和j6box.minpnt.z分别表示包围盒j6box最小点minpnt的x和z坐标值,j6box.maxpnt.x和j6box.maxpnt.z分别表示包围盒j6box最大点maxpnt的x和z坐标值。
200.第四步,遍历j6引脚所有法向量平行于坐标系z轴的平面,获取z方向上最下方(从z轴正向往反向看)的平面作为j6引脚的底面bottomface。计算底面bottomface的包围盒bottombox,基于包围盒bottombox计算j6引脚的尺寸b,即尺寸b=bottombox.maxpnt.y

bottombox.minpnt.y,bottombox.minpnt.y和bottombox.maxpnt.y分别表示包围盒bottombox最小y坐标和最大y坐标。
201.第五步,根据上述步骤中底面bottomface找到最近的反向平行面(法向量相反的平行面),取两个面之间的法向距离为j6引脚的尺寸c。
202.第六步,还原局部坐标系localcsys到第一步调整之前的姿态,并且将第三步计算所得中心点转换到此时的局部坐标系localcsys中。
203.8.3引脚形状类型为j8,如图11所示:
204.第一步,一般情况下j8引脚分布在本体四周,如图6所示,据此调整局部坐标系localcsys使之匹配此引脚位姿。
205.第二步,在最新的(经上述步骤调整后)局部坐标系localcsys下计算引脚的包围盒j8box。
206.第三步,如图11所示,依次遍历j8引脚所有的面,获取每一个面的最小坐标值j8minpnt,如果该面的最小z坐标值等于包围盒j8box的最小z坐标值,则将此面添加到序列集facelist中,直到j8引脚所有的面都计算完成。之后,计算序列集facelist中所有面的包围盒j8minbox(形状为矩形),如图17所示,根据j8minbox的坐标和j8box的坐标计算j8引脚的尺寸a、a1、d、中心点坐标,j8引脚的尺寸b取默认值b=kb*a,以上引脚的尺寸b为引脚尺寸a的一定倍数,kb可根据实际情况进行调整,kb优先取值3.0。
207.其中,尺寸a=j8minbox.maxpnt.x

j8minbox.minpnt.x,尺寸a1=j8box.maxpnt.x

j8box.minpnt.x,尺寸d=j8box.maxpnt.z

j8box.minpnt.z,
j8minbox.minpnt.x和j8minbox.maxpnt.x分别表示包围盒j8minbox的最小和最大x坐标,j8box.minpnt.x、j8box.minpnt.z、j8box.maxpnt.x和j8box.maxpnt.z依次表示包围盒j8box的最小x、z坐标和最大x、z坐标。
208.第四步,尺寸c可根据此引脚的引脚类型判定过程中所用的轮廓特征中的两条竖直辅助线的间距得到,即尺寸c等于两条竖直辅助线的间距。
209.第五步,还原局部坐标系localcsys到第一步调整之前的姿态,并且将第三步计算所得中心点转换到此时的局部坐标系localcsys中。
210.在本实施例中,对于j6引脚和j8引脚而言,上述调整局部坐标系localcsys使之匹配引脚位姿的过程为:
211.1)如图5和图6所示,在元器件的俯视图中,根据引脚边界和本体边界距离最短原则,将引脚划分到所属的区域。具体的,在俯视图中,当引脚距离本体右边界最近时,引脚所属第ⅰ区域;当引脚距离本体下边界最近时,引脚所属第ⅱ区域;当引脚距离本体左边界最近时,引脚所属第ⅲ区域;当引脚距离本体上边界最近时,引脚所属第ⅳ区域;当引脚边界与本体上、下、左、右中的三个方向上的边界都有交叉时,在三个方向中,选择处于中间的方向所在区域作为引脚所属区域,如当引脚边界与本体上、下、左三个方向上的边界都有交叉时,选择第ⅲ区域作为引脚所属区域。
212.2)根据引脚所属区域,对局部坐标系做相应的变换,使之适应引脚的空间位姿,具体规则如下,旋转方向可逆,以下以逆时针为例:
213.如果引脚所属第ⅰ区域,局部坐标系localcsys的x轴绕局部坐标系localcsys的z轴逆时针(从z轴正向往z轴负向看)旋转90
°

214.如果引脚所属第ⅱ区域,局部坐标系localcsys保持不变。
215.如果引脚所属第ⅲ区域,局部坐标系localcsys的x轴绕局部坐标系localcsys的z轴逆时针(从z轴正向往z轴负向看)旋转270
°

216.如果引脚所属第ⅳ区域,局部坐标系localcsys的x轴绕局部坐标系localcsys的z轴逆时针(从z轴正向往z轴负向看)旋转180
°

217.8.4引脚形状类型为j10,如图12所示:
218.第一步,在局部坐标系localcsys下计算引脚的包围盒j10box。
219.第二步,如图18所示,根据所述包围盒j10box,计算j10引脚的尺寸a和中心点坐标,尺寸a=j10box.maxpnt.x

j10box.minpnt.x,j10box.minpnt.x和j10box.maxpnt.x分别表示包围盒j10box的最小x坐标和最大x坐标。
220.8.5引脚形状类型为j14,形状为立方体的引脚尺寸信息,如图13所示:
221.第一步,在局部坐标系localcsys下计算矩形引脚的包围盒j14box1。
222.第二步,如图13所示,根据包围盒j14box1计算j14矩形引脚的尺寸a、b、c和中心点坐标。
223.具体地,尺寸a=j14box1.maxpnt.x

j14box1.minpnt.x,尺寸b=j14box1.maxpnt.y

j14box1.minpnt.y,尺寸c=j14box1.maxpnt.z

j14box1.minpnt.z,j14box1.minpnt.x、j14box1.minpnt.y和j14box1.minpnt.z分别表示包围盒j14box1最小点minpnt的x、y和z坐标值,j14box1.maxpnt.x、j14box1.maxpnt.y和j14box1.maxpnt.z分别表示包围盒j14box1最大点maxpnt的x、y和z坐标值。
224.8.6引脚形状类型为j14,形状为圆柱体的引脚尺寸信息,如图13所示:
225.第一步,在局部坐标系localcsys下计算圆形引脚的包围盒j14box2。
226.第二步,如图13所示,根据包围盒j14box2计算j14圆形引脚的尺寸a、c和中心点坐标,尺寸a=j14box2.maxpnt.x

j14box2.minpnt.x,尺寸c=j14box2.maxpnt.z

j14box2.minpnt.z,j14box2.minpnt.x、j14box2.minpnt.z分别表示包围盒j14box2最小点minpnt的x、z坐标值,j14box2.maxpnt.x、j14box2.maxpnt.z分别表示包围盒j14box2最大点maxpnt的x、z坐标值。
227.8.7引脚形状类型为j14,形状为多边体的引脚尺寸信息,如图13所示:
228.第一步,在局部坐标系localcsys下计算多边体引脚的包围盒j14box3。
229.第二步,如图13所示,根据包围盒j14box3计算j14多边体引脚的尺寸c和中心点坐标,轮廓点集合w可根据z轴方向投影的结果sz来进行获取,尺寸c=j14box3.maxpnt.z-j14box3.minpnt.z,j14box3.minpnt.z、j14box3.maxpnt.z分别表示包围盒j14box3最小点minpnt的z坐标值和最大点maxpnt的z坐标值。
230.步骤9、属性赋值。
231.步骤9.1、给模型整体赋属性值,如封装名称、封装类型、制造商、料号、质量、功耗、湿敏等级。
232.步骤9.2、给本体赋属性值,如颜色、材质、制造公差。
233.步骤9.3、给引脚赋属性值,如颜色、材质、安装类型、电气属性、制造公差。
234.步骤10、输出参数化模型数据。
235.具体地,按照需求输出包括模型及模型参数的相应的格式文件,如cad建模所需的step格式文件,元件库所需的数据文件等,模型参数包括不限于:输出本体的形状、和/或引脚所属的形状类型、和/或本体的尺寸、和/或本体的中心点坐标、和/或引脚的尺寸、和/或引脚的中心点坐标、和/或通孔的形状、和/或通孔的半径、和/或通孔的圆心坐标等。
236.相较于以前人工简化模型,使用本发明的方法可自动输出简化后的模型文件,且元器件本体、引脚区分度高,人工干预少,大大减少建模人员的工作量,有效提高了模型分析、仿真软件的计算速度,以及结果的准确性。
237.本方案所涉及的坐标轴为优选示例,在实际中,可根据具体情况进行坐标轴的方位调整和变换,本方案中的预设轴、x轴、y轴、z轴不做唯一性限定。
238.实施例二
239.本实施例在上述实施例的基础上还提供一种具体地元器件建模及参数化的方法,该元器件建模及参数化的方法包括:
240.s1、读入机械三维cad设计文件vy-1024.step,该文件对应的元器件模型如附图15所示。
241.s2、从以上机械三维cad设计文件中获取模型数据,模型数据包括:
242.模型类型:零件;零部件的名称:vy-1024;绝对坐标系worldcsys(原点为(0.0,0.0,0.0),x轴方向向量(1.0,0.0,0.0),y轴方向向量(0.0,1.0,0.0),z轴方向向量(0.0,0.0,1.0));点线面的几何数据以及颜色信息:模型中所有点线面的坐标、线的向量、面的法向量及对应颜色(包括黑色和灰色)等数据。
243.s3、模型拆分聚类
244.s3.1、针对所述模型,将其所有的面按颜色分组,得到组个数2。
245.s3.2、将每一组中所有的面依据外轮廓相连的原则划分,总共划分为7个子组。
246.s3.3、所有的子组计算包围盒,根据包围盒排序、去重。
247.第一步,基于上述模型数据中的点线面几何数据,并根据前述计算包围盒的方法依次计算各个子组的包围盒如下:
248.box1(minpnt(8.85,3.8,5),maxpnt(9.25,4.4,5.9)),
249.box2(minpnt(9.8,1.6,5),maxpnt(10.2,2.2,5.9)),
250.box3(minpnt(10.75,1.6,5),maxpnt(11.15,2.2,5.9)),
251.box4(minpnt(8.85,1.6,5),maxpnt(9.25,2.2,5.9)),
252.box5(minpnt(10.75,3.8,5),maxpnt(11.15,4.4,5.9)),
253.box6(minpnt(10.95,3.4,5.1),maxpnt(11.15,3.6,6.1)),
254.box7(minpnt(8.55,2.2,5.1),maxpnt(11.45,3.8,6.1))。
255.第二步,根据包围盒排序。计算各个子组包围盒的长、宽、高,以包围盒box1为例:长lbox1=9.25

8.85=0.4,宽wbox1=4.4

3.8=0.6,高hbox1=5.9

5=0.9,体积vbox1=0.4
×
0.6
×
0.9=0.216,同理,其余子组对应包围盒体积计算与此相同。
256.本实施例中,vbox1=vbox2=vbox3=vbox4=vbox5=0.216,vbox6=0.04,vbox7=4.64。根据包围盒体积从大到小将所有的子组排序,形成序列集list={box7:子组7,box1:子组1,box2:子组2,box3:子组3,box4:子组4,box5:子组5,box6:子组6}。
257.第三步,包围盒去重。结合以上各个子组的包围盒坐标,根据前述包围盒去重计算方法,可知box7的最小xyz坐标值(8.55,2.2,5.1)均小于或等于box6的最小xyz坐标值(10.95,3.4,5.1),且box7的最大xyz坐标值(11.45,3.8,6.1)均大于或等于box6的最大xyz坐标值(11.15,3.6,6.1),即box7完全包含box6,在序列集list中删除元素(box6:子组6)。
258.s4、区分元器件本体和引脚
259.以上剩余的6个子组中,将序列集list中第一个元素子组7当作本体,vmax=vbox7=4.64,将序列集list中最后一个元素子组5作为引脚,vmin=vbox5=0.216,其余的子组计算过程如下:以子组1为例,r1=vbox1/vmax=0.216/4.64=0.047,r2=vmin/vbox1=0.216/0.216=1.0,因为r2>r1,所以子组1为引脚。
260.同理,根据上述方法将其余所有子组全部进行区分,最终形成本体序列集bodylist={box7:子组7}(本实施例以只有一个本体为例进行说明),引脚序列集pinlist={box1:子组1,box2:子组2,box3:子组3,box4:子组4,box5:子组5}。
261.s5、本体形状判别
262.s5.1、创建局部坐标系localcsys,并调整坐标系localcsys的z轴方向。
263.第一步,以origin=(0.0,0.0,0.0)为原点,vx=(1.0,0.0,0.0)、vy=(0.0,1.0,0.0)、vz=(0.0,0.0,1.0)作为局部坐标系localcsys的x、y、z坐标轴的方向向量,此时局部坐标系localcsys与绝对坐标系worldcsys完全重叠。
264.第二步,绝对坐标系worldcsys中,根据步骤s4获取所有本体的包围盒bodylistbox(minpnt(8.55,2.2,5.1),maxpnt(11.45,3.8,6.1)),所有本体的中心点bodylistcenter=((8.55+11.45)/2,(2.2+3.8)/2,(5.1+6.1)/2)=(10.0,3.0,5.6);获取所有引脚的包围盒pinlistbox(minpnt(8.85,1.6,5.0),maxpnt(11.15,4.4,5.9)),所有引
脚的中心点pinlistcenter=((8.85+11.15)/2,(1.6+4.4)/2,(5.0+5.9)/2)=(10.0,3.0,5.45),从所有引脚的中心指向所有本体的中心的向量zv=(0.0,0.0,0.15)。
265.第三步,根据步骤s4所得引脚包围盒判别所有引脚在坐标轴x、y、z方向是否有重叠。
266.包围盒沿着坐标轴方向是否重叠的判别原则为:当判断包围盒在坐标轴某个方向是否有重叠时,如果包围盒在剩余的两个坐标轴上的投影都有重叠,则说明包围盒在此方向有重叠,否则包围盒在此方向无重叠。
267.包围盒在坐标轴上的投影是否重叠的判别原则为:取两个包围盒的两个最小点对应此坐标轴的坐标值中的较大值c1,取两个包围盒的两个最大点对应此坐标轴的坐标值中的较小值c2,如果c1≥c2,两个包围盒在此坐标轴上的投影无重叠,否则两个包围盒在此坐标轴上的投影有重叠。
268.以判断包围盒box1和box5在x轴方向上是否有重叠为例:取两个包围盒的两个最小点对应x坐标轴的坐标值box1.minpnt.x和box5.minpnt.x中的较大值c1=box5.minpnt.x=10.75,取两个包围盒的两个最大点对应x坐标轴的坐标值box1.maxpnt.x和box5.maxpnt.x中的较小值c2=box1.maxpnt.x=9.25,因为c1》c2,所以包围盒box1和box5在坐标轴x上的投影无重叠,同理可得包围盒box1和box5在坐标轴y上的投影有重叠,在坐标轴z上的投影有重叠,所以包围盒box1和box5沿着坐标轴x方向有重叠。
269.同理可得,box2、box3、box4在坐标轴x方向上有重叠,box1、box4在坐标轴y方向上有重叠,box3、box5在坐标轴y方向上有重叠,所有引脚在坐标轴z向无重叠,将无重叠方向(坐标轴z向)对应的向量zv的坐标值加入序列集vlist,可得vlist={0.15}。
270.第四步,取序列集vlist中第一个坐标值0.15对应的方向(0.0,0.0,1.0)作为局部坐标系z轴的方向,并且向量zv.z>0即0.15>0,局部坐标系localcsys的z轴方向与绝对坐标系worldcsys对应的z轴方向相同。
271.s5.2、计算本体序列集bodylist中本体的形状。
272.将子组7代表的本体沿着局部坐标系localcsys的坐标轴x、y、z方向分别投影,根据如下方法分别计算投影后的三个第一投影形状。
273.本体投影形状计算(以z向投影为例):
274.第一步,曲线离散化。遍历本体所有的边,如果是直线,则不需要离散化;如果是曲线,则按离散化间距(例如长度的十分之一)离散化所有的边,得到线段集set={seg{end1(11.45,2.306,5.1),end2(11.45,3.694,5.1)},
……
seg{end1(8.55,2.236,6.1),end2(8.55,3.764,6.1)}};
275.第二步,依次将线段集set中的线段沿着坐标轴z轴方向投影到坐标系xoy平面,得到投影后的线段集set'={seg'{end1(11.45,2.306,0.0),end2(11.45,3.694,0.0)},
……
,seg'{end1(8.55,2.236,0.0),end2(8.55,3.764,0.0)}};
276.第三步,计算线段集set'的外轮廓线的顶点集合w,参考图14。
277.1)将线段集set'中的每一条线段依次与其他所有线段计算是否相交(线段重合的情况下,重合部分的端点视为2个交点),如果有交点且交点不在该线段端点,则将线段从交点处分割,否则(无交点、或有交点且交点在线段端点),继续计算下一条线段,以线段集set'中的两条线段为例:线段seg1'{end1(11.45,3.764,0.0),end2(11.45,3.8,0.0)}和线
段seg2'{end1(11.45,3.8,0.0),end2(11.45,3.694,0.0)}的交点为p
交点1
(11.45,3.8,0.0)和p
交点2
(11.45,3.694,0.0),p
交点1
在线段seg1'的端点而无需分割,p
交点2
将线段seg1'分割为两个线段seg11'{end1(11.45,3.764,0.0),end2(11.45,3.694,0.0)}和线段seg12'{end1(11.45,3.8,0.0),end2(11.45,3.694,0.0)},同理,直至所有线段计算完成;
278.2)将分割后的线段集set'中所有线段按顶点分组,将具有相同顶点的线段归为一组,两个端点都相同的线段仅保留一个线段,例如线段seg11'和线段seg12'有相同的端点则归到同一组;
279.3)取所有顶点在x轴上间距最大的两个点的x坐标值x1=8.55,x2=10.95,以其两坐标值的中点c=(x1+x2)/2=9.75做垂直于x轴的直线l2:x=9.75,获取直线l2与线段集中所有的线段的交点的y坐标的最小值2.2,最小值对应的线段为segymin{end1(8.55,2.2,0.0),end2(11.45,2.2,0.0)},以端点segymin.end1作为起点pstart,segymin.end2作为终点pend;
280.4)遍历线段集set'中线段顶点与终点pend坐标值相同的所有线段,取与起始线段夹角最大的一条线段作为新的起始线段,将新的起始线段的另一端顶点作为新的终点pend,循环迭代本步骤,直到新的终点坐标pend等于起点坐标pstart,迭代结束,将所有找到的线段作为外轮廓线,取轮廓线顶点形成序列w={p(8.55,2.2,0.0),p(11.45,2.2,0.0),
……
p(8.55,2.236,0.0)}。
281.第四步,获取线段集set'的外轮廓线的轮廓面积s=4.64,分别获取外轮廓顶点集合w的矩形包围盒r
矩形
的面积s
矩形
=4.64和最小外接圆c
外接圆
的面积s

=8.62,分别计算外轮廓面积s与矩形r
矩形
、外接圆c
外接圆
面积的比值,r
矩形
=s/s
矩形
=4.64/4.64=1.0,r

=s/s

=4.64/8.62=0.54,本实施例以k及k1分别为0.85和0.9为例,因为r
矩形
>r

且r
矩形
>0.85,所以本体z向的第一投影形状判定为矩形。
282.同理,根据类似的方法分别计算子组7代表的本体在x向和y向的第一投影形状,得出x向和y向的第一投影形状均为矩形,即子组7代表的本体在三个方向的第一投影形状都为矩形,所以此本体为立方体。
283.s6、引脚形状类型判别
284.s6.1、计算引脚的形状
285.依次计算引脚序列集pinlist中每一个引脚的形状。以子组1代表的引脚为例,计算过程如下:
286.在局部坐标系localcsys下,将引脚沿着坐标轴x、y、z方向分别投影,分别计算投影后的三个第二投影形状sx、sy、sz,计算方法同5.2步骤本体第一投影形状计算方法一致,得到投影后的第二投影形状sx为多边形、sy为矩形、sz为矩形,因此此引脚形状为多边体。
287.同理,根据类似的方法可得其他所有引脚均为多边体。
288.s6.2、在局部坐标系localcsys下,计算每个引脚的局部特征、分布特征和轮廓特征,以子组1代表的引脚为例:
289.1)局部特征。
290.第一步,获取所有本体的包围盒:
291.localbodylistbox(minpnt(8.55,2.2,5.1),maxpnt(11.45,3.8,6.1))以及上述引脚的包围盒localpinbox(minpnt(8.85,3.8,5.0),maxpnt(9.25,4.4,5.9))。
292.第二步,计算包围盒重叠度。
293.以坐标轴x为例:取localbodylistbox.minpnt.x和localpinbox.minpnt.x中的较大值作为x1=8.85,取localbodylistbox.maxpnt.x和localpinbox.maxpnt.x中的较小值作为x2=9.25,可得重叠长度overlen=x2

x1=9.25

8.85=0.4,本体在x轴上的重叠度为overlen/(localbodylistbox.maxpnt.x-localbodylistbox.minpnt.x)=0.4/(11.45

8.55)=13.8%,引脚在x轴上的重叠度为overlen/(localpinbox.maxpnt.x-localpinbox.minpnt.x)=0.4/(9.25

8.85)=100%。同理可得本体在y轴上的重叠度为0,引脚在y轴上的重叠度为0;本体在z轴上的重叠度为80%,引脚在z轴上的重叠度为88.9%。
294.2)分布特征。根据5.2步骤计算所得本体z向投影外轮廓以及6.1步骤计算得到的引脚z向投影外轮廓,根据判断点在多边形内外的现有算法,判断可知该引脚的部分外轮廓点处于本体外轮廓线上,剩余的所有引脚外轮廓点都处于本体外轮廓线外,参考图5所示,可得引脚在本体外轮廓线外。
295.3)轮廓特征。针对引脚的三个投影,根据前述轮廓特征计算方法,依次判别两条竖直辅助线之外的该引脚所有投影形状顶点所处的区域:该引脚沿着坐标轴y、z方向的投影sx、sy为矩形,所有的顶点都处于两条竖直辅助线之间,对应的轮廓特征都为空;该引脚沿着坐标轴x方向的投影sz为多边形,两条竖直辅助线之外的所有顶点处于图7中的



区域。
296.同理,计算可得其他所有引脚的局部特征、分布特征和轮廓特征。
297.s6.3、基于多特征融合的方法进行引脚形状类型识别
298.以子组1代表的引脚为例,根据该引脚的形状、和/或分布特征、和/或局部特征、和/或轮廓特征来区分引脚所属的形状类型,其相关特征如下:
299.1)分布特征:在俯视图中引脚处于本体外轮廓线外侧且相连;
300.2)引脚形状:引脚为多边体;
301.3)轮廓特征:引脚沿着坐标轴x方向的投影形状sx满足其两条竖直辅助线之外的所有顶点处于



区域。
302.满足j6引脚的判别标准,所以此引脚判定为j6类型的引脚。
303.同理,可判定其他剩余引脚类型均为j6。
304.s7、计算元器件安装平面
305.对于引脚类型为j6的贴装类引脚的元器件来说,元器件安装平面在引脚底部,获取在局部坐标系localcsys下的所有引脚的包围盒localpinlistbox(minpnt(8.85,1.6,5.0),maxpnt(11.15,4.4,5.9)),元器件安装平面的z坐标值zcoord=localpinlistbox.minpnt.z=5.0。
306.由上述计算可得安装平面上一点pcbpnt=(0.0,0.0,zcoord),将点pcbpnt转换到绝对坐标系worldcsys中,得到在绝对坐标系worldcsys下对应的点pcbpnt'=(0.0,0.0,5.0)。
307.将上述局部坐标系localcsys移动到安装平面上,局部坐标系localcsys的原点origin=pcbpnt'=(0.0,0.0,5.0),局部坐标系localcsys的x、y、z坐标轴方向vx、vy、vz保持不变。
308.s8、本体相关尺寸计算
309.计算子组7代表的立方体本体对应的尺寸信息。
310.具体的,上述步骤7中调整了局部坐标系的位置,在调整后的局部坐标系localcsys下,获取子组7代表的立方体本体的包围盒localbodybox(minpnt(8.55,2.2,0.1),maxpnt(11.45,3.8,1.1)),长l=localbodybox.maxpnt.x-localbodybox.minpnt.x=11.45

8.55=2.9,w=localbodybox.maxpnt.y-localbodybox.minpnt.y=3.8

2.2=1.6,高h=localbodybox.maxpnt.z-localbodybox.minpnt.z=1.1

0.1=1.0,中心点center=((8.55+11.45)/2,(2.2+3.8)/2,(0.1+1.1)/2)=(10.0,3.0,0.6)。
311.在局部坐标系localcsys下,计算所述本体上平行于坐标系localcsys的z轴的通孔。
312.第一步,将所述本体沿着局部坐标系localcsys的z轴方向投影,获取所有本体投影后的线段集set”={seg”{end1(11.45,2.306,0.0),end2(11.45,3.694,0.0)},
……
,seg”{end1(11.148,3.483,0.0),end2(11.144,3.466,0.0)}}和外轮廓线w”{seg”{end1(11.45,2.306,0.0),end2(11.45,3.694,0.0)},
……
,seg”{end1(8.55,2.236,0.0),end2(8.55,3.764,0.0)}},计算方法与步骤s5.2本体投影方法一致;
313.第二步,删除线段集set”中的所包含的所有外轮廓线w”。
314.第三步,由于此模型不存在没有贯通本体的线段,故不需执行此删除线段集set”中没有贯通本体的投影线段的步骤。
315.第四步,获取线段集set”中首尾相连的线段,具体参考前述获取线段集set”中首尾相连的的具体过程。
316.第五步,获取所有内轮廓。最终得到截面集合序列s截面={s1{seg”{end1(11.148,3.483,0.0),end2(11.144,3.466,0.0)},
……
,seg”{end1(11.148,3.517,0.0),end2(11.15,3.5,0.0)}}},截面集合序列s截面只包含一个子集合,即只有一个截面形状。
317.第六步,通过步骤s5.2中第三步形状判别方法,可得上述截面形状为圆形,同时可得圆形通孔的截面圆心center截面=(11.05,3.5,0.0),r截面=0.1。
318.s9、引脚计算
319.在局部坐标系localcsys下,根据步骤6计算所得到的引脚形状类型j6,依次计算每个引脚的尺寸信息,以子组1代表的引脚为例,计算过程如下:
320.第一步,调整局部坐标系localcsys。计算引脚边界和本体边界的最短距离,可得引脚距离本体下边界距离为0,此引脚所属第ⅳ区域,如图5,根据坐标系位姿调整规则,局部坐标系localcsys的x轴绕z轴逆时针(从z轴正向往z轴负向看)旋转180
°

321.第二步,在最新的(经上述步骤调整后)局部坐标系localcsys下,获取引脚的包围盒j6box(minpnt(-9.25,-4.4,0),maxpnt(-8.85,-3.8,0.9));
322.第三步,基于包围盒j6box,计算j6引脚的尺寸a=j6box.maxpnt.x

j6box.minpnt.x=-8.85

(-9.25)=0.4,尺寸d=j6box.maxpnt.z

j6box.minpnt.z=0.9

0=0.9,中心点center=((-9.25+(-8.85))/2,(-4.4+(-3.8))/2,(0+0.9)/2)=(-9.05,-4.1,0.45);
323.第四步,遍历j6引脚所有法向量平行于坐标系z轴的平面,依次计算每一个平面,直到找到j6引脚的底面,计算方法如下:首先获取平面上一点pnt和面的单位法向量vec,如果法向量vec平行于坐标系z轴方向向量vz且方向相反,并且满足pnt.z=j6box.minpnt.z,
则此平面为j6引脚的底面bottomface。计算上述方法得到的底面bottomface的包围盒bottombox(minpnt(-9.25,-4.4,0),maxpnt(-8.85,-4.15,0)),j6引脚的尺寸b=bottombox.maxpnt.y

bottombox.minpnt.y=-4.15

(-4.4)=0.25;
324.第五步,遍历j6引脚所有的与底面bottomface平行且法向量相反的平面,取距离底面最近的平面作为j6引脚的背面backface,获取背面backface的包围盒backbox(minpnt(-9.25,-4.4,0.15),maxpnt(-8.85,-4.15,0.15)),则j6引脚的尺寸c=backbox.maxpnt.z-bottombox.maxpnt.z=0.15。
325.第六步,还原局部坐标系localcsys到第一步调整之前的姿态,并且将第三步计算所得中心点转换到此时的局部坐标系localcsys中,得到最新的j6引脚的中心点center=(9.05,4.1,0.45);
326.同理,根据上述计算方法可得其他引脚的尺寸信息。
327.s10、根据该元器件实物信息进行属性赋值:
328.s10.1、给模型整体赋属性值:封装名称=sot-23-5,封装类型=sot,制造商=xxx,料号=xxx,质量=25mg,功耗=350mw,湿敏等级=1。
329.s10.2、给本体赋属性值:颜色:黑色,材质:酚醛树脂,制造公差:
±
0.10。
330.s10.3、给引脚赋属性值:颜色:灰色,材质:纯雾锡镀层,安装类型:smd(贴片式),电气属性:电气式,制造公差:
±
0.10。
331.s11、模型参数输出(本实施例所涉及尺寸的单位均为毫米)
332.表1:本体数据
[0333][0334]
表2:通孔数据
[0335]
名称形状半径圆心通孔1圆形0.111.05,3.5,0.0
[0336]
表3:引脚数据
[0337][0338]
实施例三
[0339]
请参见图19,图19是本发明实施例提供的一种元器件建模及模型参数化系统的结构示意图。该元器件建模及模型参数化系统,包括:
[0340]
获取模块,用于获取元器件模型数据;
[0341]
拆分聚类模块,用于根据所述模型数据中的信息,对元器件模型进行拆分聚类;
[0342]
序列集生成模块,根据所述拆分聚类的结果,区分所述元器件模型的本体和引脚,得到本体序列集和引脚序列集,所述本体序列集中包含各个本体包围盒,所述引脚序列集中包含各个引脚的包围盒;
[0343]
识别模块,用于分别判断所述本体和引脚的形状,并识别所述引脚的形状类型;
[0344]
尺寸计算模块,用于基于所述本体的形状及本体的包围盒得到所述本体尺寸,基于所述引脚的形状、形状类型及引脚的包围盒得到所述引脚的尺寸;
[0345]
输出模块,用于输出参数化模型数据。
[0346]
本实施例提供的元器件建模及模型参数化系统,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
[0347]
实施例四
[0348]
请参见图20,图20是本实施例提供的一种电子设备的结构示意图。该电子设备1100,包括:处理器1101、通信接口1102、存储器1103和通信总线1104,其中,处理器1101,通信接口1102,存储器1103通过通信总线1104完成相互间的通信;
[0349]
存储器1103,用于存储计算机程序;
[0350]
处理器1101,用于执行计算机程序时,实现上述方法步骤。
[0351]
处理器1101执行计算机程序时实现以上实施例一和实施例二中的部分或全部步骤。
[0352]
本发明实施例提供的电子设备,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
[0353]
实施例五
[0354]
本实施例提供了一种计算机可读存储介质,其上存储有计算机程序,上述计算机程序被处理器执行时实现以上实施例一和实施例二中的部分或全部步骤。
[0355]
本发明实施例提供的计算机可读存储介质,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
[0356]
本领域技术人员应明白,本技术的实施例可提供为方法、装置(设备)、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式,这里将它们都统称为“模块”或“系统”。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。计算机程序存储/分布在合适的介质中,与其它硬件一起提供或作为硬件的一部分,也可以采用其他分布形式,如通过internet或其它有线或无线电信系统。
[0357]
在本发明的描述中,需要理解的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
[0358]
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不
必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。此外,本领域的技术人员可以将本说明书中描述的不同实施例或示例进行接合和组合。
[0359]
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1