macroScript AntiLoop category:"D_script" ( if (selection.count==1) and (classof $ == editable_poly) and (subobjectlevel==2) then (--1 edge_selection = polyop.getedgeselection $ if (edge_selection as array).count < 3 then (--2 polyop.setedgeselection $ #{} update $ )--2 else if edge_selection.numberset != edge_selection.count then (--3 disablesceneredraw() $.growselection () x_face=polyop.getfacesusingedge $ (getedgeselection $) polyop.setfaceselection $ x_face subobjectlevel=4 max select invert $.hide #face subobjectlevel=2 polyop.setedgeselection $ edge_selection enablesceneredraw () $.shrinkselection () shrink_edge=getedgeselection $ temp_edge=edge_selection del_edge=#{} ---------------------------------------------------- while not(temp_edge.isempty) do (--4 i_edge=(temp_edge as array)[1] setedgeselection $ #{i_edge} $.selectedgeloop () i_edge=getedgeselection $ i_edge*=temp_edge if i_edge.numberset < 3 then del_edge+=i_edge else (--5 temp_verts=#() for j=1 to i_edge.numberset do append temp_verts (polyop.getedgeverts $ (i_edge as array)[j]) i=temp_verts temp_verts=#() k=1 for j=1 to i.count do (--a1 temp_verts[k] =i[j][1] temp_verts[k+1]=i[j][2] k+=2 )--a1 i=((temp_verts as bitarray)as array) for j=1 to i.count do (--a2 k=finditem temp_verts i[j] deleteitem temp_verts k )--a2 for j=1 to i_edge.numberset do (--6 i=polyop.getedgeverts $ (i_edge as array)[j] if (finditem temp_verts i[1]) == 0 or (finditem temp_verts i[2]) == 0 then append del_edge ((i_edge as array)[j]) )--6 )--5 temp_edge=temp_edge-del_edge-i_edge )--4 ---------------------------------------------------- setedgeselection $ (edge_selection-del_edge+shrink_edge) $.unhideall #face update $ i=#() del_edge=#{} temp_edge=#{} temp_verts=#() )--3 )--1 )