В 2017 году в линейке продуктов C3D Labs появился C3D Viewer, простое в использовании приложение для визуализации трехмерной геометрии, которое позволяет читать стандартные форматы CAD и сохранять их в формате С3D.
C3D Viewer основан на функционале компонентов C3D Toolkit: Modeler, Solver, Converter и Vision.
Приложение существует в двух версиях: бесплатная для частных пользователей и Enterprise для корпоративных. Интерфейс версий одинаковый, функционал же имеет различия в пользу Enterprise-версии.
Вид основного рабочего окна C3D Viewer состоит из трех основных областей: панель управления, дерево структуры модели и область отображения модели.
Панель управления является интерфейсом для множества функций приложения, разделенных по группам:
- Файл — операции с файлами: открытие, сохранение, добавление модели к уже загруженной
- Навигация — операции манипулирования сценой: панорамирование, вращение, масштабирование, масштабирование по выделенному объекту
- Плагины — получение свойств компонентов: измерение и получение МЦХ выбранного компонента
- Ориентация — управление ориентацией с помощью стандартных проекций
- Стиль отображения — управление режимами отображения: ортогональная/перспективная проекция, полутоновое, каркасное, полутоновое с каркасом отображения
- Режим сечения — управление динамическим сечением: активация/деактивация режима сечения, редактирование положения плоскостей сечений.
В дополнение к перечисленным группам имеются отдельные функции: Снимок экрана, Анимация, Комментарий (последние две только в Enterprise-версии).
К панели управления также относится поле «НАСТРОЙКИ», при выборе в котором поля «Параметры» пользователь может настроить C3D Viewer «под себя». Пользовательские настройки включают: настройку цвета фона окна отображения, настройку качества отрисовки и настройки производительности отрисовки.
Дерево структуры модели не только отображает все составляющие загруженной модели в иерархическом виде, но и позволяет подсвечивать и масштабировать элементы модели, соответствующие выбранному элементу дерева.
Область отображения модели представляет собой окно, в котором отображаются в трехмерном виде геометрические данные загруженной модели, отдельных компонентов или конструктивных объектов.
В версии Enterprise имеются расширенные возможности конвертации форматов, а именно сохранение не только в нативном формате C3D, но и в форматах SAT, IGES, Parasolid, STEP, STL, VRML, JT.
Но основной отличительной особенностью C3D Viewer Enterprise, для описания которой и задумывалась данная статья, является возможность его использования внутри собственного приложения.
Для встраивания C3D Viewer в пользовательские приложения был разработан компонент C3D ViewerX, являющийся ActiveX COM Library (C++, Qt), который предоставляет пользователю возможности самого C3D Viewer через API. Взаимодействие с компонентом реализовано по шаблону взаимодействия «запрос-ответ». Запрос и ответ имеют строковый вид в формате JSON, что обеспечивает простой анализ и преобразование данных. API простой и постепенно расширяется по мере роста функционала приложения.
Но если использование уже встроенного C3D ViewerX действительно «дело нехитрое», то с интеграцией компонента в пользовательский проект могут возникнуть вопросы. Например, «С чего начать?».
Для начала необходимо установить C3D Viewer Enterprise, применив полученный от C3D Labs лицензионный ключ. При выборе компонентов выбрать установку C3D ViewerX и SDK. После успешной установки в директории SDK будет расположен файл readme с инструкцией по регистрации компонента средствами командной строки и проект Microsoft Visual Studio на С#.
После регистрации c3dviewerax.dll и сборки проекта C3DViewer_NET у пользователя появляется тестовое приложение с примером интерфейса для базовых возможностей C3D Viewer: загрузка/сохранение моделей, манипулирование сценой и измерения.
Для импорта компонента C3D ViewerX в свой проект также потребуется зарегистрировать его, затем импортировать COM объект средствами используемой IDE. Так, для импорта в Visual Studio необходимо выбрать на панели Toolbox, во вкладке Com Components, компонент AxC3DViewActiveX.
Проделанных действий достаточно для получения области отображения модели в ее первоначальном виде. Для дальнейшей работы с AxC3DViewActiveX необходимо активировать лицензию, используя метод enableLicense.
C3D ViewerX состоит из следующий модулей:
- Редактор — AxEditor, позволяет открывать/сохранять файлы и редактировать свойства объекта модели
- Менеджер процессов — AxProcessManager, позволяет запускать процессы измерения, получения сводки компонентов, создания комментария и динамического сечения
- Менеджер сцены — AxSceneManager, предоставляет возможности манипулирования сценой
- Менеджер выбора объектов — AxSelectManager, предоставляет управление подсветкой объектов
- Камера — AxCamera, позволяет позиционировать камеру.
Доступ к перечисленным модулям можно получить, используя одноименные get-методы: getEditor, getProcessManager и т.д.
Таким образом, пользователь C3D ViewerX получает само окно визуализации модели и функционал компонента, для которого он будет использовать собственный интерфейс. Осталась последняя упомянутая ранее область C3D Viewer — дерево структуры модели. Дерево также можно получить и во встроенной версии. Для этого потребуется написать обработчик события signalAppendObject модуля AxEditor, который возвращает имя загруженного объекта, его идентификатор и идентификатор родителя.
Как уже было упомянуто ранее, часть функционала реализована по принципу «запрос-ответ» в формате JSON. Такой способ был выбран в связи с необходимостью возвращать пользователю значительный объем данных. Так, после запуска процесса измерения, при выборе объекта измерения будет получен сигнал signalResponseCommandJSON, параметром которого и будет строка вида:
{ "id":"C3DVIewer.Measure", "action":"measureresults", "data": { "Angle":"180 deg", "Area":"5411.0718 mm^2", "Axis distance":"18 mm", "Minimum distance":"31.73209 mm" } }
В статье не приложены коды по той причине, что компонент AxC3DViewActiveX может быть применен в проектах, разработанных с использованием различных IDE и языков программирования, а значит могут быть свои нюансы, но, в общем, процесс интеграции будет одинаковый. В качестве примеров кода следует использовать исходные коды демо-приложения Viewer_Net, разработанного с использованием С#. Для понимания общих методов работы с компонентом AxC3DViewActiveX глубокого знания языка С# не потребуется.
В заключение хотелось бы добавить, что продукт C3D Viewer и построенный на нем COM-объект продолжают развиваться и наращивать свой функционал. Непрерывно ведутся работы над оптимизацией геометрического ядра и компонента визуализации. Функциональность и производительность C3D Viewer уже высоко оценена многими пользователями.
Скачать бесплатный C3D Viewer или запросить на тестирование Enterprise-версию можно здесь: https://c3dlabs.ru/products/c3d-viewer/
Автор:
Дарья Яицких
Программист C3D Labs