明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1884|回复: 4

求教!!C#有条件选择CAD实体

[复制链接]
发表于 2012-2-7 11:06:49 | 显示全部楼层 |阅读模式
http://www.cnblogs.com/wf225/archive/2008/08/08/1263674.html
这篇文章有相关代码,可是我运行时怎么提示“错误 CS0103: 当前上下文中不存在名称"Tools"”;自己搞不明白,所以请教各位大神了,谢谢。
 楼主| 发表于 2012-2-7 11:41:30 | 显示全部楼层
各位,帮帮小弟吧,谢谢!!
发表于 2012-2-7 13:28:57 | 显示全部楼层
本帖最后由 liuxu042 于 2012-2-7 13:38 编辑

Tools应该是作者自己定义的类,可以自己改动一下代码,试试如下代码:

        [CommandMethod("SEWP")]
        public static void SelectEntitiesWithProperties()
        {
            Document doc = Application.DocumentManager.MdiActiveDocument;
            Editor ed = doc.Editor;
            TypedValue[] tvs = new TypedValue[]
            {
                new TypedValue((int)DxfCode.Operator, "<or"),
                new TypedValue((int)DxfCode.Operator, "<and"),
                new TypedValue((int)DxfCode.LayerName, "0"),
                new TypedValue((int)DxfCode.Start, "LINE"),
                new TypedValue((int)DxfCode.Operator, "and>"),
                new TypedValue((int)DxfCode.Operator, "<and"),
                new TypedValue((int)DxfCode.Start, "CIRCLE"),
                new TypedValue((int)DxfCode.Operator, ">="),
                new TypedValue((int)DxfCode.Real, 10.0),// Circle Radius
                new TypedValue((int)DxfCode.Operator, "and>"),
                new TypedValue((int)DxfCode.Operator, "or>")
            };
            SelectionFilter sf = new SelectionFilter(tvs);
            PromptSelectionResult psr = ed.SelectAll(sf);
            if (psr.Status == PromptStatus.OK)
            {
                SelectionSet SS = psr.Value;
                ObjectId[] idArray = SS.GetObjectIds();
                Database db = HostApplicationServices.WorkingDatabase;
                using (Transaction ta = db.TransactionManager.StartTransaction())
                {
                    for (int i = 0; i < idArray.Length; i++)
                    {
                        Entity ent = (Entity)ta.GetObject(idArray, OpenMode.ForRead);
                        ent.Highlight();
                        ed.WriteMessage("\n"+i + ":" + ent.ObjectId.ToString() + "," + ent.GetType().Name);
                    }
                    ta.Commit();
                }
            }
        }


评分

参与人数 1明经币 +1 收起 理由
xiaozhuyaofei + 1

查看全部评分

 楼主| 发表于 2012-2-7 18:07:36 | 显示全部楼层
liuxu042 发表于 2012-2-7 13:28
Tools应该是作者自己定义的类,可以自己改动一下代码,试试如下代码:

        [CommandMethod("SEWP")] ...

运行通过了,谢谢了。
如果返回值让它为直线的起始坐标和终点坐标,圆的话返回圆心和半径该怎么修改呢?
发表于 2012-2-8 08:39:21 | 显示全部楼层
xiaozhuyaofei 发表于 2012-2-7 18:07
运行通过了,谢谢了。
如果返回值让它为直线的起始坐标和终点坐标,圆的话返回圆心和半径该怎么修改呢?

for (int i = 0; i < idArray.Length; i++)
{
   Entity ent = (Entity)ta.GetObject(idArray, OpenMode.ForRead);
   ent.Highlight();
    if (ent is Line)
    {
        Line myline = ent as Line;
        ed.WriteMessage("\n直线"+i+"起点坐标:"+myline.StartPoint.ToString()+"终点坐标:"+myline.EndPoint.ToString());
     }
else if (ent is Circle)
     {
        Circle mycircle = ent as Circle;
          ed.WriteMessage("\n圆" + i +"圆心:"+ mycircle.Center.ToString() +"半径:" +mycircle.Radius.ToString());
      }
}

评分

参与人数 1明经币 +1 收起 理由
lzx838 + 1 热心帮助

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 19:39 , Processed in 0.140406 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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