User Tools

Site Tools


start

Blog

einfacher Editor für eine 3D Kurve

Wie man ein die Verschiebbarkeit von ein paar Kugeln für einen Editor von 3D Kurven verwenden kann

einfacher Editor für eine 3D Kurve ...

2019/12/09 10:42
Tangentiale Übergänge

Wie können Übergänge zwischen zwei Freiformflächen aussehen? Neben der harten Kante sind auch weiche Übergänge möglich.

*Skript

2017/05/19 22:55
Farbige Darstellung von Werten

Für einen objektabhängigen Wert soll seine Abweichung von einem Wunschwert angezeigt werden. Im konkreten Beispiel geht es um die Länge einer Kurve (BSpline). Wird die Kurve bei der Bearbeitung zu lang, soll sie sich rot färben, wird sie zu kurz, soll sie blau werden.

Die einfachste Lösung ist ein Part::FeaturePython Objekt, welches die Kurve als Parameter verwendet und bei jeder Veränderung der Kurve deren Länge berechnet und mit den Vorgaben vergleicht.

spline = Draft.makeBSpline(points,closed=False,face=True,support=None)

a=FreeCAD.activeDocument().addObject("Part::FeaturePython","MyMonitor")
m=Monitor(a)

a.source=spline
a.minVal= spline.Shape.Length*0.95
a.maxVal= spline.Shape.Length*1.05

Die Monitor-Klasse erledigt die Überwachungs- und Färbearbeit. Sie ist im Skript enthalten.

Bei Abweichungen über die Genzen hinaus wird die Kurve neu gefärbt. Das erledigt die execute-Methode.

def execute(proxy,obj):
	mm=20
	if obj.source <> None:
			print ("Value and interval:", round(obj.source.Shape.Edge1.Length,1),obj.minVal,obj.maxVal)
			obj.source.ViewObject.LineColor=(1.0,1.0,1.0)
			if obj.source.Shape.Edge1.Length<obj.minVal:
				obj.source.ViewObject.LineColor=(0.0,.0,1.0)
			elif obj.source.Shape.Edge1.Length>obj.minVal and obj.source.Shape.Edge1.Length<obj.minVal+mm:
				j=1-(obj.minVal+mm-obj.source.Shape.Edge1.Length)/mm
				j=j*0.5
				obj.source.ViewObject.LineColor=(j,j,1.0)
			elif obj.source.Shape.Edge1.Length<obj.maxVal and obj.source.Shape.Edge1.Length>obj.maxVal-mm:
				j=(obj.maxVal-obj.source.Shape.Edge1.Length)/mm
				j=j*0.5
				obj.source.ViewObject.LineColor=(1.0,j,j)
			elif obj.source.Shape.Edge1.Length>obj.maxVal:
				obj.source.ViewObject.LineColor=(1.0,0.0,.0)

2017/04/24 23:50
How to create a Driver Sketch

Using Expressions it is possible to create and use a simplified sketch to drive a more complex sketch The idea is to map the blue constraints of the driver to some red constraints in the driven sketch.

The driver is created as a hexagon (red)

The driven sketch is a shoe rib sketch from the Nurbs Workbench project (yellow).

import nurbswb
import nurbswb.createshoerib
nurbswb.createshoerib.run()

The mapping between the constraints is donme by related name lists

inputs=[ 
		'x0','y0',
		'x1','y1',
		'x2','y2',
		'x3','y3',
		'x4','y4',
		'x5','y5'
	]

outputs=[ 
		'p0X', 'p0Y',  
		'p2X', 'p2Y',
		'p4X', 'p4Y',
		'p8X', 'p8Y',
		'p12X', 'p12Y',
		'p14X', 'p14Y',
	]

The expression can be done by script this way

rc=target.setExpression('Constraints.'+outputs[i], source.Name+".Constraints."+inputs[i])

2017/04/18 20:04
start.txt · Last modified: 2018/09/04 14:21 by admin