008集—— Keyword关键字及getstring的用法(CAD—C#二次开发入门)

CAD二开中,经常会用到用户交互功能,常见的方法如下:

GetKeyword 方法提示用户在 AutoCAD 命令提示下输入关键字,GetString 方法提示用户在 AutoCAD 命令提示下输入字符串。两者就有区别又有相似处,getkeyword只允许用户输入指定的字符。

GetKeyword 方法:AllowNone 属性为False强制用户输入关键字,而禁止输入 NULL(按回车键)。Keywords 用于添加有效的关键字列表。

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

getkeyword案例如下:

附代码:

cs 复制代码
using AcTools;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.Runtime;
using System;
using System.Collections.Generic;
using System.Linq;

namespace Acdemo
{
    public  class Acdemo
    {

        [CommandMethod("xx")]
        public void ACDE()
        {
            Document acDoc = Application.DocumentManager.MdiActiveDocument;
            Database db = HostApplicationServices.WorkingDatabase;
            Line line = new Line(Point3d.Origin, new Point3d(100, 100, 0));
            Line line1 = new Line(Point3d.Origin, new Point3d(50, 200, 0));
            //db.AddEntityToModeSpace(line);
            PromptKeywordOptions pKeyOpts = new PromptKeywordOptions("");
            pKeyOpts.Message = "\nEnter an option ";
            pKeyOpts.Keywords.Add("Line");
            pKeyOpts.Keywords.Add("Circle");
            pKeyOpts.Keywords.Add("Arc");
            pKeyOpts.AllowNone = false;

            PromptResult pKeyRes = acDoc.Editor.GetKeywords(pKeyOpts);

            //Application.ShowAlertDialog("Entered keyword: " +
            //                            pKeyRes.StringResult);
            //if (pKeyRes.StringResult == "Line")
            //{
            //    db.AddLineToModeSpace(new Point3d(), new Point3d(100, 100, 0));

            //}
            switch (pKeyRes.StringResult)
            {
                case "Line":
                    Database db1 = HostApplicationServices.WorkingDatabase;
                    db1.AddEntityToModeSpace(line1);
                    break;
                case "Circle":
                    db.AddCircleModeSpace(new Point3d(), 100);
                    break;
                case "Arc":
                    db.AddArcToModeSpace(new Point3d(0,0,0), new Point3d(500, 100, 0), new Point3d(200, 200, 0));
                    break;

            }

        }
    }
}

getstring用法:

cs 复制代码
using AcTools;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.Runtime;
using System;
using System.Collections.Generic;
using System.Linq;

namespace Acdemo
{
    public  class Acdemo
    {
        public static void GetStringFromUser(string message)
        {
            Document acDoc = Application.DocumentManager.MdiActiveDocument;

            PromptStringOptions pStrOpts = new PromptStringOptions("\nEnter your name: ");
            pStrOpts.AllowSpaces = true;
            PromptResult pStrRes = acDoc.Editor.GetString(pStrOpts);

            Application.ShowAlertDialog(message +  "\nThe name entered was: " +
                                        pStrRes.StringResult);
        }

        [CommandMethod("xx")]
        public void ACDE()
        {  
            GetStringFromUser("Hello,world !");
        }
    }
}
相关推荐
AI人工智能+电脑小能手6 小时前
【大白话说Java面试题 第87题】【Mysql篇】第17题:分布式事务的实现原理?
java·数据库·分布式·mysql·面试
yyuuuzz6 小时前
独立站的技术基础与常见运维问题
大数据·运维·服务器·网络·数据库·aws
isyangli_blog8 小时前
OpenDayLight (Carbon 版本) 启动与组件安装
开发语言·php
vb2008118 小时前
FastAPI APIRouter
开发语言·python
Benszen8 小时前
KVM虚拟化解决方案
开发语言·perl
会编程的土豆8 小时前
Go 语言反射(Reflection)详解
开发语言·后端·golang
東雪木8 小时前
多线程与并发编程 专属复习笔记
java·开发语言·笔记·java面试
杨充9 小时前
1.3 浮点型数据设计灵魂
开发语言·python·算法
噜噜噜阿鲁~9 小时前
python学习笔记 | 11.3、面向对象高级编程-多重继承
java·开发语言
basketball6169 小时前
Go 语言从入门到进阶:4. 数组和MAP使用方法总结
开发语言·后端·golang