From de117ccc0f22fe312691b2483a87e4a57e2788f6 Mon Sep 17 00:00:00 2001 From: Val Erastov Date: Sun, 19 Sep 2021 15:13:26 -0700 Subject: [PATCH] operations under workbenches --- modules/3d-party/customExtrude/schema.ts | 1 - .../partOperationsPlugin.js | 57 ---------------- modules/svg/{SvgIcon.jsx => SvgIcon.tsx} | 5 +- .../features/extrude/extrude.operation.ts | 64 ++++++++++++++++++ .../features}/occ-bottle/bottle.occ.ts | 0 .../modeler/features/occ-bottle/icon.svg | 10 +++ .../modeler/features/occ-bottle/index.ts} | 13 ++-- .../features}/primitive_box/docs/index.md | 0 .../features}/primitive_box/icon32.png | Bin .../features}/primitive_box/icon96.png | Bin .../modeler/features}/primitive_box/index.ts | 8 +-- .../features}/primitive_cone/docs/index.md | 0 .../features}/primitive_cone/icon32.png | Bin .../features}/primitive_cone/icon96.png | Bin .../modeler/features}/primitive_cone/index.ts | 8 +-- .../primitive_cylinder/docs/index.md | 0 .../features}/primitive_cylinder/icon32.png | Bin .../features}/primitive_cylinder/icon96.png | Bin .../features}/primitive_cylinder/index.ts | 8 +-- .../features}/primitive_sphere/docs/index.md | 0 .../features}/primitive_sphere/icon32.png | Bin .../features}/primitive_sphere/icon96.png | Bin .../features}/primitive_sphere/index.ts | 8 +-- .../features}/primitive_torus/docs/index.md | 0 .../features}/primitive_torus/icon32.png | Bin .../features}/primitive_torus/icon96.png | Bin .../features}/primitive_torus/index.ts | 8 +-- .../workbenches/modeler/features/registry.ts | 4 ++ modules/workbenches/modeler/index.ts | 21 ++++++ modules/workbenches/registry.ts | 5 ++ web/app/cad/craft/operationPlugin.ts | 2 +- web/app/cad/mdf/mdf.ts | 3 +- web/app/cad/mdf/mdfIconResolver.tsx | 6 ++ web/app/cad/part/partOperationsPlugin.js | 21 ++---- 34 files changed, 150 insertions(+), 102 deletions(-) delete mode 100644 modules/3d-party/customExtrude/schema.ts delete mode 100644 modules/3d-party/primitive_cylinder/partOperationsPlugin.js rename modules/svg/{SvgIcon.jsx => SvgIcon.tsx} (69%) create mode 100644 modules/workbenches/modeler/features/extrude/extrude.operation.ts rename modules/{3d-party => workbenches/modeler/features}/occ-bottle/bottle.occ.ts (100%) create mode 100644 modules/workbenches/modeler/features/occ-bottle/icon.svg rename modules/{3d-party/occ-bottle/bottleOperation.ts => workbenches/modeler/features/occ-bottle/index.ts} (78%) rename modules/{3d-party => workbenches/modeler/features}/primitive_box/docs/index.md (100%) rename modules/{3d-party => workbenches/modeler/features}/primitive_box/icon32.png (100%) rename modules/{3d-party => workbenches/modeler/features}/primitive_box/icon96.png (100%) rename modules/{3d-party => workbenches/modeler/features}/primitive_box/index.ts (86%) rename modules/{3d-party => workbenches/modeler/features}/primitive_cone/docs/index.md (100%) rename modules/{3d-party => workbenches/modeler/features}/primitive_cone/icon32.png (100%) rename modules/{3d-party => workbenches/modeler/features}/primitive_cone/icon96.png (100%) rename modules/{3d-party => workbenches/modeler/features}/primitive_cone/index.ts (84%) rename modules/{3d-party => workbenches/modeler/features}/primitive_cylinder/docs/index.md (100%) rename modules/{3d-party => workbenches/modeler/features}/primitive_cylinder/icon32.png (100%) rename modules/{3d-party => workbenches/modeler/features}/primitive_cylinder/icon96.png (100%) rename modules/{3d-party => workbenches/modeler/features}/primitive_cylinder/index.ts (84%) rename modules/{3d-party => workbenches/modeler/features}/primitive_sphere/docs/index.md (100%) rename modules/{3d-party => workbenches/modeler/features}/primitive_sphere/icon32.png (100%) rename modules/{3d-party => workbenches/modeler/features}/primitive_sphere/icon96.png (100%) rename modules/{3d-party => workbenches/modeler/features}/primitive_sphere/index.ts (81%) rename modules/{3d-party => workbenches/modeler/features}/primitive_torus/docs/index.md (100%) rename modules/{3d-party => workbenches/modeler/features}/primitive_torus/icon32.png (100%) rename modules/{3d-party => workbenches/modeler/features}/primitive_torus/icon96.png (100%) rename modules/{3d-party => workbenches/modeler/features}/primitive_torus/index.ts (83%) create mode 100644 modules/workbenches/modeler/features/registry.ts create mode 100644 modules/workbenches/modeler/index.ts create mode 100644 modules/workbenches/registry.ts create mode 100644 web/app/cad/mdf/mdfIconResolver.tsx diff --git a/modules/3d-party/customExtrude/schema.ts b/modules/3d-party/customExtrude/schema.ts deleted file mode 100644 index b8c57fe7..00000000 --- a/modules/3d-party/customExtrude/schema.ts +++ /dev/null @@ -1 +0,0 @@ -console.log("Hello World") \ No newline at end of file diff --git a/modules/3d-party/primitive_cylinder/partOperationsPlugin.js b/modules/3d-party/primitive_cylinder/partOperationsPlugin.js deleted file mode 100644 index d211c030..00000000 --- a/modules/3d-party/primitive_cylinder/partOperationsPlugin.js +++ /dev/null @@ -1,57 +0,0 @@ -import extrudeOperation from '../craft/cutExtrude/extrudeOperation'; -import cutOperation from '../craft/cutExtrude/cutOperation'; -import planeOperation from '../craft/primitives/simplePlane/simplePlaneOperation'; -import filletOperation from '../craft/fillet/filletOperation'; -import revolveOperation from '../craft/revolve/revolveOperation'; -import createDatumOperation from '../craft/datum/create/createDatumOperation'; -import moveDatumOperation from '../craft/datum/move/moveDatumOperation'; -import rotateDatumOperation from '../craft/datum/rotate/rotateDatumOperation'; -import datumOperation from '../craft/primitives/plane/planeOperation'; -import boxOperation from '../craft/primitives/box/boxOperation'; -import sphereOperation from '../craft/primitives/sphere/sphereOperation'; -import cylinderOperation from '../craft/primitives/cylinder/cylinderOperation'; -import torusOperation from '../craft/primitives/torus/torusOperation'; -import coneOperation from '../craft/primitives/cone/coneOperation'; -import spatialCurveOperation from '../craft/spatialCurve/spatialCurveOperation'; -import loftOperation from '../craft/loft/loftOperation'; -import {intersectionOperation, subtractOperation, unionOperation} from '../craft/boolean/booleanOperation'; -import { loadMDFCommand } from '../mdf/mdf'; -import { MDF_EXTRUDE_EXAMPLE } from '../mdf/mdfExtrudeExample'; -import { OCC_BOTTLE_OPERATION } from '3d-party/occ-bottle/bottleOperation'; -import { primitive_cylinder } from '3d-party/primitive_cylinder/index'; -import { primitive_box } from '3d-party/primitive_box/index'; -import { primitive_cone } from '3d-party/primitive_cone/index'; -//import { primitive_box } from '3d-party/primitive_sphere/index'; -//import { primitive_box } from '3d-party/primitive_torus/index'; - - -export function activate({services}) { - services.operation.registerOperations([ - planeOperation, - boxOperation, - // extrudeOperation, - loadMDFCommand(MDF_EXTRUDE_EXAMPLE), - cutOperation, - revolveOperation, - filletOperation, - createDatumOperation, - moveDatumOperation, - rotateDatumOperation, - datumOperation, - sphereOperation, - cylinderOperation, - torusOperation, - coneOperation, - spatialCurveOperation, - loftOperation, - intersectionOperation, - subtractOperation, - unionOperation, - loadMDFCommand(OCC_BOTTLE_OPERATION), - loadMDFCommand(primitive_cylinder), - loadMDFCommand(primitive_box), - loadMDFCommand(primitive_cone), - loadMDFCommand(primitive_sphere), - //loadMDFCommand(primitive_torus), - ]) -} \ No newline at end of file diff --git a/modules/svg/SvgIcon.jsx b/modules/svg/SvgIcon.tsx similarity index 69% rename from modules/svg/SvgIcon.jsx rename to modules/svg/SvgIcon.tsx index 7131a4f1..dcda1af7 100644 --- a/modules/svg/SvgIcon.jsx +++ b/modules/svg/SvgIcon.tsx @@ -1,6 +1,9 @@ import React, {useMemo} from 'react'; -export function SvgIcon({content, size, ...props}) { +export function SvgIcon({content, size, ...props}: { + content: string, + size?: number|string +} & React.HTMLAttributes) { const className = size&&'icon-'+size; diff --git a/modules/workbenches/modeler/features/extrude/extrude.operation.ts b/modules/workbenches/modeler/features/extrude/extrude.operation.ts new file mode 100644 index 00000000..4342f374 --- /dev/null +++ b/modules/workbenches/modeler/features/extrude/extrude.operation.ts @@ -0,0 +1,64 @@ +import { roundValueForPresentation as r } from 'cad/craft/operationHelper'; + +export default { + id: 'EXTRUDE', + label: 'Extrude', + icon: 'img/cad/extrude', + info: 'extrudes 2D sketch', + paramsInfo: ({ value }) => `(${r(value)})`, + mutualExclusiveFields: ['datumAxisVector', 'edgeVector', 'sketchSegmentVector'], + run: (params, ctx) => { + return ctx.craftEngine.cutExtrude(false, params); + }, + schema: { + value: { + type: 'number', + defaultValue: 50, + label: 'height' + }, + wierdField: { + type: 'number', + defaultValue: 50, + label: 'weird field' + }, + prism: { + type: 'number', + min: 0, + defaultValue: 1 + }, + angle: { + type: 'number', + defaultValue: 0 + }, + rotation: { + type: 'number', + defaultValue: 0 + }, + face: { + type: 'face', + initializeBySelection: 0 + }, + datumAxisVector: { + type: 'datumAxis', + optional: true, + label: 'datum axis' + }, + edgeVector: { + type: 'edge', + optional: true, + label: 'edge', + accept: edge => edge.brepEdge.curve.degree === 1 + }, + sketchSegmentVector: { + type: 'sketchObject', + optional: true, + label: 'sketch segment', + accept: obj => obj.isSegment + }, + flip: { + type: 'boolean', + defaultValue: false, + } + + } +} diff --git a/modules/3d-party/occ-bottle/bottle.occ.ts b/modules/workbenches/modeler/features/occ-bottle/bottle.occ.ts similarity index 100% rename from modules/3d-party/occ-bottle/bottle.occ.ts rename to modules/workbenches/modeler/features/occ-bottle/bottle.occ.ts diff --git a/modules/workbenches/modeler/features/occ-bottle/icon.svg b/modules/workbenches/modeler/features/occ-bottle/icon.svg new file mode 100644 index 00000000..78b99920 --- /dev/null +++ b/modules/workbenches/modeler/features/occ-bottle/icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/modules/3d-party/occ-bottle/bottleOperation.ts b/modules/workbenches/modeler/features/occ-bottle/index.ts similarity index 78% rename from modules/3d-party/occ-bottle/bottleOperation.ts rename to modules/workbenches/modeler/features/occ-bottle/index.ts index 84541019..6e128a2c 100644 --- a/modules/3d-party/occ-bottle/bottleOperation.ts +++ b/modules/workbenches/modeler/features/occ-bottle/index.ts @@ -1,15 +1,18 @@ import { ApplicationContext } from 'context'; -import { MBrepShell } from '../../../web/app/cad/model/mshell'; -import { roundValueForPresentation as r } from '../../../web/app/cad/craft/operationHelper'; +import { MBrepShell } from 'cad/model/mshell'; +import { roundValueForPresentation as r } from 'cad/craft/operationHelper'; import { createOCCBottle } from './bottle.occ'; -import { occ2brep } from '../../../web/app/cad/occ/occ2models'; +import { occ2brep } from 'cad/occ/occ2models'; +import icon from './icon.svg'; -export const OCC_BOTTLE_OPERATION = { +export default { id: 'OCC_BOTTLE', label: 'OCC Bottle', - icon: 'img/cad/extrude', + icon, info: 'create occ bottle', mutualExclusiveFields: [], + + paramsInfo: ({ width, height, thickness }) => `(${r(width)} ${r(height)} ${r(thickness)})`, run: ({ width, height, thickness }, ctx: ApplicationContext) => { const occObj = createOCCBottle(width, height, thickness, ctx.occService.occContext); diff --git a/modules/3d-party/primitive_box/docs/index.md b/modules/workbenches/modeler/features/primitive_box/docs/index.md similarity index 100% rename from modules/3d-party/primitive_box/docs/index.md rename to modules/workbenches/modeler/features/primitive_box/docs/index.md diff --git a/modules/3d-party/primitive_box/icon32.png b/modules/workbenches/modeler/features/primitive_box/icon32.png similarity index 100% rename from modules/3d-party/primitive_box/icon32.png rename to modules/workbenches/modeler/features/primitive_box/icon32.png diff --git a/modules/3d-party/primitive_box/icon96.png b/modules/workbenches/modeler/features/primitive_box/icon96.png similarity index 100% rename from modules/3d-party/primitive_box/icon96.png rename to modules/workbenches/modeler/features/primitive_box/icon96.png diff --git a/modules/3d-party/primitive_box/index.ts b/modules/workbenches/modeler/features/primitive_box/index.ts similarity index 86% rename from modules/3d-party/primitive_box/index.ts rename to modules/workbenches/modeler/features/primitive_box/index.ts index 0699e39a..16e8f832 100644 --- a/modules/3d-party/primitive_box/index.ts +++ b/modules/workbenches/modeler/features/primitive_box/index.ts @@ -1,9 +1,9 @@ import { ApplicationContext } from 'context'; -import { MBrepShell } from '../../../web/app/cad/model/mshell'; -import { roundValueForPresentation as r } from '../../../web/app/cad/craft/operationHelper'; -import { occ2brep } from '../../../web/app/cad/occ/occ2models'; +import { MBrepShell } from 'cad/model/mshell'; +import { roundValueForPresentation as r } from 'cad/craft/operationHelper'; +import { occ2brep } from 'cad/occ/occ2models'; -export const primitive_box = { +export default { id: 'primitive_box', label: 'primitive_box', icon: 'img/cad/extrude', diff --git a/modules/3d-party/primitive_cone/docs/index.md b/modules/workbenches/modeler/features/primitive_cone/docs/index.md similarity index 100% rename from modules/3d-party/primitive_cone/docs/index.md rename to modules/workbenches/modeler/features/primitive_cone/docs/index.md diff --git a/modules/3d-party/primitive_cone/icon32.png b/modules/workbenches/modeler/features/primitive_cone/icon32.png similarity index 100% rename from modules/3d-party/primitive_cone/icon32.png rename to modules/workbenches/modeler/features/primitive_cone/icon32.png diff --git a/modules/3d-party/primitive_cone/icon96.png b/modules/workbenches/modeler/features/primitive_cone/icon96.png similarity index 100% rename from modules/3d-party/primitive_cone/icon96.png rename to modules/workbenches/modeler/features/primitive_cone/icon96.png diff --git a/modules/3d-party/primitive_cone/index.ts b/modules/workbenches/modeler/features/primitive_cone/index.ts similarity index 84% rename from modules/3d-party/primitive_cone/index.ts rename to modules/workbenches/modeler/features/primitive_cone/index.ts index 40845ef9..27916940 100644 --- a/modules/3d-party/primitive_cone/index.ts +++ b/modules/workbenches/modeler/features/primitive_cone/index.ts @@ -1,9 +1,9 @@ import { ApplicationContext } from 'context'; -import { MBrepShell } from '../../../web/app/cad/model/mshell'; -import { roundValueForPresentation as r } from '../../../web/app/cad/craft/operationHelper'; -import { occ2brep } from '../../../web/app/cad/occ/occ2models'; +import { MBrepShell } from 'cad/model/mshell'; +import { roundValueForPresentation as r } from 'cad/craft/operationHelper'; +import { occ2brep } from 'cad/occ/occ2models'; -export const primitive_cone = { +export default { id: 'primitive_cone', label: 'primitive_cone', icon: 'img/cad/extrude', diff --git a/modules/3d-party/primitive_cylinder/docs/index.md b/modules/workbenches/modeler/features/primitive_cylinder/docs/index.md similarity index 100% rename from modules/3d-party/primitive_cylinder/docs/index.md rename to modules/workbenches/modeler/features/primitive_cylinder/docs/index.md diff --git a/modules/3d-party/primitive_cylinder/icon32.png b/modules/workbenches/modeler/features/primitive_cylinder/icon32.png similarity index 100% rename from modules/3d-party/primitive_cylinder/icon32.png rename to modules/workbenches/modeler/features/primitive_cylinder/icon32.png diff --git a/modules/3d-party/primitive_cylinder/icon96.png b/modules/workbenches/modeler/features/primitive_cylinder/icon96.png similarity index 100% rename from modules/3d-party/primitive_cylinder/icon96.png rename to modules/workbenches/modeler/features/primitive_cylinder/icon96.png diff --git a/modules/3d-party/primitive_cylinder/index.ts b/modules/workbenches/modeler/features/primitive_cylinder/index.ts similarity index 84% rename from modules/3d-party/primitive_cylinder/index.ts rename to modules/workbenches/modeler/features/primitive_cylinder/index.ts index 9ceb1f9f..a41186cb 100644 --- a/modules/3d-party/primitive_cylinder/index.ts +++ b/modules/workbenches/modeler/features/primitive_cylinder/index.ts @@ -1,9 +1,9 @@ import { ApplicationContext } from 'context'; -import { MBrepShell } from '../../../web/app/cad/model/mshell'; -import { roundValueForPresentation as r } from '../../../web/app/cad/craft/operationHelper'; -import { occ2brep } from '../../../web/app/cad/occ/occ2models'; +import { MBrepShell } from 'cad/model/mshell'; +import { roundValueForPresentation as r } from 'cad/craft/operationHelper'; +import { occ2brep } from 'cad/occ/occ2models'; -export const primitive_cylinder = { +export default { id: 'primitive_cylinder', label: 'primitive_cylinder', icon: 'img/cad/extrude', diff --git a/modules/3d-party/primitive_sphere/docs/index.md b/modules/workbenches/modeler/features/primitive_sphere/docs/index.md similarity index 100% rename from modules/3d-party/primitive_sphere/docs/index.md rename to modules/workbenches/modeler/features/primitive_sphere/docs/index.md diff --git a/modules/3d-party/primitive_sphere/icon32.png b/modules/workbenches/modeler/features/primitive_sphere/icon32.png similarity index 100% rename from modules/3d-party/primitive_sphere/icon32.png rename to modules/workbenches/modeler/features/primitive_sphere/icon32.png diff --git a/modules/3d-party/primitive_sphere/icon96.png b/modules/workbenches/modeler/features/primitive_sphere/icon96.png similarity index 100% rename from modules/3d-party/primitive_sphere/icon96.png rename to modules/workbenches/modeler/features/primitive_sphere/icon96.png diff --git a/modules/3d-party/primitive_sphere/index.ts b/modules/workbenches/modeler/features/primitive_sphere/index.ts similarity index 81% rename from modules/3d-party/primitive_sphere/index.ts rename to modules/workbenches/modeler/features/primitive_sphere/index.ts index b23202e9..2ec9beea 100644 --- a/modules/3d-party/primitive_sphere/index.ts +++ b/modules/workbenches/modeler/features/primitive_sphere/index.ts @@ -1,9 +1,9 @@ import { ApplicationContext } from 'context'; -import { MBrepShell } from '../../../web/app/cad/model/mshell'; -import { roundValueForPresentation as r } from '../../../web/app/cad/craft/operationHelper'; -import { occ2brep } from '../../../web/app/cad/occ/occ2models'; +import { MBrepShell } from 'cad/model/mshell'; +import { roundValueForPresentation as r } from 'cad/craft/operationHelper'; +import { occ2brep } from 'cad/occ/occ2models'; -export const primitive_sphere = { +export default { id: 'primitive_sphere', label: 'primitive_sphere', icon: 'img/cad/extrude', diff --git a/modules/3d-party/primitive_torus/docs/index.md b/modules/workbenches/modeler/features/primitive_torus/docs/index.md similarity index 100% rename from modules/3d-party/primitive_torus/docs/index.md rename to modules/workbenches/modeler/features/primitive_torus/docs/index.md diff --git a/modules/3d-party/primitive_torus/icon32.png b/modules/workbenches/modeler/features/primitive_torus/icon32.png similarity index 100% rename from modules/3d-party/primitive_torus/icon32.png rename to modules/workbenches/modeler/features/primitive_torus/icon32.png diff --git a/modules/3d-party/primitive_torus/icon96.png b/modules/workbenches/modeler/features/primitive_torus/icon96.png similarity index 100% rename from modules/3d-party/primitive_torus/icon96.png rename to modules/workbenches/modeler/features/primitive_torus/icon96.png diff --git a/modules/3d-party/primitive_torus/index.ts b/modules/workbenches/modeler/features/primitive_torus/index.ts similarity index 83% rename from modules/3d-party/primitive_torus/index.ts rename to modules/workbenches/modeler/features/primitive_torus/index.ts index 526415a1..a4715680 100644 --- a/modules/3d-party/primitive_torus/index.ts +++ b/modules/workbenches/modeler/features/primitive_torus/index.ts @@ -1,9 +1,9 @@ import { ApplicationContext } from 'context'; -import { MBrepShell } from '../../../web/app/cad/model/mshell'; -import { roundValueForPresentation as r } from '../../../web/app/cad/craft/operationHelper'; -import { occ2brep } from '../../../web/app/cad/occ/occ2models'; +import { MBrepShell } from 'cad/model/mshell'; +import { roundValueForPresentation as r } from 'cad/craft/operationHelper'; +import { occ2brep } from 'cad/occ/occ2models'; -export const primitive_torus = { +export default { id: 'primitive_torus', label: 'primitive_torus', icon: 'img/cad/extrude', diff --git a/modules/workbenches/modeler/features/registry.ts b/modules/workbenches/modeler/features/registry.ts new file mode 100644 index 00000000..c3811255 --- /dev/null +++ b/modules/workbenches/modeler/features/registry.ts @@ -0,0 +1,4 @@ + + +export default [ +]; \ No newline at end of file diff --git a/modules/workbenches/modeler/index.ts b/modules/workbenches/modeler/index.ts new file mode 100644 index 00000000..399cd3ee --- /dev/null +++ b/modules/workbenches/modeler/index.ts @@ -0,0 +1,21 @@ +import EXTRUDE from './features/extrude/extrude.operation'; +import OCC_BOTTLE from './features/occ-bottle'; +import primitive_box from './features/primitive_box'; +import primitive_cone from './features/primitive_cone'; +import primitive_cylinder from './features/primitive_cylinder'; +import primitive_sphere from './features/primitive_sphere'; +import primitive_torus from './features/primitive_torus'; + +export default { + + workbenchId: 'modeler', + features: [ + EXTRUDE, + OCC_BOTTLE, + primitive_box, + primitive_cone, + primitive_cylinder, + primitive_sphere, + primitive_torus + ] +} \ No newline at end of file diff --git a/modules/workbenches/registry.ts b/modules/workbenches/registry.ts new file mode 100644 index 00000000..f16974ed --- /dev/null +++ b/modules/workbenches/registry.ts @@ -0,0 +1,5 @@ +import ModelerWorkbench from './modeler'; + +export default [ + ModelerWorkbench +] \ No newline at end of file diff --git a/web/app/cad/craft/operationPlugin.ts b/web/app/cad/craft/operationPlugin.ts index aef03710..ed7314c5 100644 --- a/web/app/cad/craft/operationPlugin.ts +++ b/web/app/cad/craft/operationPlugin.ts @@ -125,7 +125,7 @@ export interface OperationDescriptor { id: string; label: string; info: string; - icon: IconType | string; + icon: IconType | string | ((props: any) => JSX.Element); actionParams?: any; run: (request: R, opContext: CoreContext) => OperationResult | Promise; paramsInfo: (params: R) => string, diff --git a/web/app/cad/mdf/mdf.ts b/web/app/cad/mdf/mdf.ts index 7ec9c6d1..e23ef3c7 100644 --- a/web/app/cad/mdf/mdf.ts +++ b/web/app/cad/mdf/mdf.ts @@ -3,6 +3,7 @@ import { IconType } from "react-icons"; import { OperationResult } from "../craft/craftPlugin"; import { OperationDescriptor } from "../craft/operationPlugin"; import { generateForm } from "./generateForm"; +import { resolveMDFIcon } from "./mdfIconResolver"; interface MDFCommand { @@ -33,7 +34,7 @@ export function loadMDFCommand(mdfCommand: MDFCommand): OperationDescripto return { id: mdfCommand.id, label: mdfCommand.label, - icon: mdfCommand.icon, + icon: resolveMDFIcon(mdfCommand.icon), info: mdfCommand.info, paramsInfo: mdfCommand.paramsInfo, onParamsUpdate: (params, name, value) => { diff --git a/web/app/cad/mdf/mdfIconResolver.tsx b/web/app/cad/mdf/mdfIconResolver.tsx new file mode 100644 index 00000000..d0c1c07b --- /dev/null +++ b/web/app/cad/mdf/mdfIconResolver.tsx @@ -0,0 +1,6 @@ +import React from 'react'; +import { SvgIcon } from "svg/SvgIcon"; + +export function resolveMDFIcon(iconDef: any) { + return () => +} \ No newline at end of file diff --git a/web/app/cad/part/partOperationsPlugin.js b/web/app/cad/part/partOperationsPlugin.js index adb6c11f..aefe7660 100644 --- a/web/app/cad/part/partOperationsPlugin.js +++ b/web/app/cad/part/partOperationsPlugin.js @@ -16,21 +16,13 @@ import spatialCurveOperation from '../craft/spatialCurve/spatialCurveOperation'; import loftOperation from '../craft/loft/loftOperation'; import {intersectionOperation, subtractOperation, unionOperation} from '../craft/boolean/booleanOperation'; import { loadMDFCommand } from '../mdf/mdf'; -import { MDF_EXTRUDE_EXAMPLE } from '../mdf/mdfExtrudeExample'; -import { OCC_BOTTLE_OPERATION } from '3d-party/occ-bottle/bottleOperation'; -import { primitive_cylinder } from '3d-party/primitive_cylinder/index'; -import { primitive_box } from '3d-party/primitive_box/index'; -import { primitive_cone } from '3d-party/primitive_cone/index'; -import { primitive_sphere } from '3d-party/primitive_sphere/index'; -import { primitive_torus } from '3d-party/primitive_torus/index'; - +import WorkbenchRegistry from 'workbenches/registry'; export function activate({services}) { services.operation.registerOperations([ planeOperation, boxOperation, // extrudeOperation, - loadMDFCommand(MDF_EXTRUDE_EXAMPLE), cutOperation, revolveOperation, filletOperation, @@ -47,11 +39,8 @@ export function activate({services}) { intersectionOperation, subtractOperation, unionOperation, - loadMDFCommand(OCC_BOTTLE_OPERATION), - loadMDFCommand(primitive_cylinder), - loadMDFCommand(primitive_box), - loadMDFCommand(primitive_cone), - loadMDFCommand(primitive_sphere), - loadMDFCommand(primitive_torus), - ]) + ]); + WorkbenchRegistry.forEach(w => { + services.operation.registerOperations(w.features.map(loadMDFCommand)); + }); } \ No newline at end of file