コンテンツにスキップ

組み込み関数一覧

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 クラス

現在選択中の結晶の読み取りと、pending 下書きを介した結晶の生成・編集を行います。

読み取り

プロパティ / 関数 説明
Crystal.Name 結晶名
Crystal.ChemicalFormula 化学式
Crystal.Density 密度(g/cm³)
Crystal.GetCellInAng() セル定数を [a, b, c, alpha, beta, gamma](Å・度)で取得
Crystal.SpaceGroupName 空間群の Hermann–Mauguin 記号(複数設定がある群では :2:H などの設定サフィックス付き)
Crystal.SpaceGroupNumber International Tables の空間群番号(1–230)
Crystal.HasPending pending 下書きが開いているか

生成・編集 (下書き → Commit)

結晶は pending 下書きで組み立てます: 下書きを開始し、setter で値を入れ、Commit() が全検証 → 結晶の構築 → 現在の結晶への適用を一括で行います (CIF ファイル読み込みと同じように、GUI と表示中の全シミュレータが更新されます)。Commit() が失敗したときは検証エラーを全件まとめて報告し、現在の結晶は変更せず、下書きも保持されるので、修正してそのまま再 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 短縮/full か Hall。空白と _ は無視)。複数設定がある群では設定を付ける('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)。等価位置・Wyckoff 記号・多重度は自動導出
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()更新後の結晶が起点になるため、変更は累積します — 絶対値でスキャンするときは上の例のようにループ前に基準値を読んでください。Commit した結晶を結晶リストへ登録するには 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(axis_x, axis_y, axis_z, angle) 任意軸周りに回転(ラジアン)
Dir.RotateInDeg(axis_x, axis_y, axis_z, 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) 結晶面 (hkl) の法線をスクリーン垂直方向に設定
Dir.ProjectAlongAxis(u, v, w) 晶帯軸 [uvw] をスクリーン垂直方向に設定
Dir.GetEuler() 現在の方位を Z-X-Z オイラー角 [phi, theta, psi](ラジアン)で取得
Dir.GetEulerInDeg() 現在の方位を Z-X-Z オイラー角 [phi, theta, psi](度)で取得
Dir.GetRotationMatrix() 現在の回転行列を 9 要素配列 [R11, R12, R13, R21, R22, R23, R31, R32, R33] で取得(SpotID.CandidateList() と同じ規約)
Dir.SetRotationMatrix(r11, r12, r13, r21, r22, r23, r31, r32, r33) 回転行列の 9 要素から方位を設定(検証と再直交化を経て適用)

オイラー角はジンバル位置(θ = 0, 180°)で一意に決まらないため、Euler() の後の GetEuler() は同じ姿勢を再現しますが、同じ数値列になるとは限りません。方位を正確に保存・復元するには Dir.GetRotationMatrix() / Dir.SetRotationMatrix() を使ってください。 規約の詳細は回転ジオメトリを参照してください。


DifSim クラス

回折シミュレータを操作します。

ウィンドウ制御

関数 説明
DifSim.Open() 回折シミュレータウィンドウを開く
DifSim.Close() 回折シミュレータウィンドウを閉じる

波源の設定

関数 説明
DifSim.Source_Xray() X線源に設定
DifSim.Source_Electron() 電子線源に設定
DifSim.Source_Neutron() 中性子線源に設定

プロパティ

プロパティ 説明
DifSim.Energy double エネルギー (keV)
DifSim.Wavelength double 波長 (Å)
DifSim.Thickness double 試料厚さ (nm)
DifSim.NumberOfDiffractedWaves int ブロッホ波の数
DifSim.CameraLength2 double カメラ長 (mm)
DifSim.ExcitationError double スポット半径 (nm⁻¹)。運動学/励起誤差モードの SpotInfo() は |Sg| がこの値以内の反射を出力する
DifSim.SkipRendering bool 描画のスキップ(バッチ処理で高速化)

入射ビームモード

関数 説明
DifSim.Beam_Parallel() 平行ビーム
DifSim.Beam_PrecessionXray() X線歳差
DifSim.Beam_PrecessionElectron() 電子線歳差 (PED)
DifSim.Beam_Convergence() 収束ビーム (CBED)

計算モード

関数 説明
DifSim.Calc_Excitation() 励起誤差のみ
DifSim.Calc_Kinematical() 運動学的理論
DifSim.Calc_Dynamical() 動力学的理論

画像設定

プロパティ/関数 説明
DifSim.ImageResolutionInMM 解像度 (mm/pixel)
DifSim.ImageResolutionInNMinv 解像度 (nm⁻¹/pixel)
DifSim.ImageWidth / ImageHeight 画像サイズ (pixel)
DifSim.ImageSize(w, h) 画像サイズを設定

検出器パラメータ

プロパティ 説明
DifSim.Tau / TauInDeg 検出器傾斜角 τ(ラジアン/度)
DifSim.Phi / PhiInDeg 検出器回転軸方向 φ(ラジアン/度)
DifSim.Foot(x, y) Foot位置のピクセル座標

出力

関数 説明
DifSim.SaveAsPng(filename) 現在の回折パターンをPNGファイルとして保存。filename を省略するとダイアログを開く
DifSim.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 オイラー角(度)・回転行列の 9 成分 R11〜R33(結晶座標系→実験室座標系、列ベクトルに作用)・残差の平均二乗(nm⁻²)・観測スポットと hkl 指数の対応を返します。候補は割り当てられたスポット数の降順、次いで残差の昇順に並びます。数値は invariant culture で書き出されるため、小数点は常にピリオドです。

プロパティ

プロパティ 説明
Energy double 入射線のエネルギー(X線・電子線は 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 MultiGrainTrue のときに探索する粒方位の最大数
NumberOfDetectedSpots int 検出されたスポット数(読み取り専用)
NumberOfCandidates int 直前の Identify() が見つけた候補数(読み取り専用)

StructureViewer クラス

結晶構造ビューアをマクロから駆動します。3D モデルはウィンドウ表示時に構築されるため、SaveImage()Export3DModel() は必要なら先にウィンドウを開きます。

関数 説明
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 プリント用に出力(ファイルメニューの 3Dモデルを出力 (3MF/STL) と同じ)。形式は拡張子で決まる(.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 クラス

この3つの画像シミュレーションクラスは多くのメンバーを共有します。重複を避けるため、下表ではプレースホルダを使います。

  • # : HRTEMSTEMPotential に共通。#HRTEM / STEM / Potential に置き換えて使います(例: STEM.Simulate()Potential.AccVol)。
  • $ : HRTEMSTEM にのみ共通。$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 画像サイズ (pixel)
#.ImageSize(width, height) 画像サイズを設定 (pixel)
#.ImageResolution 画像解像度 (nm/pixel)
STEM.AngularResolution 収束ビームの角度分解能 (mrad)
STEM.SliceThickness TDS計算用のスライス厚さ (nm)
HRTEM.Mode_LinearImage() 線形像(準コヒーレント)モデルを使用
HRTEM.Mode_TCC() TCC(透過相互係数)モデルを使用

単一/シリーズ画像モード

プロパティ/関数 説明
$.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) 指定ミリ秒だけ待機

関連項目