14.05.2020 • C3D Viewer

Как использовать C3D Viewer в собственном приложении

В 2017 году в линейке продуктов C3D Labs появился C3D Viewer, простое в использовании приложение для визуализации трехмерной геометрии, которое позволяет читать стандартные форматы CAD и сохранять их в формате С3D.

C3D Viewer основан на функционале компонентов C3D Toolkit: Modeler, Solver, Converter и Vision.

Приложение существует в двух версиях: бесплатная для частных пользователей и Enterprise для корпоративных. Интерфейс версий одинаковый, функционал же имеет различия в пользу Enterprise-версии.

Вид основного рабочего окна C3D Viewer состоит из трех основных областей: панель управления, дерево структуры модели и область отображения модели.


Вид основного рабочего окна 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 на С#.


Компонент C3D ViewerX и SDK

После регистрации c3dviewerax.dll и сборки проекта C3DViewer_NET у пользователя появляется тестовое приложение с примером интерфейса для базовых возможностей C3D Viewer: загрузка/сохранение моделей, манипулирование сценой и измерения.

Для импорта компонента C3D ViewerX в свой проект также потребуется зарегистрировать его, затем импортировать COM объект средствами используемой IDE. Так, для импорта в Visual Studio необходимо выбрать на панели Toolbox, во вкладке Com Components, компонент AxC3DViewActiveX.


Вид импортированного компонента 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 глубокого знания языка С# не потребуется.


Демо-приложение Viewer_Net

В заключение хотелось бы добавить, что продукт C3D Viewer и построенный на нем COM-объект продолжают развиваться и наращивать свой функционал. Непрерывно ведутся работы над оптимизацией геометрического ядра и компонента визуализации. Функциональность и производительность C3D Viewer уже высоко оценена многими пользователями.

Скачать бесплатный C3D Viewer или запросить на тестирование Enterprise-версию можно здесь: https://c3dlabs.com/ru/products/c3d-viewer/

Дарья Яицких, Программист C3D Labs
Автор:
Дарья Яицких
Программист C3D Labs