node-occ 接口调用(STEP 模型拾取边/面/点)
@inktank/inktank-node-occ 是基于 OpenCASCADE 封装的 napi 原生模块,在 Electron 插件中用于加载 STEP 模型并做几何拾取(边、面中心、端点等)。
接入
inktank-master:
# 切到测试分支 feat_..._NodeOcc
yarn add @inktank/[email protected] --registry=<内网制品库> --ignore-engines
yarn watch
插件侧(robot-workstation extension)
/* initOccEnv —— 准备 OCC 环境,第一次使用时调用,之后无需再调 */
console.log(await vscode.inktankRobotWorkstation.initOccEnv()); // "Completed OCC environment Initial"
/* loadModeFile —— 加载模型并转换成 glb,返回 glb 文件路径 */
const filePath = await vscode.inktankRobotWorkstation.loadModeFile('D:/modeData/demo/tieban.STEP');
/* getFaceEdgeID —— 拾取边,输入 faceID,返回 edgeId */
const edgeId = await vscode.inktankRobotWorkstation.getFaceEdgeID("_faceID_");
/* getFaceCenter —— 拾取面中心,返回 {x,y,z,qw,qx,qy,qz} */
const p1 = await vscode.inktankRobotWorkstation.getFaceCenter("_faceID_");
/* getFaceNearestVertex —— 拾取端点,输入 faceID + 拾取点(局部坐标系),返回 {x,y,z,qw,qx,qy,qz} */
const point = [1.5, 2.3, 3.7];
const p2 = await vscode.inktankRobotWorkstation.getFaceNearestVertex("_faceID_", point);
/* getEdgeCenter —— 输入 edgeID,返回 {x,y,z,qw,qx,qy,qz} */
const p3 = await vscode.inktankRobotWorkstation.getEdgeCenter("_edgeID_");
/* getFaceEdgeCenter —— 输入 faceID + 拾取点,返回 {edgeId,x,y,z,qw,qx,qy,qz} */
const p4 = await vscode.inktankRobotWorkstation.getFaceEdgeCenter("_faceID_", point);
/* getFaceEdgePnt —— 输入 faceID + 拾取点,返回 {edgeId,x,y,z,qw,qx,qy,qz} */
const p5 = await vscode.inktankRobotWorkstation.getFaceEdgePnt("_faceID_", point);
渲染进程侧(robot-workstation browser)
import { NodeoccCore } from '@/utils/nodeoccCore';
console.log(await NodeoccCore.initOccEnv()); // "Completed OCC environment Initial"
返回值中的
qw,qx,qy,qz为四元数姿态,配合x,y,z位置可直接用于机器人目标点 / 工件坐标系。
原文链接:https://www.ssssmy.com/notes/node-occ-jie-kou-diao-yong-step-mo-xing-shi-qu-bian-mian-dian