Ok I've got it to work! I was using some ones BB code but it used pivots & extra sphere but gave me some ideas.
The code is simple enough, build the cylinder in code as CreateCylinder() is slow and uses 2 surfaces.
(Line_Scale is the width of the line, try 0.015 but you can always ScaleEntity the line after it has been made to match distance from camera)
Function Make_Line:TEntity(Surf:TSurface, vert_1%, vert_2%)
Local x1# = VertexX#(Surf, vert_1)
Local y1# = VertexY#(Surf, vert_1)
Local z1# = VertexZ#(Surf, vert_1)
Local x2# = VertexX#(Surf, vert_2)
Local y2# = VertexY#(Surf, vert_2)
Local z2# = VertexZ#(Surf, vert_2)
Local le# = Sqr( (x2-x1)*(x2-x1) + (y2-y1)*(y2-y1) + (z2-z1)*(z2-z1) ) / 2.0
Local c3:TMesh = CreateMesh()
Local ssss:TSurface = CreateSurface(c3)
For Local v% = 0 To 6-1
AddVertex ssss, Cos(v*60), -1, Sin(v*60)
Next
For Local v% = 0 To 6-1
AddVertex ssss, Cos(v*60), +1, Sin(v*60)
Next
For Local t% = 0 To 6-1
AddTriangle ssss, t, t+6, 6+((t+1) Mod 6)
AddTriangle ssss, t, 6+(t+1) Mod 6, (t+1) Mod 6
Next
For Local i% = 0 To 5-2
AddTriangle ssss, 0,i%+1,i%+2
Next
For Local i% = 6 To 11-2
AddTriangle ssss, 6,i%+2,i%+1
Next
ScaleEntity c3, Line_scale, le, Line_scale
PositionEntity c3, (x1+x2)/2.0, (y1+y2)/2.0, (z1+z2)/2.0
AlignToVector c3, x2-x1, y2-y1, z2-z1, 2, 1
Return(c3)
End Function