( obj = $ val = 10 faces = polyop.getFaceSelection obj vertices = #() normals = #() angles = #() fn GetVectorsAngle v1 v2 = ( acos(dot (normalize v1) (normalize v2)) ) fn GetProportionalityFactor a = ( 1/(cos a) ) for face in faces do( polyVerts = polyop.getFaceVerts obj face normal = polyop.getFaceNormal obj face for v in polyVerts do ( foundResult = findItem vertices v if foundResult == 0 then( append vertices v append normals normal append angles 0 ) else ( oldNormal = normals[foundResult] ang = GetVectorsAngle oldNormal normal newNormal = normalize (oldNormal + normal) normals[foundResult] = newNormal angles[foundResult] = ang/2 ) ) ) for i = 1 to vertices.count do( curVert = vertices[i] curNormal = normals[i] k = GetProportionalityFactor angles[i] offset = curNormal*val*k polyop.moveVert obj curVert offset ) )