Макрос¶
ReciPro включает систему макросов на основе IronPython для автоматизации операций с кристаллами, симуляций дифракции и симуляций изображений посредством сценариев.
На приведённом выше снимке экрана включён режим Показать примеры, отображающий встроенные образцы макросов. Список макросов находится слева, редактор кода — справа, а таблица справки по встроенным функциям — внизу.
Сочетания клавиш и мыши¶
| Сочетание | Действие |
|---|---|
| F1 | Открыть эту страницу онлайн-руководства |
| CTRL+S | Сохранить текст редактора обратно в выбранную запись списка макросов |
| F10 | Перейти на один шаг вперёд (при пошаговом выполнении) |
| Двойной щелчок по строке в списке справки по функциям | Вставить сигнатуру этой функции в позиции каретки |
Перетащить файл .mcr на окно |
Загрузить его в редактор |
Run, Step и Stop — это кнопки (без клавиш-акселераторов).
→ См. 21. Сочетания клавиш и мыши для обзора всех окон сразу.
Обзор¶
Макросы пишутся в синтаксисе Python. Используя встроенные классы и функции ReciPro, вы можете программно выполнять те же операции, которые доступны через графический интерфейс.
- Язык: Python 3 (IronPython 3.4)
- Хранение: Сжатый двоичный формат в реестре Windows (сохраняется между сеансами)
- Доступ: Нажмите кнопку Макрос в главном окне, чтобы открыть редактор макросов
Окно редактора¶
Редактор макросов имеет четыре основные области:
| Область | Назначение |
|---|---|
| Список макросов (слева) | Сохранённые макросы. Add добавляет новый макрос, Replace перезаписывает выбранный, Delete удаляет его. Up/Down изменяют порядок. |
| Поле имени (вверху) | Идентификатор редактируемого макроса. |
| Область кода (справа) | Редактор кода Python с полосой номеров строк, автоматическим отступом и всплывающей подсказкой по синтаксису. |
| Таблица встроенных функций (внизу) | Список встроенных функций/свойств, предоставляемых ReciPro, каждое с описанием справки. Справочник при написании кода. |
| Строка состояния (в самом низу) | Показывает текущую позицию каретки в виде Line N, Col M. |
| Панель отладки (видна при пошаговом выполнении) | Перечисляет локальные переменные в текущей строке. |
В строке заголовка отображается Macro* (со звёздочкой), пока есть несохранённые изменения, и она возвращается к Macro после Add / Replace / CTRL+S.
Образцы макросов¶
При включении Показать примеры (вверху слева) ваш список макросов временно заменяется встроенными образцами макросов (простые циклы и условия, математические функции, поворот/выравнивание, обход списка кристаллов, симуляция дифракции/изображений, серии по наклону/энергии, сведения о рефлексах и многое другое). Образцы доступны только для чтения и отображаются на текущем языке интерфейса; используйте их для обучения или как отправную точку для копирования. При отключении восстанавливаются ваши собственные макросы.
Возможности редактирования¶
- Автоматический отступ: При нажатии ENTER следующая строка наследует ведущие пробелы текущей строки. Если строка заканчивается на
:(послеdef/if/for/и т. д.), автоматически добавляется один дополнительный уровень отступа (4 пробела). - Умный Backspace: Внутри ведущих пробелов BACKSPACE удаляет целый уровень отступа (4 пробела) вместо одного символа.
- TAB / SHIFT+TAB:
- Без выделения: вставить / удалить один уровень отступа в позиции каретки.
- Многострочное выделение: увеличить / уменьшить отступ всех выделенных строк сразу.
- Автодополнение: По мере ввода всплывающее окно перечисляет подходящие имена функций и ключевые слова языка. Клавиши со стрелками для навигации, ENTER или TAB принимает, ESC отменяет.
- Справка во всплывающей подсказке: При наведении на выбранную запись автодополнения отображается её документация.
Сочетания клавиш¶
| Сочетание | Действие |
|---|---|
| CTRL+S | Сохранить текущий код в выбранную запись макроса (на месте) |
| F10 | Перейти к следующей строке (при пошаговом выполнении) |
| ENTER | Вставить новую строку с автоматическим отступом |
| TAB / SHIFT+TAB | Увеличить / уменьшить отступ |
| BACKSPACE | Удалить один уровень отступа, если внутри ведущих пробелов |
| CTRL+↑ / CTRL+↓ | Не применяется — используйте кнопки Up/Down для изменения порядка макросов |
Выполнение макросов¶
Два режима выполнения:
- Run macro: Выполнить код до конца. При ошибках появляется диалог с трассировкой стека Python и подсвечивается проблемная строка в редакторе.
- Step by step: Приостановка перед каждой строкой. Панель отладки показывает локальные переменные. Используйте F10 (или кнопку Next step (F10)) для продолжения либо Stop для прерывания.
Stop работает только в режиме пошагового выполнения (обычное выполнение Run macro нельзя прервать, поскольку IronPython не учитывает CancellationToken и всё выполняется в потоке пользовательского интерфейса).
Поддержка языка Python¶
Эта среда макросов — IronPython 3.4. Не все возможности Python здесь имеют смысл.
Предварительно импортировано¶
mathимпортируется при запуске. Используйтеmath.sqrt(x),math.sin(x),math.pi,math.radians(deg)и т. д. напрямую.
Доступно¶
- Управление потоком:
if/elif/else,for,while,def,class,return,try/except/finally,pass,break,continue,lambda - Литералы:
True,False,None - Встроенные функции:
len,range,abs,min,max,sum,sorted,enumerate,zip,int,float,str,list,dict,tuple,type,isinstance - Модули стандартной библиотеки на чистом Python:
random,datetime,time,re,json,itertools,functools,collections
Эти основы предварительно зарегистрированы во всплывающем окне автодополнения, так что вы можете обнаружить их, введя первые несколько букв.
НЕ доступно¶
print(): нет окна консоли; вывод никуда не направляется. Используйте Step by step и смотрите панель отладки, чтобы проверить значения.input(): нет stdin.- Файловый ввод-вывод (
open,with open) : не предназначен для макросов. Используйте вместо него вспомогательные функцииReciPro.File.*. - Пакеты на C-расширениях:
numpy,scipy,pandas,matplotlib— не совместимы с IronPython.
Доступ к API¶
API макросов ReciPro предоставляется под именем верхнего уровня ReciPro. Каждый встроенный класс является полем ReciPro:
ReciPro.File.* # File I/O helpers
ReciPro.Crystal.* # Currently selected crystal
ReciPro.CrystalList.* # Manage the crystal list
ReciPro.Dir.* # Crystal orientation (Euler, zone-axis, rotation)
ReciPro.DifSim.* # Diffraction simulator
ReciPro.HRTEM.* # HRTEM simulation
ReciPro.STEM.* # STEM simulation
ReciPro.Potential.* # Potential simulation
ReciPro.Sleep(ms) # Pause execution (milliseconds)
Всплывающее окно автодополнения всегда показывает полную форму ReciPro.Class.Member и вставляет её дословно, поэтому вам редко нужно набирать префикс вручную.
См. 20.1. Встроенные функции для полного справочника по API.
Сообщения об ошибках¶
При сбое макроса диалог показывает трассировку стека Python в стандартном формате:
Traceback (most recent call last):
File "<string>", line 5, in <module>
NameError: name 'abc' is not defined
Редактор автоматически выделяет строку, указанную в трассировке стека (самый внутренний кадр), так что вы можете сразу исправить проблему. Синтаксические ошибки также сообщаются с номерами строк до начала выполнения.
