!2452 修复cad拆单旧版图形数据排钻关联问题

pull/2451/MERGE
cf-erp 11 months ago committed by ChenX
parent dc19350ace
commit b0a77005f8

@ -11,7 +11,6 @@ import { Sleep } from "../../Common/Sleep";
import { safeEval } from "../../Common/eval";
import { inflateBase64 } from "../../Common/inflate";
import { CADFiler } from "../../DatabaseServices/CADFiler";
import { Database } from "../../DatabaseServices/Database";
import { Board } from "../../DatabaseServices/Entity/Board";
import { commandMachine } from "../../Editor/CommandMachine";
import { userConfig } from "../../Editor/UserConfig";
@ -337,19 +336,14 @@ async function SetData(content: {
}
//更新视图回调
UpdateView();
let oldDb = new Database();
const startIndex = 101;
let blockNoDic: { [index: number]: BlockNoObj; } = {};//板件编号颜色map
let oldBlockNoDic: { [index: number]: BlockNoObj; } = {};//旧版图形数据板件编号颜色map
const oldEntitys = layout.app.GetEntitysByViewData(content.viewDataList, startIndex, oldBlockNoDic);
oldDb.ModelSpace.Entitys.push(...oldEntitys);
const oldFile = new CADFiler();
oldDb.FileWrite(oldFile);
const oldFiles = [oldFile].map(t => { return { file: t, blockDic: null }; });
//插入旧版数据Entitys到当前视图
layout.app.InsertEntitysByViewData(content.viewDataList, startIndex, blockNoDic);
content.viewFileList.map(t => t.file = Object.assign(new CADFiler, t.file));
const files = [...oldFiles, ...content.viewFileList];
//插入图纸
layout.app.insertFiles(files, content.filterIDs, oldBlockNoDic, blockNoDic);
const files = [...content.viewFileList];
//插入新版数据图纸到当前视图
layout.app.insertFiles(files, content.filterIDs, blockNoDic);
layout.app.BoxCtrl = new ShareService();
await layout.app.BoxCtrl.Init();
layout.app.BoxCtrl.AddBlockNoDic(blockNoDic);

@ -13,6 +13,7 @@ import { Board } from "../../DatabaseServices/Entity/Board";
import { Entity } from "../../DatabaseServices/Entity/Entity";
import { HardwareCompositeEntity } from "../../DatabaseServices/Hardware/HardwareCompositeEntity";
import { HardwareTopline } from "../../DatabaseServices/Hardware/HardwareTopline";
import { IdMaping } from "../../DatabaseServices/IdMaping";
import { ObjectId } from "../../DatabaseServices/ObjectId";
import { RoomParseReactor } from "../../DatabaseServices/Room/ParseService/RoomParseReactor";
import { FontLoader } from "../../DatabaseServices/Text/FontLoader";
@ -286,20 +287,14 @@ export class ShareViewService extends ApplicationService
this.BoxCtrl = new ShareService();
await this.BoxCtrl.Init();
}
//设置图形数据
/**
* viewDataList:cadView
* viewFileList:cad
* viewFileList.file:
* viewFileList.blockDic
* filterIDsid,
**/
//获取旧版板件数据
GetEntitysByViewData(dataList: any[], startIndex: number, blockNoDic: { [index: number]: BlockNoObj; })
//插入旧版数据到当前视图
InsertEntitysByViewData(dataList: any[], startIndex: number, blockNoDic: { [index: number]: BlockNoObj; })
{
const entitys: Entity[] = [];
let index = startIndex;
let orgBlockNoDic: { [index: number]: BlockNoObj; } = {};
for (const d of dataList)
{
const simpleBoard = new SimpleBoard(d);
@ -309,7 +304,7 @@ export class ShareViewService extends ApplicationService
board.CustomNumber = d.CustomNumber;
entitys.push(board);
const blockObj: BlockNoObj = { blockNo: simpleBoard.BlockNo, color: simpleBoard.Color };
blockNoDic[board.Id.Index] = blockObj;
orgBlockNoDic[board.Id.Index] = blockObj;
index++;
for (const hole of boardEntitys.holes)
{
@ -319,11 +314,35 @@ export class ShareViewService extends ApplicationService
entitys.push(hole);
index++;
}
board.AppendDrillList(board.Id, [boardEntitys.holes.map(t => t.Id)]);
}
let oldIdMap: IdMaping = new Map();//插入数据库后id对应关系
let filer = new WblockCloneFiler2();
entitys.forEach(t => t.SetDefaultDb(app.Database));
//插入数据库
app.Database.WblockCloneObejcts(entitys, app.Database.ModelSpace, oldIdMap, DuplicateRecordCloning.Ignore, filer);
//重新更新板信息对应关系字典
let tempMap = new Map<number, number>();
oldIdMap.forEach((v, k) =>
{
tempMap.set(k.Index, v.Index);
});
for (let k in orgBlockNoDic)
{
const v = tempMap.get(Number(k));
if (v)
blockNoDic[v] = orgBlockNoDic[k];
}
return entitys;
}
//插入文件数据到当前视图
insertFiles(viewFileList: { file: CADFiler, blockDic: { [index: number]: BlockNoObj; }; }[], filterIDs: number[], oldBlockNoDic: { [index: number]: BlockNoObj; }, blockNoDic: { [index: number]: BlockNoObj; })
/**
* viewFileList:cad
* viewFileList.file:
* viewFileList.blockDic
* filterIDsid,
* blockNoDic:
**/
insertFiles(viewFileList: { file: CADFiler, blockDic: { [index: number]: BlockNoObj; }; }[], filterIDs: number[], blockNoDic: { [index: number]: BlockNoObj; })
{
for (const vf of viewFileList)
{
@ -360,11 +379,6 @@ export class ShareViewService extends ApplicationService
blockNoDic[newID.Index] = blockObj;
}
}
} else//旧版数据map
{
const newID = idMap.get(e.Id);
const dic = oldBlockNoDic[e.Id.Index];
blockNoDic[newID.Index] = dic;
}
}
}
@ -478,7 +492,6 @@ export class ShareService
SetCabinetVisible(cabinetIndex: number, visible: boolean)
{
if (cabinetIndex < 0) return;
const ens = this.GetCabinetEntities(cabinetIndex);
this.GetCabinetEntities(cabinetIndex).forEach((ent) =>
{
ent.Visible = visible;
@ -507,16 +520,9 @@ export class ShareService
});
});
//旧版数据排钻
let holes = app.Database.ModelSpace.Entitys.filter(t => t instanceof Hole && t.FId.Index == ent.Id.Index);
for (const h of holes)
{
h.Visible = visible;
}
}
});
}
SetCabinetFormatData(data: ICabinetFormatData)
{
this._CabinetFormatData = data;

@ -99,16 +99,6 @@ export function ChangeCylinderHoleVisible(index: number, visible: boolean)
{
if (ent instanceof Hole && !ent.IsErase)
ent.Visible = !visible;
//旧版数据排钻
if (ent instanceof Board)
{
let holes = app.Database.ModelSpace.Entitys.filter(t => t instanceof Hole && t.FId.Index == ent.Id.Index);
for (const h of holes)
{
h.Visible = !visible;
}
}
}
}

Loading…
Cancel
Save