Displaying in browser

This commit is contained in:
Kurt Hutten
2020-10-11 12:33:10 +11:00
parent 8fa059c53b
commit 365674b7a3
11 changed files with 2133 additions and 10 deletions

View File

@@ -6,6 +6,10 @@
"web"
]
},
"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 ./node_modules/opencascade.js/dist/opencascade.d.ts ./web/public && cp ./node_modules/three/src/Three.d.ts ./web/public && cp ./web/src/cascade/js/StandardLibraryIntellisense.ts ./web/public"
},
"devDependencies": {
"@redwoodjs/core": "^0.19.2"
},

View File

@@ -0,0 +1,7 @@
const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin');
module.exports = {
plugins: [
new MonacoWebpackPlugin()
]
}

View File

@@ -16,8 +16,15 @@
"@redwoodjs/forms": "^0.19.2",
"@redwoodjs/router": "^0.19.2",
"@redwoodjs/web": "^0.19.2",
"controlkit": "^0.1.9",
"golden-layout": "^1.5.9",
"jquery": "^3.5.1",
"monaco-editor": "^0.20.0",
"monaco-editor-webpack-plugin": "^1.9.1",
"opencascade.js": "^0.1.15",
"prop-types": "^15.7.2",
"react": "^16.13.1",
"react-dom": "^16.13.1"
"react-dom": "^16.13.1",
"three": "^0.118.3"
}
}

View File

@@ -0,0 +1,213 @@
/** 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[];

177
web/public/Three.d.ts vendored Normal file
View File

@@ -0,0 +1,177 @@
export * from './polyfills';
export * from './renderers/WebGLMultisampleRenderTarget';
export * from './renderers/WebGLCubeRenderTarget';
export * from './renderers/WebGLRenderTarget';
export * from './renderers/WebGLRenderer';
export * from './renderers/WebGL1Renderer';
export * from './renderers/shaders/ShaderLib';
export * from './renderers/shaders/UniformsLib';
export * from './renderers/shaders/UniformsUtils';
export * from './renderers/shaders/ShaderChunk';
export * from './scenes/FogExp2';
export * from './scenes/Fog';
export * from './scenes/Scene';
export * from './objects/Sprite';
export * from './objects/LOD';
export * from './objects/InstancedMesh';
export * from './objects/SkinnedMesh';
export * from './objects/Skeleton';
export * from './objects/Bone';
export * from './objects/Mesh';
export * from './objects/LineSegments';
export * from './objects/LineLoop';
export * from './objects/Line';
export * from './objects/Points';
export * from './objects/Group';
export * from './textures/VideoTexture';
export * from './textures/DataTexture';
export * from './textures/DataTexture3D';
export * from './textures/CompressedTexture';
export * from './textures/CubeTexture';
export * from './textures/CanvasTexture';
export * from './textures/DepthTexture';
export * from './textures/Texture';
export * from './geometries/Geometries';
export * from './materials/Materials';
export * from './loaders/AnimationLoader';
export * from './loaders/CompressedTextureLoader';
export * from './loaders/DataTextureLoader';
export * from './loaders/CubeTextureLoader';
export * from './loaders/TextureLoader';
export * from './loaders/ObjectLoader';
export * from './loaders/MaterialLoader';
export * from './loaders/BufferGeometryLoader';
export * from './loaders/LoadingManager';
export * from './loaders/ImageLoader';
export * from './loaders/ImageBitmapLoader';
export * from './loaders/FontLoader';
export * from './loaders/FileLoader';
export * from './loaders/Loader';
export * from './loaders/LoaderUtils';
export * from './loaders/Cache';
export * from './loaders/AudioLoader';
export * from './lights/SpotLightShadow';
export * from './lights/SpotLight';
export * from './lights/PointLight';
export * from './lights/RectAreaLight';
export * from './lights/HemisphereLight';
export * from './lights/DirectionalLightShadow';
export * from './lights/DirectionalLight';
export * from './lights/AmbientLight';
export * from './lights/LightShadow';
export * from './lights/Light';
export * from './lights/AmbientLightProbe';
export * from './lights/HemisphereLightProbe';
export * from './lights/LightProbe';
export * from './cameras/StereoCamera';
export * from './cameras/PerspectiveCamera';
export * from './cameras/OrthographicCamera';
export * from './cameras/CubeCamera';
export * from './cameras/ArrayCamera';
export * from './cameras/Camera';
export * from './audio/AudioListener';
export * from './audio/PositionalAudio';
export * from './audio/AudioContext';
export * from './audio/AudioAnalyser';
export * from './audio/Audio';
export * from './animation/tracks/VectorKeyframeTrack';
export * from './animation/tracks/StringKeyframeTrack';
export * from './animation/tracks/QuaternionKeyframeTrack';
export * from './animation/tracks/NumberKeyframeTrack';
export * from './animation/tracks/ColorKeyframeTrack';
export * from './animation/tracks/BooleanKeyframeTrack';
export * from './animation/PropertyMixer';
export * from './animation/PropertyBinding';
export * from './animation/KeyframeTrack';
export * from './animation/AnimationUtils';
export * from './animation/AnimationObjectGroup';
export * from './animation/AnimationMixer';
export * from './animation/AnimationClip';
export * from './animation/AnimationAction';
export * from './core/Uniform';
export * from './core/InstancedBufferGeometry';
export * from './core/BufferGeometry';
export * from './core/Geometry';
export * from './core/InterleavedBufferAttribute';
export * from './core/InstancedInterleavedBuffer';
export * from './core/InterleavedBuffer';
export * from './core/InstancedBufferAttribute';
export * from './core/BufferAttribute';
export * from './core/Face3';
export * from './core/Object3D';
export * from './core/Raycaster';
export * from './core/Layers';
export * from './core/EventDispatcher';
export * from './core/DirectGeometry';
export * from './core/Clock';
export * from './math/interpolants/QuaternionLinearInterpolant';
export * from './math/interpolants/LinearInterpolant';
export * from './math/interpolants/DiscreteInterpolant';
export * from './math/interpolants/CubicInterpolant';
export * from './math/Interpolant';
export * from './math/Triangle';
export * from './math/MathUtils';
export * from './math/Spherical';
export * from './math/Cylindrical';
export * from './math/Plane';
export * from './math/Frustum';
export * from './math/Sphere';
export * from './math/Ray';
export * from './math/Matrix4';
export * from './math/Matrix3';
export * from './math/Box3';
export * from './math/Box2';
export * from './math/Line3';
export * from './math/Euler';
export * from './math/Vector4';
export * from './math/Vector3';
export * from './math/Vector2';
export * from './math/Quaternion';
export * from './math/Color';
export * from './math/SphericalHarmonics3';
export * from './extras/objects/ImmediateRenderObject';
export * from './helpers/SpotLightHelper';
export * from './helpers/SkeletonHelper';
export * from './helpers/PointLightHelper';
export * from './helpers/HemisphereLightHelper';
export * from './helpers/GridHelper';
export * from './helpers/PolarGridHelper';
export * from './helpers/DirectionalLightHelper';
export * from './helpers/CameraHelper';
export * from './helpers/BoxHelper';
export * from './helpers/Box3Helper';
export * from './helpers/PlaneHelper';
export * from './helpers/ArrowHelper';
export * from './helpers/AxesHelper';
export * from './extras/curves/Curves';
export * from './extras/core/Shape';
export * from './extras/core/Path';
export * from './extras/core/ShapePath';
export * from './extras/core/Font';
export * from './extras/core/CurvePath';
export * from './extras/core/Curve';
export * from './extras/ImageUtils';
export * from './extras/ShapeUtils';
export * from './extras/PMREMGenerator';
export * from './renderers/webgl/WebGLBufferRenderer';
export * from './renderers/webgl/WebGLCapabilities';
export * from './renderers/webgl/WebGLClipping';
export * from './renderers/webgl/WebGLExtensions';
export * from './renderers/webgl/WebGLGeometries';
export * from './renderers/webgl/WebGLIndexedBufferRenderer';
export * from './renderers/webgl/WebGLInfo';
export * from './renderers/webgl/WebGLLights';
export * from './renderers/webgl/WebGLObjects';
export * from './renderers/webgl/WebGLProgram';
export * from './renderers/webgl/WebGLPrograms';
export * from './renderers/webgl/WebGLProperties';
export * from './renderers/webgl/WebGLRenderLists';
export * from './renderers/webgl/WebGLShader';
export * from './renderers/webgl/WebGLShadowMap';
export * from './renderers/webgl/WebGLState';
export * from './renderers/webgl/WebGLTextures';
export * from './renderers/webgl/WebGLUniforms';
export * from './constants';
export * from './Three.Legacy';
export as namespace THREE;

1644
web/public/opencascade.d.ts vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -6,7 +6,36 @@
<link rel="icon" type="image/png" href="/favicon.png" />
<title><%= htmlWebpackPlugin.options.title %></title>
<script>
var messageHandlers = {}
// Install Cascade Studio as a Progressive Web App for Offline Access
// This needs to be put before ANY HTTP Requests are made, so it can cache them.
var messageHandlers = {};
var cascadeStudioWorker
var workerWorking = false
function coolGuy() {
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('./src/cascade/js/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 }) };
}
}
}
}
coolGuy()
</script>
</head>
<body>

View File

@@ -6,6 +6,10 @@ import Routes from 'src/Routes'
import './scaffold.css'
import './index.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'
ReactDOM.render(
<FatalErrorBoundary page={FatalErrorPage}>

View File

@@ -1,15 +1,20 @@
import BlogLayout from 'src/layouts/BlogLayout'
import BlogPostsCell from 'src/components/BlogPostsCell'
import { initialize } from 'src/cascade/js/MainPage/CascadeMain'
import { useEffect } from 'react'
const HomePage = () => {
useEffect(() => {
new initialize()
// TODO currently you need to press f5 to get the first render to work and for the evaluate menu to show up
// figure out why it's not initializing properly
}, [])
return (
<BlogLayout>
<BlogPostsCell/>
<div>
<button onClick={() => new initialize()}>init</button>
<h1 hidden></h1>
<div id="topnav" className="topnav">
<a href="https://github.com/zalo/CascadeStudio">Cascade Studio 0.0.6</a>
@@ -38,12 +43,6 @@ const HomePage = () => {
}}>Reset Project</a>
</div>
<div id="appbody" style={{height:'auto'}}>
{/* <link data-name="vs/editor/editor.main" rel="stylesheet" href="./node_modules/monaco-editor/min/vs/editor/editor.main.css"> */}
{/* <script>var require = { paths: { 'vs': 'node_modules/monaco-editor/min/vs' } };</script>
<script type="text/javascript" src="./node_modules/monaco-editor/min/vs/loader.js"></script>
<script type="text/javascript" src="./node_modules/monaco-editor/min/vs/editor/editor.main.nls.js"></script>
<script type="text/javascript" src="./node_modules/monaco-editor/min/vs/editor/editor.main.js"></script>
<script type="text/javascript" src="./js/MainPage/CascadeMain.js"></script> */}
</div>
</div>
</BlogLayout>

View File

@@ -5874,6 +5874,11 @@ content-type@~1.0.4:
resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
controlkit@^0.1.9:
version "0.1.9"
resolved "https://registry.yarnpkg.com/controlkit/-/controlkit-0.1.9.tgz#00a0598a2a3c25f85494327d86d3daf1b11f08ab"
integrity sha1-AKBZiio8JfhUlDJ9htPa8bEfCKs=
convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0:
version "1.7.0"
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442"
@@ -8235,6 +8240,13 @@ globby@^6.1.0:
pify "^2.0.0"
pinkie-promise "^2.0.0"
golden-layout@^1.5.9:
version "1.5.9"
resolved "https://registry.yarnpkg.com/golden-layout/-/golden-layout-1.5.9.tgz#a39bc1f6a67e6f886b797c016dd924e9426ba77f"
integrity sha1-o5vB9qZ+b4hreXwBbdkk6UJrp38=
dependencies:
jquery "*"
good-listener@^1.2.2:
version "1.2.2"
resolved "https://registry.yarnpkg.com/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50"
@@ -9892,6 +9904,11 @@ jest@^26.1.0:
import-local "^3.0.2"
jest-cli "^26.2.2"
jquery@*, jquery@^3.5.1:
version "3.5.1"
resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.5.1.tgz#d7b4d08e1bfdb86ad2f1a3d039ea17304717abb5"
integrity sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg==
"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
@@ -10919,6 +10936,18 @@ module-not-found-error@^1.0.1:
resolved "https://registry.yarnpkg.com/module-not-found-error/-/module-not-found-error-1.0.1.tgz#cf8b4ff4f29640674d6cdd02b0e3bc523c2bbdc0"
integrity sha1-z4tP9PKWQGdNbN0CsOO8UjwrvcA=
monaco-editor-webpack-plugin@^1.9.1:
version "1.9.1"
resolved "https://registry.yarnpkg.com/monaco-editor-webpack-plugin/-/monaco-editor-webpack-plugin-1.9.1.tgz#eb4bbb1c5e5bfb554541c1ae1542e74c2a9f43fd"
integrity sha512-x7fx1w3i/uwZERIgztHAAK3VQMsL8+ku0lFXXbO81hKDg8IieACqjGEa2mqEueg0c/fX+wd0oI+75wB19KJAsA==
dependencies:
loader-utils "^1.2.3"
monaco-editor@^0.20.0:
version "0.20.0"
resolved "https://registry.yarnpkg.com/monaco-editor/-/monaco-editor-0.20.0.tgz#5d5009343a550124426cb4d965a4d27a348b4dea"
integrity sha512-hkvf4EtPJRMQlPC3UbMoRs0vTAFAYdzFQ+gpMb8A+9znae1c43q8Mab9iVsgTcg/4PNiLGGn3SlDIa8uvK1FIQ==
morgan@^1.10.0:
version "1.10.0"
resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.10.0.tgz#091778abc1fc47cd3509824653dae1faab6b17d7"
@@ -11433,6 +11462,11 @@ open@^7.0.0:
is-docker "^2.0.0"
is-wsl "^2.1.1"
opencascade.js@^0.1.15:
version "0.1.19"
resolved "https://registry.yarnpkg.com/opencascade.js/-/opencascade.js-0.1.19.tgz#32d545ca4add213d168eb6e6973dceba1bcab35b"
integrity sha512-7q8LNihtU7BzsIXXoqTHq2/7ASfDdK5OycuI1oscc/9Opmew8OXjcv/oTSF+w5U+0dwUt8LewdG/xYSIkkf8Ig==
opener@^1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed"
@@ -14166,6 +14200,11 @@ text-table@0.2.0, text-table@^0.2.0:
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
three@^0.118.3:
version "0.118.3"
resolved "https://registry.yarnpkg.com/three/-/three-0.118.3.tgz#c0bf8c10a68155478f12f4ccac2ff979526a4a0a"
integrity sha512-ijECXrNzDkHieoeh2H69kgawTGH8DiamhR4uBN8jEM7VHSKvfTdEvOoHsA8Aq7dh7PHAxhlqBsN5arBI3KixSw==
throat@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b"