Surface Sections

From FreeCAD Documentation
Revision as of 22:53, 27 September 2020 by Vocx (talk | contribs) (→‎Description: Surface_Sections_edges_example.png, Surface_Sections_example.png)
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 lease two edges or curves in space.
  2. Press the Surface sections button.
  3. Press Add edge.
  4. Click on the desired edges that you wish to use to create the surface; a preview of the final result will be produced on the 3D view.
  5. Press OK to complete the operation.

Properties

Data

Sections

  • DataNSections (LinkSubList): a list of edges that will be used to build the curve.

View

Base

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

Scripting

See also: FreeCAD Scripting Basics.

The Surface Section tool can be used in macros and from the Python console by adding the Surface::Sections object. The edges to be used to define the surface must be assigned as a LinkSubList to the NSections attribute of the 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()