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

From FreeCAD Documentation
(Created page with "==Skript==")
(Updating to match new version of source page)
Line 21: Line 21:
Hat noch ein paar Fehler und vermisst einige Funktionen. Die Dokumentation befindet sich in den Dokumentenketten.
Hat noch ein paar Fehler und vermisst einige Funktionen. Die Dokumentation befindet sich in den Dokumentenketten.


<div class="mw-translate-fuzzy">
==Verwenden Sie==
==Verwenden Sie==
Art :
Art :
</div>




Line 35: Line 37:
'''Macro_drawParametric2DFunction.FCMacro'''
'''Macro_drawParametric2DFunction.FCMacro'''


{{Code|code=
{{MacroCode|code=


import FreeCAD, FreeCADGui, Part
import FreeCAD, FreeCADGui, Part

Revision as of 10:16, 23 May 2020

Macro Draw Parametric 2D Function

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

Versionsmakro : 1.0
Datum der letzten Änderung : 2012-08-30
FreeCAD version : All
Herunterladen : ToolBar Icon
Autor: T4b
Autor
T4b
Herunterladen
ToolBar Icon
Links
Macro-Version
1.0
Datum der letzten Änderung
2012-08-30
FreeCAD-Version(s)
All
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.

Verwenden Sie

Art :


Beispielverwendung:

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

Skript

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)