mirror of https://gitee.com/cf-fz/WebCAD.git
parent
23a26a55a7
commit
932b36437f
@ -0,0 +1,73 @@
|
||||
import { Command } from "../Editor/CommandMachine";
|
||||
import { Board } from "../DatabaseServices/Entity/Board";
|
||||
import { SweepSolid } from "../DatabaseServices/3DSolid/SweepSolid";
|
||||
import { app } from "../ApplicationServices/Application";
|
||||
import { PromptStatus } from "../Editor/PromptResult";
|
||||
import { Polyline } from "../DatabaseServices/Entity/Polyline";
|
||||
import { Circle } from "../DatabaseServices/Entity/Circle";
|
||||
import { ExtrudeSolid } from "../DatabaseServices/Entity/Extrude";
|
||||
import { Curve } from "../DatabaseServices/Entity/Curve";
|
||||
import { FileSystem } from "../Common/FileSystem";
|
||||
|
||||
|
||||
export class Command_ExportData implements Command
|
||||
{
|
||||
async exec()
|
||||
{
|
||||
let ssRes = await app.Editor.GetSelection({ Filter: { filterTypes: [Board, SweepSolid] } });
|
||||
if (ssRes.Status !== PromptStatus.OK) return;
|
||||
let ents = ssRes.SelectSet.SelectEntityList;
|
||||
|
||||
let d: { Entitys: Object[]; } = { Entitys: [] };
|
||||
|
||||
for (let e of ents)
|
||||
{
|
||||
if (e instanceof Board)
|
||||
d.Entitys.push(ConvertBoard2Data(e));
|
||||
else if (e instanceof SweepSolid)
|
||||
d.Entitys.push(ConverSweep2Data(e));
|
||||
}
|
||||
|
||||
FileSystem.WriteFile("fff.json", JSON.stringify(d));
|
||||
}
|
||||
}
|
||||
|
||||
function Curve2Data(cu: Curve): Object
|
||||
{
|
||||
let cud: any = {};
|
||||
if (cu instanceof Polyline)
|
||||
{
|
||||
cud.Type = "Polyline";
|
||||
let { pts, buls } = cu.PtsBuls;
|
||||
cud.Pts = pts;
|
||||
cud.Buls = buls;
|
||||
}
|
||||
else if (cu instanceof Circle)
|
||||
{
|
||||
cud.Type = "Circle";
|
||||
cud.Center = cu.Center;
|
||||
cud.Radius = cu.Radius;
|
||||
}
|
||||
return cud;
|
||||
}
|
||||
|
||||
function ConvertBoard2Data(br: ExtrudeSolid): Object
|
||||
{
|
||||
let ed: any = {};
|
||||
ed.Type = "Extrude";
|
||||
ed.OCS = br.OCS.toArray();
|
||||
ed.Thickness = br.Thickness;
|
||||
ed.Contour = Curve2Data(br.ContourCurve);
|
||||
ed.Holes = br.Grooves.map(ConvertBoard2Data);
|
||||
return ed;
|
||||
}
|
||||
|
||||
function ConverSweep2Data(e: SweepSolid)
|
||||
{
|
||||
let ed: any = {};
|
||||
ed.Type = "Sweep";
|
||||
ed.OCS = e.OCS.toArray();
|
||||
ed.Contour = Curve2Data(e.Contour);
|
||||
ed.Path = Curve2Data(e.Path);
|
||||
return ed;
|
||||
}
|
Loading…
Reference in new issue