乐筑天下

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

来自属性引用的属性提示 ?

[复制链接]

50

主题

114

帖子

2

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
314
发表于 2018-3-13 10:17:07 | 显示全部楼层 |阅读模式
嗨,
我有一些奇怪的块,其中包含重复的属性。 它们在块定义中不可见。 我看到它们的唯一位置是在块引用本身中,识别rebre属性的唯一方法是它们没有提示。 那么有没有办法获得属性引用的及时适当性呢?
谢谢

hr5lirsivgg.png

hr5lirsivgg.png

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

15

主题

687

帖子

169

银币

中流砥柱

Rank: 25

铜币
582
发表于 2018-3-13 11:25:08 | 显示全部楼层
嗨,
AFAIK没有办法,提示只存在于属性定义中。
属性同步应该删除这些重复的属性引用。您可以尝试“选择性attsync”。
回复

使用道具 举报

50

主题

114

帖子

2

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
314
发表于 2018-3-13 15:54:50 | 显示全部楼层
attsync工作得很好,但它删除了属性的值,所以它不是我的解决方案。我不能使用选择性attsync,因为重复的属性是相同的。但它给了我一个想法:1-我选择块并从中制作一个排序列表(SortedList),其中块引用的ObjectId=ObjectId和属性的string=value2-我使用attsync,之后看起来都很棒3-要在属性中放回值,我使用我的sortedlist问题是在第3步我收到一条错误消息,我的属性引用被擦除。我不明白为什么......错误是第22行的idAtt,我看到blkRef.AttributeCollection的计数是2而不是4。Document doc=Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;。
数据库db=doc.Database;。
编辑AcadApp.DocumentManager.MdiActiveDocument.Editor。

使用(doc.LockDocument())。
{。
使用(事务tr=db.TransactionManager.StartTransaction())。
{。
foreach(列表BlkAtt中的KeyValuePair对)。
{。
ObjectId idBlk=pair.Key;。
字符串cValue=pair.Value;。

字符串[]cCircuitStatut=cValue.Split ('+');。
字符串cCircuit=cCircuitStatut[0];。
字符串cStatut=cCircuitStatut[1];。

块参考blkRef=(块参考)tr.GetObject(idBlk,OpenMode.ForWrite);。

foreach(blkRef.AttributeCollection中的ObjectId idAtt)。
{。
属性引用att=tr.GetObject(idAtt,OpenMode.ForWrite);。
if(att.Tag=="CIRCUIT")att.TextString=cCircuit;。
否则如果(att.Tag=="STATUT")att.TextString=cStatut;。
}。
}。
tr.Commit();。
}。
}。
}。
回复

使用道具 举报

23

主题

239

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
327
发表于 2018-3-13 19:59:21 | 显示全部楼层
我想你已经忘记了AutoCAD有像ATTOUT和ATTIN这样的工具,可以很容易地保存attsync修改的属性值。
你用MGDDBG看过这些对象吗?属性集合中只有两个ID,这似乎很奇怪,这将是查看它们的好方法。
回复

使用道具 举报

15

主题

687

帖子

169

银币

中流砥柱

Rank: 25

铜币
582
发表于 2018-3-13 22:08:38 | 显示全部楼层
ATTSYNC将删除任何与任何定义标签不匹配的属性引用标签,这就是为什么您的Attribute Reference在步骤3中被删除。正如Will所说,在使用ATTSYNC进行破坏之前,使用ATTOUT来保存这些值。您可以在更改之前将excel中的列标题更改为新的标记,这样您就可以恢复您的值。当您打开导出的文件时,请注意Excel的自动格式化,将所有列格式化为文本
同时确认您只能从定义中获得属性提示,引用没有它。更改提示不会破坏任何东西或丢失任何值。请注意,如果参照不再有匹配的标记,则更改块定义中的属性标记将删除其在所有参照中的值-这就是为什么使用nanananana,BATTMAN编辑属性标记的原因。从编程角度来说,如果更改块定义中的标记,则需要迭代其所有块参照,并进行相同的更改以保留值。
回复

使用道具 举报

50

主题

114

帖子

2

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
314
发表于 2018-3-14 02:42:38 | 显示全部楼层
我不知道ATTOUT/ATTIN,那可能有用,我会做一些测试。
感谢你们三个提供的所有这些信息!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-2-4 10:59 , Processed in 0.464425 second(s), 77 queries .

© 2020-2025 乐筑天下

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