Макропрограммирование K3 в Python: различия между версиями

Материал из K3-Macro
Строка 13: Строка 13:


===Библиотека, функции и команды. Ключевые слова===
===Библиотека, функции и команды. Ключевые слова===
Для использования функционала К3 в программу на Python нужно импортировать специальную библиотеку '''Import k3'''


Все функции и команды K3 вызываются как функции из этой библиотеки с использованием трёх основных принципов:
* Имя функции совпадает с именем команды, но обязательно должно быть написано в нижнем регистре;
* Все аргументы или ключевые слова передаются в функцию в том же порядке, как и при обычном вызове в макропрограмме;
* В Python нет специального обозначения для возвращения результата работы команды ('''#''' в макропрограмме). Поскольку команды – это тоже функции в Python, они возвращают значение обычным образом.
Например, команда рисования линии, возвращающая ссылку на построенный объект
<code>#line1 '''line''' ''0 0 0 100 0 0'' done</code>
В python будет записываться как
<code>line1 = k3.'''line'''(''0, 0, 0, 100, 0, 0,'' k3.k_done)</code>
<code>k3.k_done</code> – это объект соответствующий ключевому слову <code>done</code>. Все ключевые слова записываются для использования в Python таким образом: <code>k3.k_<название></code>, где <code><название></code> — название ключевого слова.
Ключевое слово для интерактивного ввода (то, что в макропрограмме записывалось знаком двоеточия ( : ), в Python запишется как <code>k3.k_interact</code>, например:
<code>k3.'''line'''(''0, 0, 0'', k3.k_interact, k3.k_done)</code>
построит линию от точки '''0''' до точки, введённой пользователем в интерактивном режиме.
{| class="prettytable"
|-
|valign="top"|[[image:eksklamacia.png]]
|'''Функции К3, запущенные через библиотеку К3 в Python, всегда возвращают числа в формате с плавающей точкой (double). Поэтому часто для дальнейшего использования их нужно перевести в целое, например'''
<code>k3.'''getobjnum'''(k3.'''sysvar'''(''60'')) </code>
'''вернёт ошибку, поскольку функция''' <code>'''getobjnum'''</code> '''должна получать на вход целое число, а''' <code>k3.'''sysvar'''()</code> '''вернёт double. Необходимо писать так:'''
<code>k3.'''getobjnum'''('''int'''(k3.'''sysvar'''(''60'')))</code>
|}


===Переменные и массивы K3===
===Переменные и массивы K3===

Версия от 14:06, 14 июля 2022

Общие принципы

Команда macro в К3 может запускать два типа файлов – макропрограмму k3 (файл .mac) и макропрограмму на Python (файл .py). Расширение файла показывает системе, какой интерпретатор использовать.

Также в К3 есть возможность вставить блок кода на Python внутрь файла .mac. Для этого необходимо воспользоваться конструкцией

<?python
…
?>

Для всех строчек кода внутри будет использоваться интерпретатор python.

Библиотека, функции и команды. Ключевые слова

Для использования функционала К3 в программу на Python нужно импортировать специальную библиотеку Import k3

Все функции и команды K3 вызываются как функции из этой библиотеки с использованием трёх основных принципов:

  • Имя функции совпадает с именем команды, но обязательно должно быть написано в нижнем регистре;
  • Все аргументы или ключевые слова передаются в функцию в том же порядке, как и при обычном вызове в макропрограмме;
  • В Python нет специального обозначения для возвращения результата работы команды (# в макропрограмме). Поскольку команды – это тоже функции в Python, они возвращают значение обычным образом.

Например, команда рисования линии, возвращающая ссылку на построенный объект

#line1 line 0 0 0 100 0 0 done

В python будет записываться как

line1 = k3.line(0, 0, 0, 100, 0, 0, k3.k_done)

k3.k_done – это объект соответствующий ключевому слову done. Все ключевые слова записываются для использования в Python таким образом: k3.k_<название>, где <название> — название ключевого слова.

Ключевое слово для интерактивного ввода (то, что в макропрограмме записывалось знаком двоеточия ( : ), в Python запишется как k3.k_interact, например:

k3.line(0, 0, 0, k3.k_interact, k3.k_done)

построит линию от точки 0 до точки, введённой пользователем в интерактивном режиме.

Eksklamacia.png Функции К3, запущенные через библиотеку К3 в Python, всегда возвращают числа в формате с плавающей точкой (double). Поэтому часто для дальнейшего использования их нужно перевести в целое, например

k3.getobjnum(k3.sysvar(60))

вернёт ошибку, поскольку функция getobjnum должна получать на вход целое число, а k3.sysvar() вернёт double. Необходимо писать так:

k3.getobjnum(int(k3.sysvar(60)))

Переменные и массивы K3

Получение параметров в макропрограмму (getpar)