Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --"Angle Threshold spinner" -- angle beetven face normal and Z-axis
- --"Max Height" -- select only faces which center position is > Max Height
- try(DestroyDialog ::bgaRoll)catch()
- rollout bgaRoll "selectObjTops"
- (
- local poGFN = polyop.getFaceNormal, poGFC = polyop.getFaceCenter
- spinner spn_ang "Angle Threshold:" range:[0,360,5] pos:[5,5]
- spinner spn_heig "Max Height: " range:[0,360,0] pos:[4,25]
- button btn "Select T O P S!" width:150 pos:[5,45]
- fn getDirAngle v1 v2 = (acos(dot (normalize v1) (normalize v2)))
- fn getTops obj ang: elev: =
- (
- local topFaces = #{}, norm = [0,0,1]
- if isKindOf obj Editable_Mesh do (poGFN = getFaceNormal ; poGFC = meshop.getFaceCenter)
- for f = 1 to obj.numfaces where getDirAngle norm (poGFN obj f) <= ang do
- (
- if abs ((poGFC obj f).z-obj.min.z) >= elev do append topFaces f
- ) ; obj.selectedfaces = topFaces
- )
- on btn pressed do
- (
- if selection.count > 0 do
- (
- for obj in selection where isKindOf obj Editable_Poly or isKindOf obj Editable_Mesh do
- getTops obj ang:(spn_ang.value) elev:(spn_heig.value)
- )
- )
- )
- createDialog bgaRoll 160 70 style:#(#style_titlebar, #style_sysmenu, #style_toolwindow)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement