I don't exactly remember where did I get this code, but it's quite fast I think.
Tested with XSI Man : 81286 Samples to 20347 polys in 1.6 seconds. ------------------------------------------------------------------------- 'VBS 'SelectComponentsBySamples (VBS) author: [email protected] dim sind(),components() str = "" set o = selection(0).subcomponent.parent3dobject set g = o.activeprimitive.geometry set XSIDial = CreateObject("XSIDial.XSIDialog") aItems = Array("Points","Edges","Polygons") indx = XSIDial.ComboEx("Select Components Type", aItems, 0) if (indx=-1) then logmessage "User cancelled" else logmessage "User selected: " & aItems( indx ) redim sind(g.samples.count - 1) if indx = 0 then : cmppref = "pnt" : set cmps = g.points : end if if indx = 1 then : cmppref = "edge" : set cmps = g.edges : end if if indx = 2 then : cmppref = "poly" : set cmps = g.polygons : end if for each c in cmps for each s in c.samples sind(s.index) = c.index next next redim components(cmps.count - 1) for each s in selection(0).subcomponent.componentcollection if components(sind(s.index)) <> 1 then if str <> "" then str = str & "," end if str = str & sind(s.index) components(sind(s.index)) = 1 end if next SelectObj o &"."& cmppref &"["& str &"]" end if ------------------------------------------------------------------------- M.Yara

