PolylineExtrusion3d
            Extrudes a three-dimensional polyline in a given direction to produce a quadrilateral mesh surface.
Access to parameter description
This algorithm replicates the input polyline in a predefined direction and in its opposite direction with a regular spacing. A quadrilateral mesh is thus generated, considering each polyline vertex as a mesh vertex.
        
 
          Figure 1. Polyline extrusion: (a) input polyline regularized by PolylineResampler3d,
        (b) extruded quadrilateral mesh in blue  
        
		Access to parameter description
This algorithm replicates the input polyline in a predefined direction and in its opposite direction with a regular spacing. A quadrilateral mesh is thus generated, considering each polyline vertex as a mesh vertex.
        ![]() (a)  | 
        ![]() (b)  | 
- The extrusion direction is defined by the direction parameter.
 - The total length of the extrusion is defined by the sum of the forwardLength and backwardLength parameters.
 - The number of parallel polylines forming the output surface is deduced from the nodeCount parameter.
 
Function Syntax
This function returns the outputSurface output parameter.
                        
                    
// Function prototype.
std::shared_ptr<iolink::ArrayXd>
polylineExtrusion3d( std::shared_ptr<iolink::ArrayXd> inputPolyline,
                     double forwardLength,
                     double backwardLength,
                     uint32_t nodeCount,
                     iolink::Vector3d direction,
                     std::shared_ptr<iolink::ArrayXd> outputSurface = NULL );
                    
This function returns the outputSurface output parameter.
                        
                    
// Function prototype.
polyline_extrusion_3d( input_polyline,
                       forward_length = 1,
                       backward_length = 1,
                       node_count = 20,
                       direction = [0, 0, 1],
                       output_surface = None )
                    
This function returns the outputSurface output parameter.
                        
                
// Function prototype.
public static IOLink.ArrayXd
PolylineExtrusion3d( IOLink.ArrayXd inputPolyline,
                     double forwardLength = 1,
                     double backwardLength = 1,
                     UInt32 nodeCount = 20,
                     double[] direction = null,
                     IOLink.ArrayXd outputSurface = null );
                    Class Syntax
Parameters
| Class Name | PolylineExtrusion3d | 
|---|
| Parameter Name | Description | Type | Supported Values | Default Value | |
|---|---|---|---|---|---|
![]()  | 
  inputPolyline    | 
 The input ArrayXd to extrude.
 The indexation needs to be {coordinate, index}, where coordinate is the axis index (0 for X, 1 for Y and 2 for Z) and index is a label identifying the vertex.  | 
ArrayXd | nullptr | |
![]()  | 
  forwardLength    | 
 The extrusion length from the input polyline in the extrusion direction.
 This length is expressed in world coordinates.  | 
Float64 | >=0 | 1 | 
![]()  | 
  backwardLength    | 
 The extrusion length from the input polyline opposite to the extrusion direction.
 This length is expressed in world coordinates.  | 
Float64 | >=0 | 1 | 
![]()  | 
  nodeCount    | 
 Number of nodes to create along the whole extruded section along the sum of forward and backward lengths. | UInt32 | Any value | 20 | 
![]()  | 
  direction    | 
 The extrusion direction.
 This direction is expressed in the coordinate system of the input polyline.  | 
Vector3d | Any value | {0.f, 0.f, 1.f} | 
![]()  | 
  outputSurface    | 
 The output surface.
 The dimensions of the generated ArrayXd is [3, n, m] with: 
  | 
ArrayXd | nullptr | |
Object Examples
std::shared_ptr< iolink::ArrayXd> polyline3d_1( new iolink::ArrayXd( { 0 } ) );
readArrayXd( std::string( IMAGEDEVDATA_OBJECTS_FOLDER ) + "polyline3d_1.arrayxd", polyline3d_1);
PolylineExtrusion3d polylineExtrusion3dAlgo;
polylineExtrusion3dAlgo.setInputPolyline( polyline3d_1 );
polylineExtrusion3dAlgo.setForwardLength( 1 );
polylineExtrusion3dAlgo.setBackwardLength( 1 );
polylineExtrusion3dAlgo.setNodeCount( 20 );
polylineExtrusion3dAlgo.setDirection( {0, 0, 1} );
polylineExtrusion3dAlgo.execute();
std::cout << "outputSurface:" << polylineExtrusion3dAlgo.outputSurface()->shape();
            
polyline_3d_1 = np.zeros(0, dtype=np.double)
polyline_3d_1 = imagedev.read_array_xd(imagedev_data.get_object_path("polyline3d_1.arrayxd"), polyline_3d_1)
polyline_extrusion_3d_algo = imagedev.PolylineExtrusion3d()
polyline_extrusion_3d_algo.input_polyline = polyline_3d_1
polyline_extrusion_3d_algo.forward_length = 1
polyline_extrusion_3d_algo.backward_length = 1
polyline_extrusion_3d_algo.node_count = 20
polyline_extrusion_3d_algo.direction = [0, 0, 1]
polyline_extrusion_3d_algo.execute()
print( "output_surface:", str( polyline_extrusion_3d_algo.output_surface ) );
            
IOLink.ArrayXd polyline3d_1 = new IOLink.ArrayXd(new IOLink.VectorXu64( 0 ) ) ;
polyline3d_1 = Data.ReadArrayXd( @"Data/objects/polyline3d_1.arrayxd", polyline3d_1 );
PolylineExtrusion3d polylineExtrusion3dAlgo = new PolylineExtrusion3d
{
    inputPolyline = polyline3d_1,
    forwardLength = 1,
    backwardLength = 1,
    nodeCount = 20,
    direction = new double[]{0, 0, 1}
};
polylineExtrusion3dAlgo.Execute();
Console.WriteLine( "outputSurface:" + polylineExtrusion3dAlgo.outputSurface.ToString() );
            Function Examples
std::shared_ptr< iolink::ArrayXd> polyline3d_1( new iolink::ArrayXd( { 0 } ) );
readArrayXd( std::string( IMAGEDEVDATA_OBJECTS_FOLDER ) + "polyline3d_1.arrayxd", polyline3d_1);
auto result = polylineExtrusion3d( polyline3d_1, 1, 1, 20, {0, 0, 1} );
std::cout << "outputSurface:" << result->shape();
            
polyline_3d_1 = np.zeros(0, dtype=np.double)
polyline_3d_1 = imagedev.read_array_xd(imagedev_data.get_object_path("polyline3d_1.arrayxd"), polyline_3d_1)
result = imagedev.polyline_extrusion_3d( polyline_3d_1, 1, 1, 20, [0, 0, 1] )
print( "output_surface:", str( result ) );
            
IOLink.ArrayXd polyline3d_1 = new IOLink.ArrayXd(new IOLink.VectorXu64( 0 ) ) ;
polyline3d_1 = Data.ReadArrayXd( @"Data/objects/polyline3d_1.arrayxd", polyline3d_1 );
IOLink.ArrayXd result = Processing.PolylineExtrusion3d( polyline3d_1, 1, 1, 20, new double[]{0, 0, 1} );
Console.WriteLine( "outputSurface:" + result.ToString() );
            


