-- Select Outsided Vertexes -- Script by Yegor Tsyba -- http://www.shiva3d.net/ -- compatible with 3Dsmax2008+ macroscript SelectOutsidedVertexes category: "Shiva Tools" buttontext: "Select Outsided Vertexes" ( on isEnabled return (selection.count >=1) on execute do ( try ( if $selection.count != 1 or Classof $selection[1] != Editable_mesh Then messagebox "Select One EditableMesh object please" else ( obj = $selection[1] start = timeStamp() trashold = 0.001 global rltProgressbar try destroyDialog rltProgressbar catch() rollout rltProgressbar "Progress" width:200 height:20 ( progressbar doit_prog color:red ) obj2 = snapshot obj mod1 = normalModifier() mod1.flip = true addModifier obj2 (mod1) arr = #() bagvx = #() totvx = meshop.getNumVerts obj vx_sel = #() vx_sel = getVertSelection obj as array vx_sel_c = vx_sel.count if vx_sel_c < 1 then loopi = totvx else loopi = vx_sel_c temp = "Count = " + loopi as string print temp --rltProgressbar.caption = createDialog rltProgressbar coef = 100./loopi for i in 1 to loopi do ( rltProgressbar.doit_prog.value = coef*i j = if vx_sel_c < 1 then i else vx_sel[i] vx = meshop.getVert obj j vxn = getnormal obj j vxray = ray (vx - (vxn * trashold)) -vxn arr1 = intersectRay obj2 vxray if arr1 != undefined then ( arr2 = intersectRay obj vxray if arr2 != undefined then ( if (distance arr1.pos vx) > (distance arr2.pos vx ) then append bagvx j ) ) else append bagvx j ) delete obj2 select obj.verts[bagvx] end = timeStamp() format "Processing took % seconds\n" ((end - start) / 1000.0) try destroyDialog rltProgressbar catch() ) ) catch messagebox "Please select something before" ) )