Skip to content

Instantly share code, notes, and snippets.

@arnholm
Last active September 29, 2019 07:52
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save arnholm/df778e826e574306a3be491302bac51d to your computer and use it in GitHub Desktop.
  1. Mutable variables. Variables are mutable in AngelCAD, since it is using the AngelScript language. One is not restricted to lists and recursion, but those are also available.

  2. Better data structures. Classes would be beautiful. User defined classes are supported in AngelCAD, also with inheritance. Also a dictionary an a map similar to C++ map.

2b. data structure for polyhedron vertices-and-faces. https://arnholm.github.io/angelcad-docs/docs/classpolyhedron.html

  1. passing functions as a first class object. In AngelCAD one can define function pointers and pass them as arguments https://gist.github.com/arnholm/7061458777913e5795585eee46fcb664 . Obviously, you can also pass handles to instances of user defined classes.

  2. Ability to rename built-in and existing modules/functions. There is namespace support in AngelScript, but adnittedly I have not explored it in much detail

  3. Access to the bounds of 2D/3D geometry. At least for now you can get bounding box information

  4. Ways to call external C/C++ libraries like ClipperLib. AngelCAD uses ClipperLib. If you have particular idea I am open for suggestions.

  5. Ability to read a file from disk. I guess you mean any text format (or binary?). That could be implemented. Ideas welcome.

  6. Rotate. In AngelCAD you have rotate_x, rotate_y and rotate_z. This could be extended for rotation around arbitrary axis, but it will be harder to use,

  7. built-in functions for rotate/translate/scale/mirror that can manipulate lists of 2D/3D points. All transformations in AngelCAD are classes inheriting from the 'tmatrix' base class, which supports transformation of 2d and 3d points. https://arnholm.github.io/angelcad-docs/docs/classtmatrix.html . Example use https://gist.github.com/arnholm/af72c7d0790bb3d72e6bdf29c7aac1ed

  8. built-in functions for union/difference/intersection/offset that can perform boolean geometry on lists on 2D points forming closed polygons. You can construct polygons from arrays of points and then do booleans https://arnholm.github.io/angelcad-docs/docs/classpolygon.html

  9. turtle-graphics type function. Pass (I think)

  10. A way to, given a list of vertices, and a list of faces (indexed into the vertex list), triangulate any faces that have more than 3 vertices. This is built-in but cannot be returned, because the language front end and the boolean engine are 2 different executables Boolean engine xcsg: https://github.com/arnholm/xcsg , wiki https://github.com/arnholm/xcsg/wiki

  11. Built-in functions for calculating pointlist paths from lists of arbitrary-degree bezier control points. These can be used to built 2D paths. You have 2d and 3d spline curves, but for now they are used only for input https://arnholm.github.io/angelcad-docs/docs/classspline2d.html https://arnholm.github.io/angelcad-docs/docs/classspline3d.html

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment