Is it possible to have script-selected subobjects remain selected after the script finishes?
I am using the following to select certain edges from a brep. (just draw a box that sits on the world XY plane, it should select all the edges but the bottom ones, one at a time)
import rhinoscriptsyntax as rs
import scriptcontext as sc
import Rhino
def EdgeFilter(edges,plane,joined,tol):
#returns only those brep edges that correspond to filter criteria
#modify filter function as needed
filtered_edges=[]
for edge in edges:
crv=edge.ToNurbsCurve()
if not crv.IsInPlane(plane,tol):
if joined:
if not edge.TrimCount>1: continue
filtered_edges.append(edge)
return filtered_edges
def TestFunction():
objID=rs.GetObject("Select polysurface",16)
if not objID: return
plane=Rhino.Geometry.Plane.WorldXY
tol=sc.doc.ModelAbsoluteTolerance
rhobj=rs.coercerhinoobject(objID)
brep=rs.coercebrep(objID)
#apply the edge filter to get only the edges you want.
filtered_edges=EdgeFilter(brep.Edges,plane,True,tol)
#select the desired edges
for edge in filtered_edges:
rhobj.SelectSubObject(edge.ComponentIndex(),True,True)
#for visualizing purposes only
sc.doc.Views.Redraw()
rs.Sleep(500)
TestFunction()
However the selected edges are unselected when the script ends. I see there is another post with a similar question, but the answer was
…but the selection does only remain while the script is running and does not stay, so it cannot be used to make eg. a transformation with a pre-selected subobject after the script finished.