You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

208 lines
4.8 KiB

type LinkType = 'in' | 'out' | 'center'
interface CurrentMouseInfo {
/**
* 当前鼠标所在的设计图
*/
viewport: any
/**
* 鼠标在设计图上的 X 坐标
*/
x: number
/**
* 鼠标在设计图上的 Y 坐标
*/
z: number
/**
* 鼠标在设计图上的坐标, 归一化到 [0, 1] 范围
*/
mouse: any
}
interface InitThreeOption {
stateManagerId: string
}
interface InteractionCudOption {
}
/**
* 渲染器操作选项
*/
interface RendererCudOption {
createFromInteraction: boolean
}
/**
* 实体操作选项
*/
interface EntityCudOption {
/**
* 原始实体对象
*/
originEntity?: ItemJson
}
interface IGridHelper {
/**
* 启用坐标轴
*/
axesEnabled: boolean;
/**
* 坐标轴大小, 单位米
*/
axesSize: number;
/**
* 坐标轴分割数
*/
axesDivisions: number;
/**
* 坐标轴颜色, 十六进制颜色值
*/
axesColor: number;
/**
* 坐标轴透明度
*/
axesOpacity: number;
/**
* 启用网格
*/
gridEnabled: boolean;
/**
* 网格大小, 单位米
*/
gridSize: number;
/**
* 网格分割数
*/
gridDivisions: number;
/**
* 网格颜色, 十六进制颜色值
*/
gridColor: number;
/**
* 网格透明度
*/
gridOpacity: number;
/**
* 启用吸附
*/
snapEnabled: boolean;
/**
* 吸附距离, 单位米
*/
snapDistance: number;
}
/**
* 物体单元(点)
* 举例:
* {
* id: 'p1', // 物体唯一ID
* t: 'measure', // 物体类型, measure表示测量, 需交给 itemType.name == 'measure' 的组件处理
* tf: [ // 变换矩阵, 3x3矩阵, 采用Y轴向上为正, X轴向右, Z轴向前的右手坐标系
* [-9.0, 0, -1.0], // 平移向量 position
* [0, 0, 0], // 旋转向量 rotation, 表示绕Y轴旋转的角度, 单位为度。对应 three.js 应进行"角度"转"弧度"的换算
* [0.25, 0.1, 0.25] // 缩放向量 scale
* ],
* dt: { // 实体的自定义数据
* label: '测量1', // 标签名称, 显示用
* color: '#ff0000', // 颜色, 显示用. 十六进制颜色值
* center: ['p2'], // S连线(又称逻辑连线), 与其他点之间的无方向性关联, 关系的起点需要在他的 dt.center[] 数组中添加目标点的id, 关系的终点需要在他的 dt.center[] 数组中添加起点的 id
* in: [], // A连线(又称物体流动线)的输入, 关系的终点需要在 dt.in[] 数组中添加起点的 id
* out: [] // A连线(又称物体流动线)的输出, 关系的起点需要在 dt.out[] 数组中添加目标点的 id
* ...其他属性
* }
* }
*/
interface ItemJson {
/**
* 对应 three.js 中的 uuid, 物体ID, 唯一标识, 需保证唯一, 有方法可以进行快速的 O(1) 查找
*/
id?: string
/**
* 物体名称, 显示用, 最后初始化到 three.js 的 name 中, 可以不设置, 可以不唯一, 但他的查找速度是 O(N)
*/
name?: string
/**
* "点"的物体单元类型, 最终对应到 measure / conveyor / task 等不同的单元处理逻辑中
*/
t: string
/**
* 可见行, 对应 THREE.Object3D 的 visible
*/
v: boolean
/**
* 变换矩阵, 3x3矩阵, 采用Y轴向上为正, X轴向右, Z轴向前的右手坐标系
*/
tf: [
/**
* 平移向量 position, 三维坐标
*/
[number, number, number],
/**
* 旋转向量 rotation, 表示绕Y轴旋转的角度, 单位为度。对应 three.js 应进行"角度"转"弧度"的换算
*/
[number, number, number],
/**
* 缩放向量 scale, 三维缩放比例
*/
[number, number, number],
]
/**
* 用户数据, 可自定义, 一般用在 three.js 的 userData 中
*/
dt: {
/**
* 标签名称, 显示用, 每个单元类型的 renderer 有自己的渲染逻辑
*/
label?: string
/**
* 颜色, 每个单元类型的 renderer 有自己的渲染逻辑
*/
color?: string
/**
* S连线(又称逻辑连线), 与其他点之间的无方向性关联, 关系的起点需要在他的 dt.center[] 数组中添加目标点的id, 关系的终点需要在他的 dt.center[] 数组中添加起点的 id
*/
center?: string[]
/**
* A连线(又称物体流动线)的输入, 关系的终点需要在 dt.in[] 数组中添加起点的 id
*/
in?: string[]
/**
* A连线(又称物体流动线)的输出, 关系的起点需要在 dt.out[] 数组中添加目标点的 id
*/
out?: string[]
/**
* 是否可以被选中, 默认 true
*/
selectable?: boolean
/**
* 是否受保护, 不可在图形编辑器中拖拽, 默认 false
*/
protected?: boolean
/**
* 其他自定义数据, 可以存储任何数据
*/
[key: string]: any
},
}