Advertisement
Guest User

Untitled

a guest
Sep 4th, 2015
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.15 KB | None | 0 0
  1. --"Angle Threshold spinner" -- angle beetven face normal and Z-axis
  2. --"Max Height" -- select only faces which center position is > Max Height
  3.  
  4. try(DestroyDialog ::bgaRoll)catch()
  5. rollout bgaRoll "selectObjTops"
  6. (
  7. local poGFN = polyop.getFaceNormal, poGFC = polyop.getFaceCenter
  8. spinner spn_ang "Angle Threshold:" range:[0,360,5] pos:[5,5]
  9. spinner spn_heig "Max Height: " range:[0,360,0] pos:[4,25]
  10. button btn "Select T O P S!" width:150 pos:[5,45]
  11.  
  12. fn getDirAngle v1 v2 = (acos(dot (normalize v1) (normalize v2)))
  13. fn getTops obj ang: elev: =
  14. (
  15. local topFaces = #{}, norm = [0,0,1]
  16. if isKindOf obj Editable_Mesh do (poGFN = getFaceNormal ; poGFC = meshop.getFaceCenter)
  17. for f = 1 to obj.numfaces where getDirAngle norm (poGFN obj f) <= ang do
  18. (
  19. if abs ((poGFC obj f).z-obj.min.z) >= elev do append topFaces f
  20. ) ; obj.selectedfaces = topFaces
  21. )
  22. on btn pressed do
  23. (
  24. if selection.count > 0 do
  25. (
  26. for obj in selection where isKindOf obj Editable_Poly or isKindOf obj Editable_Mesh do
  27. getTops obj ang:(spn_ang.value) elev:(spn_heig.value)
  28. )
  29. )
  30. )
  31. createDialog bgaRoll 160 70 style:#(#style_titlebar, #style_sysmenu, #style_toolwindow)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement