跳轉到

詞彙:SessionProgress(訊息系統)

什麼是 SessionProgress?

SessionProgress (SessionShell.SessionProgress) 是訊息主體物件,管理 HiNC 腳本工作階段中所產生的所有訊息。它是日誌記錄、過濾與診斷資訊匯出的中央樞紐。

Note

舊名 SessionMessageHost 已標記為 [Obsolete]。請改用 SessionProgress


訊息類型

HiNC 提供四種訊息類型,各有不同嚴重程度與典型顯示行為:

類型 命令 說明 典型顯示
Message Message 一般資訊訊息 訊息面板
ProgressMessage ProgressMessage 進度相關狀態更新 進度條/狀態列
WarningMessage WarningMessage 警告(不中斷執行) 訊息面板(黃色)
ErrorMessage ErrorMessage 錯誤(可能影響執行流程) 訊息面板(紅色)

使用範例

Message("Starting simulation");
ProgressMessage("Loading workpiece...");
WarningMessage("No cutting engagement detected in this segment");
ErrorMessage("Workpiece does not exist");

訊息標籤

訊息可加上標籤以利過濾。標準標籤包含 "Error""Warning"。匯出訊息時可依一或多個標籤過濾。


顯示訊息

所有訊息會自動記錄於工作階段訊息主體,並顯示於 HiNC UI 的 訊息面板ProgressMessage 另外會更新 進度條

存取訊息主體

var messageHost = SessionProgress;

匯出訊息

AppendMessagesToFile 將訊息寫入文字檔,可選擇依標籤過濾:

// 匯出所有訊息
AppendMessagesToFile("Output/messages.txt");

// 僅匯出錯誤與警告
AppendMessagesToFile("Output/errors.txt", "Error", "Warning");

Tip

仿真結束後匯出訊息,以建立可長期保存的日誌供除錯或報告之用。


常見樣式

記錄仿真進度

Message("Simulation started");
PlayNcFile("NC/file1.nc");
Message($"Simulation complete. Total steps: {StepCount}");
AppendMessagesToFile("Output/log.txt");

條件式警告

if (StepCount == 0)
{
    WarningMessage("No steps were executed");
}

錯誤防護

if (Workpiece == null)
{
    ErrorMessage("Workpiece does not exist");
    return;
}

透過事件做步級日誌

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

步選取記錄

MachiningStepSelected += (step) => {
    if (step != null && step.ToolId == 1)
        ProgressMessage($"Tool 1 step selected at line {step.LineNo}");
};

訊息生命週期

  1. 訊息於腳本執行期間,透過四個訊息命令產生
  2. 所有訊息皆存於 SessionProgress 主體物件
  3. 訊息會持續存在,直至工作階段結束或運行時重置
  4. ResetRuntime() 清除事件處理器,但 不會 清除已記錄的訊息
  5. 可隨時使用 AppendMessagesToFile 匯出訊息

延伸閱讀