From 7484cc6c3c4004a5968d9bf76ce798079d149bf7 Mon Sep 17 00:00:00 2001 From: "2817212736@qq.com" <2817212736@qq.com> Date: Mon, 9 Jun 2025 10:54:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0CADFactory=E8=B0=83=E8=AF=95?= =?UTF-8?q?=E8=BE=93=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- src/common/MaterialSerializer.ts | 38 ++++++++++++++------------------ 2 files changed, 18 insertions(+), 22 deletions(-) diff --git a/package.json b/package.json index a66255d..aa40bd7 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "material-editor", "private": true, - "version": "1.0.19", + "version": "1.0.20", "type": "module", "scripts": { "dev": "vite", diff --git a/src/common/MaterialSerializer.ts b/src/common/MaterialSerializer.ts index 59e3044..9ab6577 100644 --- a/src/common/MaterialSerializer.ts +++ b/src/common/MaterialSerializer.ts @@ -1,4 +1,4 @@ -import { CADFiler, CADObject, Database, DuplicateRecordCloning, Factory, LayerNode, ObjectId, PhysicalMaterialRecord, TextureTableRecord } from "webcad_ue4_api"; +import { CADFactory, CADFiler, CADObject, Database, DuplicateRecordCloning, Factory, LayerNode, ObjectId, PhysicalMaterialRecord, TextureTableRecord } from "webcad_ue4_api"; // TODO: Danger: 注意入侵性代码 // 疑似是WebCAD中的漏洞,当传入new Database()时, @@ -14,26 +14,22 @@ Database.prototype.AllocationObjectId = function (this: Database, object: CADObj this.idMap.set(object.Id.Index, object.Id); } -export function MaterialOut(material: PhysicalMaterialRecord): string -{ - try { - let db = new Database(); - db.WblockCloneObejcts( - [material], - db.MaterialTable, - new Map(), - DuplicateRecordCloning.Ignore - ); - let json = JSON.stringify(db.FileWrite().Data); - // // TODO: Danger: 因为WebCAD依赖库中的部分类的构造函数名异常,所以在生成JSON时需要对类名进行替换 - json = json.replace(LayerNode.name, "LayerNode") - .replace(TextureTableRecord.name, "TextureTableRecord") - .replace(PhysicalMaterialRecord.name, "PhysicalMaterialRecord"); - return json; - } catch (error) { - console.error("error in MaterialOut:", error, material); - throw error; - } +export function MaterialOut(material: PhysicalMaterialRecord): string { + let db = new Database(); + db.WblockCloneObejcts( + [material], + db.MaterialTable, + new Map(), + DuplicateRecordCloning.Ignore + ); + let json = JSON.stringify(db.FileWrite().Data); + // // TODO: Danger: 因为WebCAD依赖库中的部分类的构造函数名异常,所以在生成JSON时需要对类名进行替换 + json = json.replace(LayerNode.name, "LayerNode") + .replace(TextureTableRecord.name, "TextureTableRecord") + .replace(PhysicalMaterialRecord.name, "PhysicalMaterialRecord"); + console.debug("DEBUG CAD Object Name", CADFactory['factory'].objectNameMap); + console.debug("CURRENT PROTOTYPE NAME\n", "LAYERNODE:", LayerNode.name, "TEXTURETABLERECORD:", TextureTableRecord.name, "PHYSICALMATERIALRECORD:", PhysicalMaterialRecord.name); + return json; } export function MaterialIn(fileData: Object[]): PhysicalMaterialRecord