OpenScad is a free 2D and 3D cad program. FILE/OPEN is standard, and use DESIGN/PREVIEW for displaying program results. I only studied the 2d techniques.
It has a macro facility which is different from many languages, simple, however ...
variable assignment is not standard, it is somewhat akin to TurboCAD's "parametric script" language as far as that goes. Variables are assigned at compile time.
scope of variables is such that code within an IF cannot change a variable defined outside the IF. That makes for more repetitive code, as in the sample Hdial code example 2d Hdial v4.scad
data cannot be read from the console, hence lat/long are in the program
there is no LINE draw command, hence why POLYGON is used (which uses [x,y] coordinates), however the SQUARE feature can be used and rotated with ROTATE which uses angles in degrees.
The 3D views and speed of rendering are delightful.
The ZIP file has documentation that will save you time, and shows by example how to perform various programming tasks.
Here is a ZIP file with some simple sample code, and my notes on key points for the basic Horizontal Dial Program. Also contains notes on openJScad, see below)
The OpenScad program was mentioned in the December 2016 BSS Bulletin, and that is the only reason I looked into it.
OpenJScad [ only 2D reviewed ] web variant of openScad
openJScad is a web based system for online CAD, and is a variant of openJcad.
It supports openJcad trig and other functions, as well as javaScript functions.
So "sin" uses degrees (openJcad) and Math.sin uses radians (javaScript)
Supports screen input in the example above. These notes here are just for openJScad, and are included in the ZIP file I have for openScad. The web version needs no install and works as is.