Skip to content

Instantly share code, notes, and snippets.

@pgolay
Last active November 23, 2023 23:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pgolay/8b8bc1e23c92c447710901845c98e415 to your computer and use it in GitHub Desktop.
Save pgolay/8b8bc1e23c92c447710901845c98e415 to your computer and use it in GitHub Desktop.
A filtered version of the Select command.
import rhinoscriptsyntax as rs
import Rhino
import scriptcontext as sc
x = Rhino.ApplicationSettings.SelectionFilterSettings.GetCurrentState()
y = Rhino.ApplicationSettings.SelectionFilterSettings.GetCurrentState()
types = [Rhino.DocObjects.ObjectType.Point,
Rhino.DocObjects.ObjectType.PointSet,
Rhino.DocObjects.ObjectType.Grip,
Rhino.DocObjects.ObjectType.Curve,
Rhino.DocObjects.ObjectType.Brep,
Rhino.DocObjects.ObjectType.Mesh,
Rhino.DocObjects.ObjectType.SubD,
Rhino.DocObjects.ObjectType.InstanceReference,
Rhino.DocObjects.ObjectType.Annotation,
Rhino.DocObjects.ObjectType.Hatch,
Rhino.DocObjects.ObjectType.Light,
Rhino.DocObjects.ObjectType.ClipPlane
]
typeList = ["Point", "PointCloud", "ControlPoint",
"Curve","SurfaceOrPolysurface",
"Mesh", "SubD","Block",
"Annotation", "Hatch",
"Light","ClippingPlane"]
idx = 3
if 'SELECTION_INDEX' in sc.sticky:
idx = sc.sticky['SELECTION_INDEX']
go = Rhino.Input.Custom.GetOption()
go.SetCommandPrompt("Set a filter. Press Enter to accept the current default.")
go.AddOptionList("Filter", typeList, idx)
rc = go.Get()
print(rc)
if rc==Rhino.Input.GetResult.Option:
idx = go.Option().CurrentListOptionIndex
sc.sticky["SELECTION_INDEX"] = idx
x.GlobalGeometryFilter = types[idx]
Rhino.ApplicationSettings.SelectionFilterSettings.UpdateFromState(x)
rs.Command("_Select")
Rhino.ApplicationSettings.SelectionFilterSettings.UpdateFromState(y)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment