乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 85|回复: 3

PromptSelectionResult 查询总是error

[复制链接]

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
6
发表于 2017-12-20 17:07:00 | 显示全部楼层 |阅读模式
public class Class1
    {
        [CommandMethod("GetLayerPro")]
        public static void GetLayerPro()
        {
            Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
            //新建一个数据库对象以读取Dwg文件
            Database db = new Database(false, true);
            string fileName = "C:/Users/admin/Desktop/1.dwg";
            //如果指定文件名的文件存在
            if (System.IO.File.Exists(fileName))
            {
                //把文件读入到数据库中
                db.ReadDwgFile(fileName, System.IO.FileShare.Read, true, null);
                using (Transaction trans = db.TransactionManager.StartTransaction())
                {
                    //获取数据库的图层表对象
                    LayerTable lt = (LayerTable)trans.GetObject(db.LayerTableId, OpenMode.ForRead);
                    //循环遍历每个图层
                    foreach (ObjectId layerId in lt)
                    {
                        LayerTableRecord ltr = (LayerTableRecord)trans.GetObject(layerId, OpenMode.ForRead);
                        if (ltr != null)
                        {
                           List entitys = GetLayerEntity(ltr.Name);
                           foreach (ObjectId id in entitys)
                                {
                                    Entity hatchobj = trans.GetObject(id, OpenMode.ForWrite) as Entity;
                                if (hatchobj != null)
                                {
                                    Debug.WriteLine("===============");
                                    TypedValue[] typedValue = hatchobj.XData.AsArray();
                                    if (typedValue[0].Value.Equals("PIPELINE") || typedValue[0].Value.Equals("PIPE"))
                                    {
                                        foreach (TypedValue obj in hatchobj.XData)
                                        {
                                            Debug.WriteLine(obj.Value);
                                        }
                                    }
                                }
                            }
                        }
                           
                            Autodesk..Colors.Color layerColor = ltr.Color;
                            ed.WriteMessage("\n图层名称为:" + ltr.Name);
                            ed.WriteMessage("\n图层颜色为:" + layerColor.ToString());
                        }
                    trans.Commit();
                }
            }
        }
        
         //根据图层名获取该图层下的实体id
        public static List GetLayerEntity(String layerName)
        {
            List entitys = new List();
            Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
            Database db = doc.Database;
            Editor ed = doc.Editor;
            TypedValue[] values = { new TypedValue((int)DxfCode.LayerName, layerName) };
            SelectionFilter filters = new SelectionFilter(values);
            PromptSelectionResult result = ed.SelectAll(filters );
            PromptSelectionResult result = ed.SelectAll();
            if (result.Status == PromptStatus.OK)
            {
                ObjectId[] ids = result.Value.GetObjectIds();
                foreach (ObjectId id in ids)
                {
                    entitys.Add(id);
                }
            }
            else
            {
                return entitys;
            }
            return entitys;
        }
    }
}
红色部分为什么获取的都是error   ,  求大神来解释一下
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2017-12-20 18:27:00 | 显示全部楼层
你在当前文档过滤打开的文档的对象?没看懂你要做什么 如果是读入的db只能遍历 不能用选择集的
回复

使用道具 举报

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
6
发表于 2017-12-21 08:59:00 | 显示全部楼层

如果要用选择集该怎么写,我这里是要分层读出每层的实体
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2017-12-21 09:58:00 | 显示全部楼层
用db.readdwg读入的文件是无法用选择集的 只能遍历
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2024-11-22 05:11 , Processed in 0.144634 second(s), 60 queries .

© 2020-2024 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表