Planned feature list - Gram-Stone/route2d GitHub Wiki

  • Interactive pasteboard - Racket Graphical Interface Toolkit
  • 2d drawing commands
    • Create vectors
      • Create Rectangle
      • Create Circle
      • Create Ellipse
      • Create Polygon
      • Create Star
      • Draw Polyline
      • Create tangent lines
      • Create Arc
      • Draw Curve
      • Create Text
      • Convert text to curves
      • Text on Curve
    • Transform objects
      • Translate
      • Scale
      • Rotate
      • Reflect
      • Align
  • Rulers
  • Guidelines
  • Snapping
  • Tool database
  • Toolpath commands - Within this category, drilling and fluting essentially reduce to the problem of converting our vector representation into a series of g-code commands; they present no technical problem in themselves. Profile, pocket, and inlay toolpaths require the computation of offset polygons. Inlay toolpaths have the additional requirement that we convert all angles greater than 180 degrees into arcs with radius equal to the tool radius, but this is a minor technical problem compared to computing offset polygons.
    • Chen and McMains describe an algorithm for computing offset polygons with winding numbers. After slight modifications, I have a version of glu-tessellate that can support fill-styles with a positive winding rule.
    • Drilling toolpath
    • Fluting toolpath
    • Profile toolpath
    • Pocketing toolpath
    • Inlay toolpath
  • Input and output
    • Supported file formats
      • SVG
      • EPS
      • DXF
      • AI
      • PDF
    • Post processors and TAP file output
      • g-code-tools can be used to generate g-code commands from tessellated polygons.
  • 3d preview -
    • Representing the material as a height map allows us to simulate the effects of a toolpath by painting with a circular monochrome brush. A typical end mill would be represented by a solid monochrome circle with radius equal to the tool radius, the tone of which would transition from light to dark (or vice versa) as the z-coordinate is adjusted. A ball-nose end mill would be represented by a monochrome radial gradient in the circle, once more with radius equal to the tool radius. These height maps come in the form of a floating-point bitmap, a struct type provided by images/flomap. After every drawing event, we call fmmin to find the minimum of the two heights at each point, encoding our assumption that a tool only removes material, and never adds it. For the 3d preview, we first create a Pict3D 'rectangle' matching the dimensions of the material. Then, we tessellate it. Then, we call displace with flomap-ref on our most recent flomap. Rinse and repeat for complete toolpath simulation. I'm not sure how displace will behave on transparent points.
    • Simplest implementation would be 'offline' rendering with a software ray tracer.
  • Time estimation
  • Toolpath operations - delete, order, merge, template.
  • Job sheets
  • Help and documentation