開發者專區

FLUX 雷射 SDK / API 整合

用自己的程式碼驅動 FLUX 雷射機。Beam Studio Easy API 以一個簡單的 JavaScript 類別涵蓋完整工作流程:載入設計、計算工作、啟動機器、追蹤進度。

認識 Beam Studio Easy API

Beam Studio 內建名為 Easy API 的指令碼介面:全域的 EasyManipulator 類別可連線機器、載入設計並執行工作,讓你的系統以程式化方式完成雷射加工。指令碼是純 JavaScript(.js)檔案,可匯入 Beam Studio 執行,也能在選單「說明 ▸ Debug Tool」開啟的主控台中直接測試。

工作流程

從指令碼到完成加工

每個整合都走同樣四個步驟。

  1. 1

    連線機器

    建立 EasyManipulator 實例,用 selectMachine() 以機器名稱連線。

  2. 2

    載入設計

    將 BVG(Beam Studio 的 SVG 格式,圖層帶有速度、功率與重複次數等參數)傳入 loadBVG()。

  3. 3

    計算工作

    calculate() 會先進行切片運算,並回傳預估加工時間。

  4. 4

    啟動與監控

    start() 將工作上傳機器並開始加工;用 getStatus() 追蹤進度,隨時可暫停、恢復或中止。

範例

用程式碼送出加工工作

完整指令碼:連線、載入 BVG 設計、估算時間、啟動並追蹤進度。

easy-api-example.js
let main = async () => {
  // BVG is Beam Studio's SVG-based job format: each layer carries its own
  // laser parameters (speed, power, repeat) as data attributes.
  const bvg = `
    <svg id="svgcontent" width="3000" height="2100"
         xmlns="http://www.w3.org/2000/svg"
         data-top="-1300" data-left="-512" data-zoom="0.115"
         data-rotary_mode="false" data-engrave_dpi="medium">
      <g class="layer" data-repeat="1" data-strength="1" data-speed="20" data-color="#333333">
        <title>Default</title>
        <rect x="201.86" y="196.98" width="713.46" height="913.57" fill="black" stroke="#333333"/>
      </g>
    </svg>`;

  const beamAPI = new EasyManipulator();

  beamAPI.addEventListener("LOAD", () => console.log("BVG loaded"));
  beamAPI.addEventListener("DONE", () => console.log("Task done"));
  beamAPI.addEventListener("ERROR", (event) => console.log("Error", event.detail));

  await beamAPI.selectMachine("Your Machine Name");
  await beamAPI.loadBVG(bvg);

  const { timeCost } = await beamAPI.calculate();
  console.log("Estimated time cost:", timeCost);

  await beamAPI.start();

  // Poll state and progress while the machine works.
  setInterval(() => console.log(beamAPI.getStatus()), 2000);
};

main();
API 參考

EasyManipulator 方法

方法功能回傳值
selectMachine(name)以名稱連線指定機器。Promise<Boolean>
loadBVG(bvg)將 BVG 設計內容載入工作區。Promise<Boolean>
calculate()對工作進行切片運算並估算加工時間。Promise<{ success, timeCost }>
start()將工作上傳至機器並開始加工。Promise<Boolean>
pause()暫停進行中的工作。Boolean
resume()恢復已暫停的工作。Boolean
abort()停止並取消目前的工作。Boolean
getStatus()回報機器狀態與工作進度。{ state, progress }
事件與狀態

以事件驅動,而不是計時器

EasyManipulator 繼承 EventTarget,指令碼以 addEventListener 與 removeEventListener 訂閱事件。

事件觸發時機
LOAD設計檔案載入完成。
CALCULATED切片與時間估算完成。
UPLOADING工作資料開始傳輸至機器。
UPLOADED工作資料傳輸完成。
DONE工作執行完成。
ERROR操作失敗,詳細資訊在 event.detail。

getStatus() 會回報五種機器狀態之一:IDLE、READY、BUSY、WORKING、COMPLETED,並附上進度百分比,方便把長時間工作的進度接進你自己的儀表板或排程系統。

把 FLUX 整合進你的工作流程

完整的 Easy API 文件與 Beam Studio 原始碼都發佈在 GitHub。整合過程有任何問題,歡迎與我們聯繫。