RhinoCommon API
LayerParentLayerId Property |
Gets the ID of the parent layer. Layers can be organized in a hierarchical structure,
in which case this returns the parent layer ID. If the layer has no parent,
Guid.Empty will be returned.
Namespace: Rhino.DocObjects
Assembly: RhinoCommon (in RhinoCommon.dll)
Since: 5.0

Property Value
Type: Guid
partial class Examples { public static Rhino.Commands.Result AddChildLayer(Rhino.RhinoDoc doc) { // Get an existing layer string default_name = doc.Layers.CurrentLayer.Name; // Prompt the user to enter a layer name Rhino.Input.Custom.GetString gs = new Rhino.Input.Custom.GetString(); gs.SetCommandPrompt("Name of existing layer"); gs.SetDefaultString(default_name); gs.AcceptNothing(true); gs.Get(); if (gs.CommandResult() != Rhino.Commands.Result.Success) return gs.CommandResult(); // Was a layer named entered? string layer_name = gs.StringResult().Trim(); int index = doc.Layers.Find(layer_name, true); if (index<0) return Rhino.Commands.Result.Cancel; Rhino.DocObjects.Layer parent_layer = doc.Layers[index]; // Create a child layer string child_name = parent_layer.Name + "_child"; Rhino.DocObjects.Layer childlayer = new Rhino.DocObjects.Layer(); childlayer.ParentLayerId = parent_layer.Id; childlayer.Name = child_name; childlayer.Color = System.Drawing.Color.Red; index = doc.Layers.Add(childlayer); if (index < 0) { Rhino.RhinoApp.WriteLine("Unable to add {0} layer.", child_name); return Rhino.Commands.Result.Failure; } return Rhino.Commands.Result.Success; } }
Partial Class Examples Public Shared Function AddChildLayer(ByVal doc As Rhino.RhinoDoc) As Rhino.Commands.Result ' Get an existing layer Dim default_name As String = doc.Layers.CurrentLayer.Name ' Prompt the user to enter a layer name Dim gs As New Rhino.Input.Custom.GetString() gs.SetCommandPrompt("Name of existing layer") gs.SetDefaultString(default_name) gs.AcceptNothing(True) gs.[Get]() If gs.CommandResult() <> Rhino.Commands.Result.Success Then Return gs.CommandResult() End If ' Was a layer named entered? Dim layer_name As String = gs.StringResult().Trim() Dim index As Integer = doc.Layers.Find(layer_name, True) If index < 0 Then Return Rhino.Commands.Result.Cancel End If Dim parent_layer As Rhino.DocObjects.Layer = doc.Layers(index) ' Create a child layer Dim child_name As String = parent_layer.Name + "_child" Dim childlayer As New Rhino.DocObjects.Layer() childlayer.ParentLayerId = parent_layer.Id childlayer.Name = child_name childlayer.Color = System.Drawing.Color.Red index = doc.Layers.Add(childlayer) If index < 0 Then Rhino.RhinoApp.WriteLine("Unable to add {0} layer.", child_name) Return Rhino.Commands.Result.Failure End If Return Rhino.Commands.Result.Success End Function End Class
Python
import Rhino import scriptcontext import System.Drawing.Color def AddChildLayer(): # Get an existing layer default_name = scriptcontext.doc.Layers.CurrentLayer.Name # Prompt the user to enter a layer name gs = Rhino.Input.Custom.GetString() gs.SetCommandPrompt("Name of existing layer") gs.SetDefaultString(default_name) gs.AcceptNothing(True) gs.Get() if gs.CommandResult()!=Rhino.Commands.Result.Success: return gs.CommandResult() # Was a layer named entered? layer_name = gs.StringResult().Trim() index = scriptcontext.doc.Layers.Find(layer_name, True) if index<0: return Rhino.Commands.Result.Cancel parent_layer = scriptcontext.doc.Layers[index] # Create a child layer child_name = parent_layer.Name + "_child" childlayer = Rhino.DocObjects.Layer() childlayer.ParentLayerId = parent_layer.Id childlayer.Name = child_name childlayer.Color = System.Drawing.Color.Red index = scriptcontext.doc.Layers.Add(childlayer) if index<0: print "Unable to add", child_name, "layer." return Rhino.Commands.Result.Failure return Rhino.Commands.Result.Success if __name__=="__main__": AddChildLayer()
