Site Tools


Sample: Add Command Line Options

C#

public static Rhino.Commands.Result CommandLineOptions(Rhino.RhinoDoc doc)
{
  // For this example we will use a GetPoint class, but all of the custom
  // "Get" classes support command line options.
  Rhino.Input.Custom.GetPoint gp = new Rhino.Input.Custom.GetPoint();
  gp.SetCommandPrompt("GetPoint with options");
 
  // set up the options
  Rhino.Input.Custom.OptionInteger intOption = new Rhino.Input.Custom.OptionInteger(1, 1, 99);
  Rhino.Input.Custom.OptionDouble dblOption = new Rhino.Input.Custom.OptionDouble(2.2, 0, 99.9);
  Rhino.Input.Custom.OptionToggle boolOption = new Rhino.Input.Custom.OptionToggle(true, "Off", "On");
  string[] listValues = new string[] { "Item0", "Item1", "Item2", "Item3", "Item4" };
 
  gp.AddOptionInteger("Integer", ref intOption);
  gp.AddOptionDouble("Double", ref dblOption);
  gp.AddOptionToggle("Boolean", ref boolOption);
  int listIndex = 3;
  int opList = gp.AddOptionList("List", listValues, listIndex);
 
  while (true)
  {
    // perform the get operation. This will prompt the user to input a point, but also
    // allow for command line options defined above
    Rhino.Input.GetResult get_rc = gp.Get();
    if (gp.CommandResult() != Rhino.Commands.Result.Success)
      return gp.CommandResult();
 
    if (get_rc == Rhino.Input.GetResult.Point)
    {
      doc.Objects.AddPoint(gp.Point());
      doc.Views.Redraw();
      Rhino.RhinoApp.WriteLine("Command line option values are");
      Rhino.RhinoApp.WriteLine(" Integer = {0}", intOption.CurrentValue);
      Rhino.RhinoApp.WriteLine(" Double = {0}", dblOption.CurrentValue);
      Rhino.RhinoApp.WriteLine(" Boolean = {0}", boolOption.CurrentValue);
      Rhino.RhinoApp.WriteLine(" List = {0}", listValues[listIndex]);
    }
    else if (get_rc == Rhino.Input.GetResult.Option)
    {
      if (gp.OptionIndex() == opList)
        listIndex = gp.Option().CurrentListOptionIndex;
      continue;
    }
    break;
  }
  return Rhino.Commands.Result.Success;
}

VB.NET

Public Shared Function CommandLineOptions(ByVal doc As Rhino.RhinoDoc) As Rhino.Commands.Result
  ' For this example we will use a GetPoint class, but all of the custom
  ' "Get" classes support command line options.
  Dim gp As New Rhino.Input.Custom.GetPoint()
  gp.SetCommandPrompt("GetPoint with options")
 
  ' set up the options
  Dim intOption As New Rhino.Input.Custom.OptionInteger(1, 1, 99)
  Dim dblOption As New Rhino.Input.Custom.OptionDouble(2.2, 0, 99.9)
  Dim boolOption As New Rhino.Input.Custom.OptionToggle(True, "Off", "On")
  Dim listValues As String() = New String() {"Item0", "Item1", "Item2", "Item3", "Item4"}
 
  gp.AddOptionInteger("Integer", intOption)
  gp.AddOptionDouble("Double", dblOption)
  gp.AddOptionToggle("Boolean", boolOption)
  Dim listIndex As Integer = 3
  Dim opList As Integer = gp.AddOptionList("List", listValues, listIndex)
 
  While True
    ' perform the get operation. This will prompt the user to input a point, but also
    ' allow for command line options defined above
    Dim get_rc As Rhino.Input.GetResult = gp.[Get]()
    If gp.CommandResult() <> Rhino.Commands.Result.Success Then
      Return gp.CommandResult()
    End If
 
    If get_rc = Rhino.Input.GetResult.Point Then
      doc.Objects.AddPoint(gp.Point())
      doc.Views.Redraw()
      Rhino.RhinoApp.WriteLine("Command line option values are")
      Rhino.RhinoApp.WriteLine(" Integer = {0}", intOption.CurrentValue)
      Rhino.RhinoApp.WriteLine(" Double = {0}", dblOption.CurrentValue)
      Rhino.RhinoApp.WriteLine(" Boolean = {0}", boolOption.CurrentValue)
      Rhino.RhinoApp.WriteLine(" List = {0}", listValues(listIndex))
    ElseIf get_rc = Rhino.Input.GetResult.[Option] Then
      If gp.OptionIndex() = opList Then
        listIndex = gp.[Option]().CurrentListOptionIndex
      End If
      Continue While
    End If
    Exit While
  End While
  Return Rhino.Commands.Result.Success
End Function

Python

import Rhino
import scriptcontext
 
def CommandLineOptions():
    # For this example we will use a GetPoint class, but all of the custom
    # "Get" classes support command line options.
    gp = Rhino.Input.Custom.GetPoint()
    gp.SetCommandPrompt("GetPoint with options")
 
    # set up the options
    intOption = Rhino.Input.Custom.OptionInteger(1, 1, 99)
    dblOption = Rhino.Input.Custom.OptionDouble(2.2, 0, 99.9)
    boolOption = Rhino.Input.Custom.OptionToggle(True, "Off", "On")
    listValues = "Item0", "Item1", "Item2", "Item3", "Item4"
 
    gp.AddOptionInteger("Integer", intOption)
    gp.AddOptionDouble("Double", dblOption)
    gp.AddOptionToggle("Boolean", boolOption)
    listIndex = 3
    opList = gp.AddOptionList("List", listValues, listIndex)
    while True:
        # perform the get operation. This will prompt the user to
        # input a point, but also allow for command line options
        # defined above
        get_rc = gp.Get()
        if gp.CommandResult()!=Rhino.Commands.Result.Success:
            return gp.CommandResult()
        if get_rc==Rhino.Input.GetResult.Point:
            point = gp.Point()
            scriptcontext.doc.Objects.AddPoint(point)
            scriptcontext.doc.Views.Redraw()
            print "Command line option values are"
            print " Integer =", intOption.CurrentValue
            print " Double =", dblOption.CurrentValue
            print " Boolean =", boolOption.CurrentValue
            print " List =", listValues[listIndex]
        elif get_rc==Rhino.Input.GetResult.Option:
            if gp.OptionIndex()==opList:
              listIndex = gp.Option().CurrentListOptionIndex
            continue
        break
    return Rhino.Commands.Result.Success
 
 
if __name__ == "__main__":
    CommandLineOptions()
developer/rhinocommonsamples/commandlineoptions.txt ยท Last modified: 2020/08/14 (external edit)