cwisbg

close checker

Jun 4th, 2014
467
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.39 KB | None | 0 0
  1. # close check
  2. # version- Work
  3. # cwisbg.com
  4. from pymel.core import *
  5. import time
  6. import math
  7.    
  8. def getDistance(a, b): # d = getDistance(a,b)
  9.     pointA = a.getTranslation()
  10.     pointB = b.getTranslation()
  11.     d = math.sqrt( math.pow( pointA[0] - pointB[0], 2) + math.pow( pointA[1] - pointB[1], 2) + math.pow( pointA[2] - pointB[2], 2) )
  12.     return d
  13. def chunks(l, n):# split list into chunchs
  14.     return [l[i:i+n] for i in range(0, len(l), n)]  
  15. def checkDistance(list):
  16.     checkedList = []
  17.     closeList = []
  18.     for l in list:
  19.         for ll in list:
  20.             a = str(l),str(ll)
  21.             if l == ll or a in checkedList:
  22.                 pass
  23.             else:
  24.                 a = str(ll),str(l)  
  25.                 print a              
  26.                 checkedList.append(a)
  27.                 a = str(l),str(ll)                
  28.                 checkedList.append(a)                
  29.                 d = getDistance(l,ll)
  30.                 if d < 1:
  31.                     print d
  32.                     closeList.append(l)
  33.                     closeList.append(ll)
  34.     return closeList
  35. def chunker(l):# split list into chunchs, chunck by n
  36.     if len(l) > 100:
  37.         x = 10
  38.     else:
  39.         x = 2
  40.     h = len(l)/x # half of lenght
  41.     m = int(h/5) # middle finder
  42.     h1 = l[h:] # first half of list
  43.     h2 = l[:h] # second half of list
  44.     mc = h1[:1] # middle half one
  45.     mc2 = h2[-1:] # middle half two
  46.     a = h1,mc,mc2,h2 # chunck lists
  47.     chunck = a
  48.     return chunck
  49.  
  50. sl = selected()
  51. print len(sl)
  52.  
  53. #________________________________________
  54. start1 = time.clock()
  55. chunckList = chunker(sl)
  56. #select(cl=1)
  57. for c in chunckList:
  58.     closeList = checkDistance(c)
  59. elapsed1 = (time.clock() - start1)
  60.  
  61.  
  62.  
  63.  
  64. """
  65. #________________________________________
  66. start2 = time.clock()
  67. #
  68. closeList2 = checkDistance(sl)
  69. elapsed2 = (time.clock() - start2)      
  70. print "elapsed2 done, took:", elapsed2
  71. """
  72. """
  73. #_______________________________________
  74. start3 = time.clock()
  75. #select(cl=1)
  76. ccc = chunks(sl,10)
  77. for c in ccc:
  78.    print c
  79.    closeList = checkDistance(c)
  80. #select(closeList)
  81. elapsed3 = (time.clock() - start3)
  82. print "elapsed3 done, took:", elapsed3
  83. """
  84. select(cl=1)
  85. select(closeList,add=1)
  86. print "elapsed1 done, took:", elapsed1
  87.  
  88.          
  89. """
  90. elapsed1 done, took: 1.77342152535
  91. elapsed2 done, took: 5.1331124081
  92. elapsed3 done, took: 0.266813467869
  93. """
Advertisement
Add Comment
Please, Sign In to add comment