获取 3D 选中对象
tuo-document 的点选通过 pointDetecting 模式完成。进入模式后,用户在 3D 场景中选取一点,onFinish 收到该点的坐标字符串。
import { types } from "@tuo/document";
doc.dispatch({
type: types.START_PROCESS,
payload: {
type: "pointDetecting",
config: { onFinish: (pointText: string) => console.log("选中点:", pointText) },
},
});
返回值形如 x_y_z,例如 "10.000_15.000_20.500"。完成点选后退出模式:
doc.dispatch({ type: types.QUIT_PROCESS });
如果需要读取被捕捉对象,可从 Redux 状态读取 raycast.selected,再使用 utils.getNodeKeyByRaycast 获取节点 ID:
import { utils } from "@tuo/document";
const state = doc.mainStore.getState();
const selected = state.raycast.selected;
const nodeId = selected ? utils.getNodeKeyByRaycast(selected) : undefined;
console.log({ selected, nodeId });
pointDetecting 适合点位拾取、标签定位和 PMI 创建;节点选择状态适合业务属性面板和对象级操作。