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

From FreeCAD Documentation
(Created page with "==Beschreibung== Zeichnet 2-dimensionale, parametrische und optional polare Gleichungen.")
(Created page with "==Einschränkungen== Hat noch ein paar Fehler und vermisst einige Funktionen. Die Dokumentation befindet sich in den Dokumentenketten.")
Line 15: Line 15:
{{Caption|DrawParametric2DFunction}}
{{Caption|DrawParametric2DFunction}}


==Einschränkungen==
==Limitations==
Hat noch ein paar Fehler und vermisst einige Funktionen. Die Dokumentation befindet sich in den Dokumentenketten.
Still has some bugs and misses some features. Documentation is in the docstrings.


==Use==
==Use==

Revision as of 14:06, 17 December 2018

Macro Draw Parametric 2D Function

Beschreibung
Zeichnet 2-dimensionale, parametrische und optional polare Gleichungen.

Versionsmakro : 1.0
Datum der letzten Änderung : 2012-08-30
Autor: T4b
Autor
T4b
Herunterladen
None
Links
Macro-Version
1.0
Datum der letzten Änderung
2012-08-30
FreeCAD-Version(s)
None
Standardverknüpfung
None
Siehe auch
None

Beschreibung

Zeichnet 2-dimensionale, parametrische und optional polare Gleichungen.

DrawParametric2DFunction

Einschränkungen

Hat noch ein paar Fehler und vermisst einige Funktionen. Die Dokumentation befindet sich in den Dokumentenketten.

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)