提示用户输入

Editor 对象是 Document 对象的子对象,定义了用户输入方法。用户输入方法在 AutoCAD 命令行中或动态输入工具提示中显示一个提示信息,并且要求输入各种不同类型的值。这种用户输入对于交互式输入屏幕坐标、图元选择、短字符串或数值非常有用。如果应用程序要求输入多个选项或值,则使用 Windows 窗体可能比使用单个提示更合适。

每个用户输入方法都在 AutoCAD 命令行显示提示,并返回特定于所请求的输入类型的值。例如,GetString 返回一个 PromptResult,它允许用户判断 GetString 方法的状态并获得用户输入的字符串。每一个用户输入方法都有一个指定的返回值。

输入方法接受一个用于显示提示的字符串或控制用户输入的指定对象类型。这些对象类型让用户可以控制一些输入,像输入 NULL(按回车),基点,输入零或负数,任意文本值的输入。

要使提示单独显示在一行中,在VB.NET中使用可以在提示字符串的开头使用回车符/换行常量字符 (vbCrLf)

GetString 方法

GetString 方法提示用户在 AutoCAD 命令提示下输入字符串。该方法接收两个参数。PromptStringOptions 对象允许控制用户输入以及怎样显示提示信息。PromptStringOptions 对象的 AllowSpaces 属性控制是否允许输入空格。如果为 False ,按空格键将中止用户输入。

从 AutoCAD 命令行获取用户输入的字符串值

以下样例显示了“输入名称”提示,并要求用户通过按 ENTER 键来终止输入(输入字符串中可以包含空格)。输入字符串值将通过一个消息框显示出来。

Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.EditorInput
Imports Autodesk.AutoCAD.Runtime<CommandMethod("GetStringFromUser")> _
Public Sub GetStringFromUser()Dim acDoc As Document = Application.DocumentManager.MdiActiveDocumentDim pStrOpts As PromptStringOptions = New PromptStringOptions(vbLf & _"Enter your name: ")pStrOpts.AllowSpaces = TrueDim pStrRes As PromptResult = acDoc.Editor.GetString(pStrOpts)Application.ShowAlertDialog("The name entered was: " & _pStrRes.StringResult)
End Sub

GetPoint 方法

GetPoint 方法提示用户在 AutoCAD 命令提示下给出点的定义。PromptPointOptions 对象允许用户控制输入和如何显示提示信息。PromptPointOptions 对象的 UseBasePoint 和 BasePoint 属性控制是否从基点绘制一条橡皮线。PromptPointOptions 对象的 Keywords 属性允许用户定义用户可以在命令提示中输入除指定点外的关键字。

获取用户选定的点

下面的样例提示用户输入两个点,然后以这两个点为起点和端点绘制一条直线。

Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.EditorInput
Imports Autodesk.AutoCAD.Geometry
Imports Autodesk.AutoCAD.Runtime<CommandMethod("GetPointsFromUser")> _
Public Sub GetPointsFromUser()'' 获得当前数据库并启动事务管理器    Get the current database and start the Transaction ManagerDim acDoc As Document = Application.DocumentManager.MdiActiveDocumentDim acCurDb As Database = acDoc.DatabaseDim pPtRes As PromptPointResultDim pPtOpts As PromptPointOptions = New PromptPointOptions("")'' 提示开始点   Prompt for the start pointpPtOpts.Message = vbLf & "Enter the start point of the line: "pPtRes = acDoc.Editor.GetPoint(pPtOpts)Dim ptStart As Point3d = pPtRes.Value'' 如果用户按了 ESC 键或取消了命令就退出   Exit if the user presses ESC or cancels the commandIf pPtRes.Status = PromptStatus.Cancel Then Exit Sub'' 提示结束点   Prompt for the end pointpPtOpts.Message = vbLf & "Enter the end point of the line: "pPtOpts.UseBasePoint = TruepPtOpts.BasePoint = ptStartpPtRes = acDoc.Editor.GetPoint(pPtOpts)Dim ptEnd As Point3d = pPtRes.ValueIf pPtRes.Status = PromptStatus.Cancel Then Exit Sub''启动一个事务   Start a transactionUsing acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()Dim acBlkTbl As BlockTableDim acBlkTblRec As BlockTableRecord'' 以写的方式打开模型空间    Open Model space for writeacBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, _OpenMode.ForRead)acBlkTblRec = acTrans.GetObject(acBlkTbl(BlockTableRecord.ModelSpace), _OpenMode.ForWrite)'' 定义新的直线    Define the new lineDim acLine As Line = New Line(ptStart, ptEnd)acLine.SetDatabaseDefaults()'' 添加直线到图形中去   Add the line to the drawingacBlkTblRec.AppendEntity(acLine)acTrans.AddNewlyCreatedDBObject(acLine, True)'' 缩放到图形的范围或界限   Zoom to the extents or limits of the drawingacDoc.SendStringToExecute("._zoom _all ", True, False, False)'' 提交修改并销毁事务  Commit the changes and dispose of the transactionacTrans.Commit()End Using
End Sub

GetKeywords 方法

GetKeyword 方法提示用户在 AutoCAD 命令提示下输入关键字。PromptKeywordOptions 对象允许用户控制输入和如何显示提示信息。PromptKeywordOptions 对象的 Keywords 属性允许用户定义可以在命令提示中输入的关键字。

从 AutoCAD 命令行获取用户输入的关键字

以下样例通过设置 AllowNone 属性为False强制用户输入关键字,而禁止输入 NULL(按回车键)。Keywords 用于添加有效的关键字列表。

Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.EditorInput
Imports Autodesk.AutoCAD.Runtime<CommandMethod("GetKeywordFromUser")> _
Public Sub GetKeywordFromUser()Dim acDoc As Document = Application.DocumentManager.MdiActiveDocumentDim pKeyOpts As PromptKeywordOptions = New PromptKeywordOptions("")pKeyOpts.Message = vbLf & "Enter an option "pKeyOpts.Keywords.Add("Line")pKeyOpts.Keywords.Add("Circle")pKeyOpts.Keywords.Add("Arc")pKeyOpts.AllowNone = FalseDim pKeyRes As PromptResult = acDoc.Editor.GetKeywords(pKeyOpts)Application.ShowAlertDialog("Entered keyword: " & _pKeyRes.StringResult)
End Sub

控制用户输入

当让用户选择时,你可能限制用户的输入信息,使其符合你的需求。各种的提示选项对象不仅用于定义显示的命令提示,还可以限制用户的输入。有一些输入方法,不仅可以获得一个基于所用方法的类型的值,还可以获得一个关键词。

例如,你可以使用 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.MdiActiveDocumentDim pIntOpts As PromptIntegerOptions = New PromptIntegerOptions("")pIntOpts.Message = vbCrLf & "Enter the size or "'' 限制输入正的非负值     Restrict input to positive and non-negative valuespIntOpts.AllowZero = FalsepIntOpts.AllowNegative = False'' 定义有用的关键字并允许按回车键    Define the valid keywords and allow EnterpIntOpts.Keywords.Add("Big")pIntOpts.Keywords.Add("Small")pIntOpts.Keywords.Add("Regular")pIntOpts.Keywords.Default = "Regular"pIntOpts.AllowNone = True'' 获得用户输入的值   Get the value entered by the userDim pIntRes As PromptIntegerResult = acDoc.Editor.GetInteger(pIntOpts)If pIntRes.Status = PromptStatus.Keyword ThenApplication.ShowAlertDialog("Entered keyword: " & _pIntRes.StringResult)ElseApplication.ShowAlertDialog("Entered value: " & _pIntRes.Value.ToString())End If
End Sub

访问AutoCAD命令行

使用 SendStringToExecute 方法可以直接将命令发送到 AutoCAD 命令行。SendStringToExecute 方法将单个字符串发送到命令行。该字符串必须包含提供给所执行命令的参数,并依照该命令的提示顺序所要求的次序排列这些参数。

在字符串中加入回车符的 ASCII 等效值或空格等同于在键盘上按 ENTER 键。与 AutoLISP 环境不同,调用 SendCommand 方法时没有参数是无效的。

使用 SendStringToExecute 执行命令是异步的,直到 .NET 命令结束,否则不会被调用。如果需要立即执行一个命令(同步),应该:

将命令发送到 AutoCAD 命令行

本例创建一个圆心为(2,2,0),半径为4的圆。然后将图形缩放至图形中的所有几何图形都可见。注意,在字符串的结尾处有一个空格,表示最后一次按 ENTER 键将开始执行命令。

Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.Runtime<CommandMethod("SendACommandToAutoCAD")> _
Public Sub SendACommandToAutoCAD()Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument'' 绘制一个圆并缩放图形    Draws a circle and zooms to the extents or '' limits of the drawingacDoc.SendStringToExecute("._circle 2,2,0 4 ", True, False, False)acDoc.SendStringToExecute("._zoom _all ", True, False, False)
End Sub

autoCAD 提示用户输入相关推荐

  1. Java黑皮书课后题第10章:*10.5(显示素数因子)编写一个程序,提示用户输入一个正整数,然后以降序显示它的所有最小因子

    *10.5(显示素数因子)编写一个程序,提示用户输入一个正整数,然后以降序显示它的所有最小因子 题目 程序 破题 代码 Test5.java Test5_StackOfIntegers.java 运行 ...

  2. Java黑皮书课后题第8章:**8.37(猜测首府)编写一个程序,重复提示用户输入一个州的首府。当接收到用户输入后,程序报告答案是否正确。假设50个州以及它们的首府保存在一个二维数组中,提示用户回答所

    **8.37(猜测首府)编写一个程序,重复提示用户输入一个州的首府 题目 题目描述与运行示例 破题 代码 题目 题目描述与运行示例 **8.37(猜测首府)编写一个程序,重复提示用户输入一个州的首府. ...

  3. Java黑皮书课后题第8章:**8.36(拉丁方阵)拉丁方阵是一个n*n的数组,其中有n个不同的拉丁字母,并且每个拉丁字母恰好只在每行和每列中出现一次。编写一个程序,提示用户输入数字n和字符数组

    **8.36(拉丁方阵)拉丁方阵是一个n*n的数组,其中有n个不同的拉丁字母,并且每个拉丁字母恰好只在每行和每列中出现一次 题目 题目描述与运行示例 破题 代码 题目 题目描述与运行示例 **8.36 ...

  4. Java黑皮书课后题第8章:***8.35(最大块)给定一个元素为0或者1的方阵,编写程序,找到一个元素都为1的最大的子方阵。程序提示用户输入矩阵的行数。然后显示最大的子方阵的第一个元素、行数

    ***8.35(最大块)给定一个元素为0或者1的方阵,编写程序,找到一个元素都为1的最大的子方阵.程序提示用户输入矩阵的行数.然后显示最大的子方阵的第一个元素.行数 题目 题目描述与运行示例 破题 代 ...

  5. Java黑皮书课后题第8章:*8.34(几何:最右下角的点)在计算几何中经常需要从一个点集中找到最右下角的点。编写一个测试程序,提示用户输入6个点的坐标,然后显示最右下角的点

    *8.34(几何:最右下角的点)在计算几何中经常需要从一个点集中找到最右下角的点.编写一个测试程序,提示用户输入6个点的坐标,然后显示最右下角的点 题目 题目描述与运行示例 破题 代码 题目 题目描述 ...

  6. Java黑皮书课后题第8章:*8.33(几何:多边形的子面积)一个具有四个顶点的凸多边形被分为4个三角形,编写一个程序,提示用户输入4个顶点的坐标,然后以升序显示四个三角形的面积

    *8.33(几何:多边形的子面积)一个具有四个顶点的凸多边形被分为4个三角形,编写一个程序,提示用户输入4个顶点的坐标,然后以升序显示四个三角形的面积 题目 题目描述与运行示例 破题 代码 题目 题目 ...

  7. Java黑皮书课后题第8章:*8.32(几何:三角形面积)编写一个方法,使用下面的方法头,返回一个三角形的面积。编写一个程序,提示用户输入三角形的三个点,然后显示三角形的面积

    *8.32(几何:三角形面积)编写一个方法,使用下面的方法头,返回一个三角形的面积.编写一个程序,提示用户输入三角形的三个点,然后显示三角形的面积 题目 题目描述与运行示例 破题 代码 题目 题目描述 ...

  8. Java黑皮书课后题第8章:*8.31(几何:交点)编写一个方法,返回两条直线的交点。四个点存放在4*2的二维数组points中。编写一个程序,提示用户输入4个点,并显示交点

    *8.31(几何:交点)编写一个方法,返回两条直线的交点.四个点存放在4*2的二维数组points中.编写一个程序,提示用户输入4个点,并显示交点 题目 题目描述 破题 代码 本题运行实例 题目 题目 ...

  9. Java黑皮书课后题第8章:*8.27(列排序)用下面的方法实现一个二维数组中的列排序。返回新数组,且原数组保持不变。编写一个测试程序,提示用户输入一个3*3的double型矩阵,显示一个排好的矩阵

    *8.27(列排序)用下面的方法实现一个二维数组中的列排序.返回新数组,且原数组保持不变.编写一个测试程序,提示用户输入一个3*3的double型矩阵,显示一个排好的矩阵 题目 题目描述与运行示例 破 ...

最新文章

  1. js中every用法_every方法
  2. 大佬共话AI:“三马二宏”等亮相2020年世界人工智能大会
  3. AJAX初探,XMLHttpRequest介绍
  4. 浅谈Promise对象在ReactNative中的使用
  5. FlexyPool如何同时支持连接代理和装饰器
  6. mybatis学习(33):动态sql if
  7. j2ee 上传下载 小记
  8. spring-第十二篇之两种后处理器
  9. 建模与仿真matlab论文,基于MATLAB的无线信道建模与仿真.doc
  10. js 获取浏览器高度、浏览器宽度
  11. 【精】【爆】MTK手机安装软件游戏大全!新人必看
  12. 贴片电阻分类、阻值、功率、封装、尺寸
  13. Unable to obtain current patch information due to error: 20001, ORA-20001: Latest xml inventory is n
  14. Hive函数详解(中文)
  15. 未注册域名批量查询工具
  16. Discuz手机视频模板 AIUI7.3.0 商业版
  17. python实现一个简单的广域网内的GUI聊天室
  18. c语言输出笑脸('\1')
  19. 每天3分钟知晓天下事,一句话新闻资讯简报的公众号推荐
  20. 二本计算机专业可以考电网,不能小瞧的二本大学,学生毕业后直接进入电网?不用羡慕公务员...

热门文章

  1. 《算法零基础100讲》(第2讲) 数列
  2. eBay电子商务模式
  3. 利用CSS3实现天气图标
  4. 百度云网盘批量改名之正则替换重命名(二)
  5. 蓝桥杯:P0604 Runaround数
  6. Java遍历List和Map出现ConcurrentModificationException异常原因分析及解决方法
  7. “Open the Java build path Property page of project ''”
  8. 计算机一级考试复习资料,计算机一级MSOffice考试复习资料
  9. 【2018VR眼镜评测】UGP VR和千幻魔镜哪个好?暴风魔镜和小宅VR有什么区别?哪个牌子VR眼镜好?2017
  10. OFD专用电子发票及PDF普通电子发票-批量解析V1.5.2