I am near a solution now. I found out how to combine arcs along a set of points, so that I get a spline-like curve. As I showed arcs are the perfect basis for rotated sweeps. The following script sweeps a rotated surface along acs that form a torus-winding.
There is only one problem: I draw a new profil for each arc-sector. But what I want to do is: use the edge of the last rotated sector as profile for the next, to get a continous surface. My sweeps right now are not connected.

The problem is: The API does not accept edges as profiles. If I do it in Fusion360 by hand, it is possible.
So how can an edge be used as an non solid profile for a sweep in the API?
(You see a out-commanded part in my script. It shows what I tried. )
Is there someone who knows a solution?
import adsk.core, adsk.fusion, adsk.cam, traceback, math
def run(context):
ui = None
try:
app = adsk.core.Application.get()
ui = app.userInterface
design = app.activeProduct
# Get the root component of the active design.
root_comp = design.rootComponent
# Create a new sketch on the xy plane.
sketches = root_comp.sketches
xyPlane = root_comp.xYConstructionPlane
sketch = sketches.add(xyPlane)
points = adsk.core.ObjectCollection.create() # Create an object collection for the points.
windings = 10
pointsPerRound = 4 # Number of points that splines are generated.
i = -pointsPerRound*windings #Startwert, der in der Schleife runtergezählt wird
r = 0.5
h = 0
while i <= 0:
t = (math.pi/(pointsPerRound*windings))*i*2
h = 1.5+((-r)*(math.sin(t*windings)))
xCoord = (h)*(math.sin(t))
yCoord = (h)*(math.cos(t))
zCoord = ((-r)*(math.cos(t*windings)))
points.add(adsk.core.Point3D.create(xCoord,yCoord,zCoord))
i = i + 1
#Combining the points to arcs
arcs = adsk.core.ObjectCollection.create()
for j in range(0,int((windings*pointsPerRound)/2)):
arc = sketch.sketchCurves.sketchArcs.addByThreePoints(points[2*j],points[2*j+1],points[2*j+2])
arcs.add(arc)
profilStart = adsk.core.Point3D.create(points[2*j].x,points[2*j].y,points[2*j].z-0.2)
profilEnd = adsk.core.Point3D.create(points[2*j].x,points[2*j].y,points[2*j].z-0.01)
profil=sketch.sketchCurves.sketchLines.addByTwoPoints(profilStart,profilEnd)
"""
# The right way would be: define a start profile for the sweep...
if j==0:
profilStart = adsk.core.Point3D.create(points[0].x,points[0].y,points[0].z-0.2)
profilEnd = adsk.core.Point3D.create(points[0].x,points[0].y,points[0].z-0.01)
profil=sketch.sketchCurves.sketchLines.addByTwoPoints(profilStart,profilEnd)
# ..and then use the edge of the last sweep as profile for the next:
else:
itemIndex = root_comp.bRepBodies.count-1
body = root_comp.bRepBodies.item(itemIndex)
profil= body.edges.item(3) #it is not clear witch of the four items
sketch.add(profil)
"""
prof = root_comp.createOpenProfile(profil, False)
path = root_comp.features.createPath(arc, False)
sweeps = root_comp.features.sweepFeatures
sweepInput1 = sweeps.createInput(prof, path, adsk.fusion.FeatureOperations.NewBodyFeatureOperation)
sweepInput1.twistAngle = adsk.core.ValueInput.createByReal(100)
sweepInput1.isSolid = False
sweep = sweeps.add(sweepInput1)
for j in range(0,10):
arcs[j].startSketchPoint.merge(arcs[j+1].endSketchPoint)
except:
if ui:
ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))