EaBIM一直以来积极响应国家“十二五”推进建筑业信息化的号召,对建筑领域的信息技术开展深入技术交流和探讨!致力于打造“BIM-建筑师-生态技术”三位一体综合资源交流共享平台,希望为BIM与可持续设计理念及技术的普及做出微小的贡献!!!

EaBIM

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 1292|回复: 26
打印 上一主题 下一主题

[用户交互] 选择集合

[复制链接]

1514

主题

7465

帖子

1万

积分

admin

Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10

积分
12406

社区QQ达人

跳转到指定楼层
楼主
发表于 2014-1-8 16:43:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在与用户交互式的绘图的时候可能需要批量获取一些图形,而在这一批选择的时候你可能需要过滤一些不需要的类型自动排除在你选择的集合以外,下面这个例子就是只接受选择文本、圆、直线三种类型,其余的图形将不能选中。
using System;
  1. <p>
  2. </p><p>using Autodesk.AutoCAD.Runtime;</p><p>using Autodesk.AutoCAD.ApplicationServices;</p><p>using Autodesk.AutoCAD.DatabaseServices;</p><p>using Autodesk.AutoCAD.EditorInput;</p><p>
  3. </p><p>[assembly: CommandClass(typeof(Sample.Selection))]</p><p>namespace Sample</p><p>{</p><p>    /// <summary></p><p>    /// 类型过滤枚举类</p><p>    /// </summary></p><p>    public enum FilterType</p><p>    {</p><p>        Curve, Dimension, Polyline, BlockRef, Circle, Line, Arc, Text, MText</p><p>    }</p><p>
  4. </p><p>    class Selection</p><p>    {</p><p>        [CommandMethod("Selection")]</p><p>        public void Select()</p><p>        {</p><p>            FilterType LineType = FilterType.Line;</p><p>            FilterType TextType = FilterType.Text;</p><p>            FilterType CircleType = FilterType.Circle;</p><p>
  5. </p><p>            FilterType[] Types = new FilterType[3];</p><p>            Types[0] = LineType;</p><p>            Types[1] = TextType;</p><p>            Types[2] = CircleType;</p><p>            DBObjectCollection EntityCollection = GetSelection(Types);</p><p>        }</p><p>
  6. </p><p>        public static DBObjectCollection GetSelection(FilterType[] tps)</p><p>        {</p><p>            Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;</p><p>            Database db = doc.Database;</p><p>            Editor ed = doc.Editor;</p><p>            Entity entity = null;</p><p>            DBObjectCollection EntityCollection = new DBObjectCollection();</p><p>            PromptSelectionOptions selops = new PromptSelectionOptions();</p><p>            // 建立选择的过滤器内容</p><p>            TypedValue[] filList = new TypedValue[tps.Length + 2];</p><p>            filList[0] = new TypedValue((int)DxfCode.Operator, "<or");</p><p>            filList[tps.Length + 1] = new TypedValue((int)DxfCode.Operator, "or>");</p><p>            for (int i = 0; i < tps.Length; i++)</p><p>            {</p><p>                filList[i + 1] = new TypedValue((int)DxfCode.Start, tps[i].ToString());</p><p>            }</p><p>            // 建立过滤器</p><p>            SelectionFilter filter = new SelectionFilter(filList);</p><p>            // 按照过滤器进行选择</p><p>            PromptSelectionResult ents = ed.GetSelection(selops, filter);</p><p>            if (ents.Status == PromptStatus.OK)</p><p>            {</p><p>                using (Transaction transaction = db.TransactionManager.StartTransaction())</p><p>                {</p><p>                    SelectionSet SS = ents.Value;</p><p>                    foreach (ObjectId id in SS.GetObjectIds())</p><p>                    {</p><p>                        entity = (Entity)transaction.GetObject(id, OpenMode.ForWrite, true);</p><p>                        if (entity != null)</p><p>                            EntityCollection.Add(entity);</p><p>                    }</p><p>                    transaction.Commit();</p><p>                }</p><p>            }</p><p>            return EntityCollection;</p><p>        }</p><p>    }</p><p>}</p>
复制代码
加载程序运行命令后框选图形上的对象后得到如下效果:

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 转播转播 分享分享 分享淘帖 支持支持 反对反对
工作时间:工作日的9:00-12:00/13:30-18:00,节假日不在线,请勿留言

4

主题

723

帖子

1173

积分

BIM项目负责人

Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

积分
1173
推荐
发表于 2014-5-13 10:30:39 | 只看该作者
(*^__^*) 嘻嘻……

19

主题

878

帖子

1359

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
1359
推荐
发表于 2014-5-13 10:17:24 | 只看该作者
(*^__^*) 嘻嘻……

7

主题

865

帖子

1435

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
1435
推荐
发表于 2014-5-13 10:33:03 | 只看该作者
顶......
楼下跟上.....

5

主题

857

帖子

1390

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
1390
5F
发表于 2014-3-10 13:25:10 | 只看该作者
(*^__^*) 嘻嘻……

18

主题

861

帖子

1348

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
1348
7F
发表于 2014-3-11 11:10:28 | 只看该作者
谢谢BIM大神…

11

主题

888

帖子

1723

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
1723
10F
发表于 2014-3-14 11:18:39 | 只看该作者
路过!!!
不发表意见……

28

主题

927

帖子

1777

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
1777
12F
发表于 2014-3-14 11:30:43 | 只看该作者
(*^__^*) 嘻嘻……

1

主题

716

帖子

1133

积分

BIM项目负责人

Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

积分
1133
14F
发表于 2014-5-7 10:04:25 | 只看该作者
顶......
楼下跟上.....
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|EaBIM网 ( 苏ICP备2020058923号-1  苏公网安备32011502011255号

GMT+8, 2024-11-27 09:30

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表