Holes
This commit is contained in:
		
							parent
							
								
									a216fb2dd6
								
							
						
					
					
						commit
						125a792f38
					
				@ -198,27 +198,9 @@ function decrease_y(points, percentage) = [ for (p = points) [p[0], p[1] * (1 -
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
function pathProfile(points) = bezpath_curve(points,N=3);
 | 
					function pathProfile(points) = bezpath_curve(points,N=3);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//function remove_last(arr) = select(arr, 0, len(arr) - 2);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Surf Fin profile
 | 
					// Surf Fin profile
 | 
				
			||||||
fin_profile         = pathProfile( profile_points );
 | 
					fin_profile         = pathProfile( profile_points );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
//function pathProcess2(path) = subdivide_path(path,100);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
function pathProcess(path) = path;
 | 
					 | 
				
			||||||
function expandPath(path,delta) = 
 | 
					 | 
				
			||||||
    pathProcess(
 | 
					 | 
				
			||||||
        offset(
 | 
					 | 
				
			||||||
            deduplicate(path),
 | 
					 | 
				
			||||||
            delta=delta,
 | 
					 | 
				
			||||||
            chamfer=false,
 | 
					 | 
				
			||||||
            same_length=true
 | 
					 | 
				
			||||||
       )
 | 
					 | 
				
			||||||
    );
 | 
					 | 
				
			||||||
*/
 | 
					 | 
				
			||||||
function expandPath(path,delta) = 
 | 
					function expandPath(path,delta) = 
 | 
				
			||||||
        offset(
 | 
					        offset(
 | 
				
			||||||
            deduplicate(path),
 | 
					            deduplicate(path),
 | 
				
			||||||
@ -233,8 +215,7 @@ function expandPath(path,delta) =
 | 
				
			|||||||
// *  Fin Drawing  *
 | 
					// *  Fin Drawing  *
 | 
				
			||||||
// *****************
 | 
					// *****************
 | 
				
			||||||
if (build_fin) {
 | 
					if (build_fin) {
 | 
				
			||||||
    scale([scale_factor, scale_factor, scale_factor]) 
 | 
					    scale([scale_factor, scale_factor, scale_factor]) buildFin();
 | 
				
			||||||
        buildFin();
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if (build_mold) {
 | 
					if (build_mold) {
 | 
				
			||||||
@ -254,14 +235,31 @@ module buildMold() {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
    // Top Mold
 | 
					    // Top Mold
 | 
				
			||||||
    up(printable ? 0 : 60) fwd(printable ? fin_height+50 : 0) down(mold_base_height) mirror([0,0,printable ? 1 : 0 ])  {
 | 
					    up(printable ? 0 : 60) fwd(printable ? fin_height+50 : 0) down(mold_base_height) mirror([0,0,printable ? 1 : 0 ])  {
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					        difference() {
 | 
				
			||||||
 | 
					            union() {
 | 
				
			||||||
 | 
					                // case
 | 
				
			||||||
                case(mold_top_height,false); 
 | 
					                case(mold_top_height,false); 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                // Piston
 | 
					                // Piston
 | 
				
			||||||
 | 
					                mirror([1,0,0])        
 | 
				
			||||||
                down(mold_top_height+piston_depth-OFFSET) fwd(20) topPiston(); 
 | 
					                down(mold_top_height+piston_depth-OFFSET) fwd(20) topPiston(); 
 | 
				
			||||||
    }         
 | 
					            };
 | 
				
			||||||
 | 
					            resin_escape(40);
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					       
 | 
				
			||||||
 | 
					    };         
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
module case(height,bottom=true) {
 | 
					 * Mold Case 
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @param height - Height of the case
 | 
				
			||||||
 | 
					 * @param bottom - Is bottom or top 
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					module case_old(height,bottom=true) {
 | 
				
			||||||
    diff() cuboid( [ mold_length, mold_width, height ],
 | 
					    diff() cuboid( [ mold_length, mold_width, height ],
 | 
				
			||||||
        rounding=4,
 | 
					        rounding=4,
 | 
				
			||||||
        edges=[bottom ? BOTTOM: TOP],
 | 
					        edges=[bottom ? BOTTOM: TOP],
 | 
				
			||||||
@ -272,12 +270,73 @@ module case(height,bottom=true) {
 | 
				
			|||||||
                tag("remove") 
 | 
					                tag("remove") 
 | 
				
			||||||
                    drilling();
 | 
					                    drilling();
 | 
				
			||||||
        // Material holes   
 | 
					        // Material holes   
 | 
				
			||||||
 | 
					/*        
 | 
				
			||||||
        align(TOP,[CENTER+BACK+LEFT],inside=true,inset=15,overlap=-OFFSET) 
 | 
					        align(TOP,[CENTER+BACK+LEFT],inside=true,inset=15,overlap=-OFFSET) 
 | 
				
			||||||
                color("Red") wedge([mold_height+2*OFFSET, 50, 30], center=true,orient=FRONT,spin=-90        );                        
 | 
					                color("Red") wedge([mold_height+2*OFFSET, 50, 30], center=true,orient=FRONT,spin=-90        );                        
 | 
				
			||||||
 | 
					  */              
 | 
				
			||||||
 | 
					        // Material holes
 | 
				
			||||||
 | 
					        align(TOP,[CENTER+BACK+LEFT]/*,inside=true*/,inset=15,overlap=-OFFSET) 
 | 
				
			||||||
 | 
					            color("Red")
 | 
				
			||||||
 | 
					                up(OFFSET)
 | 
				
			||||||
 | 
					                    tag("remove") 
 | 
				
			||||||
 | 
					                        rounded_triangle(radius=3, height=height+2*OFFSET);                    
 | 
				
			||||||
    }             
 | 
					    }             
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					module case(height,bottom=true) {
 | 
				
			||||||
 | 
					    difference() {
 | 
				
			||||||
 | 
					        diff() cuboid( [ mold_length, mold_width, height ],
 | 
				
			||||||
 | 
					            rounding=4,
 | 
				
			||||||
 | 
					            edges=[bottom ? BOTTOM: TOP],
 | 
				
			||||||
 | 
					            anchor=TOP ){
 | 
				
			||||||
 | 
					            // Drills
 | 
				
			||||||
 | 
					            align(BOTTOM,[FRONT+LEFT,FRONT+RIGHT,BACK+LEFT,BACK+RIGHT],inset=10,overlap=-OFFSET)
 | 
				
			||||||
 | 
					                color("orange") 
 | 
				
			||||||
 | 
					                    tag("remove") 
 | 
				
			||||||
 | 
					                        drilling();
 | 
				
			||||||
 | 
					            // Material holes   
 | 
				
			||||||
 | 
					    /*        
 | 
				
			||||||
 | 
					            align(TOP,[CENTER+BACK+LEFT],inside=true,inset=15,overlap=-OFFSET) 
 | 
				
			||||||
 | 
					                    color("Red") wedge([mold_height+2*OFFSET, 50, 30], center=true,orient=FRONT,spin=-90        );                        
 | 
				
			||||||
 | 
					      */              
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					                          
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					        // Material holes
 | 
				
			||||||
 | 
					        mirror([bottom ? 0:1,0,0])
 | 
				
			||||||
 | 
					        back(38) left(55)
 | 
				
			||||||
 | 
					                color("Red")
 | 
				
			||||||
 | 
					                    up(OFFSET)
 | 
				
			||||||
 | 
					                        //tag("remove") 
 | 
				
			||||||
 | 
					                            rounded_triangle(radius=3, height=height+2*OFFSET);              
 | 
				
			||||||
 | 
					        // Length hole                    
 | 
				
			||||||
 | 
					        fwd(32) cuboid([120,10,50],rounding=5);
 | 
				
			||||||
 | 
					        // Side holes
 | 
				
			||||||
 | 
					        left(67) cuboid([10,40,50],rounding=5);
 | 
				
			||||||
 | 
					        right(67) cuboid([10,40,50],rounding=5);
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					module rounded_triangle(radius, height) {
 | 
				
			||||||
 | 
					    triangle_points = [[0, 0], [75, 0], [0, -35]]; // Equilateral triangle with side length 100
 | 
				
			||||||
 | 
					    // Round the corners of the triangle
 | 
				
			||||||
 | 
					    rounded_shape = round_corners( triangle_points, r=radius );
 | 
				
			||||||
 | 
					    // Extrude the 2D rounded triangle
 | 
				
			||||||
 | 
					    //mirror([0,0,1]) linear_extrude(height = height) polygon(rounded_shape);
 | 
				
			||||||
 | 
					    mirror([0,0,1]) linear_extrude(height = height) polygon(rounded_shape);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    //mirror([0,0,1]) linear_extrude(height = height) polygon(round_corners(right_triangle([40,30]),r=radius));    
 | 
				
			||||||
 | 
					    //mirror([0,0,1]) linear_extrude(height = height) polygon(right_triangle([40,30]));
 | 
				
			||||||
 | 
					    //mirror([0,0,1]) cyl(l=80, r=10); // Work with cylinder
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// *****************
 | 
					// *****************
 | 
				
			||||||
// * Bottom insert *
 | 
					// * Bottom insert *
 | 
				
			||||||
// *****************
 | 
					// *****************
 | 
				
			||||||
@ -319,8 +378,8 @@ module buildFinSide(flip=false) {
 | 
				
			|||||||
            polygon(profile_path);
 | 
					            polygon(profile_path);
 | 
				
			||||||
} 
 | 
					} 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
module resin_escape() {
 | 
					module resin_escape(length) {
 | 
				
			||||||
    color ("Blue") cylinder(h=drilling_length, r=resin_escape_diameter/2);
 | 
					    color ("Blue") cylinder(h=length, r=resin_escape_diameter/2);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// *****************
 | 
					// *****************
 | 
				
			||||||
@ -373,7 +432,6 @@ module subtracted(anchor) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
echo ("layerHeights(3,thickness):",layerHeights(3,base_tickness/2));
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
if (show_debug_layers) {
 | 
					if (show_debug_layers) {
 | 
				
			||||||
    left(130) {
 | 
					    left(130) {
 | 
				
			||||||
@ -447,20 +505,6 @@ module drawProfile( points,debug = true ){
 | 
				
			|||||||
function addBase(path) = concat(path,[[fin_base,-base_extra_thickness],[0,-base_extra_thickness]]);
 | 
					function addBase(path) = concat(path,[[fin_base,-base_extra_thickness],[0,-base_extra_thickness]]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * Calculates heights for n layers where the first layer starts at 0 and the last at fin_thickness.
 | 
					 | 
				
			||||||
 * 
 | 
					 | 
				
			||||||
 * @param n - Number of layers.
 | 
					 | 
				
			||||||
 * @param fin_thickness - The total height to be divided.
 | 
					 | 
				
			||||||
 * @return An array where each element represents the height of the top of each layer.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
function layerHeights(n, fin_thickness) = 
 | 
					 | 
				
			||||||
    let(
 | 
					 | 
				
			||||||
        layer_height = fin_thickness / (n - 1)
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
    [ for (i = [0 : n-1]) i * layer_height ];
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Function to translate a path manually along X and Y
 | 
					 * Function to translate a path manually along X and Y
 | 
				
			||||||
 */ 
 | 
					 */ 
 | 
				
			||||||
@ -481,7 +525,11 @@ echo ("*  Configuration     *");
 | 
				
			|||||||
echo ("**********************");
 | 
					echo ("**********************");
 | 
				
			||||||
//echo ("Layers count"        ,len(layers));
 | 
					//echo ("Layers count"        ,len(layers));
 | 
				
			||||||
echo ("Base thickness"      ,str(base_tickness," mm"));
 | 
					echo ("Base thickness"      ,str(base_tickness," mm"));
 | 
				
			||||||
//echo ("Layers heights"      ,layerHeights(len(layers),fin_thickness/2));    
 | 
					  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user