mirror of
https://github.com/xibyte/jsketcher
synced 2025-12-06 08:25:19 +01:00
79 lines
1.9 KiB
JavaScript
79 lines
1.9 KiB
JavaScript
import schema from './moveDatumOpSchema';
|
|
import {MDatum} from '../../../model/mdatum';
|
|
import MoveDatumWizard from './MoveDatumWizard';
|
|
import {roundInteractiveInput} from '../../wizard/roundUtils';
|
|
import {EMPTY_ARRAY} from '../../../../../../modules/gems/iterables';
|
|
import {pointAsText} from '../../../../../../modules/renders';
|
|
import {DatumParamsRenderer} from '../DatumParamsRenderer';
|
|
|
|
|
|
function move(params, {cadRegistry}) {
|
|
|
|
let mDatum = cadRegistry.findDatum(params.datum);
|
|
|
|
let csys = mDatum.csys.clone();
|
|
csys.origin.x += params.x;
|
|
csys.origin.y += params.y;
|
|
csys.origin.z += params.z;
|
|
|
|
return {
|
|
consumed: params.copy ? EMPTY_ARRAY : [mDatum],
|
|
created: [new MDatum(csys)]
|
|
}
|
|
}
|
|
|
|
function previewer(ctx, initialParams, updateParams) {
|
|
|
|
let mDatum = ctx.services.cadRegistry.findDatum(initialParams.datum);
|
|
if (!mDatum) {
|
|
return null;
|
|
}
|
|
let view = mDatum.ext.view;
|
|
if (!view) {
|
|
return null;
|
|
}
|
|
|
|
let datum3D = view.rootGroup;
|
|
datum3D.beginOperation();
|
|
datum3D.onMove = (begin, end, delta) => {
|
|
updateParams(params => {
|
|
params.x = roundInteractiveInput(end.x - mDatum.csys.origin.x);
|
|
params.y = roundInteractiveInput(end.y - mDatum.csys.origin.y);
|
|
params.z = roundInteractiveInput(end.z - mDatum.csys.origin.z);
|
|
})
|
|
};
|
|
|
|
function update(params) {
|
|
datum3D.csys.origin.setV(mDatum.csys.origin);
|
|
datum3D.csys.origin.x += params.x;
|
|
datum3D.csys.origin.y += params.y;
|
|
datum3D.csys.origin.z += params.z;
|
|
}
|
|
|
|
function dispose() {
|
|
datum3D.csys.copy(mDatum.csys);
|
|
datum3D.finishOperation();
|
|
}
|
|
|
|
update(initialParams);
|
|
|
|
return {
|
|
update, dispose
|
|
}
|
|
}
|
|
|
|
export default {
|
|
id: 'DATUM_MOVE',
|
|
label: 'Move Datum',
|
|
icon: 'img/cad/datum-move',
|
|
info: 'moves a datum',
|
|
paramsInfoComponent: DatumParamsRenderer,
|
|
paramsInfo: pointAsText,
|
|
previewer,
|
|
run: move,
|
|
form: MoveDatumWizard,
|
|
schema
|
|
};
|
|
|
|
|
|
|