ユーザからの入力を収集するときに、目的の結果を得られるように入力できる情報の種類を制限することがあります。コマンド プロンプトに表示するプロンプトを定義するだけでなく、ユーザが入力できる内容を制限するために、多様なプロンプト オプション オブジェクトが使用されます。入力メソッドによっては、使用するメソッドの種類に基づいた戻り値を取得できるだけでなく、キーワードも取得できます。
たとえば、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