ユーザからの入力を収集するときに、目的の結果を得られるように入力できる情報の種類を制限することがあります。コマンド プロンプトに表示するプロンプトを定義するだけでなく、ユーザが入力できる内容を制限するために、多様なプロンプト オプション オブジェクトが使用されます。入力メソッドによっては、使用するメソッドの種類に基づいた戻り値を取得できるだけでなく、キーワードも取得できます。
たとえば、GetPoint メソッドを使用して、ユーザが点を指定するかキーワードで回答するようにすることができます。次に、LINE[線分]、CIRCLE[円]、PLINE[ポリライン]などのコマンドの機能を示します。
次の例は、正のゼロではない整数値またはキーワードの入力をユーザに要求します。
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
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());
}
}
Sub GetIntegerOrKeywordFromUser()
' The first parameter of InitializeUserInput (6)
' restricts input to positive and non-negative
' values. The second parameter is the list of
' valid keywords.
ThisDrawing.Utility.InitializeUserInput 6, "Big Small Regular"
' Set the prompt string variable
Dim promptStr As String
promptStr = vbCrLf & "Enter the size or [Big/Small/Regular] <Regular>:"
' At the GetInteger prompt, entering a keyword or pressing
' ENTER without entering a value results in an error. To allow
' your application to continue and check for the error
' description, you must set the error handler to resume on error.
On Error Resume Next
' Get the value entered by the user
Dim returnInteger As Integer
returnInteger = ThisDrawing.Utility.GetInteger(promptStr)
' Check for an error. If the error number matches the
' one shown below, then use GetInput to get the returned
' string; otherwise, use the value of returnInteger.
If Err.Number = -2145320928 Then
Dim returnString As String
Debug.Print Err.Description
returnString = ThisDrawing.Utility.GetInput()
If returnString = "" Then 'ENTER returns null string
returnString = "Regular" 'Set to default
End If
Err.Clear
Else 'Otherwise,
returnString = returnInteger 'Use the value entered
End If
' Display the result
MsgBox returnString, , "InitializeUserInput Example"
End Sub