Macro Draw Parametric 2D Function

This page is a translated version of the page Macro Draw Parametric 2D Function and the translation is 88% complete.
Outdated translations are marked like this.
Other languages:
Descripción Macro Dibujar Parametrico 2D Función Dibuja ecuaciones 2D paramétricas y opcionalmente polares.Versión macro : 1.0Fecha última modificación : 2012-08-30Versión FreeCAD : AllDescargar : ToolBar IconAutor : T4b T4b ToolBar Icon Macros recipesHow to install macrosHow to customize toolbars 1.0 2012-08-30 All None None

Descriptivo

Aún tiene algunos errores y faltan algunas caracteristicas. La documentación está en el docstrings.

DrawParametric2DFunction

Limitativos

Aún tiene algunos errores y faltan algunas caracteristicas. La documentación está en el docstrings.

Use

Type :

Ejemplo de uso:

draw2Dfunction(xFunction="0.5*n", yFunction="-0.75*n", n=0, nd=-math.pi, step=50, pol=1)

Guión

ToolBar Icon

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)```