|
|
|
@ -25,6 +25,13 @@ import { PromptStatus } from "../Editor/PromptResult";
|
|
|
|
|
import { ModalFooter, ModalHeader } from '../UI/Components/Modal/ModalContainer';
|
|
|
|
|
import { ModalPosition } from '../UI/Components/Modal/ModalInterface';
|
|
|
|
|
import { TopPanelStore } from '../UI/Store/TopPanelStore';
|
|
|
|
|
import { CompositeEntity } from './../DatabaseServices/Entity/CompositeEntity';
|
|
|
|
|
import { Hole } from './../DatabaseServices/3DSolid/Hole';
|
|
|
|
|
import { Vector3 } from 'three';
|
|
|
|
|
import { ExtrudeHole } from '../DatabaseServices/3DSolid/ExtrudeHole';
|
|
|
|
|
import { CylinderHole } from '../DatabaseServices/3DSolid/CylinderHole';
|
|
|
|
|
import { HardwareTopline } from '../DatabaseServices/Hardware/HardwareTopline';
|
|
|
|
|
import { HardwareCompositeEntity } from '../DatabaseServices/Hardware/HardwareCompositeEntity';
|
|
|
|
|
export class ExportDataModal extends React.Component<{ msg: string; }, {}>{
|
|
|
|
|
private removeFuncs: Function[] = []; //移除注入
|
|
|
|
|
private Close()
|
|
|
|
@ -73,11 +80,10 @@ export class Command_ExportData implements Command
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let ssRes = await app.Editor.GetSelection({ Filter: { filterTypes: [Board, SweepSolid] } });
|
|
|
|
|
let ssRes = await app.Editor.GetSelection({ Filter: { filterTypes: [Board, SweepSolid, CompositeEntity] } });
|
|
|
|
|
if (ssRes.Status !== PromptStatus.OK) return;
|
|
|
|
|
let ents = ssRes.SelectSet.SelectEntityList;
|
|
|
|
|
let d = Entitys2Data(ents);
|
|
|
|
|
|
|
|
|
|
let dstr = JSON.stringify(d);
|
|
|
|
|
if (await app.WebSocket.Connect())
|
|
|
|
|
{
|
|
|
|
@ -108,6 +114,10 @@ export function Entitys2Data(ents: Entity[])
|
|
|
|
|
d.Entitys.push(ConverSweep2Data(e));
|
|
|
|
|
else if (e instanceof Region)
|
|
|
|
|
d.Entitys.push(ConveRegion2Data(e));
|
|
|
|
|
else if (e instanceof Hole)
|
|
|
|
|
d.Entitys.push(ConvertHole2Data(e));
|
|
|
|
|
else if (e instanceof CompositeEntity)
|
|
|
|
|
d.Entitys.push(...CompositeEntity2Data(e));
|
|
|
|
|
else
|
|
|
|
|
continue;
|
|
|
|
|
arrayLast(d.Entitys).Visible = e.Visible;
|
|
|
|
@ -158,6 +168,7 @@ function ConvertBoard2Data(br: ExtrudeSolid): Object
|
|
|
|
|
ed.Type = "Board";
|
|
|
|
|
ed.CabinetName = br.BoardProcessOption.cabinetName;
|
|
|
|
|
ed.RoomName = br.BoardProcessOption.roomName;
|
|
|
|
|
ed.CabinetName = ed.RoomName;
|
|
|
|
|
ed.UVType = br.BoardProcessOption.lines;
|
|
|
|
|
ed.MaterialId = br.Material?.Index || 0;
|
|
|
|
|
}
|
|
|
|
@ -174,6 +185,10 @@ function ConverSweep2Data(e: SweepSolid)
|
|
|
|
|
ed.OCS = e.OCS.toArray();
|
|
|
|
|
ed.Contour = Curve2Data(e.Contour);
|
|
|
|
|
ed.Path = Curve2Data(e.Path);
|
|
|
|
|
ed.MaterialId = e.Material?.Index || 0;
|
|
|
|
|
let roomName = e instanceof HardwareTopline ? e.HardwareOption.roomName : "未命名";
|
|
|
|
|
ed.RoomName = roomName;
|
|
|
|
|
ed.CabinetName = ed.RoomName;
|
|
|
|
|
return ed;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -219,3 +234,34 @@ function ConverMaterial(material: PhysicalMaterialRecord)
|
|
|
|
|
d.useRoughnessMap = material.useRoughnessMap;
|
|
|
|
|
return d;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ConvertHole2Data(h: Hole)
|
|
|
|
|
{
|
|
|
|
|
let ed: any = {};
|
|
|
|
|
ed.Id = h.Id?.Index ?? 0;
|
|
|
|
|
ed.OCS = h.OCS.toArray();
|
|
|
|
|
ed.Thickness = h.Height;
|
|
|
|
|
if (h instanceof ExtrudeHole)
|
|
|
|
|
ed.Contour = Curve2Data(h.ContourCurve);
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
let rad = (h as CylinderHole).Radius;
|
|
|
|
|
ed.Contour = Curve2Data(new Circle(new Vector3(rad, rad), rad));
|
|
|
|
|
}
|
|
|
|
|
ed.Type = "Extrude";
|
|
|
|
|
ed.MaterialId = h.Material?.Index || 0;
|
|
|
|
|
return ed;
|
|
|
|
|
}
|
|
|
|
|
function CompositeEntity2Data(comp: CompositeEntity)
|
|
|
|
|
{
|
|
|
|
|
let data = Entitys2Data(comp.Explode()).Entitys;
|
|
|
|
|
let roomName = comp instanceof HardwareCompositeEntity ? comp.HardwareOption.roomName : "未命名";
|
|
|
|
|
if (comp.Id)
|
|
|
|
|
for (let i = 0; i < data.length; i++)
|
|
|
|
|
{
|
|
|
|
|
data[i].Id = comp.Id.Index * -100 - i;
|
|
|
|
|
data[i].RoomName = roomName;
|
|
|
|
|
data[i].CabinetName = data[i].RoomName;
|
|
|
|
|
}
|
|
|
|
|
return data;
|
|
|
|
|
}
|
|
|
|
|