OpenScad           [ only 2D reviewed ]               2019
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
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)

notes by themselves are here.   My book on many programming
languages is here.

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

It supports
openJcad trig and
other functions, as
well as javaScript

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.