Forge Viewer: Настраиваем единицы измерения в Measure tool
В случае, если исходный файл не содержит информацию о единицах измерения (я обнаружил это для файлов STL), то Measure tool в Forge Viewer использует по умолчанию метры. Я же сохранил STL-файл из Inventor-а, у которого внутренними единицами измерения являются сантиметры. Для дюймового кубика (2,54x2,54x2,54 см) Measure tool показывает:
Фактически, на картинке выше я уже немножко поменял настройки, а именно, поставил точность Measure tool в 2 знака. Чтобы это сделать программно, нужно получить само расширение Measure tool и присвоить значения свойства:
- var ext = viewer.getExtension("Autodesk.Measure")
- ext.sharedMeasureConfig.precision = 2
Примечание: для удобства отладки при работе с Forge Viewer можно использовать глобальную переменную NOP_VIEWER прямо в консоли отладки браузера.
Я также поменял единицы измерения Measure tool на дюймы:
- ext.sharedMeasureConfig.units = "in"
До сих пор это не тот результат, которого мы хотим добиться (2,54 метра вместо 2,54 см), нам нужно откалибровать Measure tool, чтобы он выводил результаты в 100 раз меньше текущих (т.е. умножал результат на 0,01):
- ext.calibrateByScale('in', 0.01)
То, что нужно! Теперь давайте посмотрим модель, где дюймовый куб в STL представлен уже с размерами 1x1x1:
Чтобы перевести в дюймы нужно умножать текущее значение на 0,0254:
- ext.sharedMeasureConfig.units = "in"
- ext.calibrateByScale('in', 0.0254)
Результат:
Если Вы хотите вносить изменения сразу после загрузки модели, то это можно сделать с помощью подписки на событие загрузки extension-а:
- const onExtensionLoaded = (e) => {
- if (e.extensionId === 'Autodesk.Measure') {
- // customize the extension
- // no need to listen to this event anymore
- viewer.removeEventListener(
- Autodesk.Viewing.EXTENSION_LOADED_EVENT,
- onExtensionLoaded)
- }
- }
- viewer.addEventListener(
- Autodesk.Viewing.EXTENSION_LOADED_EVENT,
- onExtensionLoaded)
- viewer.start()
Источник: https://forge.autodesk.com/blog/calibrate-measure-tool-other-units
Обсуждение: http://adn-cis.org/forum/index.php?topic=
Опубликовано 30.04.2019