Base
이라는 속성으로 AutoCAD 도면에 객체가 있습니다. 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
예 @vayayan 그것이 내가 받아 들일 수있는 성능으로하려고하는 것입니다. – Demir