Site Tools

How To: Isolate the Layers of Selected Objects


Summary: Demonstrates how to isolate the layers of selected objects using RhinoScript.
 Option Explicit
 Sub IsolateLayers()
   ' Select objects
   Dim objects
   objects = Rhino.GetObjects("Select objects on layers to isolate", , True, True)
   If Not IsArray(objects) Then Exit Sub
   ' Determine the number of selected objects
   Dim bound
   bound = UBound(objects)
   ' Create an array to the object layer names
   Dim object_layers()
   ReDim object_layers( bound + 1 )
   ' Fill the array
   Dim i
   For i = 0 To bound
     object_layers(i) = Rhino.ObjectLayer(objects(i))
   ' Don't forget to include current layer      
   object_layers(bound + 1) = Rhino.CurrentLayer
   ' Cull any duplicate layer names
   Dim culled_layers
   culled_layers = Rhino.CullDuplicateStrings(object_layers)
   ' Create an array containing all of the layer names
   Dim all_layers
   all_layers = Rhino.LayerNames
   ' For each layer name, search the list of culled layer names.
   ' If the layer name is not found, then turn it off.
   Dim layer
   For Each layer In all_layers
     If UBound(Filter(culled_layers, layer)) < 0 Then
       Rhino.LayerMode layer, 1
     End If
 End Sub
developer/scriptsamples/isolatelayers.txt ยท Last modified: 2020/08/14 (external edit)