Macro Draw Parametric 2D Function

Still has some bugs and misses some features. Documentation is in the docstrings. import FreeCAD, FreeCADGui, Part import math

def evalFunction(suppliedFunction, n): """This function uses eval to evaluate suppliedFunction.	It does in no way check whether suppliedFunction is evil, thus it is itself evil!	""" return eval(suppliedFunction)

def draw2Dfunction(xFunction="n", yFunction="n", n=-5, nd=10, step=10, z=0, pol=0): """Draws 2-dimensional mathemathical functions	The function is drawn for n's between n and n+nd, in steps of 1/step, on the z-coordinate z.	Equations for x and y can be given (xFunction and yFunction arguments), they default to n.	If pol=1 then x is interpreted as r and y is interpreted as t.	""" nStart=n while math.fabs(n-nd)-1.0/step>0: print "n: " + str(n) x=evalFunction(xFunction, n)		y=evalFunction(yFunction, n)		nNext=n+math.copysign(1,nd-n)/step print "nNext: " + str(nNext) xNext=evalFunction(xFunction, nNext) yNext=evalFunction(yFunction, nNext) if pol==0: nextSeg=(x,y,z),(xNext,yNext,z) else: nextSeg=(x*math.cos(y),x*math.sin(y),z),(xNext*math.cos(yNext),xNext*math.sin(yNext),z) print "nextSeg: " + str(nextSeg) nomme=Part.makeLine(*nextSeg) if n==nStart: WWire=Part.Wire([nomme]) else: WWire=Part.Wire([WWire,nomme]) n=nNext Part.show(WWire) draw2Dfunction(xFunction="0.5*n", yFunction="-0.75*n", n=0, nd=-math.pi, step=50, pol=1)
 * 1) Example usage: