diff --git a/modules/workbenches/modeler/features/moveBody/moveBody.operation.ts b/modules/workbenches/modeler/features/moveBody/moveBody.operation.ts index 37596dfd..85955353 100644 --- a/modules/workbenches/modeler/features/moveBody/moveBody.operation.ts +++ b/modules/workbenches/modeler/features/moveBody/moveBody.operation.ts @@ -1,13 +1,14 @@ -import {ApplicationContext} from "cad/context"; -import {EntityKind} from "cad/model/entities"; -import {OperationDescriptor} from "cad/craft/operationBundle"; -import {SetLocation} from "cad/craft/e0/interact"; -import {MDatum} from "cad/model/mdatum"; +import { ApplicationContext } from "cad/context"; +import { EntityKind } from "cad/model/entities"; +import { OperationDescriptor } from "cad/craft/operationBundle"; +import { SetLocation } from "cad/craft/e0/interact"; +import { MDatum } from "cad/model/mdatum"; import { MShell } from 'cad/model/mshell'; import icon from "./MOVE-BODY.svg"; interface MoveBodyParams { - datum: MDatum; + toLocation: MDatum; + fromLocation: MDatum; body: MShell; } @@ -16,7 +17,7 @@ export const MoveBodyOperation: OperationDescriptor = { label: 'Move Body', icon, info: 'Move Body', - path:__dirname, + path: __dirname, paramsInfo: () => '', run: (params: MoveBodyParams, ctx: ApplicationContext) => { @@ -28,12 +29,41 @@ export const MoveBodyOperation: OperationDescriptor = { consumed: [params.body], created: [] }; - const location = params.datum.csys.outTransformation._normalize(); - const newShellName = params.body.id+":T"; + const bodyLocation = params.body.csys; + const fromLocation = params.fromLocation.csys; + const toLocation = params.toLocation.csys; + + let location = bodyLocation.outTransformation._normalize(); + + + // location = location.combine( + // fromLocation.outTransformation.combine(toLocation.inTransformation._normalize()) + // )._normalize(); + + location = location.combine(toLocation.outTransformation._normalize().combine(fromLocation.outTransformation._normalize())); + //location = location.combine(bodyLocation.inTransformation); + + //let location =fromLocation.outTransformation.combine(toLocation.outTransformation); + //location = location.combine(toLocation.outTransformation._normalize())._normalize(); + + //const location = params.toLocation.csys.outTransformation._normalize(); + + //const Newlocation = toLocation.outTransformation.combine(fromLocation.inTransformation._normalize())._normalize(); + //const Newlocation = fromLocation.inTransformation.combine(toLocation.outTransformation); + //const Newlocation = toLocation.outTransformation.combine(fromLocation.outTransformation)._normalize(); + + //let location = params.body.csys.outTransformation.combine(fromLocation.outTransformation._normalize())._normalize(); + //location = location.combine(Newlocation)._normalize(); + + //location =Newlocation; + + + const newShellName = params.body.id + ":T"; oci.copy(params.body, newShellName); + SetLocation(newShellName, location.toFlatArray()); returnObject.created.push(occ.io.getShell(newShellName)); @@ -43,9 +73,22 @@ export const MoveBodyOperation: OperationDescriptor = { form: [ { type: 'selection', - name: 'datum', + name: 'toLocation', capture: [EntityKind.DATUM], - label: 'Datum', + label: 'To Location', + multi: false, + defaultValue: { + usePreselection: true, + preselectionIndex: 0 + }, + }, + + + { + type: 'selection', + name: 'fromLocation', + capture: [EntityKind.DATUM], + label: 'From Location', multi: false, defaultValue: { usePreselection: true,