Daraus müssen jetzt nur die Placements berechnet werden und die Kettenglieder drauf platziert.
Ich denke. man kann das alles dann auch paramertisch machen und den Lauf des Polygons animieren.
Ich muss jetzt erstmal Schule , aber ab nachmittag sind Ferien hihi.
Code: Select all
c=App.ActiveDocument.Sketch.Shape.Edge1.Curve
def findDist(u0,u,d):
p0=c.value(u0)
for i in range(1000):
p=c.value(u)
err=(p-p0).Length-d
err=err/d
if err>1./2:err=1./2
if err<-1./2:err=-1./2
un=u-(u-u0)*err
pn=c.value(un)
errn=(pn-p0).Length-d
u=un
if abs(errn)<0.01:
print ("gefunden ",i,un)
break
return un
d=300
def runall(u0,u,d):
first=1
pts=[c.value(u0)]
for j in range(20):
un=findDist(u0,u,d)
if un>1:break
pts += [c.value(un)]
u0,u=un,un+0.1
import Draft
w=Draft.makeWire(pts)
w.ViewObject.PointSize=5
for e in w.Shape.Edges:
print e.Length
runall(0,0.1,d)
runall(0.03,0.12,d)