AutoCAD図面のModelSpace内のすべてのオブジェクトを取得しています。これらのオブジェクトは、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
}
}