mirror of
https://github.com/xibyte/jsketcher
synced 2025-12-08 09:24:18 +01:00
148 lines
3.3 KiB
TypeScript
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']]
|
|
},
|
|
]
|
|
|
|
}
|
|
}
|