我正在为 AutoCAD 绘图抓取模型空间中的所有对象。这些对象有多种类型,如 Pipe、Duct、DuctFitting、Line、Mesh、Solid3D 等,因此我正在编写逻辑来通过使用 TypeDescriptor 反射(reflect)来确定它们的属性。我想知道是否有一种更聪明的方法来获取对象的所有属性,以及是否有一种方法可以确定给定项目的度量单位。我知道如何查找绘图使用的单位,但我如何知道名为“长度”的属性实际上是使用绘图中的单位(例如英尺或米)的长度?
这是我必须枚举所有我想要的项目的代码:
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
}
}
最佳答案
这对你有帮助。
UnitsValue unitValue=Application.DocumentManager.MdiActiveDocument.Database.Insunits;
UnitValue
是枚举,支持 20 种单位类型,包括 LightYear
、Armstrong
等...
关于c# - 在 C# 中查找 AutoCAD 属性的单位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13052705/