跳轉至

內建函式

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) 將文字資料儲存到檔案;以 UTF-8 寫出 textData,省略 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 短/全符號或 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(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() 以 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() / 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/pixel)
ImageResolutionInNMinv 解析度 (nm⁻¹/pixel)
ImageWidth / ImageHeight 影像尺寸(像素)
ImageSize(w, h) 設定影像尺寸

偵測器

屬性 說明
Tau / TauInDeg 偵測器傾斜角 τ(rad / deg)
Phi / PhiInDeg 偵測器旋轉軸 φ(rad / deg)
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 指數的對應。候選依已指派斑點數遞減、其次依殘差遞增排列。數值以 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 列印(與 File 選單的 Export 3D Model (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 類別

這三個影像模擬類別共用許多成員。為避免重複,下表使用佔位符:

  • #HRTEMSTEMPotential 共用。將 # 替換為 HRTEMSTEMPotential(例如 STEM.Simulate()Potential.AccVol)。
  • $ :僅 HRTEMSTEM 共用。將 $ 替換為 HRTEMSTEM
  • 以明確類別名稱書寫的成員(STEM.… / HRTEM.…)僅屬於該類別。Potential 類別不新增自有成員;它只使用 # 成員。

視窗控制

函式 說明
#.Open() 開啟 HRTEM/STEM 模擬器視窗
#.Close() 關閉 HRTEM/STEM 模擬器視窗
#.Simulate() 以目前設定執行模擬

顯微鏡 / 光學

屬性 / 函式 說明
#.AccVol 加速電壓 (kV)
$.Thickness 試樣厚度 (nm)
$.Defocus 欠焦 (nm)
$.Cs 球面像差 Cs (mm)
$.Cc 色像差 Cc (mm)
$.DeltaV 能量展寬 ΔV,FWHM (eV)
$.Scherzer 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/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) 等待指定的毫秒數

另請參閱