test scenarios for datums

This commit is contained in:
Val Erastov 2019-02-19 14:00:54 -08:00
parent 500b084c2e
commit 890b1fbe49
4 changed files with 147 additions and 13 deletions

View 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();
}

View file

@ -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();
}

View file

@ -12,6 +12,7 @@ export default {
TestCase('craftRevolve'),
TestCase('craftFillet'),
TestCase('craftLoft'),
TestCase('craftDatum'),
],
SketcherObjects: [

View file

@ -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
};