c# - 在 C# 中查找 AutoCAD 属性的单位

标签 c# autocad autocad-plugin

我正在为 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 种单位类型,包括 LightYearArmstrong 等...

关于c# - 在 C# 中查找 AutoCAD 属性的单位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13052705/

相关文章:

c# - 有时 C# 中的 Base 64 无效字符

Java3D 3D CAD文件导入和显示

c# - 如何使用.net在Autocad中的特定布局中插入实体?

c# - 在 AutoCAD 中限制另一个形状内的形状移动

c# - 实现 IDisposable 时在构造函数中处理异常

c# - 示例中的 CA2202 无效流

c# - WCF 服务自主机 url 未获取 wsdl 文档

AutoCAD - 在子文件夹中另存为 DXF

c# - 提示用户选择一个组并获取该组 ID 的方法

python - 使用 Python 保存 AutoCAD 文件 (.dwg)