Macro Draw Parametric 2D Function/fr: Difference between revisions

From FreeCAD Documentation
m (Created page with "{{Macro/fr|Icon=Text-x-python|Name/fr=drawParametric2DFunction|Description=Dessin 2-dimensions, et éventuellement paramétrique avec une équation polaire .|Author=T4b}}")
m (Created page with "Possède encore quelques bugs et il manque certaines fonctionnalités. La documentation est dans le docstrings.")
Line 1: Line 1:
{{Macro/fr|Icon=Text-x-python|Name/fr=drawParametric2DFunction|Description=Dessin 2-dimensions, et éventuellement paramétrique avec une équation polaire .|Author=T4b}}
{{Macro/fr|Icon=Text-x-python|Name/fr=drawParametric2DFunction|Description=Dessin 2-dimensions, et éventuellement paramétrique avec une équation polaire .|Author=T4b}}


Still has some bugs and misses some features. Documentation is in the docstrings.
Possède encore quelques bugs et il manque certaines fonctionnalités. La documentation est dans le docstrings.


<syntaxhighlight>
<syntaxhighlight>

Revision as of 09:50, 26 December 2013

File:Text-x-python {{{Name}}}

Description
Dessin 2-dimensions, et éventuellement paramétrique avec une équation polaire .

Auteur: T4b
Auteur
T4b
Téléchargement
None
Liens
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.

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)
Other languages: