snipplrCallback({"id":72927,"title":"check-editablepoly-edge-length-and-face-verts-count","source":"
  1. try(destroyDialog polyChecker)catch()\r<\/div><\/li>
  2. rollout polyChecker "Check Edge Length"\r<\/div><\/li>
  3. (\r<\/div><\/li>
  4. \tlabel lbl_info\r<\/div><\/li>
  5. \tgroup "Check Edge Length"\r<\/div><\/li>
  6. \t(\r<\/div><\/li>
  7. \t\tspinner spn_edgeLength "Length Limit" range:[0,1000,1] align:#left width:130\r<\/div><\/li>
  8. \t\tbutton btn_checkEdge "Check" align:#right\r<\/div><\/li>
  9. \t)\r<\/div><\/li>
  10. \tgroup "Check Face"\r<\/div><\/li>
  11. \t(\r<\/div><\/li>
  12. \t\tspinner spn_vertsCount "Verts Limit" range:[1,4,10] type:#integer align:#left width:130\r<\/div><\/li>
  13. \t\tbutton btn_checkFace "Check" align:#right\r<\/div><\/li>
  14. \t)\r<\/div><\/li>
  15.  <\/div><\/li>
  16.  <\/div><\/li>
  17. \tlocal warningNodes = #()\r<\/div><\/li>
  18.  <\/div><\/li>
  19. \tfn checkFace obj =\r<\/div><\/li>
  20. \t(\r<\/div><\/li>
  21. \t\tmodPanel.setCurrentObject obj.baseObject\r<\/div><\/li>
  22. \t\tsubObjectLevel = 4\r<\/div><\/li>
  23. \t\tfaceCount = polyOp.getNumFaces obj\r<\/div><\/li>
  24. \t\tfacelist = for i = 1 to faceCount where (polyOp.getFaceVerts obj i).count > spn_vertsCount.value collect i\r<\/div><\/li>
  25. \t\tpolyOp.setFaceSelection obj facelist\r<\/div><\/li>
  26. \t\t--subObjectLevel = 0\r<\/div><\/li>
  27. \t\tif facelist.count > 0 then append warningNodes obj\r<\/div><\/li>
  28. \t\treturn facelist.count\r<\/div><\/li>
  29. \t)\r<\/div><\/li>
  30.  <\/div><\/li>
  31. \tfunction getEdgeLength theEditablePoly iEdge =\r<\/div><\/li>
  32. \t(\r<\/div><\/li>
  33. \t\t-- get vertexes defining the edge into an Array\r<\/div><\/li>
  34. \t\taiEdgeVerts = polyOp.getEdgeVerts theEditablePoly iEdge\r<\/div><\/li>
  35.  <\/div><\/li>
  36. \t\t-- get vertexes positions into an Array\r<\/div><\/li>
  37. \t\tap3VertPosition = for iVert in aiEdgeVerts collect\r<\/div><\/li>
  38. \t\tpolyOp.getVert theEditablePoly iVert\r<\/div><\/li>
  39.  <\/div><\/li>
  40. \t\t-- return the distance between vertexes\r<\/div><\/li>
  41. \t\tresult = distance ap3VertPosition[1] ap3VertPosition[2]\r<\/div><\/li>
  42. \t\treturn result\r<\/div><\/li>
  43. \t)\r<\/div><\/li>
  44.  <\/div><\/li>
  45. \tfunction checkProcess obj edgeLength =\r<\/div><\/li>
  46. \t(\r<\/div><\/li>
  47. \t\ttarget = obj\r<\/div><\/li>
  48. \t\tif isKindOf target.baseObject Editable_Poly do\r<\/div><\/li>
  49. \t\t(\r<\/div><\/li>
  50. \t\t\tmodPanel.setCurrentObject target.baseObject\r<\/div><\/li>
  51. \t\t\tsubObjectLevel = 1\r<\/div><\/li>
  52. \t\t\tvertsList = #()\r<\/div><\/li>
  53. \t\t\tedgeList = #()\r<\/div><\/li>
  54. \t\t\tedgeCount = polyOp.getNumEdges target\r<\/div><\/li>
  55. \t\t\tfor i = 1 to edgeCount do\r<\/div><\/li>
  56. \t\t\t(\r<\/div><\/li>
  57. \t\t\t\tif (getEdgeLength target i) < edgeLength then\r<\/div><\/li>
  58. \t\t\t\t(\r<\/div><\/li>
  59. \t\t\t\t\tappend edgeList i\r<\/div><\/li>
  60. \t\t\t\t\tfor num in (polyOp.getEdgeVerts target i) do append vertsList num\t\t\t \r<\/div><\/li>
  61. \t\t\t\t)\r<\/div><\/li>
  62. \t\t\t)\r<\/div><\/li>
  63. \t\t\tpolyOp.setEdgeSelection target edgeList \r<\/div><\/li>
  64. \t\t\tpolyOp.setVertSelection target vertsList\r<\/div><\/li>
  65. \t\t\tredrawViews()\r<\/div><\/li>
  66. \t\t\treturn edgeList.count\r<\/div><\/li>
  67. \t\t)\r<\/div><\/li>
  68. \t)\r<\/div><\/li>
  69.  <\/div><\/li>
  70. \tfn updateInfo str =\r<\/div><\/li>
  71. \t(\r<\/div><\/li>
  72. \t\tlbl_info.text = str\r<\/div><\/li>
  73. \t)\r<\/div><\/li>
  74.  <\/div><\/li>
  75. \ton btn_checkEdge pressed do\r<\/div><\/li>
  76. \t(\r<\/div><\/li>
  77. \t\tupdateInfo ((checkProcess $ spn_edgeLength.value) as string + " edges are found.")\t\t\r<\/div><\/li>
  78. \t)\r<\/div><\/li>
  79. \ton btn_checkFace pressed do\r<\/div><\/li>
  80. \t(\r<\/div><\/li>
  81. \t\terrorCount = 0\r<\/div><\/li>
  82. \t\tfor o in selection where isKindOf o.baseObject Editable_Poly do\r<\/div><\/li>
  83. \t\t(\r<\/div><\/li>
  84. \t\t\terrorCount += checkFace o\r<\/div><\/li>
  85. \t\t)\r<\/div><\/li>
  86. \t\tsubObjectLevel = 0\r<\/div><\/li>
  87. \t\tif errorCount > 0 then\r<\/div><\/li>
  88. \t\t(\r<\/div><\/li>
  89. \t\t\tselect warningNodes\r<\/div><\/li>
  90. \t\t\tupdateInfo (errorCount as string + " faces got error.")\r<\/div><\/li>
  91. \t\t) else (\r<\/div><\/li>
  92. \t\t\tupdateInfo "No error."\r<\/div><\/li>
  93. \t\t)\r<\/div><\/li>
  94.  <\/div><\/li>
  95. \t\tredrawViews()\r<\/div><\/li>
  96. \t)\r<\/div><\/li>
  97. )\r<\/div><\/li>
  98. createDialog polyChecker<\/div><\/li><\/ol><\/pre>","link":"https:\/\/snipplr.com\/view\/72927\/check-editablepoly-edge-length-and-face-verts-count"});