Грабвам всички обекти в ModelSpace за чертеж на AutoCAD. Тези обекти са от различни типове като Pipe, Duct, DuctFitting, Line, Mesh, Solid3D и т.н., така че пиша логика, за да определя техните свойства чрез отразяване с TypeDescriptor. Чудя се дали има по-интелигентен начин да се получат всички атрибути на даден обект и дали има начин да се определят мерните единици за даден елемент. Знам как да потърся какви мерни единици използва чертежът, но как мога да разбера, че свойство, наречено „Дължина“, всъщност е дължина, използвайки мерните единици от чертежа като футове или метри?
Ето кода, който трябва да изброя над всички елементи, които искам:
using (var transaction = database.TransactionManager.StartTransaction())
{
BlockTable blockTable = (BlockTable)transaction.GetObject(database.BlockTableId, OpenMode.ForRead);
BlockTableRecord blockTableRecord = (BlockTableRecord)transaction.GetObject(blockTable[BlockTableRecord.ModelSpace], OpenMode.ForRead);
foreach (DBObject dbObject in blockTableRecord
.Cast<ObjectId>()
.Where(id => id.IsValid && !id.IsNull && !id.IsEffectivelyErased && !id.IsErased)
.Select(id => transaction.GetObject(id, OpenMode.ForRead))
{
//DISCOVER PROPERTIES AND THEIR UNITS HERE
}
}