Version 0.59.0

loft

Creates a sheet between curves.

Signatures

  •  loft( curve[] profiles )
  •  loft( curve[] profiles, bool orthBegin, bool orthoEnd )
  •  loft( curve[] profiles, bool orthBegin, vector vecEnd )
  •  loft( curve[] profiles, vector vecBegin, bool orthoEnd )
  •  loft( curve[] profiles, vector vecBegin, vector vecEnd )

Details

The loft function generates a sheet that smoothly transitions between a series of profile curves. These profiles define the cross-sectional shapes that the loft will pass through, creating a continuous surface. The function can be used to create complex shapes that are difficult to define with a single extrusion or revolution.

The profiles should be arranged in the order they are to be connected, and they should not intersect each other. The loft will interpolate between these profiles to create the final shape.

Example

 curve square = <[-2.0, -2.0]> -> <[2.0, -2.0]> -> <[2.0, 2.0]> -> <[-2.0, 2.0]> -><-
 curve circle = <[1.5, 0.0, 4.0]> -> arc( <[0.0, 0.0, 4.0]>, 2PI ) -><-

 sheet lidBottom = min_surf( square )
 sheet lidTop = min_surf( circle )
 sheet coat = loft( [ square, circle ] )

 make sheets_to_solid( [ lidBottom, lidTop, coat ] )
 

The resulting loft object.

The optional vector parameters vecBegin and vecEnd can be used to control the direction of the surface at the start and end profiles, respectively. Alternatively, if orthBegin or orthEnd is set to 'true', the corresponding end of the loft will be perpendicular to the first or last profile curve. The effect of the different combination of these parameters can be seen in the following figure:

The figure illustrates different combinations of aligning the loft shape at the begin and end profiles (blue and orange lines). The black arrows represent orthogonal end vectors as they are achieved by setting orthBegin or orthEnd to true while the red arrows represent user-defined end vectors vecBegin or vecEnd.

The profile curve do not need to reside on parallel planes:

Example

 curve square = <[-25, -25, 0]> -> <[ 25, -25, 0]> -> <[25, 25, 0]> -> <[-25, 25, 0]> -><-
 curve triangle = translation( <[0,-25,40]> ) >>
                  rotation( <[1,0,0]>, rad( 45.0 ) ) >>
                  ( <[-20, -15, 0]> -> <[20, -15, 0]> -> <[0, 25, 0]> -><- )
 curve circle = translation( <[0,-50,50]> ) >>
                rotation( <[1, 0, 0]>, rad( 90.0 ) ) >>
                ( <[20.0, 0.0]> -> arc( <[0.0, 0.0]>, 2PI ) )

 sheet coat = loft( [ square, triangle, circle ], false, true )
 make sheets_to_solid( [ coat ] )
 

A loft shape that was constructed along three non-parallel profile curves: a square (blue), a triangle (green) and a circle (orange).

The resolution of the curved areas can, as usual, be tuned by the tesselation parameter gamma.

Note

The quality of the loft depends on the compatibility of the profiles. Profiles with significantly different shapes or numbers of vertices may result in a less smooth transition.

Return value

A sheet object that connects the curves in a smooth transition, forming a continuous surface.

Parameters

profiles

A list of curves the loft is constructed inbetween.

orthBegin

Defines whether the loft shape angle at the first profile is orthogonal (value 'true') or determined by the total loft shape ('false'). Default value is 'false'.

orthEnd

Defines whether the loft shape angle at the last profile is orthogonal (value 'true') or determined by the total loft shape ('false'). Default value is 'false'.

vecBegin

Determines an angle vector of the loft shape at the first profile.

vecEnd

Determines an angle vector of the loft shape at the last profile.

See also

🗙

Search results for