跳轉到

詞彙:腳本命令

什麼是腳本命令?

腳本命令 即 HiNC 腳本引擎執行的 C# 敘述。腳本直接引用 SessionShell (API) 的成員與方法 — SessionShell 即全域作用域,無需明確物件參考。

// 以下都是直接以 SessionShell 成員作為全域使用
EnablePhysics = true;
MachiningResolution_mm = 0.125;
PlayNcFile("NC/file1.nc");
Message("Done");

腳本語法基礎

腳本使用 原生 C# 語法:

功能 語法
敘述結尾 ;
行尾註解 // comment
字串插值 $"Value is {variable}"
正無限大 double.PositiveInfinity
負無限大 double.NegativeInfinity
位元 OR(旗標) Fx|Fy|Fz

所有標準 C# 語言特性(變數、迴圈、條件、LINQ 等)皆可使用。


腳本任務頁

在 HiNC GUI 中,任務 (Task) 頁含有一或多個腳本面板。每個面板具有:

  • Order:執行順序(由左至右、由上至下)
  • Enabled:腳本是否執行(未勾選即跳過)
  • Title:人類參考用標籤,不影響功能

執行模型

工作階段生命週期

  1. 腳本依 Task 頁順序執行
  2. PacePlayer (API) 控制播放 — PlayNcFile 之類的腳本命令會阻塞至 NC 程式完成
  3. 播放器控制命令(PacePauseReset)與 PacePlayer 互動
  4. ResetRuntime 清除事件處理器、緩衝區與運行時狀態

事件驅動執行

SessionStepBuilt 等事件於仿真期間觸發,可作步級邏輯:

SessionStepBuilt += (preStep, curStep) => {
    if (curStep != null)
        Message($"Step: ToolId={curStep.ToolId}");
};
PlayNcFile("NC/file1.nc");

事件由 ResetRuntime 清除。


NC 碼中的腳本命令

腳本命令可嵌入 NC 註解。以 ;@ 開頭的行會在該 NC 行執行 之前 執行:

T01 M06 (;@MachiningResolution_mm=0.03125;)
S1270 M03
G43 Z10. H01

對於不支援 ; 為註解字元的控制器(如 FANUC),請包在註解區塊內:

T01 M06 (;@MachiningResolution_mm=0.03125;)

檔案路徑樣板

輸出檔的命令支援 [NcName] 標記,會替換為各 NC 檔名稱:

PlayNcFile("NC/file1.nc");
PlayNcFile("NC/file2.nc");
WriteShotFiles("Output/[NcName].shot.csv", 1);
// 產生:Output/file1.nc.shot.csv、Output/file2.nc.shot.csv

所有檔案路徑除非指定為絕對路徑,否則皆以 專案目錄 為基準。


重要警告

下列操作可能損壞仿真狀態或產生錯誤結果:

  • 仿真期間請勿儲存專案。 系統內部配置(如訓練專屬的解析度覆寫)可能覆寫你的設定。
  • 訓練銑削係數期間請勿重置播放器。 請改以關閉專案的方式,避免意外錯誤。
  • 訓練期間請勿修改解析度、刀具或控制器設定。 在訓練中途改變這些設定會使結果無效。
  • 請勿將 SessionStepBuilt 事件中的 UpdateNcOptOption 與 NC 內嵌優化命令併用。 並行計算可能造成未定義行為。

全域變數

Global 提供跨腳本共享資料的鍵值字典:

Global["material"] = "Steel";
var material = Global["material"];

完整 API 參考

完整命令、屬性與事件清單請參閱:

延伸閱讀