hier mal meine Idee von heute morgen
Das ist zwar nicht ganz genau, aber besser als gar nix.
Was noch fehlt, ist die automatische Einstellung der Schrittweite
aber mit etwas Probieren bekommt man da schon Offsets für Kurven hin.
Für Flächen wird es auch ein solches Werkzeug geben, ich muss nur die Kollisionserkennung noch schneller machen.
Code: Select all
def run():
for dd in [150,-150]:
ed=App.ActiveDocument.Sketch.Shape.Edge1
for i in range(20):
cs=ed.Curve
size=100
tas=[]
ptas=cs.discretize(size)
for p in ptas:
v=cs.parameter(p)
tas += [cs.tangent(v)[0]]
Z=FreeCAD.Vector(0,0,1)
pts=[]
for t,p in zip(tas,ptas):
n=t.cross(Z)
pts +=[p+n*dd]
import Part
#Part.show(Part.makePolygon(pts))
Gui.updateGui()
bc=Part.BSplineCurve(pts)
ed=bc.toShape()
Part.show(ed)