|Surface → Sections|
|Introduced in version|
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.
- 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.
- Press the button.
- Press .
- 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.
- Press to complete the operation.
- 3D view. Individual lines such as and can be chosen, as well as any edge from solid objects, like those of and . : press once to start picking edges in the
- 3D view; these must be edges that were previously picked with . : press once to start picking edges in the
- : open the context menu and select , or press 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 or to abort the current operation.
- DataNSections (
LinkSubList): a list of edges that will be used to build the surface.
- ViewControl Points (
Bool): it defaults to
false; if set to
true, it will show an overlay with the control points of the surface.
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 infor a more complete explanation.
See also: FreeCAD Scripting Basics.
- The edges to be used to define the surface must be assigned as a LinkSubList to the
NSectionsproperty 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()