snipplrCallback({"id":72927,"title":"check-editablepoly-edge-length-and-face-verts-count","source":"
try(destroyDialog polyChecker)catch()\r<\/div><\/li> rollout polyChecker "Check Edge Length"\r<\/div><\/li> (\r<\/div><\/li> \tlabel lbl_info\r<\/div><\/li> \tgroup "Check Edge Length"\r<\/div><\/li> \t(\r<\/div><\/li> \t\tspinner spn_edgeLength "Length Limit" range:[0,1000,1] align:#left width:130\r<\/div><\/li> \t\tbutton btn_checkEdge "Check" align:#right\r<\/div><\/li> \t)\r<\/div><\/li> \tgroup "Check Face"\r<\/div><\/li> \t(\r<\/div><\/li> \t\tspinner spn_vertsCount "Verts Limit" range:[1,4,10] type:#integer align:#left width:130\r<\/div><\/li> \t\tbutton btn_checkFace "Check" align:#right\r<\/div><\/li> \t)\r<\/div><\/li> <\/div><\/li> <\/div><\/li> \tlocal warningNodes = #()\r<\/div><\/li> <\/div><\/li> \tfn checkFace obj =\r<\/div><\/li> \t(\r<\/div><\/li> \t\tmodPanel.setCurrentObject obj.baseObject\r<\/div><\/li> \t\tsubObjectLevel = 4\r<\/div><\/li> \t\tfaceCount = polyOp.getNumFaces obj\r<\/div><\/li> \t\tfacelist = for i = 1 to faceCount where (polyOp.getFaceVerts obj i).count > spn_vertsCount.value collect i\r<\/div><\/li> \t\tpolyOp.setFaceSelection obj facelist\r<\/div><\/li> \t\t--subObjectLevel = 0\r<\/div><\/li> \t\tif facelist.count > 0 then append warningNodes obj\r<\/div><\/li> \t\treturn facelist.count\r<\/div><\/li> \t)\r<\/div><\/li> <\/div><\/li> \tfunction getEdgeLength theEditablePoly iEdge =\r<\/div><\/li> \t(\r<\/div><\/li> \t\t-- get vertexes defining the edge into an Array\r<\/div><\/li> \t\taiEdgeVerts = polyOp.getEdgeVerts theEditablePoly iEdge\r<\/div><\/li> <\/div><\/li> \t\t-- get vertexes positions into an Array\r<\/div><\/li> \t\tap3VertPosition = for iVert in aiEdgeVerts collect\r<\/div><\/li> \t\tpolyOp.getVert theEditablePoly iVert\r<\/div><\/li> <\/div><\/li> \t\t-- return the distance between vertexes\r<\/div><\/li> \t\tresult = distance ap3VertPosition[1] ap3VertPosition[2]\r<\/div><\/li> \t\treturn result\r<\/div><\/li> \t)\r<\/div><\/li> <\/div><\/li> \tfunction checkProcess obj edgeLength =\r<\/div><\/li> \t(\r<\/div><\/li> \t\ttarget = obj\r<\/div><\/li> \t\tif isKindOf target.baseObject Editable_Poly do\r<\/div><\/li> \t\t(\r<\/div><\/li> \t\t\tmodPanel.setCurrentObject target.baseObject\r<\/div><\/li> \t\t\tsubObjectLevel = 1\r<\/div><\/li> \t\t\tvertsList = #()\r<\/div><\/li> \t\t\tedgeList = #()\r<\/div><\/li> \t\t\tedgeCount = polyOp.getNumEdges target\r<\/div><\/li> \t\t\tfor i = 1 to edgeCount do\r<\/div><\/li> \t\t\t(\r<\/div><\/li> \t\t\t\tif (getEdgeLength target i) < edgeLength then\r<\/div><\/li> \t\t\t\t(\r<\/div><\/li> \t\t\t\t\tappend edgeList i\r<\/div><\/li> \t\t\t\t\tfor num in (polyOp.getEdgeVerts target i) do append vertsList num\t\t\t \r<\/div><\/li> \t\t\t\t)\r<\/div><\/li> \t\t\t)\r<\/div><\/li> \t\t\tpolyOp.setEdgeSelection target edgeList \r<\/div><\/li> \t\t\tpolyOp.setVertSelection target vertsList\r<\/div><\/li> \t\t\tredrawViews()\r<\/div><\/li> \t\t\treturn edgeList.count\r<\/div><\/li> \t\t)\r<\/div><\/li> \t)\r<\/div><\/li> <\/div><\/li> \tfn updateInfo str =\r<\/div><\/li> \t(\r<\/div><\/li> \t\tlbl_info.text = str\r<\/div><\/li> \t)\r<\/div><\/li> <\/div><\/li> \ton btn_checkEdge pressed do\r<\/div><\/li> \t(\r<\/div><\/li> \t\tupdateInfo ((checkProcess $ spn_edgeLength.value) as string + " edges are found.")\t\t\r<\/div><\/li> \t)\r<\/div><\/li> \ton btn_checkFace pressed do\r<\/div><\/li> \t(\r<\/div><\/li> \t\terrorCount = 0\r<\/div><\/li> \t\tfor o in selection where isKindOf o.baseObject Editable_Poly do\r<\/div><\/li> \t\t(\r<\/div><\/li> \t\t\terrorCount += checkFace o\r<\/div><\/li> \t\t)\r<\/div><\/li> \t\tsubObjectLevel = 0\r<\/div><\/li> \t\tif errorCount > 0 then\r<\/div><\/li> \t\t(\r<\/div><\/li> \t\t\tselect warningNodes\r<\/div><\/li> \t\t\tupdateInfo (errorCount as string + " faces got error.")\r<\/div><\/li> \t\t) else (\r<\/div><\/li> \t\t\tupdateInfo "No error."\r<\/div><\/li> \t\t)\r<\/div><\/li> <\/div><\/li> \t\tredrawViews()\r<\/div><\/li> \t)\r<\/div><\/li> )\r<\/div><\/li> createDialog polyChecker<\/div><\/li><\/ol><\/pre>","link":"https:\/\/snipplr.com\/view\/72927\/check-editablepoly-edge-length-and-face-verts-count"});