Skip to content
seto edited this page Mar 23, 2026 · 23 revisions

Macro Examples

Practical examples for ReciPro macros.


Example 1: Save diffraction patterns for all crystals

import os

folder = File.GetDirectoryPath()

DifSim.Open()
DifSim.Source_Electron()
DifSim.Energy = 200  # 200 keV
DifSim.Calc_Kinematical()
DifSim.SkipRendering = True

for i in range(80):  # adjust to your crystal count
    CrystalList.SelectedIndex = i
    name = Crystal.Name
    Direction.ProjectAlongAxis(0, 0, 1)
    DifSim.SaveAsPng(os.path.join(folder, name + "_001.png"))
    Direction.ProjectAlongAxis(1, 1, 0)
    DifSim.SaveAsPng(os.path.join(folder, name + "_110.png"))

DifSim.SkipRendering = False

Example 2: Rotate and capture snapshots

import os

folder = File.GetDirectoryPath()
DifSim.Open()
DifSim.Source_Electron()
DifSim.Energy = 200

Direction.ProjectAlongAxis(0, 0, 1)

for i in range(90):
    DifSim.SaveAsPng(os.path.join(folder, "rot_%03d.png" % i))
    Direction.RotateAroundAxisInDeg(1, 0, 0, 1)

Example 3: Set Euler angles

Direction.EulerInDeg(45, 30, 60)

import math
Direction.Euler(math.pi/4, math.pi/6, math.pi/3)

Example 4: Project along planes and axes

Direction.ProjectAlongPlane(1, 1, 1)  # (111) normal → screen
Direction.ProjectAlongAxis(1, 1, 0)   # [110] → screen

Example 5: Batch-import CIF files

files = File.GetFileNames()
for f in files:
    File.ReadCrystal(f)
    CrystalList.Add()

Example 6: Export spot information

DifSim.Open()
Direction.ProjectAlongAxis(0, 0, 1)
info = DifSim.SpotInfo()
File.SaveText(info, "spot_info.csv")

Tips

  • Set DifSim.SkipRendering = True during batch operations to speed up processing. Reset to False afterwards.
  • Use Sleep(ms) to pause execution when you need to wait for rendering to complete.
  • Use the macro editor's built-in help to check function signatures and descriptions.

See also

Clone this wiki locally