Control User Input
 
 
 

When collecting input from the user, you want to make sure you limit the type of information they can enter so you can get the desired response. The various prompt option objects are used to not only define the prompt displayed at the Command prompt, but also restrict the input that the user can provide. With some of the input methods, not only can you get a return value based on the type of method used but also get a keyword.

For example, you can use the GetPoint method to have the user specify a point or respond with a keyword. This is how commands like LINE, CIRCLE, and PLINE work.

Get an integer value or a keyword

The following example prompts the user for a positive non-zero integer value or a keyword.

VB.NET

Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.EditorInput
Imports Autodesk.AutoCAD.Runtime
 
<CommandMethod("GetIntegerOrKeywordFromUser")> _
Public Sub GetIntegerOrKeywordFromUser()
  Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
 
  Dim pIntOpts As PromptIntegerOptions = New PromptIntegerOptions("")
  pIntOpts.Message = vbCrLf & "Enter the size or "
 
  '' Restrict input to positive and non-negative values
  pIntOpts.AllowZero = False
  pIntOpts.AllowNegative = False
 
  '' Define the valid keywords and allow Enter
  pIntOpts.Keywords.Add("Big")
  pIntOpts.Keywords.Add("Small")
  pIntOpts.Keywords.Add("Regular")
  pIntOpts.Keywords.Default = "Regular"
  pIntOpts.AllowNone = True
 
  '' Get the value entered by the user
  Dim pIntRes As PromptIntegerResult = acDoc.Editor.GetInteger(pIntOpts)
 
  If pIntRes.Status = PromptStatus.Keyword Then
      Application.ShowAlertDialog("Entered keyword: " & _
                                  pIntRes.StringResult)
  Else
      Application.ShowAlertDialog("Entered value: " & _
                                  pIntRes.Value.ToString())
  End If
End Sub

C#

using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Runtime;
 
[CommandMethod("GetIntegerOrKeywordFromUser")]
public static void GetIntegerOrKeywordFromUser()
{
  Document acDoc = Application.DocumentManager.MdiActiveDocument;
 
  PromptIntegerOptions pIntOpts = new PromptIntegerOptions("");
  pIntOpts.Message = "\nEnter the size or ";
 
  // Restrict input to positive and non-negative values
  pIntOpts.AllowZero = false;
  pIntOpts.AllowNegative = false;
 
  // Define the valid keywords and allow Enter
  pIntOpts.Keywords.Add("Big");
  pIntOpts.Keywords.Add("Small");
  pIntOpts.Keywords.Add("Regular");
  pIntOpts.Keywords.Default = "Regular";
  pIntOpts.AllowNone = true;
 
  // Get the value entered by the user
  PromptIntegerResult pIntRes = acDoc.Editor.GetInteger(pIntOpts);
 
  if (pIntRes.Status == PromptStatus.Keyword)
  {
      Application.ShowAlertDialog("Entered keyword: " +
                                  pIntRes.StringResult);
  }
  else
  {
      Application.ShowAlertDialog("Entered value: " +
                                  pIntRes.Value.ToString());
  }
}
VBA/ActiveX Code Reference