mirror of
https://github.com/xibyte/jsketcher
synced 2025-12-06 08:25:19 +01:00
fixing tests
This commit is contained in:
parent
4f7e7267ea
commit
7fe68287eb
11 changed files with 63 additions and 26 deletions
|
|
@ -5,5 +5,7 @@
|
||||||
"pluginsFile": "test/cypress/plugins/index.js",
|
"pluginsFile": "test/cypress/plugins/index.js",
|
||||||
"screenshotsFolder": "test/cypress/screenshots",
|
"screenshotsFolder": "test/cypress/screenshots",
|
||||||
"videosFolder": "test/cypress/videos",
|
"videosFolder": "test/cypress/videos",
|
||||||
"supportFile": "test/cypress/support/index.js"
|
"supportFile": "test/cypress/support/index.js",
|
||||||
|
"viewportWidth": 1600,
|
||||||
|
"viewportHeight": 1000
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ export type Basis = [Vector, Vector, Vector];
|
||||||
|
|
||||||
export type Vec3 = [number, number, number];
|
export type Vec3 = [number, number, number];
|
||||||
|
|
||||||
export type Matrix3x4Data = [number, number, number, number, number, number, number, number, number, number, number, number];
|
export type Matrix3x4Data = [[number, number, number, number],[number, number, number, number],[number, number, number, number]];
|
||||||
|
|
||||||
const freeze = Object.freeze;
|
const freeze = Object.freeze;
|
||||||
|
|
||||||
|
|
@ -180,7 +180,7 @@ export class Matrix3 {
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
toArray(): [[number, number, number, number],[number, number, number, number],[number, number, number, number]] {
|
toArray(): Matrix3x4Data {
|
||||||
return [
|
return [
|
||||||
[this.mxx, this.mxy, this.mxz, this.tx],
|
[this.mxx, this.mxy, this.mxz, this.tx],
|
||||||
[this.myx, this.myy, this.myz, this.ty],
|
[this.myx, this.myy, this.myz, this.ty],
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
import {extrudeCube} from '../utils/scripts';
|
import {extrudeCube} from '../utils/scripts';
|
||||||
|
import {testExtrudeBezier} from "./craftExtrudeBasicShapes";
|
||||||
|
|
||||||
export const TEST_MODE = 'modellerUI';
|
export const TEST_MODE = 'modellerUI';
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,21 @@
|
||||||
import {createPlaneAndOpenSketcher, extrudeCube} from '../utils/scripts';
|
import {createPlaneAndOpenSketcher, extrudeCube} from '../utils/scripts';
|
||||||
|
import {testExtrudeCOI1Faces} from "./craftExtrude";
|
||||||
|
|
||||||
export const TEST_MODE = 'modellerUI';
|
export const TEST_MODE = 'modellerUI';
|
||||||
|
|
||||||
|
testRevolveHalfWay.only = true;
|
||||||
export async function testRevolveHalfWay(env, ui) {
|
export async function testRevolveHalfWay(env, ui) {
|
||||||
await createPlaneAndOpenSketcher(ui);
|
await createPlaneAndOpenSketcher(ui);
|
||||||
let sui = ui.openSketcher();
|
let sui = ui.openSketcher();
|
||||||
sui.addRectangle(20, -50, 50, 50);
|
sui.addRectangle(200, -500, 500, 500);
|
||||||
sui.changeToConstructionLayer();
|
sui.changeToConstructionLayer();
|
||||||
sui.addSegment(0, -50, 0, 50);
|
sui.addSegment(0, -500, 0, 500);
|
||||||
ui.commitSketch();
|
ui.commitSketch();
|
||||||
|
|
||||||
ui.openWizard('REVOLVE');
|
ui.openWizard('REVOLVE');
|
||||||
ui.wizardContext.updateParam('angle', 180);
|
ui.wizardContext.updateParam('angle', 180);
|
||||||
ui.select([0, 0, 10], [0, 0, -10]);
|
ui.simulateClickByRayCast([0, 0, 10], [0, 0, -10]);
|
||||||
|
ui.simulateClickByRayCast([100, 0, 10], [100, 0, -10]);
|
||||||
await ui.wizardOK();
|
await ui.wizardOK();
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -123,7 +123,7 @@ export function addEllipticalArc(ctx, aX, aY, bX, bY, rX, rY) {
|
||||||
export function addBezier(ctx, aX, aY, bX, bY) {
|
export function addBezier(ctx, aX, aY, bX, bY) {
|
||||||
[aX, aY] = modelToScreen(ctx.viewer, aX, aY);
|
[aX, aY] = modelToScreen(ctx.viewer, aX, aY);
|
||||||
[bX, bY] = modelToScreen(ctx.viewer, bX, bY);
|
[bX, bY] = modelToScreen(ctx.viewer, bX, bY);
|
||||||
ctx.actions['addBezierCurve'].action();
|
ctx.actions.BezierTool.invoke(ctx);
|
||||||
moveAndClickXY(ctx, aX, aY);
|
moveAndClickXY(ctx, aX, aY);
|
||||||
let curve = ctx.viewer.toolManager.tool.curve;
|
let curve = ctx.viewer.toolManager.tool.curve;
|
||||||
moveAndClickXY(ctx, bX, bY);
|
moveAndClickXY(ctx, bX, bY);
|
||||||
|
|
|
||||||
2
test/cypress/support/index.d.ts
vendored
2
test/cypress/support/index.d.ts
vendored
|
|
@ -22,8 +22,10 @@ declare namespace Cypress {
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface SketcherTPI {
|
export interface SketcherTPI {
|
||||||
|
|
||||||
addRectangle(x1: number, y1: number, x2: number, y2: number): any;
|
addRectangle(x1: number, y1: number, x2: number, y2: number): any;
|
||||||
|
|
||||||
|
addCircle(x: number, y: number, r: number): any;
|
||||||
}
|
}
|
||||||
|
|
||||||
type vec3 = [number, number, number];
|
type vec3 = [number, number, number];
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,7 @@ function createRevolveCommand(request, {cadRegistry, sketchStorageService}) {
|
||||||
|
|
||||||
let pivot = cadRegistry.findSketchObject(request.axis).sketchPrimitive;
|
let pivot = cadRegistry.findSketchObject(request.axis).sketchPrimitive;
|
||||||
let tr = face.csys.outTransformation;
|
let tr = face.csys.outTransformation;
|
||||||
let vec = __CAD_APP.services.exposure.math.dir;
|
let vec = __CAD_APP.services.exposure.math.vec;
|
||||||
let axisOrigin = tr._apply3(pivot.a.data());
|
let axisOrigin = tr._apply3(pivot.a.data());
|
||||||
let axisDir = vec._normalize(vec._sub(tr._apply3(pivot.b.data()), axisOrigin))
|
let axisDir = vec._normalize(vec._sub(tr._apply3(pivot.b.data()), axisOrigin))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ import initReassignSketchMode from './reassignSketchMode';
|
||||||
import {Viewer} from "../../sketcher/viewer2d";
|
import {Viewer} from "../../sketcher/viewer2d";
|
||||||
import {IO} from "../../sketcher/io";
|
import {IO} from "../../sketcher/io";
|
||||||
import {Generator} from "../../sketcher/id-generator";
|
import {Generator} from "../../sketcher/id-generator";
|
||||||
|
import {NOOP} from "gems/func";
|
||||||
|
|
||||||
export function defineStreams(ctx) {
|
export function defineStreams(ctx) {
|
||||||
ctx.streams.sketcher = {
|
ctx.streams.sketcher = {
|
||||||
|
|
@ -79,6 +80,7 @@ export function activate(ctx) {
|
||||||
function updateSketchForFace(mFace) {
|
function updateSketchForFace(mFace) {
|
||||||
let sketch = ctx.sketchStorageService.readSketch(mFace.defaultSketchId);
|
let sketch = ctx.sketchStorageService.readSketch(mFace.defaultSketchId);
|
||||||
mFace.setSketch(sketch);
|
mFace.setSketch(sketch);
|
||||||
|
ctx.craftService.models$.mutate(NOOP);// to reindex all entities
|
||||||
streams.sketcher.update.next(mFace);
|
streams.sketcher.update.next(mFace);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -336,17 +336,43 @@ export const ConstraintDefinitions
|
||||||
icon: PointOnCurveConstraintIcon,
|
icon: PointOnCurveConstraintIcon,
|
||||||
|
|
||||||
defineParamsScope: ([pt, ellipse], callback) => {
|
defineParamsScope: ([pt, ellipse], callback) => {
|
||||||
ellipse.visitParams(callback);
|
|
||||||
callback(new Param(0, 't'));
|
|
||||||
pt.visitParams(callback);
|
pt.visitParams(callback);
|
||||||
|
ellipse.visitParams(callback);
|
||||||
|
callback(new Param(Math.atan2(pt.y - ellipse.c.y, pt.x - ellipse.c.x), 't'));
|
||||||
},
|
},
|
||||||
|
|
||||||
collectPolynomials: (polynomials, [p1x,p1y, p2x,p2y, r, t, px, py]) => {
|
collectPolynomials: (polynomials, [px,py, cx,cy, rx,ry, rot, t]) => {
|
||||||
const ellipsePoly = (p, t, p0, p1, p2, p3) => new Polynomial()
|
|
||||||
.monomial(-1);
|
|
||||||
|
|
||||||
|
polynomials.push(new Polynomial()
|
||||||
|
.monomial(-1)
|
||||||
|
.term(px, POW_1_FN)
|
||||||
|
.monomial()
|
||||||
|
.term(cx, POW_1_FN)
|
||||||
|
.monomial()
|
||||||
|
.term(rx, POW_1_FN)
|
||||||
|
.term(rot, COS_FN)
|
||||||
|
.term(t, COS_FN)
|
||||||
|
.monomial(-1)
|
||||||
|
.term(ry, POW_1_FN)
|
||||||
|
.term(rot, SIN_FN)
|
||||||
|
.term(t, SIN_FN)
|
||||||
|
);
|
||||||
|
|
||||||
|
polynomials.push(new Polynomial()
|
||||||
|
.monomial(-1)
|
||||||
|
.term(py, POW_1_FN)
|
||||||
|
.monomial()
|
||||||
|
.term(cy, POW_1_FN)
|
||||||
|
.monomial()
|
||||||
|
.term(rx, POW_1_FN)
|
||||||
|
.term(rot, SIN_FN)
|
||||||
|
.term(t, COS_FN)
|
||||||
|
.monomial()
|
||||||
|
.term(ry, POW_1_FN)
|
||||||
|
.term(rot, COS_FN)
|
||||||
|
.term(t, SIN_FN)
|
||||||
|
);
|
||||||
|
|
||||||
// polynomials.push(ellipsePoly());
|
|
||||||
// polynomials.push(ellipsePoly());
|
// polynomials.push(ellipsePoly());
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
@ -956,7 +982,7 @@ export interface ConstraintSchema {
|
||||||
|
|
||||||
id: string;
|
id: string;
|
||||||
name: string,
|
name: string,
|
||||||
icon: IconType,
|
icon?: IconType,
|
||||||
constants?: {
|
constants?: {
|
||||||
[name: string]: {
|
[name: string]: {
|
||||||
readOnly?: boolean;
|
readOnly?: boolean;
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ import {compositeFn} from "gems/func";
|
||||||
import {AlgNumConstraint} from "./ANConstraints";
|
import {AlgNumConstraint} from "./ANConstraints";
|
||||||
import {SolverParam} from "./solverParam";
|
import {SolverParam} from "./solverParam";
|
||||||
|
|
||||||
const DEBUG = true;
|
const DEBUG = false;
|
||||||
|
|
||||||
export class AlgNumSubSystem {
|
export class AlgNumSubSystem {
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
import {Generator} from './id-generator'
|
import {Generator} from './id-generator'
|
||||||
import {Viewer} from './viewer2d'
|
import {Viewer} from './viewer2d'
|
||||||
import {Styles} from './styles'
|
|
||||||
import {Arc} from './shapes/arc'
|
import {Arc} from './shapes/arc'
|
||||||
import {EndPoint} from './shapes/point'
|
import {EndPoint} from './shapes/point'
|
||||||
import {Segment} from './shapes/segment'
|
import {Segment} from './shapes/segment'
|
||||||
|
|
@ -8,10 +7,17 @@ import {Circle} from './shapes/circle'
|
||||||
import {Ellipse} from './shapes/ellipse'
|
import {Ellipse} from './shapes/ellipse'
|
||||||
import {EllipticalArc} from './shapes/elliptical-arc'
|
import {EllipticalArc} from './shapes/elliptical-arc'
|
||||||
import {BezierCurve} from './shapes/bezier-curve'
|
import {BezierCurve} from './shapes/bezier-curve'
|
||||||
import {LinearDimension, AngleBetweenDimension, DiameterDimension, Dimension, HDimension, VDimension} from './shapes/dim'
|
import {
|
||||||
|
AngleBetweenDimension,
|
||||||
|
DiameterDimension,
|
||||||
|
Dimension,
|
||||||
|
HDimension,
|
||||||
|
LinearDimension,
|
||||||
|
VDimension
|
||||||
|
} from './shapes/dim'
|
||||||
import Vector from 'math/vector';
|
import Vector from 'math/vector';
|
||||||
import exportTextData from 'gems/exportTextData';
|
import exportTextData from 'gems/exportTextData';
|
||||||
import {AlgNumConstraint} from "./constr/ANConstraints";
|
import {AlgNumConstraint, ConstraintSerialization} from "./constr/ANConstraints";
|
||||||
import {SketchGenerator} from "./generators/sketchGenerator";
|
import {SketchGenerator} from "./generators/sketchGenerator";
|
||||||
import {BoundaryGeneratorSchema} from "./generators/boundaryGenerator";
|
import {BoundaryGeneratorSchema} from "./generators/boundaryGenerator";
|
||||||
import {SketchTypes} from "./shapes/sketch-types";
|
import {SketchTypes} from "./shapes/sketch-types";
|
||||||
|
|
@ -41,12 +47,7 @@ export interface SketchFormat_V3 {
|
||||||
typeId: string
|
typeId: string
|
||||||
}[];
|
}[];
|
||||||
|
|
||||||
constraints: {
|
constraints: ConstraintSerialization[];
|
||||||
typeId: string,
|
|
||||||
objects: string[],
|
|
||||||
constants: {[key: string]: string},
|
|
||||||
annotations: any
|
|
||||||
}[];
|
|
||||||
|
|
||||||
}[];
|
}[];
|
||||||
|
|
||||||
|
|
@ -125,7 +126,7 @@ export class IO {
|
||||||
skobj = Ellipse.read(obj.id, obj.data);
|
skobj = Ellipse.read(obj.id, obj.data);
|
||||||
} else if (type === EllipticalArc.prototype.TYPE) {
|
} else if (type === EllipticalArc.prototype.TYPE) {
|
||||||
skobj = EllipticalArc.read(obj.id, obj.data);
|
skobj = EllipticalArc.read(obj.id, obj.data);
|
||||||
} else if (type === EllipticalArc.prototype.TYPE) {
|
} else if (type === BezierCurve.prototype.TYPE) {
|
||||||
skobj = BezierCurve.read(obj.id, obj.data);
|
skobj = BezierCurve.read(obj.id, obj.data);
|
||||||
}
|
}
|
||||||
if (skobj != null) {
|
if (skobj != null) {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue