介之推 发表于 2015-4-13 14:02:58

如何定义一个选择过滤器把矩形命令绘制的矩形选中

大家好,通过CAD工具栏的“矩形”命令:RECTANG绘制的矩形,在CAD定义的名称是什么?我想写个代码能选择文字和线段,但由于绘制的习惯,文字有单行文字和多行文字,绘制线段时即由直线也有矩形,故需要定义一选择器,把这四种图元都选中,这是我目前定义的选择集,无法选中矩形,该如何修改呢?
SelectionFilter flt = new SelectionFilter(new TypedValue[] { new TypedValue(0, "TEXT,MTEXT,LINE,ACDBPOLYLINE") });


ivde 发表于 2015-4-13 14:24:40

绘制完成接 entlast   

sieben 发表于 2015-4-13 15:15:24

(0, "TEXT,MTEXT,LINE,POLYLINE")

介之推 发表于 2015-4-13 20:19:49

sieben 发表于 2015-4-13 15:15 static/image/common/back.gif
(0, "TEXT,MTEXT,LINE,POLYLINE")

你好,sieben,这个我也试了,还是不好使.

介之推 发表于 2015-4-13 20:21:45

ivde 发表于 2015-4-13 14:24 static/image/common/back.gif
绘制完成接 entlast

你好,矩形是别人已经绘制好了的,我只是想选中矩形,不是想绘制矩形。
什么是 entlast,愿闻其详啊,哈哈。

ivde 发表于 2015-4-13 20:35:31

介之推 发表于 2015-4-13 20:21
你好,矩形是别人已经绘制好了的,我只是想选中矩形,不是想绘制矩形。
什么是 entlast,愿闻其详啊,哈 ...

首先筛选lwpolyline,遍历判断,如果是四个顶点,面积等于两个临边的积,再复杂情况就一言难尽了

sieben 发表于 2015-4-14 12:50:07

介之推 发表于 2015-4-13 20:19 static/image/common/back.gif
你好,sieben,这个我也试了,还是不好使.

不好意思!应该是LWPOLYLINE

sieben 发表于 2015-4-14 12:52:50

另外,轻型多段线应该是DXF码 60 是多段线的节点数(不敢肯定哈).(60 . 4) (70 . 1) 前者表示节点数是4,后者表示曲线是封闭的

ivde 发表于 2015-4-15 16:24:24

对角线相等且平分
            var p1 = pl.GetPoint3dAt(0);
            var p2 = pl.GetPoint3dAt(1);
            var p3 = pl.GetPoint3dAt(2);
            var p4 = pl.GetPoint3dAt(3);
            if (pl.NumberOfVertices == 4&& p1.DistanceTo( p3)- p2.DistanceTo( p4) < 1e-3
                && (p1+ (p1-p3)/2).Equals( p2+(p4-p2)/2))
            {
               
            }

雪山飞狐_lzh 发表于 2015-4-15 16:36:58

还有5个点 且起终点重合的
页: [1]
查看完整版本: 如何定义一个选择过滤器把矩形命令绘制的矩形选中