Skip to content

Latest commit

 

History

History
82 lines (61 loc) · 2.47 KB

Macro_Draw_Parametric_2D_Function.md

File metadata and controls

82 lines (61 loc) · 2.47 KB

Macro Draw Parametric 2D Function

{{Macro |Name=Macro Draw Parametric 2D Function |Icon=Macro_Draw_Parametric_2D_Function.png |Description=Draws 2-dimensional, parametric and optionally polar equations. |Author=T4b |Version=2.0 |Date=2012-08-30 |FCVersion=All |Download=[https://www.freecadweb.org/wiki/images/0/03/Macro_Draw_Parametric_2D_Function.png ToolBar Icon] }}

Description

Draws 2-dimensional, parametric and optionally polar equations.

*DrawParametric2DFunction*

Limitations

Still has some bugs and misses some features. Documentation is in the docstrings.

Usage

Type :

Example usage:

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

Script

ToolBar Icon

Macro_drawParametric2DFunction.FCMacro

{{MacroCode|code=

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 functionsThe 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=(xmath.cos(y),xmath.sin(y),z),(xNextmath.cos(yNext),xNextmath.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.5n", yFunction="-0.75*n", n=0, nd=-math.pi, step=50, pol=1)

}}


documentation index > Macro Draw Parametric 2D Function