|
|
| Menüeintrag |
|---|
| Surface → Füllfläche |
| Arbeitsbereich |
| Surface |
| Standardtastenkürzel |
| Keiner |
| Eingeführt in Version |
| 0.17 |
| Siehe auch |
| Keiner |
Surface Füllfläche erstellt eine Oberfläche aus einer Reihe von verbundenen Randkurven. Die Krümmung der Oberfläche kann zusätzlich über Kanten und Knotenpunkte innerhalb der Fläche sowie einer Stützfläche gesteuert werden.
Die Basisgeometrie kann zu Kurven, die mit den Arbeitsbereichen Draft oder Sketcher erstellt wurden, gehören, aber auch zu Festkörperobjekten, die mit dem Arbeitsbereich Part erzeugt wurden.
Zwei gefüllte Oberflächen, umrandet von vier Kanten auf der XY-Ebene. Die Oberfläche auf der rechten Seite wird zusätzlich durch eine Kante beeinflusst, die nicht zur Umrandung gehört.
Die Stützfläche stellt eine weitere Beschränkung für die Oberfläche dar. Das folgende einfache Beispiel gibt einen Eindruck davon, wie dies funktioniert:
180°.
Eine Oberflächenfüllung (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 in der Eigenschaften-Ansicht folgende Eigenschaften.
Füllung
LinkSubList): Grenzkanten; C0 ist für Kanten ohne entsprechende Fläche erforderlich.StringList):IntegerList): Reihenfolge der Beschränkungen für Begrenzungsflächen; 0, 1 und 2 sind möglich.LinkSubList): ungebundene Beschränkungsränder; C0 ist für Ränder ohne entsprechende Fläche erforderlich.StringList):IntegerList): Reihenfolge der Einschränkungen für ungebundene Flächen; 0, 1 und 2 sind möglich.LinkSubList): freie Beschränkung auf einer Fläche.IntegerList): Reihenfolge der Beschränkungen für freie Flächen.LinkSubList): Einschränkungspunkte auf der Oberfläche.LinkSub): Anfangsfläche, die verwendet werden soll.Integer): Ausgangswert, standardmäßig 3.Integer): Anzahl der Punkte auf einer Kante für die Beschränkung.Integer): Anzahl der Iterationen, standardmäßig ist 2 eingestellt.Bool): Der Standardwert ist false.Float): 2D-Toleranz, der Standardwert ist 0.0.Float): 3D-Toleranz, der Standardwert ist 0.0.Float): G1-Toleranz, der Standardwert ist 0.01.Float): G1-Toleranz, der Standardwert ist 0.10.Integer): maximaler Kurvenwinkel, Standardwert ist 8.Integer): maximale Anzahl von Segmenten, standardmäßig ist 9 eingestellt.
Base
Bool): Der Standardwert ist false; wenn true eingestellt ist, wird eine Überlagerung mit den Kontrollpunkten der Oberfläche angezeigt.
Siehe auch: Grundlagen der Skripterstellung in FreeCAD.
Das Werkzeug Surface Füllfläche kann in Makros und über die Python-Konsole verwendet werden, indem das Objekt Surface::Filling hinzugefügt wird.
BoundaryEdges des Objekts zugewiesen werden.UnboundEdges und Points des Objekts zugewiesen werden.import FreeCAD as App
import Draft
doc = App.newDocument()
a = App.Vector(-20, -20, 0)
b = App.Vector(-18, 25, 0)
c = App.Vector(60, 26, 0)
d = App.Vector(33, -20, 0)
points1 = [a, App.Vector(-20, -8, 0), App.Vector(-17, 7, 0), b]
obj1 = Draft.make_bspline(points1)
points2 = [b, App.Vector(0, 25, 0), c]
obj2 = Draft.make_bspline(points2)
points3 = [c, App.Vector(37, 4, 0), d]
obj3 = Draft.make_bspline(points3)
points4 = [d, App.Vector(-2, -18, 0), a]
obj4 = Draft.make_bspline(points4)
doc.recompute()
surf = doc.addObject("Surface::Filling", "Surface")
surf.BoundaryEdges = [(obj1, "Edge1"),
(obj2, "Edge1"),
(obj3, "Edge1"),
(obj4, "Edge1")]
doc.recompute()
# ---------------------------------------------------------
points_spl = [App.Vector(-10, 0, 2),
App.Vector(4, 0, 7),
App.Vector(18, 0, -5),
App.Vector(25, 0, 0),
App.Vector(30, 0, 0)]
aux_edge = Draft.make_bspline(points_spl)
doc.recompute()
surf.UnboundEdges = [(aux_edge, "Edge1")]
doc.recompute()
# ---------------------------------------------------------
aux_v1 = Draft.make_line(App.Vector(-13, -12, 5),
App.Vector(-13, -12, -5))
aux_v2 = Draft.make_line(App.Vector(-3, 18, 5),
App.Vector(-3, 18, -5))
doc.recompute()
surf.Points = [(aux_v1, "Vertex2"),
(aux_v2, "Vertex1")]
doc.recompute()