Site Tools


Differences

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

Link to this comparison view

developer:rhinocommonsamples:addlayer [2015/09/14] (current)
Line 1: Line 1:
 +===== Sample: Add Layer =====
 +
 +===== C# =====
 +<code c#>
 +public static Rhino.Commands.Result AddLayer(Rhino.RhinoDoc doc)
 +{
 +  // Cook up an unused layer name
 +  string unused_name = doc.Layers.GetUnusedLayerName(false);​
 +
 +  // Prompt the user to enter a layer name
 +  Rhino.Input.Custom.GetString gs = new Rhino.Input.Custom.GetString();​
 +  gs.SetCommandPrompt("​Name of layer to add");
 +  gs.SetDefaultString(unused_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();​
 +  if (string.IsNullOrEmpty(layer_name))
 +  {
 +    Rhino.RhinoApp.WriteLine("​Layer name cannot be blank."​);​
 +    return Rhino.Commands.Result.Cancel;​
 +  }
 +
 +  // Is the layer name valid?
 +  if (!Rhino.DocObjects.Layer.IsValidName(layer_name))
 +  {
 +    Rhino.RhinoApp.WriteLine(layer_name + " is not a valid layer name."​);​
 +    return Rhino.Commands.Result.Cancel;​
 +  }
 +
 +  // Does a layer with the same name already exist?
 +  int layer_index = doc.Layers.Find(layer_name,​ true);
 +  if (layer_index >= 0)
 +  {
 +    Rhino.RhinoApp.WriteLine("​A layer with the name {0} already exists.",​ layer_name);​
 +    return Rhino.Commands.Result.Cancel;​
 +  }
 +
 +  // Add a new layer to the document
 +  layer_index = doc.Layers.Add(layer_name,​ System.Drawing.Color.Black);​
 +  if (layer_index < 0)
 +  {
 +    Rhino.RhinoApp.WriteLine("​Unable to add {0} layer.",​ layer_name);​
 +    return Rhino.Commands.Result.Failure;​
 +  }
 +  return Rhino.Commands.Result.Success;​
 +}
 +</​code>​
 +===== VB.NET =====
 +<code vb>
 +Public Shared Function AddLayer(ByVal doc As Rhino.RhinoDoc) As Rhino.Commands.Result
 +  ' Cook up an unused layer name
 +  Dim unused_name As String = doc.Layers.GetUnusedLayerName(False)
 +
 +  ' Prompt the user to enter a layer name
 +  Dim gs As New Rhino.Input.Custom.GetString()
 +  gs.SetCommandPrompt("​Name of layer to add")
 +  gs.SetDefaultString(unused_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()
 +  If String.IsNullOrEmpty(layer_name) Then
 +    Rhino.RhinoApp.WriteLine("​Layer name cannot be blank."​)
 +    Return Rhino.Commands.Result.Cancel
 +  End If
 +
 +  ' Is the layer name valid?
 +  If Not Rhino.DocObjects.Layer.IsValidName(layer_name) Then
 +    Rhino.RhinoApp.WriteLine(layer_name & " is not a valid layer name."​)
 +    Return Rhino.Commands.Result.Cancel
 +  End If
 +
 +  ' Does a layer with the same name already exist?
 +  Dim layer_index As Integer = doc.Layers.Find(layer_name,​ True)
 +  If layer_index >= 0 Then
 +    Rhino.RhinoApp.WriteLine("​A layer with the name {0} already exists.",​ layer_name)
 +    Return Rhino.Commands.Result.Cancel
 +  End If
 +
 +  ' Add a new layer to the document
 +  layer_index = doc.Layers.Add(layer_name,​ System.Drawing.Color.Black)
 +  If layer_index < 0 Then
 +    Rhino.RhinoApp.WriteLine("​Unable to add {0} layer.",​ layer_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.Guid,​ System.Drawing.Color
 +
 +def AddLayer():
 +    # Cook up an unused layer name
 +    unused_name = scriptcontext.doc.Layers.GetUnusedLayerName(False)
 +
 +    # Prompt the user to enter a layer name
 +    gs = Rhino.Input.Custom.GetString()
 +    gs.SetCommandPrompt("​Name of layer to add")
 +    gs.SetDefaultString(unused_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()
 +    if not layer_name:
 +        print "Layer name cannot be blank."​
 +        return Rhino.Commands.Result.Cancel
 +
 +    # Is the layer name valid?
 +    if not Rhino.DocObjects.Layer.IsValidName(layer_name):​
 +        print layer_name, "is not a valid layer name."
 +        return Rhino.Commands.Result.Cancel
 +
 +    # Does a layer with the same name already exist?
 +    layer_index = scriptcontext.doc.Layers.Find(layer_name,​ True)
 +    if layer_index>​=0:​
 +        print "A layer with the name", layer_name, "​already exists."​
 +        return Rhino.Commands.Result.Cancel
 +
 +    # Add a new layer to the document
 +    layer_index = scriptcontext.doc.Layers.Add(layer_name,​ System.Drawing.Color.Black)
 +    if layer_index<​0:​
 +        print "​Unable to add", layer_name, "​layer."​
 +        return Rhino.Commands.Result.Failure
 +
 +    return Rhino.Commands.Result.Success
 +
 +
 +if __name__=="​__main__":​
 +    AddLayer()
 +</​code>​
 +
 +{{tag>​Developer rhinocommon}}
  
developer/rhinocommonsamples/addlayer.txt ยท Last modified: 2015/09/14 (external edit)