Я беру все объекты в 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
}
}