--- title: "ksOpenMacro - Открыть макроэлемент для редактирования" type: guide api: [api7] tags: [guide, api7, ksopenmacro] sources: - ksopenmacro.html --- *API экспортных функций > Функции работы с графическим документом  > Создание графических объектов  > Работа с макроэлементами и библиотечными макроэлементами  > Функции работы с макроэлементами и библиотечными макроэлементами * ## ksOpenMacro - Открыть макроэлемент для редактирования Пример... Аналог данной функции при использовании Automation - метод ksDocument2D::ksOpenMacro. Синтаксис: ``` int ksOpenMacro(reference macro); Входной параметр: macro - указатель на макроэлемент. Возвращаемое значение: 1 - в случае успешного завершения, 0 - в случае неудачи. ``` Примечание: 1. После вызова функции можно добавлять в macro новые объекты вида, использовать функцию FindObj; режим закрывается функцией EndObj(); 2. Открыт доступ к внутренним объектам макроэлементов. Теперь при создании макроэлемента или при добавлении к макроэлементу новых объектов вида, на внутренние объекты выдается указатель (reference), как и на самостоятельные объекты вида. Пример.... 3. Допускается вводить пустой макроэлемент. Пустой макроэлемент является вырожденным объектом. Он живет только в период редактирования документа. После записи документа, в котором находился пустой макро, этот макро будет удален. Макроэлемент считается нормальным, если в нем находится хотя бы один внутренний объект. Пример… 4. Функции работы с указателями на объекты допускают работу с внутренними объектами макроэлемента. К ним относятся: – CopyObj – DecomposeObj – DeleteObj – GetObjGabaritRect – GetObjParam – ksEditViewObject – LightObj – MoveObj – RotateObj – SetObjParam – SymmetryObj – TransformObj ## ksOpenMacro - пример использования Macro (0); LineSeg(50,100, 100, 150, 1); reference p = EndObj(); Message("Создан макроэлемент"); ksOpenMacro (p); Macro (0); reference cir = Circle(50, 50, 20, 1); reference p1 = EndObj(); EndObj(); Message("Макроэлемент отредактирован"); ## ksOpenMacro - пример использования //самостоятельный объект вида reference l = LineSeg(10, 10, 20, 20, 1); Macro(0); //внутренний объект макроэлемента reference l1 = LineSeg(50,100, 100, 150, 1); reference p = EndObj(); ksOpenMacro (p); //внутренний объет макроэлемента Macro(0); reference cir = Circle(50, 50, 20, 1); reference p1 = EndObj(); EndObj(); ## ksOpenMacro - пример использования Macro(0); reference p = EndObj(); ksOpenMacro (p); //внутренний объет макроэлемента Macro(0); reference cir = Circle(50, 50, 20, 1); reference p1 = EndObj(); EndObj();