|  |  | 
 |  |  |                     hasBox: true | 
 |  |  |                 }, | 
 |  |  |             ], | 
 |  |  |             hasBox: false | 
 |  |  |             hasBox: true | 
 |  |  |         } | 
 |  |  |     ], | 
 |  |  | ] | 
 
 |  |  | 
 |  |  | import * as Common from '@/utils/common'; | 
 |  |  |  | 
 |  |  | // row | 
 |  |  | const shelfRowOffset = 1000; | 
 |  |  | const shelfRowOffset = 850  ; | 
 |  |  | const realRowPos = [0 - shelfRowOffset, 0 + shelfRowOffset, 2420 - shelfRowOffset, 2420 + shelfRowOffset]; | 
 |  |  |  | 
 |  |  | // bay | 
 
 |  |  | 
 |  |  |                     <primitive object={loaderModel} castShadow position={[0, 20, 0]} /> | 
 |  |  |                     <group position-z={forkDis}> | 
 |  |  |                         <primitive object={forkModel} castShadow position={[0, 25, 0]} /> | 
 |  |  |                         {hasBox && <Box position={[0, 24, 0]} />} | 
 |  |  |                         {hasBox && <Box position={[0, 26, 0]} />} | 
 |  |  |                     </group> | 
 |  |  |                 </group> | 
 |  |  |                 <group> | 
 |  |  |                     {realTrayList?.[0]?.hasBox && <Box rotationY={Math.PI / 2} position={[-43, 25, 0]} />} | 
 |  |  |                     {realTrayList?.[1]?.hasBox && <Box rotationY={Math.PI / 2} position={[-43, 48, 0]} />} | 
 |  |  |                     {realTrayList?.[2]?.hasBox && <Box rotationY={Math.PI / 2} position={[-43, 71, 0]} />} | 
 |  |  |                     {realTrayList?.[3]?.hasBox && <Box rotationY={Math.PI / 2} position={[-43, 94, 0]} />} | 
 |  |  |                     {realTrayList?.[4]?.hasBox && <Box rotationY={Math.PI / 2} position={[-43, 117, 0]} />} | 
 |  |  |                     {realTrayList?.[5]?.hasBox && <Box rotationY={Math.PI / 2} position={[-43, 140, 0]} />} | 
 |  |  |                     {realTrayList?.[0]?.hasBox && <Box rotationY={Math.PI / 2} position={[-60, 34, 0]} />} | 
 |  |  |                     {realTrayList?.[1]?.hasBox && <Box rotationY={Math.PI / 2} position={[-60, 66, 0]} />} | 
 |  |  |                     {realTrayList?.[2]?.hasBox && <Box rotationY={Math.PI / 2} position={[-60, 99, 0]} />} | 
 |  |  |                     {realTrayList?.[3]?.hasBox && <Box rotationY={Math.PI / 2} position={[-60, 131, 0]} />} | 
 |  |  |                     {realTrayList?.[4]?.hasBox && <Box rotationY={Math.PI / 2} position={[-60, 163, 0]} />} | 
 |  |  |                     {realTrayList?.[5]?.hasBox && <Box rotationY={Math.PI / 2} position={[-60, 195, 0]} />} | 
 |  |  |                 </group> | 
 |  |  |             </group> | 
 |  |  |         </> | 
 
 |  |  | 
 |  |  |  | 
 |  |  | // model scale rate | 
 |  |  |  | 
 |  |  | export const MODEL_AGV_SCALE = .5; | 
 |  |  | export const BATCH_SCALE = 1.3; | 
 |  |  |  | 
 |  |  | export const MODEL_BOX_SCALE = .5; | 
 |  |  | export const MODEL_AGV_SCALE = .7; | 
 |  |  |  | 
 |  |  | export const MODEL_SHELF_SCALE = { x: 0.8, y: 0.52, z: 0.55 }; | 
 |  |  | export const MODEL_BOX_SCALE = .7; | 
 |  |  |  | 
 |  |  | export const MODEL_SHELF_SCALE = { x: 0.8, y: 0.8, z: 0.75 }; | 
 |  |  |  | 
 |  |  |  | 
 |  |  | // shelf scale & offset | 
 
 |  |  | 
 |  |  |         return shelfData.map((data, index) => <Shelf key={index} {...data} />) | 
 |  |  |     }, []); | 
 |  |  |  | 
 |  |  |     const shelfEl1 = useMemo(() => { | 
 |  |  |         return shelfData.slice(0, 1).map((data, index) => <Shelf key={index} {...data} />) | 
 |  |  |     }, []); | 
 |  |  |  | 
 |  |  |     const boxEl = useMemo(() => { | 
 |  |  |         return boxData.map((data, idx) => <Box key={idx} {...data} />) | 
 |  |  |     }, [boxData]); |