Surface Sections: Difference between revisions

From FreeCAD Documentation
m (→‎Scripting: small changes)
(→‎Scripting: All objects with edges need to be computed before they can be used as input for the properties of the Sections object.)
Line 51: Line 51:
{{Emphasis|See also:}} [[FreeCAD_Scripting_Basics|FreeCAD Scripting Basics]].
{{Emphasis|See also:}} [[FreeCAD_Scripting_Basics|FreeCAD Scripting Basics]].


The Surface Sections tool can be used in [[macros|macros]] and from the [[Python|Python]] console by adding the {{incode|Surface::Sections}} object. The edges to be used to define the surface must be assigned as a [[LinkSubList|LinkSubList]] to the {{incode|NSections}} property of the object.
The Surface Sections tool can be used in [[macros|macros]] and from the [[Python|Python]] console by adding the {{incode|Surface::Sections}} object.
* The edges to be used to define the surface must be assigned as a [[LinkSubList|LinkSubList]] to the {{incode|NSections}} property of the object.
* All objects with edges need to be computed before they can be used as input for the properties of the Sections object.


</translate>
</translate>

Revision as of 05:19, 30 September 2020

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. 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

  • Add edge: press once to start picking edges in the 3D view. Individual lines such as Draft BSplines and Sketcher BSplines can be chosen, as well as any edge from solid objects, like those of PartDesign Bodies and Part Primitives.
  • Remove edge: press once to start picking edges in the 3D view; these must edges that were previously selected to create the surface.
  • Right mouse button: open the context menu and select Remove, or press Del in the keyboard, to remove the currently selected edge in the list.
  • Drag: drag the currently selected element in the list in order to change the order in which it will be processed; the list is processed from top to bottom.
  • Press Cancel or Esc to abort the current 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 Sections 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 property of the object.
  • All objects with edges need to be computed before they can be used as input for the properties of the 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()