Глава 5. Сценарии

Вы также можете создавать свои типы (макротипы, или просто макросы) на языке Python. Такую возможность, кроме Kig, имеет только Dr.Geo.

Сценарии Python в Kig позволяют создать ваш собственный метод построения объектов (используя всё же базовые). Например, если у вас есть свой метод вычисления определённой точки на конусе, то вместо сложных конструкций и макротипов, вы сможете написать его реализацию на Python, а Kig отобразит её.

Пример. Предположим, вам не нравится как строится серединная точка в Kig, вы хотите построить её по-своему между двумя данными точками. Нажмите кнопку   Сценарий Python на панели инструментов или через меню ОбъектыДругиеСценарий Python. Появится ассистент, который поможет осуществить задуманное.

Ассистент создания объекта из сценария

Первое, что вам нужно будет сделать, — выбрать аргументы, требуемые для построения объекта. В нашем примере, это две точки. Выберите их в окне Kig и нажмите Далее.

Отобразится текстовое окно для ввода кода. Там уже будет шаблон с комментариями. Важно убедиться, что введённый вами код соответствует синтаксису Python. Знакомые с языком Python пользователи отметят, что на самом деле мы определяем функцию Python под названием calc. Поэтому необходимо соблюдать правила Python для определения функций. Например, каждая строка функции должна начинаться с табуляции. Первая же строка без неё сообщает об окончании определения функции.

Главная функция, которая должна быть определена, называется «calc», в нашем случае она принимает два аргумента. Это объекты, которые вы выбрали в предыдущем окне мастера. Они называются arg1 и arg2, но вы можете изменить их имена на более понятные для вас.

В функциях вы можете выполнять все нужные вам типы расчётов, используя, при надобности, аргументы. Функция должна возвращать объект. В нашем случае — это точка (типа Point, два наших аргумента также имеют этот тип). Мы можем использовать функцию Point.coordinate() для определения координат данных точек.

В нашем примере расчёт очень прост. Нужно сложить две координаты и разделить сумму на два. Затем строится точка. Код на Python будет следующий:

def calc( a, b ):
    m = ( a.coordinate() + b.coordinate() ) / 2;
    return Point( m )
Ввод кода для серединной точки в мастере создания объекта из сценария...

После нажатия кнопки Готово, новый объект появится в документе Kig. Если вы переместите одну из точек, вновь построенная серединная точка также переместится. Таким способом, можно построить объекты много сложнее, чем в примере. Попробуйте сделать это самостоятельно.

Объект из сценария построен

В коде Python могут использоваться все объекты Kig. Точки принадлежат к классу Point, и можно использовать, например, метод Point.coordinate(). Полный список классов и их методов, доступных в Python, находится здесь.