Surface Füllfläche

From FreeCAD Documentation
This page is a translated version of the page Surface Filling and the translation is 47% complete.

Surface Füllfläche

Menüeintrag
Surface → Filling
Arbeitsbereich
Surface
Standardtastenkürzel
Keiner
Eingeführt in Version
0.17
Siehe auch
Keiner

Beschreibung

Surface Füllfläche erstellet 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.

The base geometry can belong to curves created with the Draft Workbench or the Sketcher Workbench, but can also belong to solid objects such as those created with the Part Workbench or the PartDesign Workbench.

Two filled surfaces delimited by four edges located on the XY plane. The surface on the right is additionally controlled by a non-boundary edge.

Anwendung

  1. Press the Filling button.
  2. The Boundaries task panel opens. See Options.
  3. Select two or more edges in the 3D view:
    • There is no need to press the Add edge button in the Boundaries section at this time.
    • The edges must be selected in consecutive order.
    • The edges must be connected, but the complete boundary need not be closed.
    • The complete boundary should not self-intersect.
    • For a 360° circular boundary two semicircular edges can be selected.
  4. A preview of the final shape will be shown once enough valid geometry has been selected.
  5. Optionally select a Support surface. See Example.
  6. Optionally select one or more Edge constraints.
  7. Optionally select one or more Vertex constraints.
  8. Press OK button.

Optionen

  • In the Boundaries section a support surface and boundary edges can specified:
    • Press the Support surface button and select a face in the 3D view to add a support surface.
      • Click the icon to remove the support surface.
    • Press the Add edge button once to start selecting boundary edges in the 3D view.
    • There are several ways to deselect boundary edges:
      • Press the Remove edge button once to start deselecting edges in the 3D view.
      • Select an edge in the list and press Delete.
      • Right-click an edge in the list and select Remove from the context menu.
  • In the Edge constraints section non-boundary edges can be specified:
    • The selection options are similar to those for boundary edges.
  • In the Vertex constraints section non-boundary vertices can be specified:
    • The selection options are similar to those for boundary edges.
  • Press Esc or the Cancel button to abort the operation.

Beispiel

Die Stützfläche Stellt eine weitere Randbedingung für die Oberfläche dar. Das folgende einfache Beispiel gibt einen Eindruck davon, wie dies funktioniert:

  1. In the Part Workbench create a cylinder and set its DatenAngle to 180°.
  2. Switch to the Surface Workbench and press the Filling button.
  3. Select the two semi-circular edges and the two straight edges that connect them.
  4. The result matches the four boundary edges, but the inner shape is quite different from the cylindrical face.
  5. Edit the Surface object and for the Support surface select the cylindrical face.
  6. The modified shape matches the cylindrical face much more closely.

Eigenschaften

A Surface Filling (Surface::Filling class) is derived from the basic Part Feature (Part::Feature class, through the Part::Spline subclass), therefore it shares all the latter's properties.

In addition to the properties described in Part Feature, the Surface Filling has the following properties in the property editor.

Daten

Filling

  • DatenBoundary Edges (LinkSubList): boundary edges; C0 is required for edges without a corresponding face.
  • DatenBoundary Faces (StringList):
  • DatenBoundary Order (IntegerList): order of constraint on boundary faces; 0, 1, and 2 are possible.
  • DatenUnbound Edges (LinkSubList): unbound constraint edges; C0 is required for edges without a corresponding face.
  • DatenUnbound Faces (StringList):
  • DatenUnbound Order (IntegerList): order of constraint on unbound faces; 0, 1, and 2 are possible.
  • DatenFree Faces (LinkSubList): free constraint on a face.
  • DatenFree Order (IntegerList): order of constraint on free faces.
  • DatenPoints (LinkSubList): constraint points on surface.
  • DatenInitial Face (LinkSub): initial surface to use.
  • DatenDegree (Integer): starting degree, it defaults to 3.
  • DatenPoints On Curve (Integer): number of points on an edge for constraint.
  • DatenIterations (Integer): number of iterations, it defaults to 2.
  • DatenAnisotropy (Bool): it defaults to false.
  • DatenTolerance2d (Float): 2D tolerance, it defaults to 0.0.
  • DatenTolerance3d (Float): 3D tolerance, it defaults to 0.0.
  • DatenTol Angular (Float): G1 tolerance, it defaults to 0.01.
  • DatenTol Curvature (Float): G2 tolerance, it defaults to 0.10.
  • DatenMaximum Degree (Integer): maximum curve degree, it defaults to 8.
  • DatenMaximum Segments (Integer): maximum number of segments, it defaults to 9.

Ansicht

Base

  • AnsichtControl Points (Bool): it defaults to false; if set to true, it will show an overlay with the control points of the surface.

Skripten

See also: FreeCAD Scripting Basics.

The Surface Filling tool can be used in macros and from the Python console by adding the Surface::Filling object.

  • The edges to be used to define the surface must be assigned as a LinkSubList to the BoundaryEdges property of the object.
  • Auxiliary edges and vertices must be assigned as a LinkSubLists to the UnboundEdges and Points properties of the object.
  • All objects with edges need to be computed before they can be used as input for the properties of the Filling object.
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()