95 lines
2.8 KiB
TypeScript
95 lines
2.8 KiB
TypeScript
|
import { ArrayExt } from '../../common/base/ArrayExt.js';
|
||
|
import { PlaceBoard,PlaceMaterial } from '../../confClass.js';
|
||
|
import { hasModelInBoardBorder } from './DisposeModelInBoardBorder.js';
|
||
|
import { CutOrder } from '../cutorder/CutOrder.js';
|
||
|
// import { PlaceStore } from './PlaceStore.js';
|
||
|
|
||
|
/**
|
||
|
* 返回大板信息
|
||
|
* @param pm
|
||
|
* @param bid
|
||
|
*/
|
||
|
export function getPlaceBoard(pm: PlaceMaterial, bid: number): PlaceBoard
|
||
|
{
|
||
|
if (bid < pm.minBoardId) return null;
|
||
|
if (bid > pm.maxBoardId) return null;
|
||
|
let pb = pm.boardList.find(t => t.boardId == bid);
|
||
|
if (pb == null)
|
||
|
{
|
||
|
pb = new PlaceBoard(bid, pm.width, pm.length);
|
||
|
pb.blockList = pm.blockList.filter(t => t.boardId == bid);
|
||
|
resetPlaceBoard(pm, pb);
|
||
|
pm.boardList.push(pb);
|
||
|
}
|
||
|
return pb;
|
||
|
}
|
||
|
|
||
|
/**重设大板汇总 */
|
||
|
export function resetPlaceBoard(pm: PlaceMaterial, pb: PlaceBoard, blocks = null)
|
||
|
{
|
||
|
if (pm == null) return;
|
||
|
if (pb == null) return;
|
||
|
if (blocks != null)
|
||
|
{
|
||
|
pb.blockList = blocks;
|
||
|
}
|
||
|
|
||
|
pb.blockCount = pb.blockList.length;
|
||
|
pb.blockArea = ArrayExt.sum(pb.blockList, t => t.area);
|
||
|
pb.usageRate = 100 * pb.blockArea / pb.area;
|
||
|
|
||
|
//判断 有造型出现在无法加工的区域
|
||
|
// const sys = PlaceStore.sysConfig;
|
||
|
// if(sys && sys.boardBorderModelRange > 1 && sys.modelNearBoardBorder == false)
|
||
|
// {
|
||
|
// hasModelInBoardBorder(pb, sys.boardBorderModelRange, sys.boardBorderModelModeToFace, sys.boardBorderModelByMachine);
|
||
|
// }
|
||
|
// CutOrder.autoCalcCutOrder(pm, pb);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 重设板材 优化率等, 是否排序大板列表
|
||
|
* @param pm
|
||
|
* @param sortBoard
|
||
|
*/
|
||
|
export function resetPlaceMaterial(pm: PlaceMaterial, sortBoard = false)
|
||
|
{
|
||
|
if (pm.boardCount == 0)
|
||
|
{
|
||
|
pm.blockCount = 0;
|
||
|
pm.blockArea = 0;
|
||
|
pm.avgUsageRateAll = 0;
|
||
|
pm.avgUsageRateExcludeLastBoard = 0;
|
||
|
pm.usageRateLastBoard = 0;
|
||
|
pm.boardCountFlipFace = 0;
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
pm.blockCount = pm.blockList.length;
|
||
|
pm.blockArea = ArrayExt.sum(pm.blockList, t => t.area);
|
||
|
if (pm.boardCount == 1)
|
||
|
{
|
||
|
pm.avgUsageRateAll = pm.blockArea;
|
||
|
pm.avgUsageRateExcludeLastBoard = pm.blockArea;
|
||
|
pm.usageRateLastBoard = pm.blockArea;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
const size_last = getPlaceBoard(pm, pm.maxBoardId).blockArea;
|
||
|
pm.avgUsageRateAll = pm.blockArea / pm.boardCount;
|
||
|
pm.avgUsageRateExcludeLastBoard = (pm.blockArea - size_last) / (pm.boardCount - 1);
|
||
|
pm.usageRateLastBoard = size_last;
|
||
|
if (sortBoard) sortBoardPlace(pm);
|
||
|
}
|
||
|
pm.boardCountFlipFace = ArrayExt.count(pm.boardList, t => t.isTwoFaceProcessing);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 排序大板信息
|
||
|
* @param pm
|
||
|
*/
|
||
|
export function sortBoardPlace(pm: PlaceMaterial)
|
||
|
{
|
||
|
pm.boardList = ArrayExt.sortBy(pm.boardList, t => t.boardId);
|
||
|
}
|