fix primitives off of datum

This commit is contained in:
Val Erastov 2022-03-25 22:09:11 -07:00
parent 54d577cfcc
commit 25e1000856
8 changed files with 92 additions and 34 deletions

View file

@ -3,19 +3,21 @@ import {roundValueForPresentation as r} from 'cad/craft/operationHelper';
import {EntityKind} from "cad/model/entities";
import {BooleanDefinition} from "cad/craft/schema/common/BooleanDefinition";
import {OperationDescriptor} from "cad/craft/operationPlugin";
import CSys from "math/csys";
import {MDatum} from "cad/model/mdatum";
interface PrimitiveBoxParams {
x: Number,
y: Number,
z: Number,
locations: {},
locations: MDatum,
boolean: BooleanDefinition,
}
export const PrimitiveBoxOperation: OperationDescriptor<PrimitiveBoxParams> = {
id: 'PRIMITIVE_BOX',
label: 'Primitive Box',
id: 'BOX',
label: 'Box',
icon: 'img/cad/cube',
info: 'Primitive Box',
paramsInfo: ({x, y, z}) => `(${r(x)} , ${r(y)} , ${r(z)})`,
@ -66,10 +68,16 @@ export const PrimitiveBoxOperation: OperationDescriptor<PrimitiveBoxParams> = {
let occ = ctx.occService;
const oci = occ.commandInterface;
const csys = params.locations?.csys || CSys.ORIGIN;
oci.box("b", params.x, params.y, params.z);
oci.box("box",
"-min", csys.origin.x, csys.origin.y, csys.origin.z,
"-size", params.x, params.y, params.z,
"-dir", csys.z.x, csys.z.y, csys.z.z,
"-xdir", csys.x.x, csys.x.y, csys.x.z
);
return occ.utils.applyBooleanModifier(["b"], params.boolean);
return occ.utils.applyBooleanModifier(["box"], params.boolean);
},
}

View file

@ -3,21 +3,23 @@ import { roundValueForPresentation as r } from 'cad/craft/operationHelper';
import { EntityKind } from "cad/model/entities";
import { BooleanDefinition } from "cad/craft/schema/common/BooleanDefinition";
import { OperationDescriptor } from "cad/craft/operationPlugin";
import {MDatum} from "cad/model/mdatum";
import CSys from "math/csys";
interface PrimitiveConeParams {
diameterA: number,
diameterB: number,
height: number,
locations: {},
locations: MDatum,
boolean: BooleanDefinition,
}
export const PrimitiveConeOperation: OperationDescriptor<PrimitiveConeParams> = {
id: 'PRIMITIVE_CONE',
label: 'Primitive Cone',
id: 'CONE',
label: 'Cone',
icon: 'img/cad/cone',
info: 'Primitive Cone',
info: 'Cone',
paramsInfo: ({ height, diameterA, diameterB }) => `(${r(height)} , ${r(diameterA)} , ${r(diameterB)} )`,
form: [
{
@ -66,8 +68,19 @@ export const PrimitiveConeOperation: OperationDescriptor<PrimitiveConeParams> =
let occ = ctx.occService;
const oci = occ.commandInterface;
//pCone cy 5 10
oci.pcone("cone", params.diameterA / 2, params.diameterB / 2, params.height);
const csys = params.locations?.csys || CSys.ORIGIN;
oci.plane("csys",
csys.origin.x,
csys.origin.y,
csys.origin.z,
csys.x.x,
csys.x.y,
csys.x.z,
csys.y.x,
csys.y.y,
csys.y.z);
oci.pcone("cone", "csys", params.diameterA / 2, params.diameterB / 2, params.height);
return occ.utils.applyBooleanModifier(["cone"], params.boolean);

View file

@ -3,18 +3,20 @@ import {roundValueForPresentation as r} from 'cad/craft/operationHelper';
import {EntityKind} from "cad/model/entities";
import {BooleanDefinition} from "cad/craft/schema/common/BooleanDefinition";
import {OperationDescriptor} from "cad/craft/operationPlugin";
import {MDatum} from "cad/model/mdatum";
import CSys from "math/csys";
interface PrimitiveCylinderParams {
diameter: number,
height: number,
locations: {},
locations: MDatum,
boolean: BooleanDefinition,
}
export const PrimitiveCylinderOperation: OperationDescriptor<PrimitiveCylinderParams> = {
id: 'PRIMITIVE_CYLINDER',
label: 'Primitive cylinder',
id: 'CYLINDER',
label: 'Cylinder',
icon: 'img/cad/cylinder',
info: 'Primitive Cylinder',
paramsInfo: ({height, diameter}) => `(${r(height)} , ${r(diameter)} )`,
@ -59,8 +61,19 @@ export const PrimitiveCylinderOperation: OperationDescriptor<PrimitiveCylinderPa
let occ = ctx.occService;
const oci = occ.commandInterface;
//pcylinder cy 5 10
oci.pcylinder("cy", params.diameter / 2, params.height);
const csys = params.locations?.csys || CSys.ORIGIN;
oci.plane("csys",
csys.origin.x,
csys.origin.y,
csys.origin.z,
csys.x.x,
csys.x.y,
csys.x.z,
csys.y.x,
csys.y.y,
csys.y.z);
oci.pcylinder("cy", "csys", params.diameter / 2, params.height);
return occ.utils.applyBooleanModifier(["cy"], params.boolean);

View file

@ -3,17 +3,19 @@ import {roundValueForPresentation as r} from 'cad/craft/operationHelper';
import {EntityKind} from "cad/model/entities";
import {BooleanDefinition} from "cad/craft/schema/common/BooleanDefinition";
import {OperationDescriptor} from "cad/craft/operationPlugin";
import {MDatum} from "cad/model/mdatum";
import CSys from "math/csys";
interface PrimitiveSphereParams {
radius: number,
locations: {},
locations: MDatum,
boolean: BooleanDefinition,
}
export const PrimitiveSphereOperation: OperationDescriptor<PrimitiveSphereParams> = {
id: 'PRIMITIVE_SPHERE',
label: 'Primitive Sphere',
id: 'SPHERE',
label: 'Sphere',
icon: 'img/cad/sphere',
info: 'Primitive Sphere',
paramsInfo: ({radius,}) => `(${r(radius)} )`,
@ -53,8 +55,19 @@ export const PrimitiveSphereOperation: OperationDescriptor<PrimitiveSphereParams
let occ = ctx.occService;
const oci = occ.commandInterface;
//pSphere cy 5 10
oci.psphere("Sphere", params.radius);
const csys = params.locations?.csys || CSys.ORIGIN;
oci.plane("csys",
csys.origin.x,
csys.origin.y,
csys.origin.z,
csys.x.x,
csys.x.y,
csys.x.z,
csys.y.x,
csys.y.y,
csys.y.z);
oci.psphere("Sphere", "csys", params.radius);
return occ.utils.applyBooleanModifier(["Sphere"], params.boolean);

View file

@ -3,18 +3,20 @@ import {roundValueForPresentation as r} from 'cad/craft/operationHelper';
import {EntityKind} from "cad/model/entities";
import {BooleanDefinition} from "cad/craft/schema/common/BooleanDefinition";
import {OperationDescriptor} from "cad/craft/operationPlugin";
import {MDatum} from "cad/model/mdatum";
import CSys from "math/csys";
interface PrimitiveTorusParams {
radius: number,
tubeRadius: number,
locations: {},
locations: MDatum,
boolean: BooleanDefinition,
}
export const PrimitiveTorusOperation: OperationDescriptor<PrimitiveTorusParams> = {
id: 'PRIMITIVE_TORUS',
label: 'Primitive Torus',
id: 'TORUS',
label: 'Torus',
icon: 'img/cad/torus',
info: 'Primitive Torus',
paramsInfo: ({radius, tubeRadius}) => `(${r(radius)} , ${r(tubeRadius)} )`,
@ -59,8 +61,19 @@ export const PrimitiveTorusOperation: OperationDescriptor<PrimitiveTorusParams>
let occ = ctx.occService;
const oci = occ.commandInterface;
//pTorus cy 5 10
oci.ptorus("torus", params.radius, params.tubeRadius);
const csys = params.locations?.csys || CSys.ORIGIN;
oci.plane("csys",
csys.origin.x,
csys.origin.y,
csys.origin.z,
csys.x.x,
csys.x.y,
csys.x.z,
csys.y.x,
csys.y.y,
csys.y.z);
oci.ptorus("torus", "csys", params.radius, params.tubeRadius);
return occ.utils.applyBooleanModifier(["torus"], params.boolean);

View file

@ -46,9 +46,8 @@ export const ModelerWorkspace: WorkbenchConfig = {
"EXTRUDE", "REVOLVE", "LOFT", "SWEEP", "-",
"BOOLEAN", "-",
"SHELL_TOOL", "FILLET_TOOL", "OFFSET_TOOL", "MIRROR_BODY", "-",
"PRIMITIVE_CYLINDER", "PRIMITIVE_BOX", "PRIMITIVE_CONE", "PRIMITIVE_SPHERE", "PRIMITIVE_TORUS", "-",
"CYLINDER", "BOX", "CONE", "SPHERE", "TORUS", "-",
"HOLE_TOOL", "-",
"OCC_BOTTLE", '-',
"SM_TAB","SM_FLANGE"
]
}

View file

@ -3,7 +3,6 @@ import OperationActions from '../actions/operationActions';
import HistoryActions from '../actions/historyActions';
import UsabilityActions from '../actions/usabilityActions';
import menuConfig from './menuConfig';
import ObjectExplorer from '../craft/ui/ObjectExplorer';
import React from 'react';
import OperationHistory from '../craft/ui/OperationHistory';
import Expressions from '../expressions/Expressions';

View file

@ -45,7 +45,7 @@ function registerCoreOperations(ctx: WorkbenchesLoaderInputContext) {
ctx.operationService.registerOperations([
planeOperation,
boxOperation,
// boxOperation,
// extrudeOperation,
cutOperation,
revolveOperation,
@ -54,10 +54,10 @@ function registerCoreOperations(ctx: WorkbenchesLoaderInputContext) {
moveDatumOperation,
rotateDatumOperation,
datumOperation,
sphereOperation,
cylinderOperation,
torusOperation,
coneOperation,
// sphereOperation,
// cylinderOperation,
// torusOperation,
// coneOperation,
spatialCurveOperation,
loftOperation,
intersectionOperation,