|
|
| Menüeintrag |
|---|
| Surface → Begrenzungskurven füllen |
| Arbeitsbereich |
| Surface |
| Standardtastenkürzel |
| Keiner |
| Eingeführt in Version |
| 0.17 |
| Siehe auch |
| Keiner |
Surface GeomFüllfläche erstellt eine parametrische Oberfläche aus zwei, drei, oder vier Randkurven mit einem möglichst glatten Übergang zwischen ihnen.
Links: Kanten, die zur Erzeugung einer Oberfläche mit dem Werkzeug GeomFüllfläche benutzt werden, 4 verbundene Kanten, 3 verbundene Kanten, und 2 getrennte Kanten. Rechts: die sich aus der Verwendung der Kanten 4, 3 und 2 ergebende Fläche.
Hinweis: einmal erzeugt, ist es nicht möglich, weitere Einschränkungen zur erzeugten Oberfläche hinzuzufügen.
Fill type: Stretch,
Coons oder
Curved.
Eine GeomFüllfläche (Klasse Surface::Filling) leitet sich von der grundlegenden Part Formelement (Klasse Part::Feature, über die Unterklasse Part::Spline) ab und teilt daher alle Eigenschaften der letzteren.
Zusätzlich zu den in Part Formelement beschriebenen Eigenschaften, hat die Füllfläche im Eigenschaften Editor folgende Eigenschaften.
Base
Enumeration): der verwendete Füllalgorithmus; Stretch, der Stil mit den flachsten Flicken;Coons, ein abgerundeter Stil mit weniger Tiefe als Curved; Curved ist der Stil mit den am stärksten abgerundeten Bereichen.LinkSubList): eine Liste der Kanten, die zum Aufbau der Oberfläche verwendet werden.BoolList):
Base
Bool): Der Standardwert ist false; wenn true eingestellt ist, wird eine Überlagerung mit den Kontrollpunkten der Oberfläche angezeigt.
Die Form der Oberfläche hängt von der Richtung der ausgewählten Kanten ab. Wenn Kanten ausgewählt werden und das Ergebnis eine sich selbst "verdrehende" Oberfläche ist, muss möglicherweise die Liste der Eckpunkte einer der Kanten in umgekehrter Reihenfolge angeordnet werden. Eine sich in sich selbst verdrehende Oberfläche weist wahrscheinlich Selbstüberschneidungen auf und ist daher eine ungültige TopoForm; dies kann mit Part GeometriePrüfen überprüft werden.
Zum Beispiel, wenn zwei Kurven die Punkte haben
curve1 = [a, b, c, d]
curve2 = [e, f, g]
und die resultierende Oberfläche nach Verwendung von GeomFüllfläche oder
Querschnitte ist eine verdrehte Fläche, kann man eine dritte Kurve erstellen, die einer der beiden ursprünglichen Kurven entspricht, jedoch mit einer umgekehrten Liste von Punkten.
Entweder
curve1 = [a, b, c, d]
curve3 = [g, f, e]
oder
curve3 = [d, c, b, a]
curve2 = [e, f, g]
sollte funktionieren, um eine Oberfläche zu erzeugen, die sich nicht verdreht.
In der Praxis bedeutet dies, dass alle Kanten, die zur Erzeugung einer Fläche verwendet werden, vorzugsweise im Uhrzeigersinn oder gegen den Uhrzeigersinn erstellt werden sollten. Die Befolgung dieser einfachen Regel garantiert in der Regel, dass die Fläche der glattesten Richtung folgt und sich nicht verdreht.
Wenn die Eigenschaft AnsichtLighting der Oberfläche One side ist, wird eine Fläche vollständig schwarz dargestellt, wenn ihre Normalenrichtung in der 3D-Ansicht zeigt (vom aktuellen Betrachter weg), was eine gespiegelte Fläche im Vergleich zu den anderen farbigen Flächen anzeigt.
Links: Die Begrenzungskanten sind in dieselbe Richtung ausgerichtet, sodass die erzeugte Oberfläche glatt ist. Rechts: Die Begrenzungskanten weisen entgegengesetzte Richtungen auf, sodass sich die erzeugte Oberfläche um sich selbst dreht, was zu Selbstüberschneidungen führt.
Siehe auch: Grundlagen der Skripterstellung in FreeCAD.
Das Werkzeug Surface GeomFüllfläche kann in Makros und der Python-Konsole verwendet werden und durch hinzufügen des Surface::GeomFillSurface-Objekts.
BoundaryList des Objekts zugewiesen werden.FillType zugewiesen werden.import FreeCAD as App
import Draft
doc = App.newDocument()
a = App.Vector(-140, -100, 0)
b = App.Vector(175, -108, 0)
c = App.Vector(200, 101, 0)
d = App.Vector(-135, 107, 70)
points1 = [a, App.Vector(-55, -91, 65), App.Vector(35, -85, -5), b]
obj1 = Draft.make_bspline(points1)
points2 = [b, App.Vector(217, -45, 55), App.Vector(217, 35, -15), c]
obj2 = Draft.make_bspline(points2)
points3 = [c, App.Vector(33, 121, 55), App.Vector(0, 91, 15), App.Vector(-80, 121, -40), d]
obj3 = Draft.make_bspline(points3)
points4 = [d, App.Vector(-140, 0, 45), a]
obj4 = Draft.make_bspline(points4)
doc.recompute()
surf = doc.addObject("Surface::GeomFillSurface", "Surface")
surf.BoundaryList = [(obj1, "Edge1"),
(obj2, "Edge1"),
(obj3, "Edge1"),
(obj4, "Edge1")]
doc.recompute()