3D‑модели станков
Кинематическая схема станка — это дерево узлов (Дескрипторы станков);
каждый узел может нести 3D‑модель, которая отрисовывается — и проверяется на столкновения —
в положении этого узла в кинематической цепочке. Эта страница объясняет, как эти модели
подключаются, готовятся и выравниваются. XML‑сторона мала (три вещи: ImageFile, VisMatrix,
Use3DModelColors); остальное — про корректную подготовку геометрии.
1 Прикрепление модели к узлу
Модель узла именуется его свойством ImageFile (унаследованным от TMachineNode) и
позиционируется для отображения матрицей VisMatrix внутри VisualProperties:
<SCType ID="Column" Caption="Column" type="TMachineNode">
<ImageFile DefaultValue="Images\column.osd"/>
<VisualProperties>
<VisMatrix> <!-- подстраивает только модель, не кинематику -->
<SCType ID="T1" type="TRotateZ" DefaultValue="90"/>
</VisMatrix>
<Color><R DefaultValue="0.4"/><G DefaultValue="0.4"/><B DefaultValue="0.45"/></Color>
</VisualProperties>
</SCType>
Узел отрисовывается в своей кинематической системе (произведение цепочки Matrix от корня
до него, см. §1), а затем
VisMatrix применяется поверх, только к модели. Так что если CAD‑модель экспортирована
в неудобной ориентации, поправьте её через VisMatrix, не нарушая то, как узел движется.
Один узел = своя геометрия. Каждый движущийся узел должен нести только ту геометрию, что движется вместе с ним. Поэтому правильно подготовленный станок — это сборка отдельных моделей (по одной на узел), а не единая монолитная модель. Именно это позволяет частям корректно двигаться друг относительно друга.
2 Где лежат файлы моделей
- Файлы моделей обычно лежат рядом с XML‑файлом станка или в подпапке
Images\для порядка, и на них ссылаются относительными путями (например,Images\column.osd). То же относится к растровым изображениям, показываемым в библиотеке станков. - Поэтому полный станок — это папка из нескольких файлов: XML‑дескриптор плюс его модели и изображения.
- Держите папку самодостаточной и переносимой. Не ссылайтесь на файлы в папке соседнего станка — это сломается при перемещении или передаче станка. (Схемы станков хранятся, как папки, внутри проектов именно для того, чтобы проекты оставались переносимыми.)
- Эти папки не обязаны находиться под стандартными псевдонимами дистрибутива вроде
$(SCHEMAS_FOLDER): библиотеке станков можно указать сканировать любые пользовательские папки в поисках станков.
3 Единицы и система координат
- Единицы должны совпадать с дескриптором станка. Геометрию модели нужно сохранять в тех же
единицах, что и Measurements станка — миллиметры для метрического станка, дюймы для
дюймового — ровно как переносы
Matrix(см. системы координат и единицы). Если активная система единиц отличается, система пытается масштабировать станок один раз при загрузке, но для сильно параметризованных схем это может сработать некорректно — поэтому готовьте модели в тех единицах, в которых будет использоваться станок. - Система координат. Геометрия показывается в глобальной СК, в которой была нарисована, в
сочетании с матрицами иерархии узлов и затем
VisMatrix. Иными словами, моделируйте деталь в мировой СК станка (Z вверх, X вправо, Y от наблюдателя — системы координат) и используйтеVisMatrixтолько чтобы поправить модель, вышедшую несовмещённой. - Часто это вопрос нулевого положения, а не
VisMatrix. Модель часто выглядит «не так» просто потому, что ось, на которой она сидит, была смоделирована в ненулевом положении. ТогдаVisMatrixобычно не нужен — просто задайте у этой осиDesignTimeAxisValue(справочник узлов) равным положению, в котором была нарисована модель, и узел (модель и кинематика вместе) выровняется корректно во время проектирования. Прибегайте кVisMatrix, только когда сама модель повёрнута/смещена относительно системы своего узла.
4 Форматы OSD и STL
Принимаются два формата:
- OSD (OpenGL Stream Data) — собственный формат системы и предпочтительный. Это триангулированная сетка, хранимая как поток OpenGL‑примитивов/команд, и в отличие от STL может нести также рёбра и нормали поверхностей (для более красивой отрисовки) и дополнительные точки привязки/ключевые точки (например, центры окружностей из исходного CAD, которые иначе теряются при триангуляции).
- STL — распространённый обменный формат сеток; тоже поддерживается, но без дополнительной информации о рёбрах/нормалях/точках привязки.
Как получить OSD
- Импортируйте CAD‑модель (система читает многие распространённые CAD‑форматы) в CAM‑систему.
- На странице Model выберите нужный узел (подпапку).
- Используйте Save as и выберите формат OSD.
Тот же экспорт доступен через CAM API и CAM IPC (см. репозиторий cam-api-examples),
так что подготовку моделей можно автоматизировать скриптами.
5 Визуальная и коллизионная геометрия — держите её лёгкой
Сейчас одна и та же модель используется и для отображения, и для проверки столкновений (в будущем может измениться). Значит, детализация модели — это компромисс между видом и скоростью — предпочитайте скорость: не стройте схемы из чрезмерно детализированного CAD. И CAM‑система, и MachineMaker предоставляют инструмент, который интерактивно помогает удалить невидимые, внутренние или очень мелкие поверхности, чтобы упростить модель. (Фиксированного норматива по числу треугольников нет; проще — лучше.)
Это также связано с настройками Simulation — Revolution bodies simulation и Collisions to ignore — описанными в Machine Setup → Симуляция.
6 Цвета — Use3DModelColors
VisualProperties принимает необязательный логический атрибут Use3DModelColors:
False(по умолчанию) — узел отрисовывается сColor, заданным в егоVisualProperties(побеждает XML‑дескриптор).True— узел отрисовывается цветами, хранящимися в самой 3D‑модели.
<VisualProperties Use3DModelColors="True">
<!-- этот узел сохраняет цвета, запечённые в его .osd‑модели -->
</VisualProperties>
7 Готовые модели
У MachineMaker есть онлайн‑библиотека устройств, роботов, станков и ячеек. Она поставляет готовые наборы (модели плюс дополнительную информацию дескриптора), а не отдельные файлы моделей, и вставляет их в описание ячейки за вас — их нельзя загрузить как отдельные файлы. Поэтому, когда вы готовите схему вручную, вы обычно готовите модели индивидуально для этого станка, получая самодостаточную переносимую папку, описанную в §2.
Назад к Дескрипторам станков | указатель станков