Site Tools


Differences

This shows you the differences between two versions of the page.

Link to this comparison view

developer:rhinocommonsamples:addchildlayer [2015/09/14] (current)
Line 1: Line 1:
 +===== Sample: Add Child Layer =====
 +
 +===== C# =====
 +<code c#>
 +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;​
 +}
 +</​code>​
 +===== VB.NET =====
 +<code vb>
 +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
 +</​code>​
 +===== Python =====
 +<code 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()
 +</​code>​
 +
 +{{tag>​Developer rhinocommon}}
  
developer/rhinocommonsamples/addchildlayer.txt ยท Last modified: 2015/09/14 (external edit)