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.在算因素的时候,开始
 
 

 
 
 
 
 
 
 
 
 
 
 
 

原文地址:https://www.cnblogs.com/gaitian00/p/2034383.html