我在AutoCAD对象与名为Base
财产绘制。我试图找到该图中的所有对象,其中Base
属性具有特定的字符串值,例如“Pipe
”。查找具有特定属性的特定值对象在AutoCAD绘图
我可以遍历图中的对象并获取所有对象ID。然后,我使用该Id获取对象的所有属性,并检查名为Base = "Pipe"
的属性。
迭代的表现不够好。有什么办法可以直接获取具有Base = "Pipe"
属性的对象ID吗?
这是我如何遍历所有对象:
List<ObjectId> ObjectIds = new List<ObjectId>();
foreach (Document Document in Documents)
{
Database Database = Document.Database;
using (Transaction Transaction = Database.TransactionManager.StartTransaction())
{
for (long i = Database.BlockTableId.Handle.Value; i < Database.Handseed.Value; i++)
{
ObjectId Id;
if (Database.TryGetObjectId(new Handle(i), out Id))
{
ObjectIds.Add(Id);
}
}
Transaction.Commit();
}
}
这里是我如何得到我的ObjectIds
收集的对象的所有属性。
public static DataLinksManager DataLinks
{
get
{
if (null == _DataLinks)
{
StringCollection Coll = Autodesk.ProcessPower.DataLinks.DataLinksManager.GetLinkManagerNames();
if (Coll.Count > 0)
{
if (Coll[0] != string.Empty)
{
_DataLinks = Autodesk.ProcessPower.DataLinks.DataLinksManager.GetManager(Coll[0]);
}
}
}
return _DataLinks;
}
}
private static DataLinksManager _DataLinks;
foreach(var Id in ObjectIds)
{
List<KeyValuePair<string, string>> Properties = DataLinks.GetAllProperties(Id, true);
// I check existence of my property and if so its value.
}
请发表您目前拥有的代码。 –
你是否试图找到'Base'属性值等于'Pipe'的所有块引用? – vinayan
是@vinayan,这是我正在尝试做一个可以接受的表现。 – Demir