poly 查找因素脚本、
----这个是因素的旗帜。
fn fl_getElementItem SourceOBJ =
(
tempSel = polyop.getFaceSelection SourceOBJ --在没有选择面的情况下,返回的是一个空组。
elementFirstFlags = #()
faceCount = polyOp.getNumFaces SourceOBJ --返回总的面数。
faceFlags = #{1..faceCount} --原来这样的可以替换,不错
for i in 1 to faceCount where not faceFlags.isempty do
( --start element count loop
/*
这里面有一段脚本,我要解释一下。
a=#{1..5,10..20} --可以判断是选择面的数组。
a.numberset --> 16 --数组里面的元素个数。这个和下面的使用
如果元素个数里面是空的,下面的判断则返回 true
如果元素个数不是空的,就返回false
上面就是用 not faceFlags.isempty 判断模型面数是否为零 零时就 不就行数量的操作了。
我如果不知道这个函数我会,把它转成成数组,判断数组的数量。大的数组转换估计会慢,还是系统自己提供的好。
a.isEmpty --> false
a=#{}
a.numberset --> 0
a.isEmpty --> true
*/
--判断面是否存在。一般都会存在因为他是索引的他的完整个数。
if faceFlags[i] then
( append elementFirstFlags i
SourceOBJ.EditablePoly.SetSelection #Face #{i} ---循环面依次选择。
SourceOBJ.selectElement()-----这个是选择因素的函数,
--*********
--**$.SelectBorder() 在这里这个和很重要,选择开放的边的函数。
--** 之中就是有好多的poly 的操作。
--**
TargetElement = polyop.getFaceSelection SourceOBJ ---返回一个大可好的数组。
----这里的算法很牛, 我要好好的看看。
faceFlags -= TargetElement
)
else()
)
polyOp.setFaceSelection SourceOBJ tempSel ---如果之前选择,这时我们还是选择他,如果之前是空,我们最后算出结果还是空。
elementFirstFlags --返回的数组,这种算法算因素非常的好,妙。
---我现在是渴望不可及的。
)
/*
函数分解思路。
1.在算因素的时候,开始