Turns out I was actually able to finally make one myself, but it could probably use a ton of optimizations:
prgmRAND3D
ClrHome:ClrDraw
Prompt L,S,E // L: Length of each side of the large cube S: How many small cubes in each direction E: 0=No Edges 1=Edges
max(1,min(0.5(Ymax-Ymin),L))→L
max(1,S)→S
max(0,min(1,E))→E
L→M
{11,21,17,10,18}→⸤C
prgmISO
√(3)/2→H
M/S→L
LH→R
0→P
For(Y,0,S-1)
For(X,S-1,0,⁻1)
For(Z,S-1,0,⁻1)
If not(randInt(0,5)):Then
P▶Rx(LZ,30)+P▶Rx(LX,150)→A
P▶Ry(LZ,30)+P▶Ry(LX,150)+YL→B
For(F,0,L,0.2)
Line(A+R,B+1.5L-F,A,B+L-F,⸤C(3)
Line(A-R,B+1.5L-F,A,B+L-F,⸤C(4)
P▶Rx(F,30)→V:P▶Ry(F,150)→W
Line(A+0-V,B+2L-W,A+R-V,B+1.5L-W,⸤C(5
End
If not(E):Goto 1
Line(A,B,A,B+L,⸤C(2),1
Line(A+0,B+2L,A+R,B+1.5L,⸤C(2),1
Line(A,B+2L,A-R,B+1.5L,⸤C(2),1
Line(A+R,B+1.5L,A,B+L,⸤C(2),1
Line(A-R,B+1.5L,A,B+L,⸤C(2),1
Line(A+R,B+1.5L,A+R,B+0.5L,⸤C(2),1
Line(A-R,B+1.5L,A-R,B+0.5L,⸤C(2),1
Line(A+R,B+0.5L,A,B,⸤C(2),1
Line(A-R,B+0.5L,A,B,⸤C(2),1
Lbl 1
End
P+1→P
Text(1,1,round(100P/(S^3),3),"% ") //14 spaces
End:End:End
prgmISO
prgmISO
M√(3)/2→R
Line(0,0,0,M,⸤C(1)
Line(0,2M,R,1.5M,⸤C(1)
Line(0,2M,⁻R,1.5M,⸤C(1)
Line(R,1.5M,0,M,⸤C(1)
Line(⁻R,1.5M,0,M,⸤C(1)
Line(R,1.5M,R,0.5M,⸤C(1)
Line(⁻R,1.5M,⁻R,0.5M,⸤C(1)
Line(R,0.5M,0,0,⸤C(1)
Line(⁻R,0.5M,0,0,⸤C(1)