跳轉至

巨集

ReciPro 內建以 IronPython 為基礎的巨集系統,可透過指令稿自動執行晶體操作、繞射模擬與影像模擬。

巨集編輯器

上方的螢幕擷圖已開啟 顯示範例,顯示內建的範例巨集。巨集清單在左側、程式碼編輯器在右側,底部則是內建函式的說明表。


鍵盤與滑鼠快捷鍵

快捷鍵 動作
F1 開啟線上手冊的本頁
CTRL+S 將編輯器文字儲存回所選的巨集清單項目
F10 前進一步(逐步執行期間)
雙擊函式說明清單中的某一列 在插入點插入該函式的簽章
.mcr 檔拖放到視窗上 載入到編輯器中

RunStepStop 為按鈕(無鍵盤快捷鍵)。

→ 一覽所有視窗請參閱 21. 鍵盤與滑鼠快捷鍵


概觀

巨集以 Python 語法撰寫。使用 ReciPro 的內建類別與函式,您可以透過程式化方式執行與 GUI 相同的操作。

  • 語言:Python 3(IronPython 3.4)
  • 儲存:以壓縮二進位格式儲存於 Windows 登錄檔(可跨工作階段保留)
  • 存取:在主視窗按一下 Macro 按鈕即可開啟巨集編輯器

編輯器視窗

巨集編輯器有四個主要區域:

區域 用途
巨集清單(左側) 已儲存的巨集。Add 會附加一個新巨集,Replace 會覆寫所選的巨集,Delete 會移除它。Up/Down 可重新排序。
名稱欄位(上方) 目前正在編輯的巨集識別碼。
程式碼區(右側) Python 程式碼編輯器,附行號邊欄、自動縮排與語法說明彈出視窗。
內建函式表(下方) ReciPro 所提供之內建函式/屬性的清單,每項皆附 Help 說明。撰寫程式碼時的參考。
狀態列(最下方) Line N, Col M 顯示目前插入點的位置。
偵錯面板(於 Step 執行期間顯示) 列出目前行的區域變數。

當有未儲存的編輯時,標題列會顯示 Macro*(含星號);在 Add / Replace / CTRL+S 之後則回復為 Macro

範例巨集

開啟 顯示範例(左上角)會以內建的範例巨集暫時取代您的巨集清單(基本迴圈與條件式、數學函式、旋轉/對齊、掃描晶體清單、繞射/影像模擬、傾斜/能量序列、繞射點資訊等等)。這些範例為唯讀,並以目前的 UI 語言顯示;可用於學習,或作為複製的起點。將其關閉即會還原您自己的巨集。


編輯功能

  • 自動縮排:按下 ENTER 時,下一行會沿用目前行的前導空白。若該行以 : 結尾(位於 def/if/for/等之後),則會自動加入一個額外的縮排層級(4 個空格)。
  • 智慧型 Backspace:在前導空白內,BACKSPACE 會移除整個縮排層級(4 個空格),而非單一字元。
  • TAB / SHIFT+TAB
  • 未選取時:在插入點插入/移除一個縮排層級。
  • 多行選取時:一次縮排/取消縮排所有選取的行。
  • 自動完成:輸入時,彈出視窗會列出相符的函式名稱與語言關鍵字。方向鍵可導覽,ENTERTAB 接受,ESC 取消。
  • 工具提示說明:將游標停在所選的自動完成項目上時,會顯示其說明文件。

鍵盤快捷鍵

快捷鍵 動作
CTRL+S 將目前的程式碼儲存到所選的巨集項目(原地)
F10 跳至下一行(於 Step 執行期間)
ENTER 插入換行並自動縮排
TAB / SHIFT+TAB 縮排/取消縮排
BACKSPACE 若位於前導空白內,刪除一個縮排層級
CTRL+ / CTRL+ 不適用 — 請使用 Up/Down 按鈕重新排序巨集

執行巨集

兩種執行模式:

  • Run macro:執行程式碼直到結束。發生錯誤時會彈出對話方塊顯示 Python traceback,並在編輯器中標示出問題行。
  • Step by step:在每一行之前暫停。偵錯面板會顯示區域變數。使用 F10(或 Next step (F10) 按鈕)前進,或以 Stop 中止。

Stop 僅在 Step 模式下有效(標準的 Run macro 執行無法中斷,因為 IronPython 不遵循 CancellationToken,且所有作業皆在 UI 執行緒上執行)。


Python 語言支援

此巨集環境為 IronPython 3.4。並非所有 Python 功能在此都有意義。

已預先匯入

  • 啟動時會匯入 math。可直接使用 math.sqrt(x)math.sin(x)math.pimath.radians(deg) 等。

可使用

  • 控制流程:if/elif/elseforwhiledefclassreturntry/except/finallypassbreakcontinuelambda
  • 字面值:TrueFalseNone
  • 內建函式:lenrangeabsminmaxsumsortedenumeratezipintfloatstrlistdicttupletypeisinstance
  • 純 Python 的標準函式庫模組:randomdatetimetimerejsonitertoolsfunctoolscollections

這些基礎項目已預先註冊於自動完成彈出視窗,因此您可以輸入前幾個字母來探索它們。

不可使用

  • print():沒有主控台視窗;輸出無處可去。請使用 Step by step 並查看偵錯面板來檢視值。
  • input():沒有 stdin。
  • 檔案 I/Oopenwith open):不適用於巨集。請改用 ReciPro.File.* 輔助函式。
  • C 擴充套件numpyscipypandasmatplotlib — 與 IronPython 不相容。

API 存取

ReciPro 巨集 API 公開於頂層名稱 ReciPro 之下。每個內建類別都是 ReciPro 的一個欄位:

ReciPro.File.*         # File I/O helpers
ReciPro.Crystal.*      # Currently selected crystal
ReciPro.CrystalList.*  # Manage the crystal list
ReciPro.Dir.*          # Crystal orientation (Euler, zone-axis, rotation)
ReciPro.DifSim.*       # Diffraction simulator
ReciPro.HRTEM.*        # HRTEM simulation
ReciPro.STEM.*         # STEM simulation
ReciPro.Potential.*    # Potential simulation
ReciPro.Sleep(ms)      # Pause execution (milliseconds)

自動完成彈出視窗一律顯示完整的 ReciPro.Class.Member 形式並逐字插入,因此您很少需要手動輸入前綴。

完整的 API 參考請參閱 20.1. 內建函式


錯誤訊息

當巨集失敗時,對話方塊會以標準格式顯示 Python traceback:

Traceback (most recent call last):
  File "<string>", line 5, in <module>
NameError: name 'abc' is not defined

編輯器會自動選取 traceback 中所報告的行(最內層的框架),讓您可以立即修正問題。語法錯誤也會在執行開始前以行號回報。


另請參閱