開發者專區
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
連線機器
建立 EasyManipulator 實例,用 selectMachine() 以機器名稱連線。
- 2
載入設計
將 BVG(Beam Studio 的 SVG 格式,圖層帶有速度、功率與重複次數等參數)傳入 loadBVG()。
- 3
計算工作
calculate() 會先進行切片運算,並回傳預估加工時間。
- 4
啟動與監控
start() 將工作上傳機器並開始加工;用 getStatus() 追蹤進度,隨時可暫停、恢復或中止。
範例
用程式碼送出加工工作
完整指令碼:連線、載入 BVG 設計、估算時間、啟動並追蹤進度。
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。整合過程有任何問題,歡迎與我們聯繫。
