From 231829942e1c35d222c262162249b2c19e215c15 Mon Sep 17 00:00:00 2001 From: Kurt Hutten Date: Mon, 25 Jan 2021 06:01:44 +1100 Subject: [PATCH] Fixes new CascadeStudio integrations missed by #202 --- netlify.toml | 4 +- package.json | 4 - web/config/webpack.config.js | 3 + web/public/StandardLibraryIntellisense.ts | 213 ---------------------- web/src/index.js | 35 ---- 5 files changed, 5 insertions(+), 254 deletions(-) delete mode 100644 web/public/StandardLibraryIntellisense.ts diff --git a/netlify.toml b/netlify.toml index 4f886a3..a16d760 100644 --- a/netlify.toml +++ b/netlify.toml @@ -1,10 +1,10 @@ [build] -command = "yarn move-statics && yarn rw build && yarn rw db up --no-db-client --auto-approve && yarn rw dataMigrate up" +command = "yarn rw build && yarn rw db up --no-db-client --auto-approve && yarn rw dataMigrate up" publish = "web/dist" functions = "api/dist/functions" [dev] - command = "yarn move-statics && yarn rw dev" + command = "yarn rw dev" [[redirects]] from = "/*" diff --git a/package.json b/package.json index 6230d52..643ae25 100644 --- a/package.json +++ b/package.json @@ -7,10 +7,6 @@ ] }, "scripts": { - "comment": "Rather crude approach to move ts definitions into the public folder so the browser can grab them later in CascadeMain.js", - "move-ts-defs": "cp ./web/src/cascade/js/StandardLibraryIntellisense.ts ./web/public", - "move-cad-worker": "rm -r web/public/CADWorker || true && mkdir web/public/CADWorker && mkdir web/public/CADWorker/node_modules && cp -r ./web/src/cascade/js/CADWorker ./web/public && cp -r ./web/src/cascade/node_modules ./web/public/CADWorker && cp -r ./web/src/cascade/fonts ./web/public/CADWorker", - "move-statics": "yarn move-ts-defs && yarn move-cad-worker" }, "devDependencies": { "@redwoodjs/core": "^0.20.0" diff --git a/web/config/webpack.config.js b/web/config/webpack.config.js index 3afe484..bbc2c4f 100644 --- a/web/config/webpack.config.js +++ b/web/config/webpack.config.js @@ -33,6 +33,9 @@ module.exports = (config, { env }) => { type: 'javascript/auto', loader: 'file-loader', }) + config.node = { + fs: 'empty', + } return config } diff --git a/web/public/StandardLibraryIntellisense.ts b/web/public/StandardLibraryIntellisense.ts deleted file mode 100644 index f0e0bd4..0000000 --- a/web/public/StandardLibraryIntellisense.ts +++ /dev/null @@ -1,213 +0,0 @@ -/** The list that stores all of the OpenCascade shapes for rendering. - * Add to this when using imported files or doing custom oc. operations. - * @example```sceneShapes.push(externalShapes['myStep.step']);``` */ -var sceneShapes: oc.TopoDS_Shape[]; - -/** The dictionary that stores all of your imported STEP and IGES files. Push to sceneShapes to render in the view! - * @example```sceneShapes.push(externalShapes['myStep.step']);``` */ -var externalShapes: { [filename: string]: oc.TopoDS_Shape }; - -/** Starts sketching a 2D shape which can contain lines, arcs, bezier splines, and fillets. - * [Source](https://github.com/zalo/CascadeStudio/blob/master/js/CADWorker/CascadeStudioStandardLibrary.js) - * @example```let sketch = new Sketch([0,0]).LineTo([100,0]).Fillet(20).LineTo([100,100]).End(true).Face();```*/ -class Sketch { - constructor(startingPoint: number[]); - - faces : oc.TopoDS_Face[]; - wires : oc.TopoDS_Wire[]; - firstPoint : oc.gp_Pnt; - lastPoint : oc.gp_Pnt; - wireBuilder : oc.BRepBuilderAPI_MakeWire; - - Start (startingPoint : number[] ) : Sketch; - End (closed ?: boolean , reversed?:boolean) : Sketch; - AddWire (wire : oc. TopoDS_Wire) : Sketch; - - LineTo (nextPoint : number[] ) : Sketch; - ArcTo (pointOnArc : number[], arcEnd : number[]) : Sketch; - BezierTo(bezierControlPoints : number[][]): Sketch; - BSplineTo(bsplinePoints : number[][]): Sketch; - /** Adds a 2D Fillet of specified radius at this vertex. Only applies to Faces! - * If a Wire is needed, use ForEachWire() to get the Wire from the resulting Face! */ - Fillet (radius : number ) : Sketch; - Face (reversed ?:boolean) : oc.TopoDS_Face; - Wire (reversed ?:boolean) : oc.TopoDS_Wire; - /** Punches a circular hole in the existing face (may need to use reversed) */ - Circle (center ?:number[], radius:number, reversed?:boolean) : Sketch; -} - -/** Creates a solid box with dimensions x, y, and, z and adds it to `sceneShapes` for rendering. - * [Source](https://github.com/zalo/CascadeStudio/blob/master/js/CADWorker/CascadeStudioStandardLibrary.js) - * @example```let myBox = Box(10, 20, 30);```*/ -function Box(x: number, y: number, z: number, centered?: boolean): oc.TopoDS_Shape; -/** Creates a solid sphere of specified radius and adds it to `sceneShapes` for rendering. - * [Source](https://github.com/zalo/CascadeStudio/blob/master/js/CADWorker/CascadeStudioStandardLibrary.js) - * @example```let mySphere = Sphere(40);```*/ -function Sphere(radius: number): oc.TopoDS_Shape; -/** Creates a solid cylinder of specified radius and height and adds it to `sceneShapes` for rendering. - * [Source](https://github.com/zalo/CascadeStudio/blob/master/js/CADWorker/CascadeStudioStandardLibrary.js) - * @example```let myCylinder = Cylinder(30, 50);```*/ -function Cylinder(radius: number, height: number, centered?: boolean): oc.TopoDS_Shape; -/** Creates a solid cone of specified bottom radius, top radius, and height and adds it to `sceneShapes` for rendering. - * [Source](https://github.com/zalo/CascadeStudio/blob/master/js/CADWorker/CascadeStudioStandardLibrary.js) - * @example```let myCone = Cone(30, 50);```*/ -function Cone(radius1: number, radius2: number, height: number): oc.TopoDS_Shape; -/** Creates a polygon from a list of 3-component lists (points) and adds it to `sceneShapes` for rendering. - * [Source](https://github.com/zalo/CascadeStudio/blob/master/js/CADWorker/CascadeStudioStandardLibrary.js) - * @example```let triangle = Polygon([[0, 0, 0], [50, 0, 0], [25, 50, 0]]);```*/ -function Polygon(points: number[][], wire?: boolean): oc.TopoDS_Shape; -/** Creates a circle from a radius and adds it to `sceneShapes` for rendering. - * [Source](https://github.com/zalo/CascadeStudio/blob/master/js/CADWorker/CascadeStudioStandardLibrary.js) - * @example```let circle = Circle(50);```*/ -function Circle(radius:number, wire?:boolean) : oc.TopoDS_Shape; -/** Creates a bspline from a list of 3-component lists (points). - * This can be converted into a face via the respective oc.BRepBuilderAPI functions. - * Or used directly with BRepPrimAPI_MakeRevolution() - * [Source](https://github.com/zalo/CascadeStudio/blob/master/js/CADWorker/CascadeStudioStandardLibrary.js) - * @example```let bspline = BSpline([[0,0,0], [40, 0, 50], [50, 0, 50]], true);```*/ -function BSpline(points:number[][], closed?:boolean) : oc.TopoDS_Shape; -/** Creates set of glyph solids from a string and a font-file and adds it to sceneShapes. - * Note that all the characters share a singular face. - * - * Defaults: size:36, height:0.15, fontName: 'Consolas' - * - * Try 'Roboto' or 'Papyrus' for an alternative typeface. - * [Source](https://github.com/zalo/CascadeStudio/blob/master/js/CADWorker/CascadeStudioStandardLibrary.js) - * @example```let myText = Text3D("Hello!");```*/ -function Text3D(text?: string = "Hi!", size?: number = "36", height?: number = 0.15, fontURL?: string = "Consolas") : oc.TopoDS_Shape; - - -/** Joins a list of shapes into a single solid. - * The original shapes are removed unless `keepObjects` is true. - * [Source](https://github.com/zalo/CascadeStudio/blob/master/js/CADWorker/CascadeStudioStandardLibrary.js) - * @example```let sharpSphere = Union([Sphere(38), Box(50, 50, 50, true)]);```*/ -function Union(objectsToJoin: oc.TopoDS_Shape[], keepObjects?: boolean, fuzzValue?:number, keepEdges?: boolean): oc.TopoDS_Shape; -/** Subtracts a list of shapes from mainBody. - * The original shapes are removed unless `keepObjects` is true. Returns a Compound Shape unless onlyFirstSolid is true. - * [Source](https://github.com/zalo/CascadeStudio/blob/master/js/CADWorker/CascadeStudioStandardLibrary.js) - * @example```let floatingCorners = Difference(Box(50, 50, 50, true), [Sphere(38)]);```*/ -function Difference(mainBody: oc.TopoDS_Shape, objectsToSubtract: oc.TopoDS_Shape[], keepObjects?: boolean, fuzzValue?:number, keepEdges?: boolean): oc.TopoDS_Shape; -/** Takes only the intersection of a list of shapes. - * The original shapes are removed unless `keepObjects` is true. - * [Source](https://github.com/zalo/CascadeStudio/blob/master/js/CADWorker/CascadeStudioStandardLibrary.js) - * @example```let roundedBox = Intersection([Box(50, 50, 50, true), Sphere(38)]);```*/ -function Intersection(objectsToIntersect: oc.TopoDS_Shape[], keepObjects?: boolean, fuzzValue?: number, keepEdges?: boolean): oc.TopoDS_Shape; -/** Removes internal, unused edges from the insides of faces on this shape. Keeps the model clean. - * [Source](https://github.com/zalo/CascadeStudio/blob/master/js/CADWorker/CascadeStudioStandardLibrary.js) - * @example```let cleanPart = RemoveInternalEdges(part);```*/ -function RemoveInternalEdges(shape: oc.TopoDS_Shape, keepShape?: boolean) : oc.TopoDS_Shape; -/** Extrudes a shape along direction, a 3-component vector. Edges form faces, Wires form shells, Faces form solids, etc. - * The original face is removed unless `keepFace` is true. - * [Source](https://github.com/zalo/CascadeStudio/blob/master/js/CADWorker/CascadeStudioStandardLibrary.js) - * @example```let tallTriangle = Extrude(Polygon([[0, 0, 0], [50, 0, 0], [25, 50, 0]]), [0, 0, 50]);```*/ -function Extrude(face: oc.TopoDS_Shape, direction: number[], keepFace?: boolean) : oc.TopoDS_Shape; -/** Extrudes and twists a flat *wire* upwards along the z-axis (see the optional argument for Polygon). - * The original wire is removed unless `keepWire` is true. - * [Source](https://github.com/zalo/CascadeStudio/blob/master/js/CADWorker/CascadeStudioStandardLibrary.js) - * @example```let twistyTriangle = RotatedExtrude(Polygon([[-25, -15, 0], [25, -15, 0], [0, 35, 0]], true), 50, 90);```*/ -function RotatedExtrude(wire: oc.TopoDS_Shape, height: number, rotation: number, keepWire?: boolean) : oc.TopoDS_Shape; -/** Lofts a solid through the sections defined by an array of 2 or more closed wires. - * [Source](https://github.com/zalo/CascadeStudio/blob/master/js/CADWorker/CascadeStudioStandardLibrary.js) */ -function Loft(wireSections: oc.TopoDS_Shape[], keepWires?: boolean): oc.TopoDS_Shape; -/** Revolves this shape "degrees" about "axis" (a 3-component array). Edges form faces, Wires form shells, Faces form solids, etc. - * [Source](https://github.com/zalo/CascadeStudio/blob/master/js/CADWorker/CascadeStudioStandardLibrary.js) - * @example```let cone = Revolve(Polygon([[0, 0, 0], [0, 0, 50], [50, 0, 0]]));```*/ -function Revolve(shape: oc.TopoDS_Shape, degrees?: number, axis?: number[], keepShape?: boolean, copy?: boolean): oc.TopoDS_Shape; -/** Sweeps this shape along a path wire. - * The original shapes are removed unless `keepObjects` is true. - * [Source](https://github.com/zalo/CascadeStudio/blob/master/js/CADWorker/CascadeStudioStandardLibrary.js) - * @example```let pipe = Pipe(Circle(20), BSpline([[0,0,0],[0,0,50],[20,0,100]], false, true));```*/ -function Pipe(shape: oc.TopoDS_Shape, wirePath: oc.TopoDS_Shape, keepInputs?: boolean): oc.TopoDS_Shape; -/** Offsets the faces of a shape by offsetDistance - * The original shape is removed unless `keepShape` is true. - * [Source](https://github.com/zalo/CascadeStudio/blob/master/js/CADWorker/CascadeStudioStandardLibrary.js) - * @example```let roundedCube = Offset(Box(10,10,10), 10);```*/ -function Offset(shape: oc.TopoDS_Shape, offsetDistance: number, tolerance?: number, keepShape?: boolean) : oc.TopoDS_Shape; - -/** Creates a labeled slider with specified defaults, mins, and max ranges. - * @example```let currentSliderValue = Slider("Radius", 30 , 20 , 40);``` - * `name` needs to be unique! - * - * `callback` triggers whenever the mouse is let go, and `realTime` will cause the slider to update every frame that there is movement (but it's buggy!)*/ -function Slider(name: string, defaultValue: number, min: number, max: number, realTime?: boolean): number; -/** Creates a button that will trigger `callback` when clicked. - * [Source](https://github.com/zalo/CascadeStudio/blob/master/js/CADWorker/CascadeStudioStandardLibrary.js) - * @example```Button("Yell", ()=>{ console.log("Help! I've been clicked!"); });```*/ -function Button(name: string) : void; -/** Creates a checkbox that returns true or false. - * [Source](https://github.com/zalo/CascadeStudio/blob/master/js/CADWorker/CascadeStudioStandardLibrary.js) - * @example```let currentCheckboxValue = Checkbox("Check?", true);``` - * - * `callback` triggers when the button is clicked.*/ -function Checkbox(name: string, defaultValue: boolean): boolean; - -/** BETA: Transform a shape using an in-view transformation gizmo. - * - * Shortcuts: `T` - Translate, `R` - Rotate, `S` - Scale, `W`/`L` - Toggle World/Local Space - * - * [Source](https://github.com/zalo/CascadeStudio/blob/master/js/CADWorker/CascadeStudioStandardLibrary.js) - * @example```let transformedSphere = Transform(Sphere(50));```*/ -function Transform(shape: oc.TopoDS_Shape): oc.TopoDS_Shape; -/** BETA: Transform a shape using an in-view transformation gizmo. - * - * Shortcuts: `T` - Translate, `R` - Rotate, `S` - Scale, `W`/`L` - Toggle World/Local - * - * [Source](https://github.com/zalo/CascadeStudio/blob/master/js/CADWorker/CascadeStudioStandardLibrary.js) - * @example```let transformedSphere = Transform(Sphere(50));```*/ -function Transform(translation: number[], rotation: (number|number[])[], scale: number, shape: oc.TopoDS_Shape, keepOriginal?: boolean): oc.TopoDS_Shape; - -/** Translate a shape along the x, y, and z axes (using an array of 3 numbers). - * [Source](https://github.com/zalo/CascadeStudio/blob/master/js/CADWorker/CascadeStudioStandardLibrary.js) - * @example```let upwardSphere = Translate([0, 0, 50], Sphere(50));```*/ -function Translate(offset: number[], shape: oc.TopoDS_Shape, keepOriginal?: boolean): oc.TopoDS_Shape; - -/** Rotate a shape degrees about a 3-coordinate axis. - * [Source](https://github.com/zalo/CascadeStudio/blob/master/js/CADWorker/CascadeStudioStandardLibrary.js) - * @example```let leaningCylinder = Rotate([0, 1, 0], 45, Cylinder(25, 50));```*/ -function Rotate(axis: number[], degrees: number, shape: oc.TopoDS_Shape, keepOriginal?: boolean): oc.TopoDS_Shape; - -/** Scale a shape to be `scale` times its current size. - * [Source](https://github.com/zalo/CascadeStudio/blob/master/js/CADWorker/CascadeStudioStandardLibrary.js) - * @example```let scaledCylinder = Scale(50, Cylinder(0.5, 1));```*/ -function Scale(scale: number, shape: oc.TopoDS_Shape, keepOriginal?: boolean): oc.TopoDS_Shape; - -/** Iterate over all the solids in this shape, calling `callback` on each one. */ -function ForEachSolid(shape: oc.TopoDS_Shape, callback: (index: Number, shell: oc.TopoDS_Solid) => void): void; -/** Gets the indexth solid from this compound shape. */ -function GetSolidFromCompound(shape: oc.TopoDS_Shape, index?:number, keepOriginal?:boolean): oc.TopoDS_Solid; -/** Gets the indexth wire from this face (or above) shape. */ -function GetWire(shape: oc.TopoDS_Face, index?:number, keepOriginal?:boolean): oc.TopoDS_Wire; -/** Iterate over all the shells in this shape, calling `callback` on each one. */ -function ForEachShell(shape: oc.TopoDS_Shape, callback: (index: Number, shell: oc.TopoDS_Shell) => void): void; -/** Iterate over all the faces in this shape, calling `callback` on each one. */ -function ForEachFace(shape: oc.TopoDS_Shape, callback: (index: number, face: oc.TopoDS_Face) => void): void; -/** Iterate over all the wires in this shape, calling `callback` on each one. */ -function ForEachWire(shape: oc.TopoDS_Shape, callback: (wire: oc.TopoDS_Wire) => void): void; -/** Iterate over all the UNIQUE indices and edges in this shape, calling `callback` on each one. */ -function ForEachEdge(shape: oc.TopoDS_Shape, callback: (index: number, edge: oc.TopoDS_Edge) => void): {[edgeHash:number] : Number}[]; -/** Iterate over all the vertices in this shape, calling `callback` on each one. */ -function ForEachVertex(shape: oc.TopoDS_Shape, callback: (vertex: oc.TopoDS_Vertex) => void): void; -/** Attempt to Fillet all selected edge indices in "edgeList" with a radius. - * Hover over the edges you'd like to select and use those indices as in the example. - * [Source](https://github.com/zalo/CascadeStudio/blob/master/js/CADWorker/CascadeStudioStandardLibrary.js) - * @example```FilletEdges(shape, 1, [0,1,2,7]);``` */ -function FilletEdges(shape: oc.TopoDS_Shape, radius: number, edgeList: number[], keepOriginal?:boolean): oc.TopoDS_Shape; -/** Attempt to Chamfer all selected edge indices in "edgeList" symmetrically by distance. - * Hover over the edges you'd like to select and use those indices in the edgeList array. - * [Source](https://github.com/zalo/CascadeStudio/blob/master/js/CADWorker/CascadeStudioStandardLibrary.js) - * @example```ChamferEdges(shape, 1, [0,1,2,7]);``` */ -function ChamferEdges(shape: oc.TopoDS_Shape, distance: number, edgeList: number[], keepOriginal?:boolean): oc.TopoDS_Shape; - -/** Download this file URL through the browser. Use this to export information from the CAD engine. - * [Source](https://github.com/zalo/CascadeStudio/blob/master/js/CADWorker/CascadeStudioStandardLibrary.js) - * @example```SaveFile("myInfo.txt", URL.createObjectURL( new Blob(["Hello, Harddrive!"], { type: 'text/plain' }) ));``` */ -function SaveFile(filename: string, fileURL: string): void; - -/** Explicitly Cache the result of this operation so that it can return instantly next time it is called with the same arguments. - * [Source](https://github.com/zalo/CascadeStudio/blob/master/js/CADWorker/CascadeStudioStandardLibrary.js) - * @example```let box = CacheOp(arguments, () => { return new oc.BRepPrimAPI_MakeBox(x, y, z).Shape(); });``` */ -function CacheOp(arguments: IArguments, cacheMiss: () => oc.TopoDS_Shape): oc.TopoDS_Shape; - /** Remove this object from this array. Useful for preventing objects being added to `sceneShapes` (in cached functions). - * [Source](https://github.com/zalo/CascadeStudio/blob/master/js/CADWorker/CascadeStudioStandardLibrary.js) - * @example```let box = CacheOp(arguments, () => { let box = Box(x,y,z); sceneShapes = Remove(sceneShapes, box); return box; });``` */ -function Remove(array: any[], toRemove: any): any[]; diff --git a/web/src/index.js b/web/src/index.js index ee5d31a..f8a3adf 100644 --- a/web/src/index.js +++ b/web/src/index.js @@ -11,43 +11,8 @@ ReactGA.initialize(process.env.GOOGLE_ANALYTICS_ID) import Routes from 'src/Routes' import './scaffold.css' -import 'golden-layout/src/css/goldenlayout-base.css' -import 'golden-layout/src/css/goldenlayout-dark-theme.css' -import './cascade/css/main.css' -import 'monaco-editor/min/vs/editor/editor.main.css' import './index.css' -function initCascadeStudio() { - // if ('serviceWorker' in navigator) { - // navigator.serviceWorker.register('service-worker.js').then(function(registration) { - // registration.update(); // Always update the registration for the latest assets - // }, function() { - // console.log('Could not register Cascade Studio for offline use!'); - // }); - // } else { - // console.log('Browser does not support offline access!'); - // } - - // Begins loading the CAD Kernel Web Worker - if (window.Worker) { - cascadeStudioWorker = new Worker('/CADWorker/CascadeStudioMainWorker.js') - // Ping Pong Messages Back and Forth based on their registration in messageHandlers - // var messageHandlers = {}; - cascadeStudioWorker.onmessage = function (e) { - if (e.data.type in messageHandlers) { - let response = messageHandlers[e.data.type](e.data.payload) - if (response) { - cascadeStudioWorker.postMessage({ - type: e.data.type, - payload: response, - }) - } - } - } - } -} -initCascadeStudio() - const goTrueClient = new GoTrue({ APIUrl: 'https://cadhub.xyz/.netlify/identity', setCookie: true, -- 2.39.5