import fpformat
Win = Windows()
CurrentPart = CurrentPart()

txtfile = Win.OpenFileDialog('Select 3D Pojnts in TXT,mm',
                             'TXT files(*.*)|*.txt*',
                             '.txt')
f = open(txtfile, 'r')
datareader2 = f.read()
f.close()

data_into_list = datareader2.replace('\\n', ',').split(",")
Points_Full = data_into_list

print 'Input Number of Guide Curves (typ - 10), then press ENTER'
NumberOfSections = int(Read())

length = (len(Points_Full) // (NumberOfSections * 3))
print(length)

# Break with While Loop
# Point Ranges
Points_1_range  = range(0,           (length*3))
Points_2_range  = range(length*3,    (3*2*length))
Points_3_range  = range(3*2*length, (3*3*length))
Points_4_range  = range(3*3*length, (3*4*length))
Points_5_range  = range(3*4*length, (3*5*length))
Points_6_range  = range(3*5*length, (3*6*length))
Points_7_range  = range(3*6*length, (3*7*length))
Points_8_range  = range(3*7*length, (3*8*length))
Points_9_range  = range(3*8*length, (3*9*length))
Points_10_range = range(3*9*length, (3*10*length))

# Convert to floats directly
Points_1  = [float(Points_Full[w])   for w in Points_1_range]
Points_2  = [float(Points_Full[ww])  for ww in Points_2_range]
Points_3  = [float(Points_Full[www]) for www in Points_3_range]
Points_4  = [float(Points_Full[xxxx]) for xxxx in Points_4_range]
Points_5  = [float(Points_Full[xxxxx]) for xxxxx in Points_5_range]
Points_6  = [float(Points_Full[xxxxxx]) for xxxxxx in Points_6_range]
Points_7  = [float(Points_Full[xxxxxxx]) for xxxxxxx in Points_7_range]
Points_8  = [float(Points_Full[xxxxxxxx]) for xxxxxxxx in Points_8_range]
Points_9  = [float(Points_Full[xxxxxxxxx]) for xxxxxxxxx in Points_9_range]
Points_10 = [float(Points_Full[xxxxxxxxxx]) for xxxxxxxxxx in Points_10_range]

cycle = range(length)

###############################################################################
# Helper function: "fix to 4 decimals, then back to float"
# If you don't need the decimal trimming, you can skip fpformat.fix(...) entirely.
###############################################################################
def to_float4(value):
    # Convert 'value' to a string with 4 decimals, then back to float
    return float(fpformat.fix(value, 4))

###############################################################################
# 1st Spline
###############################################################################
Path1 = CurrentPart.Add3DSketch('Spline1')
Points1 = []
for i in cycle:
    ix = i*3
    X11 = to_float4(Points_1[ix])
    Y11 = to_float4(Points_1[ix+1])
    Z11 = to_float4(Points_1[ix+2])
    Points1.extend([X11, Y11, Z11])

Path1.AddBspline(Points1)

# sample points for planes or references
SP1  = [Points1[0],   Points1[1],   Points1[2]]
SP11 = [Points1[150], Points1[151], Points1[152]]
SP21 = [Points1[300], Points1[301], Points1[302]]

CurrentPart.AddPoint('SP1',  SP1[0],  SP1[1],  SP1[2])
CurrentPart.AddPoint('SP11', SP11[0], SP11[1], SP11[2])
CurrentPart.AddPoint('SP21', SP21[0], SP21[1], SP21[2])

###############################################################################
# 2nd Spline
###############################################################################
Path2 = CurrentPart.Add3DSketch('Spline2')
Points2 = []
for i in cycle:
    ix = i*3
    X12 = to_float4(Points_2[ix])
    Y12 = to_float4(Points_2[ix+1])
    Z12 = to_float4(Points_2[ix+2])
    Points2.extend([X12, Y12, Z12])

Path2.AddBspline(Points2)

SP2  = [Points2[0],   Points2[1],   Points2[2]]
SP12 = [Points2[150], Points2[151], Points2[152]]
SP22 = [Points2[300], Points2[301], Points2[302]]

CurrentPart.AddPoint('SP2',  SP2[0],  SP2[1],  SP2[2])
CurrentPart.AddPoint('SP12', SP12[0], SP12[1], SP12[2])
CurrentPart.AddPoint('SP22', SP22[0], SP22[1], SP22[2])

###############################################################################
# 3rd Spline
###############################################################################
Path3 = CurrentPart.Add3DSketch('Spline3')
Points3 = []
for i in cycle:
    ix = i*3
    X13 = to_float4(Points_3[ix])
    Y13 = to_float4(Points_3[ix+1])
    Z13 = to_float4(Points_3[ix+2])
    Points3.extend([X13, Y13, Z13])

Path3.AddBspline(Points3)

SP3  = [Points3[0],   Points3[1],   Points3[2]]
SP13 = [Points3[150], Points3[151], Points3[152]]
SP23 = [Points3[300], Points3[301], Points3[302]]

CurrentPart.AddPoint('SP3',  SP3[0],  SP3[1],  SP3[2])
CurrentPart.AddPoint('SP13', SP13[0], SP13[1], SP13[2])
CurrentPart.AddPoint('SP23', SP23[0], SP23[1], SP23[2])

###############################################################################
# 4th Spline
###############################################################################
Path4 = CurrentPart.Add3DSketch('Spline4')
Points4 = []
for i in cycle:
    ix = i*3
    X14 = to_float4(Points_4[ix])
    Y14 = to_float4(Points_4[ix+1])
    Z14 = to_float4(Points_4[ix+2])
    Points4.extend([X14, Y14, Z14])

Path4.AddBspline(Points4)

SP4  = [Points4[0],   Points4[1],   Points4[2]]
SP14 = [Points4[150], Points4[151], Points4[152]]
SP24 = [Points4[300], Points4[301], Points4[302]]

CurrentPart.AddPoint('SP4',  SP4[0],  SP4[1],  SP4[2])
CurrentPart.AddPoint('SP14', SP14[0], SP14[1], SP14[2])
CurrentPart.AddPoint('SP24', SP24[0], SP24[1], SP24[2])

###############################################################################
# 5th Spline
###############################################################################
Path5 = CurrentPart.Add3DSketch('Spline5')
Points5 = []
for i in cycle:
    ix = i*3
    X15 = to_float4(Points_5[ix])
    Y15 = to_float4(Points_5[ix+1])
    Z15 = to_float4(Points_5[ix+2])
    Points5.extend([X15, Y15, Z15])

Path5.AddBspline(Points5)

SP5  = [Points5[0],   Points5[1],   Points5[2]]
SP15 = [Points5[150], Points5[151], Points5[152]]
SP25 = [Points5[300], Points5[301], Points5[302]]

CurrentPart.AddPoint('SP5',  SP5[0],  SP5[1],  SP5[2])
CurrentPart.AddPoint('SP15', SP15[0], SP15[1], SP15[2])
CurrentPart.AddPoint('SP25', SP25[0], SP25[1], SP25[2])

###############################################################################
# 6th Spline
###############################################################################
Path6 = CurrentPart.Add3DSketch('Spline6')
Points6 = []
for i in cycle:
    ix = i*3
    X16 = to_float4(Points_6[ix])
    Y16 = to_float4(Points_6[ix+1])
    Z16 = to_float4(Points_6[ix+2])
    Points6.extend([X16, Y16, Z16])

Path6.AddBspline(Points6)

SP6  = [Points6[0],   Points6[1],   Points6[2]]
SP16 = [Points6[150], Points6[151], Points6[152]]
SP26 = [Points6[300], Points6[301], Points6[302]]

CurrentPart.AddPoint('SP6',  SP6[0],  SP6[1],  SP6[2])
CurrentPart.AddPoint('SP16', SP16[0], SP16[1], SP16[2])
CurrentPart.AddPoint('SP26', SP26[0], SP26[1], SP26[2])

###############################################################################
# 7th Spline
###############################################################################
Path7 = CurrentPart.Add3DSketch('Spline7')
Points7 = []
for i in cycle:
    ix = i*3
    X17 = to_float4(Points_7[ix])
    Y17 = to_float4(Points_7[ix+1])
    Z17 = to_float4(Points_7[ix+2])
    Points7.extend([X17, Y17, Z17])

Path7.AddBspline(Points7)

SP7  = [Points7[0],   Points7[1],   Points7[2]]
SP17 = [Points7[150], Points7[151], Points7[152]]
SP27 = [Points7[300], Points7[301], Points7[302]]

CurrentPart.AddPoint('SP7',  SP7[0],  SP7[1],  SP7[2])
CurrentPart.AddPoint('SP17', SP17[0], SP17[1], SP17[2])
CurrentPart.AddPoint('SP27', SP27[0], SP27[1], SP27[2])

###############################################################################
# 8th Spline
###############################################################################
Path8 = CurrentPart.Add3DSketch('Spline8')
Points8 = []
for i in cycle:
    ix = i*3
    X18 = to_float4(Points_8[ix])
    Y18 = to_float4(Points_8[ix+1])
    Z18 = to_float4(Points_8[ix+2])
    Points8.extend([X18, Y18, Z18])

Path8.AddBspline(Points8)

SP8  = [Points8[0],   Points8[1],   Points8[2]]
SP18 = [Points8[150], Points8[151], Points8[152]]
SP28 = [Points8[300], Points8[301], Points8[302]]

CurrentPart.AddPoint('SP8',  SP8[0],  SP8[1],  SP8[2])
CurrentPart.AddPoint('SP18', SP18[0], SP18[1], SP18[2])
CurrentPart.AddPoint('SP28', SP28[0], SP28[1], SP28[2])

###############################################################################
# 9th Spline
###############################################################################
Path9 = CurrentPart.Add3DSketch('Spline9')
Points9 = []
for i in cycle:
    ix = i*3
    X19 = to_float4(Points_9[ix])
    Y19 = to_float4(Points_9[ix+1])
    Z19 = to_float4(Points_9[ix+2])
    Points9.extend([X19, Y19, Z19])

Path9.AddBspline(Points9)

SP9  = [Points9[0],   Points9[1],   Points9[2]]
SP19 = [Points9[150], Points9[151], Points9[152]]
SP29 = [Points9[300], Points9[301], Points9[302]]

CurrentPart.AddPoint('SP9',  SP9[0],  SP9[1],  SP9[2])
CurrentPart.AddPoint('SP19', SP19[0], SP19[1], SP19[2])
CurrentPart.AddPoint('SP29', SP29[0], SP29[1], SP29[2])

###############################################################################
# 10th Spline
###############################################################################
Path10 = CurrentPart.Add3DSketch('Spline10')
Points10 = []
for i in cycle:
    ix = i*3
    X110 = to_float4(Points_10[ix])
    Y110 = to_float4(Points_10[ix+1])
    Z110 = to_float4(Points_10[ix+2])
    Points10.extend([X110, Y110, Z110])

Path10.AddBspline(Points10)

SP10 = [Points10[0],   Points10[1],   Points10[2]]
SP20 = [Points10[150], Points10[151], Points10[152]]
SP30 = [Points10[300], Points10[301], Points10[302]]

CurrentPart.AddPoint('SP10', SP10[0], SP10[1], SP10[2])
CurrentPart.AddPoint('SP20', SP20[0], SP20[1], SP20[2])
CurrentPart.AddPoint('SP30', SP30[0], SP30[1], SP30[2])

###############################################################################
# Make Planes from Points
###############################################################################
Plane1 = CurrentPart.AddPlane('FirstPlane', SP1, SP2, SP3)
Plane2 = CurrentPart.AddPlane('MiddlePlane', SP11, SP12, SP13)
Plane3 = CurrentPart.AddPlane('LastPlane', SP21, SP22, SP23)

S1 = CurrentPart.AddSketch('FirstSketch',  Plane1)
S2 = CurrentPart.AddSketch('MiddleSketch', Plane2)
S3 = CurrentPart.AddSketch('LastSketch',   Plane3)

# Combine your first three sets into one set for each plane
First_Sketch = SP1 + SP2 + SP3 + SP4 + SP5 + SP6 + SP7 + SP8 + SP9 + SP10
Mid_Sketch   = SP11 + SP12 + SP13 + SP14 + SP15 + SP16 + SP17 + SP18 + SP19 + SP20
End_Sketch   = SP21 + SP22 + SP23 + SP24 + SP25 + SP26 + SP27 + SP28 + SP29 + SP30

print(First_Sketch)

###############################################################################
# Convert to local 2D coordinates and draw lines for each plane’s sketch
###############################################################################
SketchPoints_1 = []
SketchPoints_2 = []
SketchPoints_3 = []

# Each set (SP*) above has 10 triplets => 30 elements
def chunk_triplets(dat):
    return [dat[i:i+3] for i in range(0, len(dat), 3)]

# Convert First_Sketch
trip_1 = chunk_triplets(First_Sketch)  # 10 sets of [X,Y,Z]
for (xx, yy, zz) in trip_1:
    uv = S1.GlobaltoPoint(xx, yy, zz)
    SketchPoints_1.append(uv)

# Convert Mid_Sketch
trip_2 = chunk_triplets(Mid_Sketch)
for (xx, yy, zz) in trip_2:
    uv = S2.GlobaltoPoint(xx, yy, zz)
    SketchPoints_2.append(uv)

# Convert End_Sketch
trip_3 = chunk_triplets(End_Sketch)
for (xx, yy, zz) in trip_3:
    uv = S3.GlobaltoPoint(xx, yy, zz)
    SketchPoints_3.append(uv)

# Flatten so that AddLines(...) sees them as [x1,y1, x2,y2, x3,y3, ...]
def flatten_and_close(pts2d):
    flattened = []
    for xy in pts2d:
        flattened.append(xy[0])
        flattened.append(xy[1])
    # Close the profile: add the first point again
    flattened.append(flattened[0])
    flattened.append(flattened[1])
    return flattened

SketchPoints1 = flatten_and_close(SketchPoints_1)
SketchPoints2 = flatten_and_close(SketchPoints_2)
SketchPoints3 = flatten_and_close(SketchPoints_3)

S1.AddLines(SketchPoints1, False)
S2.AddLines(SketchPoints2, False)
S3.AddLines(SketchPoints3, False)

<aside> 📢

Original source code with AI cleanup tasks applied

SplineScript_AI_Clean_01.py.txt

<aside> 📎

davex7637.AD_PKG

</aside>