Hi mfersaoui, thanks for reaching out us.

With regard to your issue I've a few notes:

- the
*Adaptive*interpolation is by definition strictly dependent on the shape of the spline with regard to the tessellation of the curve: the curve will be tessellated more where the curvature is larger and this generates evidently non-uniform segments distribution - check here for further notes -; - standing on the code presented the
`in_range`

variable is always*1.0*which makes this

```
if (CompareFloatTolerant(inrange, 0.0)) value = 0.0;
else value = (value - min_input) / inrange;
```

pretty useless.

I would recommend, assuming that the *adaptive* strategy is the one you want to keep to consider ( sorry for the python code, but porting should be trivial)

```
# swap the max/min values of the slider
val = op[c4d.ID_USERDATA, 1]
# set the interpolation method
interp = 3
# allocate the spline
spline = c4d.SplineObject(4, c4d.SPLINETYPE_BSPLINE)
# set interpolation method
spline[c4d.SPLINEOBJECT_INTERPOLATION] = interp
# switch according to interpolation method
if interp == 2: # uniform
# set the max number of segs
maxSegs = 100
spline[c4d.SPLINEOBJECT_SUB] = int(maxSegs * val)
if interp == 3: # adaptive
# get the rad representation of the slider's value
radVal = c4d.utils.DegToRad(90 * (1.0 - val))
# set the adaptive angle value
spline[c4d.SPLINEOBJECT_ANGLE] = radVal
# set the points
point = spline.SetAllPoints((c4d.Vector(0,0,0),c4d.Vector(0,0,900),c4d.Vector(0,900,900), c4d.Vector(0,900,0)))
# return the spline
return spline
```

If instead you'd like to linearly increase the subdivision, I warmly recommend to switch to the *uniform* method and you'll see that a linear behavior is established

Best, R