Skip to content

JSCAD V3

Mister JSCAD edited this page Jan 6, 2023 · 55 revisions

These are thoughts about V3 of JSCAD, which includes API breaking changes across several core libraries. In addition, applications may need changes in order to support core library changes.

Packages

  • switch to Rollup (replace browserify) to package libraries with UMD / ES6 import bindings
    • NOTE: web UI cannot use Rollup due to webworkify / most libraries
  • publish UMD / ES6 librares

Modeling

  • NEW add dependency on array-utils (and drop duplicate functions)
  • Rework poly2 into a complete geometry
  • Rework geom2 into a list of outlines
  • Move slice to geometries
  • Remove Orthonormalbasis (rework functions that used Orthonormalbasis)
    • ALTERNATIVE: create 'basis' object for providing to/from matrices
  • Rework vectorChar() and vectorText() to return array of path2 objects #1067
  • Allow empty / sparse lists in all operations
  • Unify offset and expand, and add a new parameter to control
  • Correct parameter names which are not camelCase
  • Remove axes parameter for ellipsoid (rework expand 3D)
  • Unify path2.create and path2.fromPoints
  • Unify poly3.create and poly3.fromPoints
  • NEW union / intersect / subtract for paths (See http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Paths-Combining.html)
  • NEW add support for GLOBAL segments
  • NEW add support for GLOBAL EPS
  • NEW Connectors
    • re-implement as supported geometry (anonymous object form)
      • contains plane, and perpendicular (vector)
      • created from...
        • plane and perpendicular
        • three points (of plane), and perpendicular
        • closest point on GEOMETRY to POINT, and perpendicular
    • adding attributes (name, id, etc) is possible
    • usable as parameter to transforms; align, center, mirror, rotate, scale, translate ==> transform(mat4)
  • NEW Curves (See http://verbnurbs.com/ for inspiration)
    • NEW arc
    • NEW nurbs
  • NEW pipeline operation (see https://github.com/jscad/csg.js/issues/114 )

IO and Sub-packages

  • Drop AMF support / code
  • Drop GCODE support / code
  • Drop SCAD support / code
  • NEW functionality for converting external formats to JSCAD (separate functionality from Core)
  • Package and publish all IO libraries

Core

  • NEW 'use' function to include / evaluate a single source file (remote loading)
  • Rework evaluation to support async functions, both cli and web
  • Rework to use NEW IO functionality
  • Rework to remove AMF support (if needed)

CLI Application

  • Rework to call main asynchronous
  • Rework to remove AMF support

Web UI Application

  • Create reusable viewer components
  • Rework to call main asynchronous
  • Rework to remove AMF support

Renderer

  • Adjust viewer for geom2 changes
  • NEW conversion and rendering of slice