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
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
|
|
},
|
|
}
|