!1997 优化:酷家乐导入读取五金所有参数

auto-exec
黄诗津 2 years ago committed by ChenX
parent 90553f959c
commit 615b4dbe39

@ -32,7 +32,7 @@ import { CuttingBoardByBoard } from "../../BoardCutting/CuttingUtils2";
import { KJL_DrillData, KJL_JsonFile, KJL_ModelType, KJL_Parameter, KJL_ParamModel, KJL_ParamModel_Board, KJL_ParamModel_Hardware } from "./KJLInterface";
import { KJLMaterialLoader } from "./KJLMaterialLoader";
import { ParseBCBZ, ParseBT, ParseCabNameMap, ParseDrilling, ParseEdgeBanding, ParseEdges, ParseKMFX, ParsePathOutlineAndHole, ParseRoomNameMap, ParseTopline } from "./KJLParse";
import { ApplyMaterial, CreateHardware } from "./KJLUtils";
import { ApplyMaterial, CreateHardware, ParseHardwareParam } from "./KJLUtils";
export class Command_KJLImport implements Command
@ -199,7 +199,7 @@ async function ParseModel(model: KJL_ParamModel,
if (model.profileSegments)
{
let toplines = await ParseTopline(model, mtlLoader);
let toplines = await ParseTopline(model, mtlLoader, roomName, gName);
if (toplines)
{
for (const topline of toplines)
@ -227,10 +227,12 @@ async function ParseModel(model: KJL_ParamModel,
en.BoardProcessOption[EBoardKeyList.RoomName] = roomName;
en.BoardProcessOption[EBoardKeyList.CabinetName] = gName;
}
else if (en instanceof HardwareCompositeEntity || en instanceof HardwareTopline)
else if (en instanceof HardwareCompositeEntity)
{
en.HardwareOption[EBoardKeyList.RoomName] = roomName;
en.HardwareOption[EBoardKeyList.CabinetName] = gName;
let hmodel = model as KJL_ParamModel_Hardware;
ParseHardwareParam(en, hmodel);
}
en.ApplyMatrix(new Matrix4().premultiply(mtx));
}
@ -262,6 +264,7 @@ async function ParseModel(model: KJL_ParamModel,
en.HardwareOption[EBoardKeyList.RoomName] = roomName;
en.HardwareOption[EBoardKeyList.CabinetName] = gName;
en.HardwareOption.comments = hmodel.modelProductNumber ?? "";
ParseHardwareParam(en, hmodel);
}
en.ApplyMatrix(new Matrix4().premultiply(mtx));
}

@ -1,5 +1,6 @@
import { Vec2, Vector2 } from "three";
import { arrayLast, ArrayRemoveDupSavePre } from "../../../Common/ArrayExt";
import { EBoardKeyList } from "../../../Common/BoardKeyList";
import { safeEval } from "../../../Common/eval";
import { FixIndex, ToFixed } from "../../../Common/Utils";
import { Polyline, PolylineProps } from "../../../DatabaseServices/Entity/Polyline";
@ -83,7 +84,7 @@ export function ParseEdgeBanding(model: KJL_ParamModel): number[] | undefined
return edgeBandings;
}
export async function ParseTopline(model: KJL_ParamModel, mtlLoader: KJLMaterialLoader)
export async function ParseTopline(model: KJL_ParamModel, mtlLoader: KJLMaterialLoader, roomName: string, gName: string)
{
let profileSegments: KJL_Topline[] = model.profileSegments;
let toplines: HardwareTopline[] = [];
@ -93,9 +94,10 @@ export async function ParseTopline(model: KJL_ParamModel, mtlLoader: KJLMaterial
let path = new Polyline([{ pt: new Vector2(0, 0), bul: 0 }, { pt: new Vector2(0, p.lengthWithAllowance), bul: 0 }]);
let topline = new HardwareTopline(shape, path);
topline.HardwareOption.name = model.modelName ?? "";
topline.HardwareOption.comments =
`左切类型:${p.startCornerCutTyp === 0 ? "平切" : p.startCornerCutTyp === 1 ? "阳角" : "阴角"}${p.startCornerCutDegree}°;
:${p.endCornerCutType === 0 ? "平切" : p.endCornerCutType === 1 ? "阳角" : "阴角"}${p.endCornerCutDegree}°;`;
topline.HardwareOption[EBoardKeyList.RoomName] = roomName;
topline.HardwareOption[EBoardKeyList.CabinetName] = gName;
topline.HardwareOption.spec =
`左切类型:${p.startCornerCutTyp === 0 ? "平切" : p.startCornerCutTyp === 1 ? "阳角" : "阴角"}${p.startCornerCutDegree}°;右切类型:${p.endCornerCutType === 0 ? "平切" : p.endCornerCutType === 1 ? "阳角" : "阴角"}${p.endCornerCutDegree}°;`;
let mtl = await mtlLoader.LoadMaterialFromName(model.textureName);
if (mtl) ApplyMaterial(topline, mtl);
toplines.push(topline);

@ -23,6 +23,14 @@ export function CreateHardware(hmodel: KJL_ParamModel_Hardware, roomName: string
hw.HardwareOption.comments = hmodel.modelProductNumber ?? "";
hw.HardwareOption.unit = "个";
ParseHardwareParam(hw, hmodel);
hw.DataList.push(["酷家乐", "虚拟五金"]);
return hw;
}
export function ParseHardwareParam(hw: HardwareCompositeEntity, hmodel: KJL_ParamModel_Hardware)
{
let parsMap = new Map([["CFDW", "unit"], ["CFJG", "actualExpr"], ["CFXH", "model"], ["CFCJ", "factory"], ["CFPP", "brand"],
["CFGG", "spec"], ["count", "count"], ["CFCZ", "material"], ["CFYS", "color"]]);
@ -33,7 +41,9 @@ export function CreateHardware(hmodel: KJL_ParamModel_Hardware, roomName: string
{
if (parsMap.has(p.name))
{
hw.HardwareOption[parsMap.get(p.name)] = p.value;
let key = parsMap.get(p.name);
if (key)
hw.HardwareOption[key] = p.value;
}
}
};
@ -41,9 +51,6 @@ export function CreateHardware(hmodel: KJL_ParamModel_Hardware, roomName: string
ParseParam(hmodel.constParameters);
ParseParam(hmodel.ignoreParameters);
ParseParam(hmodel.parameters);
hw.DataList.push(["酷家乐", "虚拟五金"]);
return hw;
}
export function ApplyMaterial(ent: Entity, mtl: PhysicalMaterialRecord)

Loading…
Cancel
Save