What is the simplest way to create basic 3d/isometric style images programatically like autocad/blender I need the simplest route to programatically, via command line, through python or node, to create something like this using basic input of distance and 90 degree turn etc: https://i.imgur.com/SdY02gQ.png
I normally use blender for such graphics, but manually. I have bee told its over kill to use for my basic need via python, not sure where to start.
I have been told three.js is the wrong choice to try and do something like that as its for browser use mainly and I just want to create rendered images to disk, from input, on the command line.
any advice would be appreciated. I am building a fencing quote system and would like to have basic graphics accompany it. I feel like autocad/freecad would be perfect if it had such options.
Since your actuallyu doing a PDF file you should do this as a vector drawing not a image format. This makes for way more clearer end results. I will generate a image in EPS, EPS is easy to build into your PDF file with say distiller, ghostscript, sent to printer or injected into TeX (though then you may want to use Tix or or PStricks) .
Ok first you have to undertsand that EPS is a full programing language (Postscript), in addition to being a vector format (the Encapsulation part). I will be uisng the features to remove repetition. The file begins with a encapsulation marker so that you can more easily insert it programmatically.
So frist draw the thing form a overhead view, then we will transform that into isometric with a affine transform:

Image 1: Preview of listing 1
%!PS-Adobe-3.0 EPSF-3.0 
%%BoundingBox: 0 0 538 300
%%Title: listing 1
%%Creator: joojaa
%%CreationDate:  2020-09-23
%%EndComments

% postscript style shorthand relative
/m {moveto} def
/rm {rmoveto} def
/rl {rlineto} def

10 10 translate % add some padding
72 25.4 div 100 div  dup scale  % draw in  1:100
70 setlinewidth %0.7 mm technical pen

newpath  % coordinates and ops follow
0 4100 m
0 5500 rl
9000  0 rl
0 -4000 rl
4000 0 rl
0 -1300 rl
0 -800 rm
0 -1000 rl  
stroke

%%EOF

Ok then we transform the entire thing to isometric

Image 2: Image after Listing 2. Only stroke changed
%!PS-Adobe-3.0 EPSF-3.0 
%%BoundingBox: 0 0 538 300
%%Title: listing 
%%Creator: joojaa
%%CreationDate:  2020-09-23
%%EndComments

% postscript style shorthand relative
/m {moveto} def
/rm {rmoveto} def
/rl {rlineto} def

10 10 translate % add some padding
72 25.4 div 100 div  dup scale  % draw in  1:100
70 setlinewidth %0.7 mm technical pen

newpath  % coordinates and ops follow
0 4100 m

0 5500 rl
9000  0 rl
0 -4000 rl
4000 0 rl
0 -1300 rl
0 -800 rm
0 -1000 rl

%changed stroke to this
gsave
 false upath
  9600 60 sin mul 0 translate 
  [60 sin 60 cos -60 sin -60 cos 0 0] concat
  ustroke
grestore 
%eof changed

%%EOF

Then we duplicate this and offset

Image 3: After offsetting
%!PS-Adobe-3.0 EPSF-3.0 
%%BoundingBox: 0 0 538 300
%%Title: listing 3
%%Creator: joojaa 
%%CreationDate:  2020-09-23 
%%EndComments

% postscript style shorthand relative
/m {moveto} def
/rm {rmoveto} def
/rl {rlineto} def

10 10 translate % add some padding
72 25.4 div 100 div  dup scale  % draw in  1:100
70 setlinewidth %0.7 mm technical pen

newpath  % coordinates and ops follow
0 4100 m

0 5500 rl
9000  0 rl
0 -4000 rl
4000 0 rl
0 -1300 rl
0 -800 rm
0 -1000 rl

gsave
 false upath
  9600 60 sin mul -1100 translate 
  [60 sin 60 cos -60 sin -60 cos 0 0] concat
  ustroke
grestore 

gsave
 false upath
  9600 60 sin mul 10 translate 
  [60 sin 60 cos -60 sin -60 cos 0 0] concat
  ustroke
grestore 


%%EOF

Next draw connecting lines

Image 4: Listing 4 result
%!PS-Adobe-3.0 EPSF-3.0 
%%BoundingBox: 0 0 538 300
%%Title: listing 4
%%Creator: joojaa 
%%CreationDate:  2020-09-23 
%%EndComments

% postscript style shorthand relative
/m {moveto} def
/rm {rmoveto} def
/rl {rlineto} def
%draw connecting line

/tf { 9600 60 sin mul 10 translate 
    [60 sin 60 cos -60 sin -60 cos 0 0] concat} def

/dc {gsave 
    newpath 
    9600 60 sin mul 10 translate 
    [60 sin 60 cos -60 sin -60 cos 0 0] 
    concat m -1100 -1100 rl
    stroke 
    grestore
     } def

10 10 translate % add some padding
72 25.4 div 100 div  dup scale  % draw in  1:100
70 setlinewidth %0.7 mm technical pen

newpath  % coordinates and ops follow

0 4100 m
0 5500 rl
9000  0 rl
0 -4000 rl
4000 0 rl
0 -1300 rl
0 -800 rm
0 -1000 rl
     
%drawing no need to change
gsave
 false upath
  tf
ustroke
grestore 

gsave
 false upath
  0 -1100 translate
  tf
  ustroke
grestore 

{dc} {dc} {} {} pathforall


%%EOF

Todoo:

Change stroke to round
Draw in paperspace
Draw distances.
Compute bound and center
Etc.

I might return later