如何按Viewer配置的显示单位获取模型对象属性?
Forge Viewer 属性单位自动转换方案
核心实现思路
Viewer内置了单位转换机制,可结合模型原生单位与用户配置的显示单位,自动转换属性数值,步骤如下:
获取选中对象的原生属性
通过viewer.getProperties(dbId, (props) => { ... })获取选中对象的所有属性,其中带单位的数值属性(如长度、面积)会包含原始数值与单位信息。获取单位配置信息
- 模型原生单位:调用
viewer.model.getUnitInfo()获取模型存储时的单位(如英制英寸、英尺)。 - Viewer显示单位:通过
viewer.displayUnits获取当前用户设置的显示单位(如Autodesk.Viewing.Private.DisplayUnits.MILLIMETERS)。
- 模型原生单位:调用
执行单位转换
利用Viewer内置的Autodesk.UnitConversion工具完成转换,示例代码:// 假设原生值为1英寸,转换为毫米 const fromUnit = Autodesk.Unit.INCH; const toUnit = Autodesk.Unit.MILLIMETER; const convertedValue = Autodesk.UnitConversion.convert(1, fromUnit, toUnit); // 输出结果:25.4
关于autodesk.unit.unit枚举
你提到的autodesk.unit.unit对应Viewer内置的Autodesk.Unit枚举,常用单位包括:
Autodesk.Unit.INCH(英寸)Autodesk.Unit.FOOT(英尺)Autodesk.Unit.MILLIMETER(毫米)Autodesk.Unit.METER(米)
这些枚举值可直接传入转换函数使用。
注意事项
- 仅对数值型且带单位的属性执行转换,文本类属性直接显示即可。
- 若模型未明确标注单位,以
viewer.model.getUnitInfo()返回的默认单位作为转换基准。
内容的提问来源于stack exchange,提问作者Gabriele Cossu
相关产品推荐
相关产品推荐

