mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-11-02 20:51:23 -07:00 
			
		
		
		
	
		
			
				
	
	
		
			75 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
%module{Slic3r::XS};
 | 
						|
 | 
						|
%{
 | 
						|
#include <myinit.h>
 | 
						|
#include "libslic3r/ExtrusionEntity.hpp"
 | 
						|
%}
 | 
						|
 | 
						|
%name{Slic3r::ExtrusionLoop} class ExtrusionLoop {
 | 
						|
    ExtrusionLoop();
 | 
						|
    ~ExtrusionLoop();
 | 
						|
    Clone<ExtrusionLoop> clone()
 | 
						|
        %code{% RETVAL = THIS; %};
 | 
						|
    void reverse();
 | 
						|
    bool make_clockwise();
 | 
						|
    bool make_counter_clockwise();
 | 
						|
    Clone<Point> first_point();
 | 
						|
    Clone<Point> last_point();
 | 
						|
    Clone<Polygon> polygon();
 | 
						|
    void append(ExtrusionPath* path)
 | 
						|
        %code{% THIS->paths.push_back(*path); %};
 | 
						|
    double length();
 | 
						|
    bool split_at_vertex(Point* point)
 | 
						|
        %code{% RETVAL = THIS->split_at_vertex(*point); %};
 | 
						|
    void split_at(Point* point)
 | 
						|
        %code{% THIS->split_at(*point); %};
 | 
						|
    ExtrusionPaths clip_end(double distance)
 | 
						|
        %code{% THIS->clip_end(distance, &RETVAL); %};
 | 
						|
    bool has_overhang_point(Point* point)
 | 
						|
        %code{% RETVAL = THIS->has_overhang_point(*point); %};
 | 
						|
    bool is_perimeter();
 | 
						|
    bool is_infill();
 | 
						|
    bool is_solid_infill();
 | 
						|
    Polygons grow();
 | 
						|
%{
 | 
						|
 | 
						|
SV*
 | 
						|
ExtrusionLoop::arrayref()
 | 
						|
    CODE:
 | 
						|
        AV* av = newAV();
 | 
						|
        av_fill(av, THIS->paths.size()-1);
 | 
						|
        int i = 0;
 | 
						|
        for (ExtrusionPaths::iterator it = THIS->paths.begin(); it != THIS->paths.end(); ++it) {
 | 
						|
            av_store(av, i++, perl_to_SV_ref(*it));
 | 
						|
        }
 | 
						|
        RETVAL = newRV_noinc((SV*)av);
 | 
						|
    OUTPUT:
 | 
						|
        RETVAL
 | 
						|
 | 
						|
ExtrusionLoopRole
 | 
						|
ExtrusionLoop::role(...)
 | 
						|
    CODE:
 | 
						|
        if (items > 1) {
 | 
						|
            THIS->role = (ExtrusionLoopRole)SvUV(ST(1));
 | 
						|
        }
 | 
						|
        RETVAL = THIS->role;
 | 
						|
    OUTPUT:
 | 
						|
        RETVAL
 | 
						|
 | 
						|
%}
 | 
						|
};
 | 
						|
 | 
						|
%package{Slic3r::ExtrusionLoop};
 | 
						|
%{
 | 
						|
 | 
						|
IV
 | 
						|
_constant()
 | 
						|
  ALIAS:
 | 
						|
    EXTRL_ROLE_DEFAULT                      = elrDefault
 | 
						|
    EXTRL_ROLE_CONTOUR_INTERNAL_PERIMETER   = elrContourInternalPerimeter
 | 
						|
  PROTOTYPE:
 | 
						|
  CODE:
 | 
						|
    RETVAL = ix;
 | 
						|
  OUTPUT: RETVAL
 | 
						|
 | 
						|
%}
 |