-
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.
-
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
-
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.
-
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
-
Access to the bounds of 2D/3D geometry. At least for now you can get bounding box information
-
Ways to call external C/C++ libraries like ClipperLib. AngelCAD uses ClipperLib. If you have particular idea I am open for suggestions.
-
Ability to read a file from disk. I guess you mean any text format (or binary?). That could be implemented. Ideas welcome.
-
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,
-
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
-
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
-
turtle-graphics type function. Pass (I think)
-
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
-
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