jsketcher/modules/brep/operations/directMod/vertexMoving.ts
2022-08-15 23:47:20 -07:00

148 lines
3.3 KiB
TypeScript

import { ApplicationContext } from "cad/context";
import { BrepInputData } from "engine/data/brepInputData";
import CSys from "math/csys";
import Vector, { AXIS } from "math/vector";
import DatumObject3D from "../../../../web/app/cad/craft/datum/datumObject";
import { readShellEntityFromJson } from "../../../../web/app/cad/scene/wrappers/entityIO";
export function testVertexMoving(ctx: ApplicationContext) {
function step(cornerPoint) {
ctx.craftService.models$.update((models) => {
const data = ctx.craftEngine.modellingEngine.loadModel(makeCube(cornerPoint));
const mShell = readShellEntityFromJson(data);
return [mShell];
});
}
const datum3D = new DatumObject3D(
new CSys(new Vector(0,0,500), AXIS.X.copy(), AXIS.Y.copy(), AXIS.Z.copy()),
ctx.services.viewer);
datum3D.onMove = (begin, end, delta) => {
step(end);
};
ctx.services.cadScene.workGroup.add(datum3D);
step(new Vector(0, 0, 500));
// data = ctx.craftEngine.modellingEngine.transform({
// model: data.ptr,
// matrix: new Matrix3x4().scale(1,2,1).toFlatArray()
// });
// const shell = mShell.brepShell as Shell;
// // shell.transform(new Matrix3x4().scale(1,2,1));
// const scaledInput = writeBrep(shell);
// console.dir(scaledInput);
// let data2 = ctx.craftEngine.modellingEngine.loadModel(scaledInput);
// const mShell2 = readShellEntityFromJson(data2);
}
function makeCube({x, y, z}): BrepInputData {
return {
vertices: {
A: [x, y, z],
B: [500, 0, 500],
C: [500, 500, 500],
D: [0, 500, 500],
AA: [0, 0, 0],
BB: [500, 0, 0],
CC: [500, 500, 0],
DD: [0, 500, 0],
},
// curves: {},
surfaces: {
top: {
TYPE: 'PLANE',
normal: [0, 0, 1],
origin: [0, 0, 500]
},
bottom: {
TYPE: 'PLANE',
normal: [0, 0, -1],
origin: [0, 0, 0]
},
wall1: {
TYPE: 'PLANE',
normal: [0, -1, 0],
origin: [0, 0, 0]
},
wall2: {
TYPE: 'PLANE',
normal: [1, 0, 0],
origin: [500, 0, 0]
},
wall3: {
TYPE: 'PLANE',
normal: [0, 1, 0],
origin: [0, 500, 0]
},
wall4: {
TYPE: 'PLANE',
normal: [-1, 0, 0],
origin: [0, 0, 0]
},
},
edges: {
AB: { a: 'A', b: 'B' },
BC: { a: 'B', b: 'C' },
CD: { a: 'C', b: 'D' },
DA: { a: 'D', b: 'A' },
AA_BB: { a: 'AA', b: 'BB' },
BB_CC: { a: 'BB', b: 'CC' },
CC_DD: { a: 'CC', b: 'DD' },
DD_AA: { a: 'DD', b: 'AA' },
A_AA: { a: 'A', b: 'AA' },
B_BB: { a: 'B', b: 'BB' },
C_CC: { a: 'C', b: 'CC' },
D_DD: { a: 'D', b: 'DD' },
},
faces: [
{
surface: 'top',
plate: true,
loops: [
['AB', 'BC', 'CD', 'DA']]
},
{
surface: 'bottom',
loops: [['AA_BB', 'BB_CC', 'CC_DD', 'DD_AA']]
},
{
surface: 'wall1',
loops: [['AB', 'B_BB', 'AA_BB', 'A_AA']]
},
{
surface: 'wall2',
loops: [['BC', 'C_CC', 'BB_CC', 'B_BB']]
},
{
surface: 'wall3',
loops: [['CD', 'D_DD', 'CC_DD', 'C_CC']]
},
{
surface: 'wall4',
loops: [['DA', 'A_AA', 'DD_AA', 'D_DD']]
},
]
}
}