feat:提交
This commit is contained in:
94
tests/dev1/dataHandle/common/LayoutEngine/PlaceBase.ts
Normal file
94
tests/dev1/dataHandle/common/LayoutEngine/PlaceBase.ts
Normal file
@@ -0,0 +1,94 @@
|
||||
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);
|
||||
}
|
Reference in New Issue
Block a user