web-map/src/apis/map/constant.ts

165 lines
5.1 KiB
TypeScript
Raw Normal View History

2025-04-20 00:49:14 +08:00
import { KeydownType, type Options } from '@meta2d/core';
2025-05-08 19:42:45 +08:00
import { invert } from 'lodash-es';
2025-04-20 00:49:14 +08:00
/**
*
*
* 1-910
*/
2025-04-20 00:49:14 +08:00
//#region 点位
export enum MapPointType {
/** 普通点 - 基础导航点,机器人可通过 */
2025-04-20 00:49:14 +08:00
= 1,
/** 等待点 - 机器人等待或暂停的位置 */
2025-04-20 00:49:14 +08:00
,
/** 避让点 - 机器人主动避让其他机器人的点位 */
2025-04-20 00:49:14 +08:00
,
/** 临时避让点 - 动态生成的临时避让位置,有特殊标记 */
2025-04-20 00:49:14 +08:00
,
/** 库区点 - 仓储作业区域 */
,
2025-04-20 00:49:14 +08:00
/** 电梯点 - 机器人乘坐电梯的专用点位 */
2025-04-20 00:49:14 +08:00
= 11,
/** 自动门点 - 需要自动门控制的通行点位 */
2025-04-20 00:49:14 +08:00
,
/** 充电点 - 机器人充电的专用位置,可绑定特定机器人 */
2025-04-20 00:49:14 +08:00
,
/** 停靠点 - 机器人停靠等待的位置,可绑定特定机器人 */
2025-04-20 00:49:14 +08:00
,
/** 动作点 - 机器人执行特定动作的位置(如取货、放货) */
2025-04-20 00:49:14 +08:00
,
/** 禁行点 - 禁止机器人通过的点位 */
2025-05-05 23:21:31 +08:00
,
2025-04-20 00:49:14 +08:00
}
/**
* UI显示和选择
*
*/
2025-04-20 00:49:14 +08:00
export const MAP_POINT_TYPES = Object.freeze(
<[string, MapPointType][]>Object.entries(MapPointType).filter(([, v]) => typeof v === 'number'),
);
//#endregion
/**
* 线
*
*/
2025-04-20 00:49:14 +08:00
//#region 线路
export enum MapRouteType {
/** 直线 - 两点间直线连接 */
2025-04-20 00:49:14 +08:00
线 = 'line',
/** 二阶贝塞尔曲线 - 带一个控制点的曲线 */
2025-05-17 13:08:29 +08:00
线 = 'bezier2',
/** 三阶贝塞尔曲线 - 带两个控制点的曲线,更灵活 */
2025-04-20 00:49:14 +08:00
线 = 'bezier3',
}
/**
* 线
*/
2025-05-08 19:42:45 +08:00
export const MAP_ROUTE_TYPE = invert(MapRouteType);
/**
* 线UI显示和选择
*/
2025-04-20 00:49:14 +08:00
export const MAP_ROUTE_TYPES = Object.freeze(<[string, MapRouteType][]>Object.entries(MapRouteType));
2025-05-06 23:48:21 +08:00
/**
* 线
* 线
*/
2025-05-06 23:48:21 +08:00
export enum MapRoutePassType {
/** 无限制 - 所有机器人都可以通行 */
2025-05-06 23:48:21 +08:00
,
/** 仅空载可通行 - 只有空载的机器人可以通过 */
2025-05-06 23:48:21 +08:00
,
/** 仅载货可通行 - 只有载货的机器人可以通过 */
2025-05-06 23:48:21 +08:00
,
/** 禁行 - 禁止所有机器人通行,显示为虚线 */
2025-05-06 23:48:21 +08:00
= 10,
}
/**
* 线UI显示和选择
*/
2025-05-09 20:15:04 +08:00
export const MAP_ROUTE_PASS_TYPES = Object.freeze(
<[string, MapRoutePassType][]>Object.entries(MapRoutePassType).filter(([, v]) => typeof v === 'number'),
);
2025-04-20 00:49:14 +08:00
//#endregion
/**
*
*
*/
2025-04-20 00:49:14 +08:00
//#region 区域
export enum MapAreaType {
/** 库区 - 仓储作业区域,包含动作点 */
2025-04-20 00:49:14 +08:00
= 1,
/** 互斥区 - 同时只能有一个机器人进入的区域 */
2025-04-20 00:49:14 +08:00
= 11,
/** 非互斥区 - 可以同时有多个机器人进入的区域 */
2025-04-20 00:49:14 +08:00
,
/** 约束区 - 机器人运动受到特定约束的区域 */
,
2025-04-20 00:49:14 +08:00
}
/**
* UI显示和选择
*/
2025-04-20 00:49:14 +08:00
export const MAP_AREA_TYPES = Object.freeze(
<[string, MapAreaType][]>Object.entries(MapAreaType).filter(([, v]) => typeof v === 'number'),
);
//#endregion
/**
*
* Meta2D引擎的编辑器配置参数
*/
2025-04-20 00:49:14 +08:00
export const EDITOR_CONFIG: Options = {
/** 键盘事件类型 - 禁用所有键盘快捷键 */
2025-04-20 00:49:14 +08:00
keydown: KeydownType.None,
/** 严格作用域 - 限制编辑操作范围 */
2025-04-20 00:49:14 +08:00
strictScope: true,
/** 移动连接线 - 禁用拖动时自动移动连接的线条 */
2025-04-20 00:49:14 +08:00
moveConnectedLine: false,
/** 禁用输入 - 禁用文本输入功能 */
2025-04-20 00:49:14 +08:00
disableInput: true,
/** 禁用旋转 - 禁用图形旋转功能 */
2025-04-20 00:49:14 +08:00
disableRotate: true,
/** 禁用尺寸调整 - 允许图形大小调整 */
disableSize: false,
/** 禁用锚点 - 禁用连接锚点显示 */
disableAnchor: false,
/** 禁用空线条 - 不允许创建没有连接点的线条 */
2025-04-20 00:49:14 +08:00
disableEmptyLine: true,
/** 禁用重复线条 - 不允许在同一对点之间创建多条线 */
2025-04-20 00:49:14 +08:00
disableRepeatLine: true,
/** 最小缩放比例 - 画布最小缩放到1% */
minScale: 0.01,
/** 最大缩放比例 - 画布最大缩放到401% */
2025-04-28 20:04:46 +08:00
maxScale: 4.01,
/** 缩放步长 - 每次滚轮滚动的缩放幅度5% */
scaleOff: 0.05,
/** 默认锚点 - 不设置默认锚点 */
2025-04-20 00:49:14 +08:00
defaultAnchors: [],
/** 全局透明度 - 普通状态下图形透明度0为不透明 */
2025-05-01 01:07:16 +08:00
globalAlpha: 0,
/** 激活状态全局透明度 - 选中状态下图形透明度 */
2025-04-28 00:43:33 +08:00
activeGlobalAlpha: 0,
/** 默认字体大小 - 14像素 */
2025-04-20 00:49:14 +08:00
fontSize: 14,
/** 行高倍数 - 1.5倍行高 */
2025-04-20 00:49:14 +08:00
lineHeight: 1.5,
/** 字体族 - 使用系统默认字体 */
2025-04-28 20:04:46 +08:00
fontFamily: 'system-ui',
/** 文本旋转 - 禁用文本跟随图形旋转 */
2025-05-25 00:07:22 +08:00
textRotate: false,
/** 文本水平对齐 - 居中对齐 */
2025-05-25 00:07:22 +08:00
textAlign: 'center',
/** 文本垂直基线 - 顶部对齐 */
2025-05-25 00:07:22 +08:00
textBaseline: 'top',
2025-04-20 00:49:14 +08:00
};