明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1271|回复: 6

为什么得不到块的属性值

[复制链接]
发表于 2015-10-27 00:04:20 | 显示全部楼层 |阅读模式
用dwgdirect写的,代码如下
using (Services services = new Services())
            {
                Database db=new Database(false,false);
                db.ReadDwgFile(path+"5T-267.dwg",FileShare.Read,false,null);
                BlockTable bt;
                using (Transaction tr = db.TransactionManager.StartTransaction())
                {
                    bt = tr.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;

                    BlockTableRecord btr = new BlockTableRecord();
                    foreach (ObjectId bto in bt)
                    {
                        btr = (BlockTableRecord) tr.GetObject(bto,OpenMode.ForRead);
                        if (btr.Name == "CAD_BOM")
                        {
                            foreach (ObjectId id in btr)
                            {
                                DBObject obj = (DBObject)tr.GetObject(id, OpenMode.ForRead);
                                AttributeDefinition ad = obj as AttributeDefinition;
                                if (ad != null)
                                {
                                    MessageBox.Show(ad.Tag.ToString());
                                    MessageBox.Show(ad.TextString.ToString());//,为什么显示为空?还有如果我这个bom中有多行如何把每个tag的多行值都显示出来?请哪位给予指点
                                }
                            }
                        }
                    }

                    tr.Commit();
                }

            }

发表于 2015-10-27 10:36:19 来自手机 | 显示全部楼层
显示的是属性块,BlockTableRecord中不一定有AttributeDefinition,Attrib的Ower是BlockReference,你应该遍历ModelSpace中有Attrib的BlockReference
 楼主| 发表于 2015-10-27 11:26:04 来自手机 | 显示全部楼层
能提供下大致代码么,我还是没太明白
 楼主| 发表于 2015-10-27 12:37:07 | 显示全部楼层
ivde 发表于 2015-10-27 10:36
显示的是属性块,BlockTableRecord中不一定有AttributeDefinition,Attrib的Ower是BlockReference,你应该遍 ...

能给点示例代码么 还是不太懂
发表于 2015-10-27 12:41:44 来自手机 | 显示全部楼层
BlockTableRecord btr = new BlockTableRecord
这个里面始终为空吧
 楼主| 发表于 2015-10-27 12:51:46 | 显示全部楼层
ivde 发表于 2015-10-27 12:41
BlockTableRecord btr = new BlockTableRecord
这个里面始终为空吧

不是  是MessageBox.Show(ad.TextString.ToString());这句的输出为空
发表于 2017-11-25 15:37:11 | 显示全部楼层
楼主解决了吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 10:12 , Processed in 0.182270 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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