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

マクロの使用例

ReciProマクロの具体的な使用例を紹介します。


例1: 結晶リストの全結晶の回折パターンを保存

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):  # 結晶数に合わせて変更
    CrystalList.SelectedIndex = i
    name = Crystal.Name
    Direction.ProjectAlongAxis(0, 0, 1)  # [001] に投影
    DifSim.SaveAsPng(os.path.join(folder, name + "_001.png"))
    Direction.ProjectAlongAxis(1, 1, 0)  # [110] に投影
    DifSim.SaveAsPng(os.path.join(folder, name + "_110.png"))

DifSim.SkipRendering = False

例2: 結晶を段階的に回転しながらスナップショット

import os

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

# [001] から開始
Direction.ProjectAlongAxis(0, 0, 1)

# 1度ずつ回転しながら90枚保存
for i in range(90):
    DifSim.SaveAsPng(os.path.join(folder, "rot_%03d.png" % i))
    Direction.RotateAroundAxisInDeg(1, 0, 0, 1)  # a軸周りに1度回転

例3: オイラー角の設定

# オイラー角を度で指定して結晶方位を設定
Direction.EulerInDeg(45, 30, 60)

# 同じことをラジアンで
import math
Direction.Euler(math.pi/4, math.pi/6, math.pi/3)

例4: 結晶面の法線方向に投影

# (111) 面の法線方向をスクリーンに垂直にする
Direction.ProjectAlongPlane(1, 1, 1)

# [110] 晶帯軸方向をスクリーンに垂直にする
Direction.ProjectAlongAxis(1, 1, 0)

例5: CIFファイルの一括読み込み

# 複数のCIFファイルを選択して読み込み
files = File.GetFileNames()
for f in files:
    File.ReadCrystal(f)
    CrystalList.Add()

例6: スポット情報の取得

# 回折シミュレータのスポット情報をCSVとして取得
DifSim.Open()
Direction.ProjectAlongAxis(0, 0, 1)
info = DifSim.SpotInfo()
File.SaveText(info, "spot_info.csv")

ヒント

  • DifSim.SkipRendering = True を設定すると、画面描画をスキップしてバッチ処理を高速化できます。処理後は False に戻してください。
  • Sleep(ms) でスクリプトの実行を一時停止できます。描画の完了を待つ場合に有用です。
  • マクロエディタ内でヘルプテキストを表示して、各関数の引数と説明を確認できます。

関連項目

Clone this wiki locally