e1337e4016
docs/Kompas3D_SDK/ становится каноническим источником справки КОМПАС SDK и включается в репозиторий (2491 файл, ~14 МБ). HTML-зеркало docs/KOMPAS_SDK_ru-RU/ (~1.4 ГБ, © АСКОН) и генератор tools/build_kompas3d_sdk.py больше не нужны — регенерация не предполагается. - .gitignore: MD-база разблокирована; зеркало остаётся проигнорированным (safety-net на случай повторной локальной выгрузки). - CLAUDE.md / SKILL.md: убраны упоминания регенерации и зеркала. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
22 lines
5.6 KiB
Markdown
22 lines
5.6 KiB
Markdown
---
|
||
title: "Редактирование зеркально отраженных библиотечных макроэлементов"
|
||
type: guide
|
||
api: [api7]
|
||
tags: [guide, api7, mirrored]
|
||
sources:
|
||
- mirrored_macro.html
|
||
---
|
||
|
||
*Создание прикладных библиотек > Рекомендации по созданию прикладных библиотек *
|
||
|
||
В Placement (см. ksDocument2D::ksPlacement, lPlacement) макроэлементов хранится флаг зеркальной симметрии объекта. Если при операциях, выполняемых базовым функционалом системы КОМПАС, происходит зеркальное отображение макроэлемента, имеющего Placement, то для полученного в результате операции макроэлемента флаг зеркальной симметрии автоматически инвертируется. Поэтому, если макроэлементы, создаваемые при помощи прикладных библиотек, будут в дальнейшем редактировать библиотеками, необходимо задавать этим макроэлементам Placement.
|
||
Макроэлементы, у которых не задан Placement и геометрия которых была зеркально отражена (например, операцией Симметрия), не могут быть корректно отредактированы библиотеками - после редактирования их геометрия вернется в нормальное (не зеркальное) состояние.
|
||
Чтобы определить, является ли геометрия макроэлемента зеркально отображенной, можно воспользоваться функцией ksGetMacroPlacementEx (ksDocument2D::ksGetMacroPlacementEx). Если в параметре mirrorSymmetry (флаг зеркальной симметрии объекта) вернется ненулевое значение, то геометрия макроэлемента зеркально отображена.
|
||
Если редактирование при помощи библиотеки макроэлемента, имеющего Placement, reference на который получен через EditMacroMode (ksDocument2D::ksEditMacroMode), запускается двойным щелчком мыши или через хот-точки, проверять, является ли он зеркально отображенным, и принимать какие-то другие меры для сохранения правильного отображения геометрии не нужно. Корректное отображение геометрии в данном случае обеспечится функционалом КОМПАС. В данном случае функции SetMacroPlacement и GetMacroPlacement можно использовать без ограничений.
|
||
Если при создании нового макроэлемента нужно, чтобы его геометрия была сразу зеркально отображена, то следует задать макроэлементу Placement функцией ksSetMacroPlacementEx (ksDocument2D::ksSetMacroPlacementEx), значение параметра mirrorSymmetry которой надо задать равным 1. Далее создание геометрии для такого макроэлемента не отличается от создании геометрии "нормального" макроэлемента, т.к. зеркальная трансформация геометрии производится функционалом системы КОМПАС-3D.
|
||
Если редактирование макроэлемента, запускаемое двойным щелчком мыши или через хот-точки, проводится путем удаления исходного макроэлемента и построения нового, то при необходимости сохранения зеркального построения геометрии следует выполнить следующие действия.
|
||
1. Получить у исходного макроэлемента признак зеркальной симметрии объекта (параметр mirrorSymmetry функции GetMacroPalcementEx).
|
||
2. Задать Placement нового макроэлемента при помощи функции ksSetMacroPlacementEx (ksDocument2D::ksSetMacroPlacementEx), передав в нее в параметре mirrorSymmetry полученный ранее флаг зеркальной симметрии объекта. Далее создание геометрии для такого макроэлемента не отличается от создании геометрии "нормального" макроэлемента, т.к. зеркальная трансформация геометрии производится функционалом КОМПАС.
|
||
Примечание:
|
||
Если в макроэлементе есть вставки рисунков, то следует учитывать, что в них так же хранится флаг зеркальной симметрии объекта, который обрабатывается независимо от аналогичного флага в макроэлементе.
|