diff --git a/Brompton_Urban_Bag/threads-library-by-cuiso-v1.scad b/Brompton_Urban_Bag/threads-library-by-cuiso-v1.scad deleted file mode 100644 index 71bc2f0..0000000 --- a/Brompton_Urban_Bag/threads-library-by-cuiso-v1.scad +++ /dev/null @@ -1,339 +0,0 @@ -/* -"OpenScad library. Threads for screws and nuts V1" -by ANDRES ROMAN (AKA Cuiso) September 2018 - --> V1.2 30/03/2021 Change Log: -- Since OpenScad version 2021.01 version 1.1 of this library stopped with error. -The necessary modifications have been made in this version 1.2 -so that it also works with OpenScad 2021.01. -- Due to these necessary modifications, unfortunately now the preview -time has increased slightly. -- Remember that if necessary you can increase the speed for previewing and -rendering using the functions with full parameters and specifying a -smaller number of the "divs" parameter. -If you prefer, you can also improve the speed at a -general level by changing the variable "stddivs" -located on line 167, increasing this variable increases the -preview and rendering time (and increases the resolution), -decreasing the value of this variable decreases the time -preview and the resolution is lowered. -The default value of 50 is generally adequate and in -most cases you don't need to worry about this unless -your computer is really slow, or you want to get really large diameter threads. -This version continues to be compatible with OpenScad versions prior to 2021.01. -- Some warnings that did not affect operation have been removed. -- Some "echo" that did not affect operation have been removed. -- This version is completely compatible with your projects made -with previous versions, the name of the library "threads-library-by-cuiso-v1.scad" -has been kept so you do not have to change anything in your source code, you only -have to replace the old file "threads-library-by-cuiso-v1.scad" by the new -"threads-library-by-cuiso-v1.scad" and you are ready to work with OpenScad 2021.01. -- Happy designing !!! - --> V1.1 23/08/2019 Change Log: --Fixed bug. Using fullparms functions with "divs" no divider of 360 (200 for example) the thread could be incomplete. Now you can use any number of "divs" without problem. --A small improvement. Now the diameter reductions at the beginning of the screw for easy entry are created with the same level of detail as the rest of the screw. - -* Copyright 2018 ANDRES ROMAN (AKA Cuiso) -* Licensed under the Creative Commons - Attribution license. -* This software is free software, you can Share and Adapt under the terms of Attribution -(give appropriate credit). -* -* you can visit https://creativecommons.org/licenses/by/3.0/ for more details - -* This software is distributed WITHOUT ANY WARRANTY. - -*/ - -//For use this library you can put the file threads-library-by-cuiso-v1.scad in the same directory of your proyect and put the line use in your own .scad file -//You can see examples of use in file examples.scad - -/* -This is a library to include threads for screws and nuts in your own designs. - -This library is focused to provide simple functions with preset parameters by default, -and not to be too demanding in CPU consumption neither in previsualizacion nor in rendering - -This library has been tested printing on PLA with 0.1 layer. Except for smaller diameter -threads layers greater than 0.1 should work well. -Diamaters tested between 3mm and 10mm, but you can use any diameter of your choice. - -Shape of the threads are similar (but not equal) to ISO METRIC threads. -Some tests have been done using screws and nuts printed with this library in -combination with screws and nuts of metal with acceptable results. However, they have -not been exhaustive tests. -*/ - -/* ->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> -AVAILABLE FUNCTIONS: - -BASIC FUNCTIONS (USING PREDEFINED PARAMETERS): - -thread_for_screw(diameter, length); - Generates a screw thread of the diameter indicated by the "diameter" parameter and of the length indicated by "length". This function uses standard pitch values depending on the diameter specified. - diameter: Free value, in milimeters. - length: Free value, in milimeters. - - Example: - thread_for_screw(diameter=10, length=30); - -thread_for_nut(diameter, length, usrclearance=0); - Generates a nut thread of the diameter indicated by the "diameter" parameter and of the length indicated by "length". This function uses standard pitch values depending on the diameter specified. - The generated thread can be subtracted from any element of your design using the operator "difference()", thus obtaining a thread where a screw will fit. - This function uses standard clearance for adjustment between screw and nut depending on the diameter specified. - diameter: Free value, in milimeters. - length: Free value, in milimeters. - usrclearance: (optional) If the screw fits too tight on the nut you can specify a positive correction value (try 0.1 for example). - If the screw fits too loose in the nut you can specify a negative correction value (try -0.1 for example). - - Example: - thread_for_nut(diameter=10, length=20); - - -MORE AVAILABLE FUNCTIONS (WITH ADDITIONAL PARAMETERS): - -thread_for_screw_fullparm(diameter, length, pitch, divs=50); - Generates a screw thread of the diameter indicated by the "diameter" parameter and of the length indicated by "length", with pitch indicated by "pitch", and a resolution indicated by "divs". - This function allows you to specify a non-standard "pitch" value. - diameter: Free value, in milimeters. - length: Free value, in milimeters. - pitch: Pitch value. - divs: (optional) you can obtain more or less resolution with parm. Higher values for more resolution (and more rendering time). Default value is 50. - - Example: - thread_for_screw_fullparm(diameter=10, length=30, pitch=2, divs=60); - -thread_for_nut_fullparm(diameter, length, usrclearance=0, pitch, divs=50, entry=1); - Generates a nut thread with additional parameters: - diameter: Free value, in milimeters. - length: Free value, in milimeters. - usrclearance: (optional) If the screw fits too tight on the nut you can specify a positive correction value (try 0.1 for example). - If the screw fits too loose in the nut you can specify a negative correction value (try -0.1 for example). - pitch: Pitch value. - divs: (optional) you can obtain more or less resolution with parm. Higher values for more resolution (and more rendering time). Default value is 50. - entry: By default, the nut threads include a wider entrance area at the beginning and end to facilitate the introduction of the screw and minimize "elephant foot" problems. - Specify 1 in entry to use these zones and 0 to not use them. - - Example: - thread_for_nut_fullparm(diameter=10,length=20,usrclearance=0.1,pitch=1.5,divs=60, entry=1); ->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> -*/ - -/* ->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> -SOME NOTES: -- At first preview(F5) of the design may appear in console a lot of messages: -"PolySet has nonplanar faces. Attempting alternate construction" -simply ignore those messages, they are not a problem. -In versión 1.2 these messages no longer appear. - -- I have no lag problems in preview(F5) mode during the test of this library. If you are suffering lag problems in preview you can try to un-comment the "render()" al lines 286 and 293. - You can also try decreasing the value of the stddivs variable on line 169 (50 is the default value). - -- This library uses by default PITCH values: - DIAMETER PITCH_VALUE - 3mm 0.5mm - 4mm 0.7mm - 5mm 0.8mm - 6mm 1.0mm - 8mm 1.25mm - 10mm 1.5mm - ... - 24mm 3.0mm - (complete list defined at get_std_pitch(diam)) ->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> -*/ - - -//EXAMPLE FOR CUSTOMIZER: -//1 to draw rod, 0 to not draw rod -drawrod=1; -//1 to draw nut, 0 to not draw nut -drawnut=1; -diameter=8; -lengthrod=15; -lengthnut=7; -//Example of USE, a rod SCREW: -if(drawrod==1)thread_for_screw(diameter=diameter, length=lengthrod); -//Example of USE, a FEMALE THREAD to be removed (with difference ()) from another figure: -if(drawnut==1) -translate([diameter,1.5*diameter,0]){ -thread_for_nut(diameter=diameter, length=lengthnut); -} - - - - -//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> -stddivs=50; - -module thread_for_screw(diameter, length) -{ -stdpitch=get_std_pitch(diameter); -thread_for_screw_cuiso_tec(diameter,length,stdpitch,divdelta=stddivs); -//echo(diameter);echo(stdpitch); -} - -module thread_for_nut(diameter, length, usrclearance=0) -{ -stdpitch=get_std_pitch(diameter); -stdclearance=get_std_clearance(diameter); - -thread_for_nut_cuiso_tec -(diameter+stdclearance+usrclearance,length,stdpitch,divdelta=stddivs,entry=1); - -//echo(diameter);echo(stdpitch);echo(stdclearance+usrclearance); -} - -//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> -module thread_for_screw_fullparm(diameter, length, pitch, divs=50) -{ -if(divs<20) thread_for_screw_cuiso_tec(diameter,length,pitch,20); - else if(divs>360) thread_for_screw_cuiso_tec(diameter,length,pitch,360); - else thread_for_screw_cuiso_tec(diameter,length,pitch,divs); -} - -module thread_for_nut_fullparm(diameter, length, usrclearance=0, pitch, divs=50, entry=1) -{ -stdclearance=get_std_clearance(diameter); - -if(divs<20)thread_for_nut_cuiso_tec -(diameter+stdclearance+usrclearance,length,pitch,20,entry=entry); -else -if(divs>360)thread_for_nut_cuiso_tec -(diameter+stdclearance+usrclearance,length,pitch,360,entry=entry); -else -thread_for_nut_cuiso_tec -(diameter+stdclearance+usrclearance,length,pitch,divs,entry=entry); -} - -//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> -function get_std_pitch(diam) = -lookup(diam,[[3,0.5],[4,0.7],[5,0.8],[6,1.0],[8,1.25],[10,1.5], -[12,1.75],[14,2.0],[16,2.0],[18,2.5],[20,2.5],[22,2.5],[24,3.0] -]); - -function get_std_clearance(diam) = -lookup(diam,[[3,0.4],[4,0.4],[5,0.5],[6,0.6],[8,0.6],[10,0.6], -[12,0.7],[14,0.7],[16,0.7],[18,0.7],[20,0.8],[22,0.8],[24,0.8] -]); -//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> -module thread_for_screw_cuiso_tec(diameter,lenght,pitch,divdelta){ -delta=360/divdelta; -intersection(){ -cubointter(long=lenght,pitch=pitch,diameter=diameter,divdeltacube=divdelta); -rosca(long=lenght,p=pitch,delta=delta,diameter=diameter); -} -//#cylinder(d=diameter,h=lenght,$fn=100); -} - -module thread_for_nut_cuiso_tec(diameter,lenght,pitch,divdelta,entry){ -delta=360/divdelta; -translate([0,0,-0.001]) -intersection(){ -rosca(long=lenght+0.002,p=pitch,delta=delta,diameter=diameter,nut=1); -cubointter_nut(lenght+0.002,pitch,diameter); -} -if(entry==1){translate([0,0,-0.001])cubointter_nut_entry(lenght+0.002,pitch,diameter,divdeltacube=divdelta);} -//#cylinder(d=diameter,h=lenght,$fn=100); -} - -module cubointter(long,pitch,diameter,divdeltacube) -{ -longcube=long-pitch; -translate([0,0,longcube/2+pitch/2])cube([diameter,diameter,longcube],center=true); -translate([0,0,longcube+pitch/2]) -cylinder(d1=diameter,d2=diameter-2*pitch*0.866,h=pitch/2, $fn=divdeltacube); -cylinder(d2=diameter,d1=diameter-2*pitch*0.866,h=pitch/2, $fn=divdeltacube); -} - -module cubointter_nut(long,pitch,diameter) -{ -longcube=long; -translate([0,0,longcube/2])cube([diameter,diameter,longcube],center=true); -} - -module cubointter_nut_entry(long,pitch,diameter,divdeltacube) -{ -longcube=long-0.6; -translate([0,0,longcube]) -cylinder(d2=diameter+0.4,d1=diameter,h=0.6, $fn=divdeltacube); -cylinder(d1=diameter+0.4,d2=diameter,h=0.6, $fn=divdeltacube); -} - -module rosca(long,p,delta,diameter,nut=0) -{ -vueltas=round(long/p+0.5)+1; -translate([0,0,-p/4]) -for(v = [0 : 1 : vueltas-1]) -translate([0,0,v*p]) -vuelta(p=p,delta=delta,diameter=diameter,nut=nut); -} - -module vuelta(p,delta,diameter,nut) -{ -medio(p=p,delta=delta,diameter=diameter,nut=nut); - -translate([0,0.001,0]) -rotate([0,180,180]) -medio(p=p,delta=delta,diameter=diameter,nut=nut); -} - -module medio(p,delta,diameter,nut) -{ -if(nut==1) -//render() -hull(){ -for(k = [0 : delta : 180]) -translate([0,0,k*p/360])rotate([0,0,k])pieza_nut(diameter=diameter, p=p); -translate([0,0,180*p/360])rotate([0,0,180])pieza_nut(diameter=diameter, p=p); -} -else -//render() -hull(){ -for(k = [0 : delta : 180]) -translate([0,0,k*p/360])rotate([0,0,k])pieza(diameter=diameter, p=p); -translate([0,0,180*p/360])rotate([0,0,180])pieza(diameter=diameter, p=p); -} -} - -module pieza(diameter, p) -{ -r=diameter/2; -h=p*0.866; -pp=p/2; -pm=-p/2; -hh=r-h; -g=0.001; - -rotate([90,0,0]) -linear_extrude(height = g, center = true, convexity = 10){ -polygon([ - [0,pp],[hh,pp],[r-h/8,p/16],[r-h/8,-p/16],[hh,pm],[0,pm] - ], - [ - [0,1,2,3,4,5] - ]); -} -} - -module pieza_nut(diameter, p) -{ -r=diameter/2; -h=p*0.866; -pp=p/2; -pm=-p/2; -hh=r-h; -g=0.001; - -rotate([90,0,0]) -linear_extrude(height = g, center = true, convexity = 10){ -polygon([ - [0,pp],[hh,pp],[r,0],[hh,pm],[0,pm] - ], - [ - [0,1,2,3,4] - ]); -} -} \ No newline at end of file