mirror of
https://github.com/xibyte/jsketcher
synced 2026-01-06 07:44:50 +01:00
test scenarios for datums
This commit is contained in:
parent
500b084c2e
commit
890b1fbe49
4 changed files with 147 additions and 13 deletions
120
web/test/cases/craftDatum.js
Normal file
120
web/test/cases/craftDatum.js
Normal file
|
|
@ -0,0 +1,120 @@
|
|||
import {assertEquals, assertTrue} from '../utils/asserts';
|
||||
import {DATUM} from '../../app/cad/scene/entites';
|
||||
|
||||
export const TEST_MODE = 'modellerUI';
|
||||
|
||||
export function testCreateDatumOrigin(env, ui) {
|
||||
ui.openWizard('DATUM_CREATE');
|
||||
ui.wizardOK();
|
||||
|
||||
let datum = ui.context.services.cadRegistry.models[0];
|
||||
ui.context.services.pickControl.pick(datum);
|
||||
|
||||
ui.openWizard('PLANE_FROM_DATUM');
|
||||
assertEquals(datum.id, ui.wizardContext.workingRequest$.value.params.datum);
|
||||
ui.wizardOK();
|
||||
|
||||
let [placeFace] = ui.rayCastFaces([10, 10, -10], [10, 10, 10]);
|
||||
assertTrue(placeFace !== undefined);
|
||||
|
||||
env.done();
|
||||
}
|
||||
|
||||
export function testCreateMovedDatum(env, ui) {
|
||||
ui.openWizard('DATUM_CREATE');
|
||||
ui.wizardContext.updateParam("x", 100);
|
||||
ui.wizardContext.updateParam("y", 100);
|
||||
ui.wizardContext.updateParam("z", 100);
|
||||
ui.wizardOK();
|
||||
|
||||
let datum = ui.context.services.cadRegistry.models[0];
|
||||
ui.context.services.pickControl.pick(datum);
|
||||
|
||||
ui.openWizard('PLANE_FROM_DATUM');
|
||||
assertEquals(datum.id, ui.wizardContext.workingRequest$.value.params.datum);
|
||||
ui.wizardOK();
|
||||
|
||||
ui.select([10, 10, -10], [10, 10, 10]);
|
||||
assertTrue(ui.context.services.selection.face.single === undefined);
|
||||
|
||||
ui.select([110, 110, 90], [110, 110, 110]);
|
||||
assertTrue(ui.context.services.selection.face.single !== undefined);
|
||||
|
||||
env.done();
|
||||
}
|
||||
|
||||
export function testCreateDatumOffFace(env, ui) {
|
||||
ui.openWizard('DATUM_CREATE');
|
||||
ui.wizardContext.updateParam("x", 100);
|
||||
ui.wizardContext.updateParam("y", 100);
|
||||
ui.wizardContext.updateParam("z", 100);
|
||||
ui.wizardOK();
|
||||
|
||||
let datum = ui.context.services.cadRegistry.models[0];
|
||||
ui.context.services.pickControl.pick(datum);
|
||||
|
||||
ui.openWizard('PLANE_FROM_DATUM');
|
||||
ui.wizardOK();
|
||||
|
||||
ui.select([110, 110, 90], [110, 110, 110]);
|
||||
|
||||
ui.openWizard('DATUM_CREATE');
|
||||
ui.wizardContext.updateParam("x", 100);
|
||||
ui.wizardContext.updateParam("y", 100);
|
||||
ui.wizardContext.updateParam("z", 100);
|
||||
ui.wizardOK();
|
||||
|
||||
ui.selectFirst(DATUM);
|
||||
ui.openWizard('PLANE_FROM_DATUM');
|
||||
ui.wizardOK();
|
||||
|
||||
ui.select([210, 210, 190], [210, 210, 210]);
|
||||
assertTrue(ui.context.services.selection.face.single !== undefined);
|
||||
|
||||
env.done();
|
||||
}
|
||||
|
||||
|
||||
export function testRotateDatum(env, ui) {
|
||||
ui.openWizard('DATUM_CREATE');
|
||||
ui.wizardContext.updateParam("x", 100);
|
||||
ui.wizardContext.updateParam("y", 100);
|
||||
ui.wizardContext.updateParam("z", 100);
|
||||
ui.wizardOK();
|
||||
|
||||
ui.selectFirst(DATUM);
|
||||
ui.openWizard('DATUM_ROTATE');
|
||||
ui.wizardContext.updateParam('axis', 'Z');
|
||||
ui.wizardContext.updateParam('angle', 180);
|
||||
ui.wizardOK();
|
||||
|
||||
ui.selectFirst(DATUM);
|
||||
ui.openWizard('PLANE_FROM_DATUM');
|
||||
ui.wizardOK();
|
||||
|
||||
ui.select([90, 90, 90], [90, 90, 110]);
|
||||
assertTrue(ui.context.services.selection.face.single !== undefined);
|
||||
|
||||
env.done();
|
||||
}
|
||||
|
||||
export function testMoveDatum(env, ui) {
|
||||
ui.openWizard('DATUM_CREATE');
|
||||
ui.wizardOK();
|
||||
|
||||
ui.selectFirst(DATUM);
|
||||
ui.openWizard('DATUM_MOVE');
|
||||
ui.wizardContext.updateParam("x", 100);
|
||||
ui.wizardContext.updateParam("y", 100);
|
||||
ui.wizardContext.updateParam("z", 100);
|
||||
ui.wizardOK();
|
||||
|
||||
ui.selectFirst(DATUM);
|
||||
ui.openWizard('PLANE_FROM_DATUM');
|
||||
ui.wizardOK();
|
||||
|
||||
ui.select([110, 110, 90], [110, 110, 110]);
|
||||
assertTrue(ui.context.services.selection.face.single !== undefined);
|
||||
|
||||
env.done();
|
||||
}
|
||||
|
|
@ -16,8 +16,8 @@ export function testLoftOver2Sections(env, ui) {
|
|||
ui.commitSketch();
|
||||
|
||||
ui.openWizard('LOFT');
|
||||
ui.select([-3, -3, 310], [-3, -3, 290]);
|
||||
ui.select([-3, -3, -10], [-3, -3, 10]);
|
||||
ui.select([0, 0, 310], [0, 0, 290]);
|
||||
ui.select([0, 0, -10], [0, 0, 10]);
|
||||
ui.wizardOK();
|
||||
env.done();
|
||||
}
|
||||
|
|
@ -46,9 +46,9 @@ export function testLoftOver3Sections(env, ui) {
|
|||
|
||||
|
||||
ui.openWizard('LOFT');
|
||||
ui.select([-3, -3, 610], [-3, -3, 590]);
|
||||
ui.select([-3, -3, 310], [-3, -3, 290]);
|
||||
ui.select([-3, -3, -10], [-3, -3, 10]);
|
||||
ui.select([0, 0, 610], [0, 0, 590]);
|
||||
ui.select([0, 0, 310], [0, 0, 290]);
|
||||
ui.select([0, 0, -10], [0, 0, 10]);
|
||||
ui.wizardOK();
|
||||
env.done();
|
||||
}
|
||||
|
|
@ -68,8 +68,8 @@ export function testLoftCircleSections(env, ui) {
|
|||
ui.commitSketch();
|
||||
|
||||
ui.openWizard('LOFT');
|
||||
ui.select([-3, -3, 310], [-3, -3, 290]);
|
||||
ui.select([-3, -3, -10], [-3, -3, 10]);
|
||||
ui.select([0, 0, 310], [0, 0, 290]);
|
||||
ui.select([0, 0, -10], [0, 0, 10]);
|
||||
ui.wizardOK();
|
||||
env.done();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ export default {
|
|||
TestCase('craftRevolve'),
|
||||
TestCase('craftFillet'),
|
||||
TestCase('craftLoft'),
|
||||
TestCase('craftDatum'),
|
||||
],
|
||||
|
||||
SketcherObjects: [
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import {
|
|||
PICK_KIND,
|
||||
traversePickResults
|
||||
} from '../../../../app/cad/scene/controls/pickControlPlugin';
|
||||
import {DATUM} from '../../../../app/cad/scene/entites';
|
||||
|
||||
export default ctx => {
|
||||
|
||||
|
|
@ -27,12 +28,12 @@ export default ctx => {
|
|||
sceneMouseEvent('mouseup', x, y);
|
||||
}
|
||||
|
||||
function rayCastFaces(from, to) {
|
||||
function rayCastByType(from, to, kind) {
|
||||
let rawObjects = ctx.services.viewer.customRaycast(from, to, ctx.services.cadScene.workGroup.children);
|
||||
let faces = [];
|
||||
traversePickResults(null, rawObjects, PICK_KIND.FACE, face => faces.push(face));
|
||||
let models = [];
|
||||
traversePickResults(null, rawObjects, kind, face => models.push(face));
|
||||
let out = [];
|
||||
faces.forEach(face => {
|
||||
models.forEach(face => {
|
||||
if (!out.includes(face)) {
|
||||
out.push(face);
|
||||
}
|
||||
|
|
@ -40,6 +41,14 @@ export default ctx => {
|
|||
return out;
|
||||
}
|
||||
|
||||
function rayCastFaces(from, to) {
|
||||
return rayCastByType(from, to, PICK_KIND.FACE);
|
||||
}
|
||||
|
||||
function rayCast(from, to) {
|
||||
return rayCastByType(from, to, ALL_EXCLUDING_SOLID_KINDS);
|
||||
}
|
||||
|
||||
function selectFaces(from, to) {
|
||||
ctx.services.pickControl.pickFromRay(from, to, PICK_KIND.FACE);
|
||||
}
|
||||
|
|
@ -48,6 +57,10 @@ export default ctx => {
|
|||
ctx.services.pickControl.pickFromRay(from, to, ALL_EXCLUDING_SOLID_KINDS);
|
||||
}
|
||||
|
||||
function selectFirst(type) {
|
||||
ctx.services.pickControl.pick(ctx.services.cadRegistry.models.find(m => m.TYPE === type));
|
||||
}
|
||||
|
||||
function getWizardContext() {
|
||||
return ctx.streams.wizard.wizardContext.value
|
||||
}
|
||||
|
|
@ -63,8 +76,8 @@ export default ctx => {
|
|||
|
||||
return {
|
||||
context: ctx,
|
||||
openWizard, wizardOK, sceneMouseEvent, clickOnScene,
|
||||
rayCastFaces, select, selectFaces, openSketcher, commitSketch,
|
||||
openWizard, wizardOK, sceneMouseEvent, clickOnScene,
|
||||
rayCast, rayCastFaces, select, selectFaces, selectFirst, openSketcher, commitSketch,
|
||||
get wizardContext() { return getWizardContext()},
|
||||
__DEBUG__: ctx.services.debug.utils
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in a new issue