poly 的奇数 偶数 隔点选择

---段数的跳一个 选择一个,这样进行处理。点数的,面数的处理
---起初我是这么想的。用when 语句进行操作,单我按下按钮时,就是这样的,当我点击的线符合拓扑结构时。
---产生横向与纵向的连长,但是我后来就不这么想了。
---尤其是在听了路生的教导后。我不想在刷什么。我要做的工作是,在max的基础上,做东西。补不足。 max 能实现的,大家都在用,所以习惯了,
---不是很好改了。
---好了,写东西了。起初只是想写线的,现在看来,我要写 点的 边的, 面的  奇数 偶数的选择。2011.4.22 晚
---由于在选择中选择缺口 返回的是边,所以 所以这样按缺口选择的 估计有特定的函数,或有特定的组,
---这个我在后卖在考虑。
 fn odd_numbers_even_numbers input_poly type_t  odd_even  num  =
 (
  ---结构是点 边 面   在往下就是 奇数性 还有就是偶数性
  
    case of ---这个是我的手动的处理。所以这里面我只列举3 中情况进行处理。
  (

  (type_t == "select_vertex"):(
   
   local mod_array =#()
   local mod_back_array =#()
    Back_Verts_array = polyop.getVertSelection  input_poly
    Back_Verts_array =Back_Verts_array as array
   if Back_Verts_array.count !=0 then
   (
    Back_Verts_array =sort  Back_Verts_array --数组排列方便选择。
    
    for i in 1 to Back_Verts_array.count do
    (
     if  (mod  i num )as integer ==0 then
     (
         append   mod_array   Back_Verts_array[i]
      
     )else
     (
      append   mod_back_array   Back_Verts_array[i]
      
     )---end else
     
    )---end for
    
   
   
   if odd_even=="odd"then
   (
     polyop.setVertSelection   input_poly  mod_back_array
   )--end odd
   if odd_even=="even" then
   (
     polyop.setVertSelection   input_poly  mod_array
   )---end enen
   )----end back_vertex_array
   
  )---end ()
  (type_t == "select_edge"):(
   local mod_array =#()
   local mod_back_array =#()
    Back_Verts_array = polyop.getEdgeSelection  input_poly
    Back_Verts_array =Back_Verts_array as array
   if Back_Verts_array.count !=0 then
   (
    Back_Verts_array =sort  Back_Verts_array --数组排列方便选择。
    
    for i in 1 to Back_Verts_array.count do
    (
     if  (mod  i num )as integer ==0 then
     (
         append   mod_array   Back_Verts_array[i]
      
     )else
     (
      append   mod_back_array   Back_Verts_array[i]
      
     )---end else
     
    )---end for
    
   
   
   if odd_even=="odd"then
   (
     polyop.setEdgeSelection   input_poly  mod_back_array
   )--end odd
   if odd_even=="even" then
   (
     polyop.setEdgeSelection   input_poly  mod_array
   )---end enen
   
   )----end back_vertex_array
   
  )---end ()
  (type_t == "select_polygon"):(
   
   local mod_array =#()
   local mod_back_array =#()
    Back_Verts_array = polyop.getFaceSelection  input_poly
    Back_Verts_array =Back_Verts_array as array
   if Back_Verts_array.count !=0 then
   (
    Back_Verts_array =sort  Back_Verts_array --数组排列方便选择。
    
    for i in 1 to Back_Verts_array.count do
    (
     if  (mod  i num )as integer ==0 then
     (
         append   mod_array   Back_Verts_array[i]
      
     )else
     (
      append   mod_back_array   Back_Verts_array[i]
      
     )---end else
     
    )---end for
    
   
   
   if odd_even=="odd"then
   (
     polyop.setFaceSelection   input_poly  mod_back_array
   )--end odd
   if odd_even=="even" then
   (
     polyop.setFaceSelection   input_poly  mod_array
   )---end enen
   
   )else return  false ----end back_vertex_array
   
   
   
  )---end ()

   )---enf case
 )---end fn
 
---我觉得点的选择可以由面点会来,这个就不用写了。其实原来也是有面转成点,这个不是很费时间。
---我做的工具也是配合max 的命令一期操作的,所以这个就不选了。

posted on 2011-04-22 22:56  盖天00  阅读(348)  评论(0编辑  收藏  举报

导航