|
|
|
@ -202,17 +202,6 @@ export class ErpParseData
|
|
|
|
|
// down.progress = 1;
|
|
|
|
|
|
|
|
|
|
/*加工组拆单信息-开始*/
|
|
|
|
|
const objIdFilter = (objId: ObjectId) =>
|
|
|
|
|
{
|
|
|
|
|
if (!objId || objId.IsErase) return true;
|
|
|
|
|
let cadObj = objId?.Object;
|
|
|
|
|
if (!cadObj || !(cadObj instanceof Board))
|
|
|
|
|
return true;
|
|
|
|
|
let temp = cadObj.Template?.Object;
|
|
|
|
|
if (temp && (temp instanceof TemplateWineRackRecord))
|
|
|
|
|
return cadObj.Name === "层板" || cadObj.Name === "立板";
|
|
|
|
|
return false;
|
|
|
|
|
};
|
|
|
|
|
for (let [str, pg] of pgMap_pg)
|
|
|
|
|
{
|
|
|
|
|
pg.sort((pg1, pg2) => pg1.Id.Index - pg2.Id.Index);
|
|
|
|
@ -224,7 +213,7 @@ export class ErpParseData
|
|
|
|
|
let boxarrobj: Object3D[] = [];
|
|
|
|
|
for (let obj of g.Objects)
|
|
|
|
|
{
|
|
|
|
|
if (objIdFilter(obj))
|
|
|
|
|
if (this.ProcessGroupFilter(obj))
|
|
|
|
|
continue;
|
|
|
|
|
let cadObj = obj.Object as Board;
|
|
|
|
|
for (let b of cadObj.SplitBoards)
|
|
|
|
@ -251,7 +240,7 @@ export class ErpParseData
|
|
|
|
|
let boxarrobj: Object3D[] = [];
|
|
|
|
|
for (let t of temp.Objects)
|
|
|
|
|
{
|
|
|
|
|
if (objIdFilter(t))
|
|
|
|
|
if (this.ProcessGroupFilter(t))
|
|
|
|
|
continue;
|
|
|
|
|
let cadObj = t.Object as Board;
|
|
|
|
|
for (let b of cadObj.SplitBoards)
|
|
|
|
@ -283,7 +272,7 @@ export class ErpParseData
|
|
|
|
|
let boxarrobj: Object3D[] = [];
|
|
|
|
|
for (let t of temp.Objects)
|
|
|
|
|
{
|
|
|
|
|
if (objIdFilter(t))
|
|
|
|
|
if (this.ProcessGroupFilter(t))
|
|
|
|
|
continue;
|
|
|
|
|
let cadObj = t.Object as Board;
|
|
|
|
|
for (let b of cadObj.SplitBoards)
|
|
|
|
@ -924,27 +913,30 @@ export class ErpParseData
|
|
|
|
|
|
|
|
|
|
UpdateBoardInfo(spliteData: ISpliteOrderData, board: Board, splitSize: { spliteHeight: number, spliteWidth: number, spliteThickness: number; })
|
|
|
|
|
{
|
|
|
|
|
const throughHoleCount:number= spliteData?.holes?.frontBackHoles?.filter(t => t.depth >= board.Thickness).length;
|
|
|
|
|
const throughModelCount:number = spliteData?.modeling?.filter(t => t.thickness >= board.Thickness).length;
|
|
|
|
|
const has2DModel:boolean = spliteData.modeling2D.length > 0;
|
|
|
|
|
const has3DModel:boolean = spliteData.modeling3D.length > 0;
|
|
|
|
|
let processList :{name:string,size:{width:number,height:number,depth:number}} []=[];
|
|
|
|
|
const throughHoleCount: number = spliteData?.holes?.frontBackHoles?.filter(t => t.depth >= board.Thickness).length;
|
|
|
|
|
const throughModelCount: number = spliteData?.modeling?.filter(t => t.thickness >= board.Thickness).length;
|
|
|
|
|
const has2DModel: boolean = spliteData.modeling2D.length > 0;
|
|
|
|
|
const has3DModel: boolean = spliteData.modeling3D.length > 0;
|
|
|
|
|
let processList: { name: string, size: { width: number, height: number, depth: number; }; }[] = [];
|
|
|
|
|
for (const pg of board.ProcessingGroupList)
|
|
|
|
|
{
|
|
|
|
|
const record = pg.Object as ProcessingGroupRecord;
|
|
|
|
|
let boxarrobj:Object3D[] = [];
|
|
|
|
|
const record = pg?.Object as ProcessingGroupRecord;
|
|
|
|
|
if (!record) continue;
|
|
|
|
|
let boxarrobj: Object3D[] = [];
|
|
|
|
|
for (let obj of record.Objects)
|
|
|
|
|
{
|
|
|
|
|
if (this.ProcessGroupFilter(obj))
|
|
|
|
|
continue;
|
|
|
|
|
const cadObj = obj.Object as Board;
|
|
|
|
|
for (let b of cadObj.SplitBoards)
|
|
|
|
|
{
|
|
|
|
|
boxarrobj.push(b.DrawObject);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
const size:Vector3 = GetBoxArr(boxarrobj).getSize(new Vector3());
|
|
|
|
|
const size: Vector3 = GetBoxArr(boxarrobj).getSize(new Vector3());
|
|
|
|
|
processList.push({ name: record.Name, size: { width: this.GetNumberBit(size.x, 3), height: this.GetNumberBit(size.z, 3), depth: this.GetNumberBit(size.y, 3) } });
|
|
|
|
|
}
|
|
|
|
|
const info = {boardType:{0:'层板',1:'立板',2:'背板'}[board.BoardType], throughHoleCount, throughModelCount, splitSize, has2DModel, has3DModel, composingFace: { 0: '正面', 1: '反面', 2: '任意面' }[board.BoardProcessOption.composingFace], processList };
|
|
|
|
|
const info = { boardType: { 0: '层板', 1: '立板', 2: '背板' }[board.BoardType], throughHoleCount, throughModelCount, splitSize, has2DModel, has3DModel, composingFace: { 0: '正面', 1: '反面', 2: '任意面' }[board.BoardProcessOption.composingFace], processList };
|
|
|
|
|
let remarks = spliteData.info.remarks.slice();
|
|
|
|
|
let boardRemark = remarks.find(t => t[0] == '#extra');
|
|
|
|
|
if (boardRemark)
|
|
|
|
@ -953,6 +945,17 @@ export class ErpParseData
|
|
|
|
|
remarks.push(['#extra', JSON.stringify(info)]);
|
|
|
|
|
spliteData.info.remarks = remarks;
|
|
|
|
|
}
|
|
|
|
|
ProcessGroupFilter(objId: ObjectId)
|
|
|
|
|
{
|
|
|
|
|
if (!objId || objId.IsErase) return true;
|
|
|
|
|
let cadObj = objId?.Object;
|
|
|
|
|
if (!cadObj || !(cadObj instanceof Board))
|
|
|
|
|
return true;
|
|
|
|
|
let temp = cadObj.Template?.Object;
|
|
|
|
|
if (temp && (temp instanceof TemplateWineRackRecord))
|
|
|
|
|
return cadObj.Name === "层板" || cadObj.Name === "立板";
|
|
|
|
|
return false;
|
|
|
|
|
};
|
|
|
|
|
groupBy(data: any[], fileds: string[])
|
|
|
|
|
{
|
|
|
|
|
let groupList = {};
|
|
|
|
|