实体导出增加一些信息

pull/675/head
ChenX 5 years ago
parent a84827c64e
commit f86c9a4d0c

@ -5,6 +5,7 @@ import { PromptStatus } from "../Editor/PromptResult";
import { Entitys2Data } from "./ExportData";
import pako from "pako";
import { HotCMD } from "../Hot/HotCommand";
import { CURRENT_HOST } from "../Common/HostUrl";
@HotCMD
export class Command_ExportView implements Command
@ -16,6 +17,7 @@ export class Command_ExportView implements Command
let ents = ssRes.SelectSet.SelectEntityList;
let d = Entitys2Data(ents);
d.Url = CURRENT_HOST;
let bd = pako.deflate(JSON.stringify(d));
const formData = new FormData();

@ -8,6 +8,9 @@ import { Curve } from "../DatabaseServices/Entity/Curve";
import { Entity } from "../DatabaseServices/Entity/Entity";
import { ExtrudeSolid } from "../DatabaseServices/Entity/Extrude";
import { Polyline } from "../DatabaseServices/Entity/Polyline";
import { ObjectId } from "../DatabaseServices/ObjectId";
import { PhysicalMaterialRecord } from "../DatabaseServices/PhysicalMaterialRecord";
import { TextureTableRecord } from "../DatabaseServices/Texture";
import { Command } from "../Editor/CommandMachine";
import { PromptStatus } from "../Editor/PromptResult";
@ -26,15 +29,26 @@ export class Command_ExportData implements Command
export function Entitys2Data(ents: Entity[])
{
let d: { Entitys: Object[]; } = { Entitys: [] };
let d: { Entitys: Object[]; Materials: Object[]; Url?: string; } = { Entitys: [], Materials: [] };
let materials: Set<ObjectId> = new Set();
for (let e of ents)
{
if (e instanceof Board)
{
d.Entitys.push(ConvertBoard2Data(e));
if (e.Material?.Object)
materials.add(e.Material);
}
else if (e instanceof SweepSolid)
d.Entitys.push(ConverSweep2Data(e));
}
if (materials.size > 0)
{
for (let m of materials)
{
d.Materials.push(ConverMaterial(m.Object as PhysicalMaterialRecord));
}
}
return d;
}
@ -65,16 +79,20 @@ function ConvertBoard2Data(br: ExtrudeSolid): Object
{
let ed: any = {};
ed.Id = br.Id?.Index ?? 0;
ed.Type = "Extrude";
ed.OCS = br.OCS.toArray();
ed.Thickness = br.Thickness;
ed.Contour = Curve2Data(br.ContourCurve);
ed.Holes = br.Grooves.map(ConvertBoard2Data);
if (br instanceof Board)
{
ed.Type = "Board";
ed.CabinetName = br.BoardProcessOption.cabinetName;
ed.RoomName = br.BoardProcessOption.roomName;
ed.UVType = br.BoardProcessOption.lines;
ed.MaterialId = br.Material?.Index || 0;
}
else
ed.Type = "Extrude";
return ed;
}
@ -88,3 +106,23 @@ function ConverSweep2Data(e: SweepSolid)
ed.Path = Curve2Data(e.Path);
return ed;
}
function ConverMaterial(material: PhysicalMaterialRecord)
{
let d: any = {};
d.Id = material.Id?.Index ?? 0;
d.color = material.color;
d.transparent = material.transparent;
d.matalness = material.matalness;
d.opacity = material.opacity;
d.depthTest = material.depthTest;
d.map = (material.map?.Object as TextureTableRecord)?.imageUrl;
d.bumpMap = (material.bumpMap?.Object as TextureTableRecord)?.imageUrl;
d.bumpScale = material.bumpScale;
d.roughnessMap = (material.roughnessMap?.Object as TextureTableRecord)?.imageUrl;
d.roughness = material.roughness;
d.useMap = material.useMap;
d.useBumpMap = material.useBumpMap;
d.useRoughnessMap = material.useRoughnessMap;
return d;
}

@ -53,6 +53,11 @@ export class Entity extends CADObject
this.Update();
}
get Material()
{
return this.materialId;
}
set ColorIndex(color: number)
{
if (color !== this._Color)

Loading…
Cancel
Save