Macro Draw Parametric 2D Function
File:Text-x-python Macro Draw Parametric 2D Function |
Description |
---|
Dessin 2-dimensions, et éventuellement paramétrique avec une équation polaire . Auteur: T4b |
Auteur |
T4b |
Téléchargement |
None |
Liens |
Page des macros Comment installer une macro Comment créer une barre d'outils |
Version Macro |
1.0 |
Dernière modification |
None |
Version(s) FreeCAD |
None |
Raccourci clavier |
None |
Voir aussi |
None |
Possède encore quelques bugs et il manque certaines fonctionnalités. La documentation est dans le docstrings.
Limitations
Still has some bugs and misses some features. Documentation is in the docstrings.
Use
Type :
#Example usage:
draw2Dfunction(xFunction="0.5*n", yFunction="-0.75*n", n=0, nd=-math.pi, step=50, pol=1)
Script
Macro_drawParametric2DFunction.FCMacro
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)
#Example usage:
draw2Dfunction(xFunction="0.5*n", yFunction="-0.75*n", n=0, nd=-math.pi, step=50, pol=1)