Surface Sections

Other languages:

Surface Sections

Menu location
Surface → Sections
Workbenches
Surface
Default shortcut
None
Introduced in version
0.19
See also
None

Description

Surface Sections is used to create a surface from edges that represent transversal sections of a surface.

Left: control edges (transversal sections). Right: surface produced from these edges.

Usage

  1. Make sure you have at least two edges or curves in space. For example, these can be created with tools of the Draft Workbench or the Sketcher.
  2. Press the Surface sections button.
  3. Press Add edge.
  4. Use the pointer to pick the desired edges in the 3D view; a preview of the final shape will be shown after selecting two valid edges.
  5. Press OK to complete the operation.

Options

Properties

A Surface Sections (Surface::Sections 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 Sections has the following properties in the property editor.

Data

Sections

View

Base

Twisting of the surface

The shape of the surface depends on the direction of the chosen edges; if edges are selected and the result is a surface that "twists" on itself, one of the edges may need its list of vertices in the reverse order. See the information in GeomFillSurface for a more complete explanation.

Scripting

See also: FreeCAD Scripting Basics.

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

import FreeCAD as App
import Draft

doc = App.newDocument()

pl1 = App.Placement()
obj1 = Draft.make_circle(50, placement=pl1, face=False, startangle=0, endangle=180)

pl2 = App.Placement(App.Vector(0, 0, 25), App.Rotation())
obj2 = Draft.make_circle(30, placement=pl2, face=False, startangle=0, endangle=180)

points3 = [App.Vector(18, -10, 50),
           App.Vector(12, 10, 50),
           App.Vector(-12, 10, 50),
           App.Vector(-18, -10, 50)]
obj3 = Draft.make_bspline(points3)

points4 = [App.Vector(15, -20, 100),
           App.Vector(0, 6, 100),
           App.Vector(-15, -20, 100)]
obj4 = Draft.make_bspline(points4)
doc.recompute()

surf = doc.addObject("Surface::Sections", "Surface")
surf.NSections = [(obj1, "Edge1"),
                  (obj2, "Edge1"),
                  (obj3, "Edge1"),
                  (obj4, "Edge1")]
doc.recompute()