我在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