Перейти к содержанию

Встроенные функции

Полный справочник классов и функций, доступных в макросах ReciPro.


Класс File

Функция Описание
File.GetDirectoryPath(filename) Показать диалог выбора папки, вернуть выбранный путь; с filename возвращается папка, в которой лежит этот файл
File.GetFileName() Показать диалог выбора файла, вернуть выбранный путь
File.GetFileNames() Показать диалог выбора нескольких файлов, вернуть список путей
File.ReadCrystalList(filename) Загрузить файл списка кристаллов (*.xml); без filename откроется диалог
File.ReadCrystal(filename) Загрузить файл кристалла CIF/AMC; без filename откроется диалог
File.ExportAsCIF(filename) Экспортировать текущий кристалл как CIF; без filename откроется диалог
File.ReadText(filename) Прочитать текстовый файл как UTF-8 и вернуть строкой; без filename откроется диалог. Используется в паре с Crystal.LoadCifText() / SaveText()
File.SaveText(textData, filename) Сохранить текстовые данные в файл; записывает textData в UTF-8, без filename откроется диалог сохранения

Класс Crystal

Читает выбранный кристалл и — через отложенный черновик — создаёт и редактирует кристаллы.

Чтение

Свойство / Функция Описание
Crystal.Name Название кристалла
Crystal.ChemicalFormula Химическая формула
Crystal.Density Плотность (g/cm³)
Crystal.GetCellInAng() Параметры ячейки в виде [a, b, c, alpha, beta, gamma] (Å, градусы)
Crystal.SpaceGroupName Символ Германа-Могена пространственной группы, с суффиксом установки (:2, :H, …) где применимо
Crystal.SpaceGroupNumber Номер пространственной группы по International Tables (1–230)
Crystal.HasPending Открыт ли черновик

Создание и редактирование (черновик → Commit)

Кристалл собирается в отложенном черновике: начните его, заполните сеттерами, и Commit() всё проверит, построит кристалл и применит его как текущий за один шаг (обновляются GUI и все открытые симуляторы, как при загрузке CIF-файла). Неудачный Commit() сообщает все ошибки проверки разом, ничего не меняет и сохраняет черновик, так что его можно исправить и закоммитить снова.

Функция Описание
Crystal.BeginCreate(name) Начать черновик нового кристалла
Crystal.BeginEdit() Начать черновик от текущего кристалла (ячейка, пространственная группа, атомы и ориентация переносятся)
Crystal.LoadCifText(cifText) Начать черновик из текста CIF (содержимое файла .cif, а не путь)
Crystal.SetName(name) Переименовать черновик
Crystal.SetCellInAng(a, b, c, alpha, beta, gamma) Параметры ячейки в Å и градусах. Каждый вызов заменяет ячейку целиком; опущенные аргументы выводятся из ограничений пространственной группы (для кубического кристалла достаточно a), а явные значения, противоречащие им, вызывают ошибку
Crystal.SetSpaceGroup(symbol) Пространственная группа по символу (HM краткий/полный или Холла; пробелы и _ игнорируются). При нескольких установках добавьте установку ('Fd-3m:2', 'R-3c:H', 'P21/c:b1') — неоднозначный символ вызывает ошибку со списком кандидатов
Crystal.SetSpaceGroupByNumber(itNumber, setting) Пространственная группа по номеру IT (1–230); setting ('1', '2', 'H', 'R', 'b1', …) выбирает среди нескольких установок
Crystal.AddAtom(label, element, x, y, z, occ, bIso) Добавить атом асимметричной единицы: символ элемента, дробные координаты, заселённость (0 < occ ≤ 1, по умолчанию 1) и изотропный B в Ų (по умолчанию 0). Эквивалентные позиции, буквы Уайкоффа и кратности выводятся автоматически
Crystal.ClearAtoms() Удалить все атомы из черновика
Crystal.Commit() Проверить, построить и применить черновик
Crystal.Cancel() Отбросить черновик
ReciPro.Crystal.BeginCreate('NaCl')
ReciPro.Crystal.SetSpaceGroup('Fm-3m')
ReciPro.Crystal.SetCellInAng(5.6402)
ReciPro.Crystal.AddAtom('Na', 'Na', 0, 0, 0)
ReciPro.Crystal.AddAtom('Cl', 'Cl', 0.5, 0.5, 0.5)
ReciPro.Crystal.Commit()

base = ReciPro.Crystal.GetCellInAng()
for k in range(-2, 3):
    ReciPro.Crystal.BeginEdit()
    ReciPro.Crystal.SetCellInAng(base[0] * (1 + 0.01 * k))
    ReciPro.Crystal.Commit()

После успешного Commit() следующий BeginEdit() начинается с обновлённого кристалла, поэтому изменения накапливаются — для абсолютных сканов считайте базовые значения перед циклом, как выше. Чтобы занести кристалл в список кристаллов, вызовите CrystalList.Add().


Класс CrystalList

Функция / Свойство Описание
CrystalList.SelectedIndex Получить/задать индекс выбранного кристалла
CrystalList.Count Число кристаллов в списке
CrystalList.Add() Добавить текущий кристалл в список
CrystalList.Replace() Заменить выбранный кристалл
CrystalList.Delete() Удалить выбранный кристалл
CrystalList.ClearAll() Очистить все кристаллы
CrystalList.MoveUp() Переместить выбранный кристалл вверх
CrystalList.MoveDown() Переместить выбранный кристалл вниз

Класс Dir

Функция Описание
Dir.Euler(phi, theta, psi) Задать ориентацию через углы Эйлера (радианы)
Dir.EulerInDegree(phi, theta, psi) Задать ориентацию через углы Эйлера (градусы)
Dir.EulerInDeg(phi, theta, psi) Псевдоним для EulerInDegree
Dir.Rotate(ax, ay, az, angle) Поворот вокруг произвольной оси (радианы)
Dir.RotateInDeg(ax, ay, az, angle) Поворот вокруг произвольной оси (градусы)
Dir.RotateAroundAxis(u, v, w, angle) Поворот вокруг оси зоны [uvw] (радианы)
Dir.RotateAroundAxisInDeg(u, v, w, angle) Поворот вокруг оси зоны [uvw] (градусы)
Dir.RotateAroundPlane(h, k, l, angle) Поворот вокруг нормали к плоскости (hkl) (радианы)
Dir.RotateAroundPlaneInDeg(h, k, l, angle) Поворот вокруг нормали к плоскости (hkl) (градусы)
Dir.ProjectAlongPlane(h, k, l) Установить нормаль к плоскости перпендикулярно экрану
Dir.ProjectAlongAxis(u, v, w) Установить ось зоны перпендикулярно экрану
Dir.GetEuler() Получить текущую ориентацию как углы Эйлера Z-X-Z [phi, theta, psi] (радианы)
Dir.GetEulerInDeg() Получить текущую ориентацию как углы Эйлера Z-X-Z [phi, theta, psi] (градусы)
Dir.GetRotationMatrix() Получить текущую матрицу поворота как массив из девяти элементов [R11, R12, R13, R21, R22, R23, R31, R32, R33] — то же соглашение, что и в SpotID.CandidateList()
Dir.SetRotationMatrix(r11, r12, r13, r21, r22, r23, r31, r32, r33) Задать ориентацию по девяти элементам матрицы поворота (перед применением проверяются и реортонормируются)

Углы Эйлера неоднозначны в вырожденных положениях (θ = 0 или 180°): GetEuler() после Euler() воспроизводит ту же ориентацию, но не обязательно те же числа. Для точного сохранения и восстановления ориентации используйте Dir.GetRotationMatrix() / Dir.SetRotationMatrix(). Полное соглашение описано в разделе Геометрия вращения.


Класс DifSim

Управление окном

DifSim.Open() / DifSim.Close()

Источник волны

DifSim.Source_Xray() / DifSim.Source_Electron() / DifSim.Source_Neutron()

Свойства

Свойство Тип Описание
Energy double Энергия (keV)
Wavelength double Длина волны (Å)
Thickness double Толщина образца (nm)
NumberOfDiffractedWaves int Число блоховских волн
CameraLength2 double Длина камеры (mm)
SkipRendering bool Пропустить отрисовку для пакетной обработки

Режим пучка

Beam_Parallel() / Beam_PrecessionXray() / Beam_PrecessionElectron() / Beam_Convergence()

Режим расчёта

Calc_Excitation() / Calc_Kinematical() / Calc_Dynamical()

Настройки изображения

Свойство / Функция Описание
ImageResolutionInMM Разрешение (mm/пиксель)
ImageResolutionInNMinv Разрешение (nm⁻¹/пиксель)
ImageWidth / ImageHeight Размер изображения (пиксели)
ImageSize(w, h) Задать размер изображения

Детектор

Свойство Описание
Tau / TauInDeg Угол наклона детектора τ (rad / градусы)
Phi / PhiInDeg Ось поворота детектора φ (rad / градусы)
Foot(x, y) Положение foot в пикселях

Вывод

Функция Описание
SaveAsPng(filename) Сохранить текущую картину как PNG; без filename откроется диалог
SpotInfo() Получить данные о рефлексах в виде строки CSV

Класс SpotID

Управляет Spot ID v2 из макроса: загрузить изображение или список рефлексов, обнаружить рефлексы, найти ориентации и получить кандидатов — не трогая окно. FindSpots() и Identify() возвращают управление только по завершении работы, поэтому их можно вызывать подряд.

Управление окном

SpotID.Open() / SpotID.Close()

Источник излучения

SpotID.Source_Xray() / SpotID.Source_Electron() / SpotID.Source_Neutron()

Порядок работы

Функция Описание
SpotID.LoadFile(filename) Загрузить файл так же, как File > Load: .csv читается как список рефлексов (изображение должно быть загружено заранее), любое другое расширение — как изображение дифракционной картины (dm3, dm4, mrc, ipa, tif и другие поддерживаемые форматы). Без filename откроется диалог выбора файла
SpotID.FindSpots() Обнаружить рефлексы на загруженном изображении и подогнать их, как это делает кнопка Find spots
SpotID.Identify() Найти ориентации, объясняющие обнаруженные рефлексы, как это делает кнопка Identify spots, и вернуть число кандидатов. Проверяются кристаллы, выбранные в списке кристаллов главного окна
SpotID.CandidateList() Вернуть список ориентаций-кандидатов в виде текста CSV
SpotID.SpotList() Вернуть наблюдённые рефлексы в виде текста CSV с теми же столбцами, что и File > Save. Вместе с File.SaveText() получается файл, который LoadFile() умеет читать обратно

CandidateList() даёт для каждого кандидата: название кристалла, углы Эйлера Z-X-Z (град.), девять элементов матрицы поворота R11–R33 (из системы кристалла в лабораторную, применяется к столбцовым векторам), среднеквадратичную невязку (nm⁻²) и сопоставление наблюдённых рефлексов индексам hkl. Кандидаты упорядочены по числу сопоставленных рефлексов (по убыванию), затем по невязке (по возрастанию). Числа записываются в инвариантной культуре, поэтому десятичный разделитель — всегда точка.

Свойства

Свойство Тип Описание
Energy double Энергия пучка (keV для рентгена и электронов, meV для нейтронов)
CameraLength double Длина камеры (mm)
PixelSizeInMM double Размер пикселя (mm); чтение или запись также переключает единицу размера пикселя на mm
PixelSizeInNMinv double Размер пикселя (nm⁻¹); чтение или запись также переключает единицу на nm⁻¹
MaxNumberOfSpots int Максимальное число рефлексов, которое может обнаружить FindSpots()
NearestNeighbor int Минимальное расстояние, допускаемое между обнаруженными рефлексами (пиксели)
FittingRange double Радиус области вокруг каждого рефлекса, используемой для подгонки пика (пиксели)
AcceptableError double Допуск на относительную разность межплоскостных расстояний при сопоставлении рефлексов (%)
IgnoreProhibitedReflections bool Игнорировать кинематически запрещённые отражения, которые всё же могут возникать за счёт многократной дифракции
MultiGrain bool Искать несколько зёрен; False означает одно зерно
MaxNumberOfGrains int Максимальное число ориентаций зёрен при MultiGrain = True
NumberOfDetectedSpots int Число обнаруженных рефлексов (только чтение)
NumberOfCandidates int Число кандидатов, найденных последним Identify() (только чтение)

Класс StructureViewer

Управляет просмотрщиком структуры из макроса. SaveImage() и Export3DModel() при необходимости сначала открывают окно, так как 3D-модель строится при его показе.

Функция Описание
StructureViewer.Open() Открыть окно просмотрщика структуры
StructureViewer.Close() Закрыть окно просмотрщика структуры
StructureViewer.SaveImage(filename) Сохранить отрисованный главный вид как PNG в пиксельном размере из поля Size (W×H); без filename откроется диалог
StructureViewer.Export3DModel(filename, maxSizeInMM, fixedScaleInMMperNm, includeAtoms, includeBonds, includePolyhedra, polyhedraAsEdges, polyEdgeDiaInMM, includeCellEdges, cellEdgeDiaInMM, thickenBondsToMM) Экспортировать отображаемую структуру для 3D-печати, как Export 3D Model (3MF/STL) в меню File. Расширение задаёт формат (.stl одноцветный / .3mf с окраской по элементам); обязателен только filename — остальные значения по умолчанию совпадают с диалогом (наибольший размер 80 mm, рёбра ячейки ⌀2,4 mm, утолщение связей до ⌀1,2 mm). При fixedScaleInMMperNm > 0 несколько моделей получают общий масштаб
ReciPro.StructureViewer.Export3DModel('D:/print/NaCl_60mm.stl', maxSizeInMM=60)
ReciPro.StructureViewer.Export3DModel('D:/print/NaCl_edges.stl', maxSizeInMM=60, polyhedraAsEdges=True)

Классы HRTEM / STEM / Potential

Эти три класса симуляции изображений имеют много общих членов. Чтобы избежать повторений, в таблицах ниже используются заполнители:

  • # : общие для HRTEM, STEM и Potential. Замените # на HRTEM, STEM или Potential (например, STEM.Simulate(), Potential.AccVol).
  • $ : общие только для HRTEM и STEM. Замените $ на HRTEM или STEM.
  • Члены, записанные с явным именем класса (STEM.… / HRTEM.…), принадлежат только этому классу. Класс Potential не добавляет собственных членов; он использует только члены #.

Управление окном

Функция Описание
#.Open() Открыть окно симулятора изображений
#.Close() Закрыть окно симулятора изображений
#.Simulate() Запустить симуляцию с текущими настройками

Микроскоп / оптика

Свойство / Функция Описание
#.AccVol Ускоряющее напряжение (kV)
$.Thickness Толщина образца (nm)
$.Defocus Дефокусировка (nm)
$.Cs Сферическая аберрация Cs (mm)
$.Cc Хроматическая аберрация Cc (mm)
$.DeltaV Разброс энергии ΔV, FWHM (eV)
$.Scherzer Дефокусировка Шерцера (nm, только чтение)
STEM.ConvergenceAngle Полуугол сходимости (mrad)
STEM.DetectorInnerAngle / STEM.DetectorOuterAngle Внутренний/внешний полуугол кольцевого детектора (mrad)
STEM.EffectiveSourceSize Эффективный размер источника, FWHM (pm)
HRTEM.Beta Полуугол освещения β (радианы)
HRTEM.ApertureSemiangle Полуугол апертуры объектива (радианы)
HRTEM.ApertureShiftX / HRTEM.ApertureShiftY Смещение апертуры объектива (радианы)
HRTEM.OpenAperture Апертура объектива открыта (true/false)

Свойства симуляции

Свойство / Функция Описание
#.NumberOfDiffractedWaves Максимальное число дифрагированных (блоховских) волн
#.ImageWidth / #.ImageHeight Размер изображения (пиксели)
#.ImageSize(width, height) Задать размер изображения (пиксели)
#.ImageResolution Разрешение изображения (nm/пиксель)
STEM.AngularResolution Угловое разрешение сходящегося пучка (mrad)
STEM.SliceThickness Толщина слоя для расчёта TDS (nm)
HRTEM.Mode_LinearImage() Использовать модель линейного изображения (квазикогерентную)
HRTEM.Mode_TCC() Использовать модель TCC (transmission cross coefficient)

Режим одиночного / серийного изображения

Свойство / Функция Описание
$.SingleImageMode() Переключиться в режим одиночного изображения
$.SerialImageMode(withThickness, withDefocus) Переключиться в режим серии изображений
$.SerialImageThicknessStart / Step / Num Серия по толщине: начало (nm) / шаг (nm) / количество
$.SerialImageDefocusStart / Step / Num Серия по дефокусировке: начало (nm) / шаг (nm) / количество

Свойства изображения

Свойство / Функция Описание
#.UnitCellVisible Показать элементарную ячейку (true/false)
#.LabelVisible Показать подпись изображения (true/false)
#.LabelSize Размер шрифта подписи
#.ScaleBarVisible Показать шкалу масштаба (true/false)
#.ScaleBarLength Длина шкалы масштаба (nm)
#.GaussianBlurEnabled Применить гауссово размытие (true/false)
#.GaussianBlurFWHM FWHM гауссова размытия (pm)
STEM.DisplayBoth() Показать и упругую, и TDS-компоненту
STEM.DisplayElastic() Показать только упругую компоненту
STEM.DisplayTDS() Показать только TDS-(неупругую) компоненту

Сохранение изображения

Свойство / Функция Описание
#.SaveImageAsPng(filename) Сохранить как PNG (диалог, если filename опущен)
#.SaveImageAsTif(filename) Сохранить как TIFF (диалог, если filename опущен)
#.SaveImageAsEmf(filename) Сохранить как метафайл EMF (диалог, если filename опущен)
#.SaveIndividually В серийном режиме сохранять каждое изображение отдельно (true/false)
#.OverprintSymbols Наносить элементарную ячейку / подписи / шкалу масштаба на сохраняемые изображения (true/false)

Глобальные функции

Функция Описание
Sleep(ms) Ожидать указанное число миллисекунд

См. также