我在 Autocad 绘图中有对象,其属性名为Base
. 我试图在该图形中找到所有具有Base
属性的对象都具有特定的字符串值,例如“ Pipe
”。
我可以迭代绘图中的对象并获取所有对象 ID。然后我获取具有该 Id 的对象的所有属性并检查属性是否命名为Base = "Pipe"
.
迭代性能不够好。有什么方法可以直接获取具有名为的属性的对象 ID Base = "Pipe"
?
这是我遍历所有对象的方式:
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.
}