---
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 полученный ранее флаг зеркальной симметрии объекта. Далее создание геометрии для такого макроэлемента не отличается от создании геометрии "нормального" макроэлемента, т.к. зеркальная трансформация геометрии производится функционалом КОМПАС.
Примечание:
Если в макроэлементе есть вставки рисунков, то следует учитывать, что в них так же хранится флаг зеркальной симметрии объекта, который обрабатывается независимо от аналогичного флага в макроэлементе.
