#
luxiaotao1123
2024-04-26 65ab695aadfac96fa121986cf1b53966aeab7c2f
#
3个文件已修改
43 ■■■■ 已修改文件
src/components/box.jsx 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/config/setting.js 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/common.js 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/box.jsx
@@ -2,7 +2,7 @@
import { useFrame } from '@react-three/fiber';
import { useFBX, useAnimations } from '@react-three/drei';
import * as THREE from 'three';
import { MODEL_BOX_SCALE } from '@/config/setting'
import { MODEL_BOX_SCALE, SHELF_BAY_GROUP_COUNT } from '@/config/setting'
import * as Common from '../utils/common';
import { useStore } from '@/store';
@@ -11,7 +11,7 @@
}
const getShelfBay = (bay) => {
    return bay - (bay - 1) % 3;
    return bay - (bay - 1) % SHELF_BAY_GROUP_COUNT;
}
const getShelfLev = (lev) => {
@@ -19,7 +19,7 @@
}
const getShelfNo = (row, bay, lev) => {
    return getShelfRow(row) + '-' + getShelfBay(bay) + '-' + getShelfLev(lev);
    return Common.generateLocNo(getShelfRow(row), getShelfBay(bay), getShelfLev(lev));
}
const Box = (props) => {
@@ -27,6 +27,7 @@
    const state = useStore();
    const [pos, setPos] = useState([]);
    const [rotaY, setRotaY] = useState(0);
    const boxModel = useMemo(() => {
        const fbx = useFBX('/models/box/box.fbx');
@@ -42,16 +43,22 @@
            // from shelf
            const shelfNo = getShelfNo(row, bay, lev);
            const shelfPos = state.shelfList[shelfNo];
            setPos(shelfPos);
            const { row: shelfRow, bay: shelfBay, lev: shelfLev } = Common.parseLocNo(shelfNo);
            console.log([shelfPos[0], shelfPos[1] + (bay - shelfBay) * 100, shelfPos[2] + (lev - shelfLev) * 100]);
            setPos([shelfPos[0], shelfPos[1] + (bay - shelfBay) * 10, shelfPos[2] + (lev - shelfLev) * 100]);
            setRotaY(Math.PI / 2);
        } else {
            // from agv
            setPos(position);
            setRotaY(rotationY);
        }
    }, [props]);
    return (
        <>
            <group rotation-y={rotationY} position={pos}>
            <group rotation-y={rotaY} position={pos}>
                <primitive object={boxModel} castShadow />
            </group>
        </>
src/config/setting.js
@@ -8,14 +8,22 @@
export const INTERVAL_TIME = 500;
// model scale rate
export const MODEL_AGV_SCALE = .5;
export const MODEL_BOX_SCALE = .5;
export const MODEL_SHELF_SCALE = 1;
// shelf scale & offset
export const REAL_COMPARE_MAP_SCALE = .1;
export const REAL_COMPARE_MAP_OFFSET_X = -200;
export const REAL_COMPARE_MAP_OFFSET_Z = -600;
export const REAL_COMPARE_MAP_OFFSET_Z = -600;
// shelf setting
export const SHELF_BAY_GROUP_COUNT = 3;
src/utils/common.js
@@ -76,4 +76,20 @@
        }
    }
    return true;
}
export const parseLocNo = (locNo) => {
    if (!locNo || typeof locNo !== 'string') {
        return null;
    }
    const locParseArr = locNo.split('-');
    return {
        row: locParseArr?.[0],
        bay: locParseArr?.[1],
        lev: locParseArr?.[2],
    }
}
export const generateLocNo = (row, bay, lev) => {
    return row + '-' + bay + '-' + lev;
}