从3D几何体中提取元素:ElementExtractor类(1)

7.2.3  从3D几何体中提取元素:ElementExtractor类(1)

3D对象可能是复杂的。立方体尤其符合这种情况。一个复杂的立方体由多个简单的立方体组成。这些简单的立方体又由表面组成,它们中的某些几何体构成了立方体中的孔。表面本身由各种元素构成,而这些元素又由环组成。

ElementExtractor类使得对复杂对象的检查和独立组件的提取变得容易,如组成立方体的一个或多个表面。注意,你也可以对一些规则的二维几何体使用提取器。例如,在一个复杂的多边形中,它对提取一个环的线性等高线是很有用的。

可以通过两种方式使用提取器:一个是提取指定的元素,另一个是对所有有效的元素进行迭代。

提示:

ElementExtractor类并不只局限于3D几何体,对2D图形也适用。但是因为其输入必须是J3D_Geometry对象,所以首先要把JGeometry对象转换成一个J3D_Geometry对象。

1. 提取独立元素

你需要做的就是调用静态的getElementByLabel()方法,传入一个用于唯一标记待提取几何体元素的标签。这个标签是一个由逗号分隔的ID号码字符串,该号码指定了待返回的几何体的子集。根据需要可以对以下列出的元素进行指定(对在最后一个指定的元素前的任何一个null元素,为其输入一个逗号)。

点ID

边ID

环ID

多边形ID

表面ID

立方体ID

多重立方体ID

这些ID号是每个元素在每一级上的序列号。序列号从1开始:在多重多边形中第一个多边形是多边形1。它的环从1到N编号。第二个多边形是多边形2,其中的环仍从1到N编号。

例如,下面的代码将从简单立方体的表面2中返回3号多边形:

 
 
  1. J3D_Geometry ring=ElementExtractor. getElementByLabel(solid,"0,0,0,3,2"); 

注意,当有错误发生时,J3D_Geometry中的validate()方法将返回这样一个标记。你可以通过向ElementExtractor.getElementByLabel()传递这个标记来分离发生错误的元素。

2. 对元素进行迭代

创建一个ElementExtractor对象,向它传递你的查询的参数。这实际上将创建一个在一定详细程度上初始化的迭代器。接着,你可以通过其nextElement()方法来逐个提取对象的组件。然后还可以用另一个ElementExtractor对象进一步地检查第一次循环所得到的每个元素。

表7-9详细介绍了创建一个ElementExtractor对象所要用到的参数。这些参数控制提取器的行为方式。

表7-9  ElementExtractor的参数

    

    

geometry

待分析的3D几何体

firstElement

开始提取的位置,在几何体的SDO_ELEM_INFO

数组中被定义为偏移量。默认值为0

extractionLevel

这个参数决定迭代器处理几何体中元素的方法。

请参见“提取级别”一节获取详细信息

allow_comp_sub_elements

指定为true(默认值)或false。在

MULTICOMP_TOSIMPLE提取级别上,

用户可以通过把这个参数设置为FALSE,

从多个或复合几何体中直接提取

简单几何体。默认值为TRUE,

这意味着用户将先从多几何体中提取复合几何体

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值