Макропрограммирование K3 в Python: различия между версиями
Метка: визуальный редактор отключён |
|||
Строка 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 до точки, введённой пользователем в интерактивном режиме.