diff --git a/Hardware/CYCLONE_2/Cyclone.scad b/Hardware/CYCLONE_2/Cyclone.scad index 1a1f52f..d051af8 100644 --- a/Hardware/CYCLONE_2/Cyclone.scad +++ b/Hardware/CYCLONE_2/Cyclone.scad @@ -4,6 +4,9 @@ // License: CC BY-SA 4.0 (Attribution-ShareAlike 4.0 International, http://creativecommons.org/licenses/by-sa/4.0/) // Designed with http://www.openscad.org/ +// Increase the resolution of default shapes +$fa = 5; // Minimum angle for fragments [degrees] +$fs = 0.5; // Minimum fragment size [mm] // Load necessary libraries use @@ -232,5 +235,5 @@ translate([0,-axes_Ysmooth_rodLen/2+axes_Ycarriage_pos,axes_Y_threaded_height]) Cyclone_Y_carriage(); } - +hole_for_screw(size=3,length=20,nutDepth=0,nutAddedLen=0,captiveLen=10); diff --git a/Hardware/CYCLONE_2/Cyclone_Y_frames.scad b/Hardware/CYCLONE_2/Cyclone_Y_frames.scad index 93b9174..f122f82 100644 --- a/Hardware/CYCLONE_2/Cyclone_Y_frames.scad +++ b/Hardware/CYCLONE_2/Cyclone_Y_frames.scad @@ -4,6 +4,10 @@ // License: CC BY-SA 4.0 (Attribution-ShareAlike 4.0 International, http://creativecommons.org/licenses/by-sa/4.0/) // Designed with http://www.openscad.org/ +module mirrorOrNot(mirrorPart=false, axes=[-1,1,1]) { + if(mirrorPart) scale(axes) children(); + else children(); +} module Cyclone_Y_frontFrame() { color("lightred") @@ -17,15 +21,19 @@ module Cyclone_Y_backFrame() { } -module Cyclone_Y_rightSmoothRodIdler() { +module Cyclone_Y_rightSmoothRodIdler(mirrorLogo = false) { color("lightcyan") translate([-5,0,-axes_Yreference_height]) { cube([20,10,axes_Yreference_height+5]); } + translate([0,-10,0]) rotate([90,0,0]) linear_extrude(height=10, center = true) { + if(mirrorLogo) scale([-1,1]) import("dxf/CycloneLogo.dxf"); + else import("dxf/CycloneLogo.dxf"); + } } module Cyclone_Y_leftSmoothRodIdler() { - scale([-1,1,1]) Cyclone_Y_rightSmoothRodIdler(); + scale([-1,1,1]) Cyclone_Y_rightSmoothRodIdler(mirrorLogo = true); } diff --git a/Hardware/CYCLONE_2/dxf/CycloneLogo.dxf b/Hardware/CYCLONE_2/dxf/CycloneLogo.dxf new file mode 100644 index 0000000..369d9b9 --- /dev/null +++ b/Hardware/CYCLONE_2/dxf/CycloneLogo.dxf @@ -0,0 +1,2056 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1014 + 9 +$HANDSEED + 5 +FFFF + 9 +$MEASUREMENT + 70 + 1 + 0 +ENDSEC + 0 +SECTION + 2 +TABLES + 0 +TABLE + 2 +VPORT + 5 +8 +330 +0 +100 +AcDbSymbolTable + 70 + 4 + 0 +VPORT + 5 +2E +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*ACTIVE + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +210.0 + 22 +148.5 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +341.0 + 41 +1.24 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 0 + 72 + 100 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +BYBLOCK + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +BYLAYER + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +CONTINUOUS + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +100 +AcDbSymbolTable + 70 +4 + 0 +LAYER + 5 +50 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 +0 + 6 +CONTINUOUS + 0 +LAYER + 5 +51 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +logo + 70 +0 + 6 +CONTINUOUS + 0 +LAYER + 5 +52 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +dot + 70 +0 + 6 +CONTINUOUS + 0 +LAYER + 5 +53 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +Origin + 70 +0 + 6 +CONTINUOUS + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +STANDARD + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +DIMSTYLE +105 +27 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 3 + + 4 + + 5 + + 6 + + 7 + + 40 +1.0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 45 +0.0 + 46 +0.0 + 47 +0.0 + 48 +0.0 +140 +2.5 +141 +2.5 +142 +0.0 +143 +0.03937007874016 +144 +1.0 +145 +0.0 +146 +1.0 +147 +0.625 + 71 + 0 + 72 + 0 + 73 + 0 + 74 + 0 + 75 + 0 + 76 + 0 + 77 + 1 + 78 + 8 +170 + 0 +171 + 3 +172 + 1 +173 + 0 +174 + 0 +175 + 0 +176 + 0 +177 + 0 +178 + 0 +270 + 2 +271 + 2 +272 + 2 +273 + 2 +274 + 3 +340 +11 +275 + 0 +280 + 0 +281 + 0 +282 + 0 +283 + 0 +284 + 8 +285 + 0 +286 + 0 +287 + 3 +288 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +BLOCK_RECORD + 5 +1F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*MODEL_SPACE + 0 +BLOCK_RECORD + 5 +1B +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*PAPER_SPACE + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +20 +330 +1F +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +*MODEL_SPACE + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*MODEL_SPACE + 1 + + 0 +ENDBLK + 5 +21 +330 +1F +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +1C +330 +1B +100 +AcDbEntity + 67 + 1 + 8 +0 +100 +AcDbBlockBegin + 2 +*PAPER_SPACE + 1 + + 0 +ENDBLK + 5 +1D +330 +1B +100 +AcDbEntity + 67 + 1 + 8 +0 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +LWPOLYLINE + 5 +100 +100 +AcDbEntity + 8 +logo + 62 +7 +100 +AcDbPolyline + 90 +124 + 70 +0 + 10 +-19.188689 + 20 +24.530112 + 30 +0.0 + 10 +-16.754902 + 20 +24.486910 + 30 +0.0 + 10 +-13.658664 + 20 +24.191685 + 30 +0.0 + 10 +-10.555225 + 20 +23.716448 + 30 +0.0 + 10 +-7.494990 + 20 +23.068399 + 30 +0.0 + 10 +-4.528362 + 20 +22.261937 + 30 +0.0 + 10 +-1.698546 + 20 +21.311464 + 30 +0.0 + 10 +0.944058 + 20 +20.238582 + 30 +0.0 + 10 +3.356243 + 20 +19.050491 + 30 +0.0 + 10 +5.487608 + 20 +17.761591 + 30 +0.0 + 10 +5.919642 + 20 +17.459170 + 30 +0.0 + 10 +7.194140 + 20 +16.926329 + 30 +0.0 + 10 +8.418235 + 20 +16.292678 + 30 +0.0 + 10 +9.584724 + 20 +15.572624 + 30 +0.0 + 10 +10.693609 + 20 +14.766160 + 30 +0.0 + 10 +12.716964 + 20 +12.922820 + 30 +0.0 + 10 +14.452298 + 20 +10.784253 + 30 +0.0 + 10 +15.193955 + 20 +9.624966 + 30 +0.0 + 10 +15.856404 + 20 +8.400872 + 30 +0.0 + 10 +16.425249 + 20 +7.126374 + 30 +0.0 + 10 +16.907685 + 20 +5.794271 + 30 +0.0 + 10 +17.282115 + 20 +4.426164 + 30 +0.0 + 10 +17.562937 + 20 +3.014856 + 30 +0.0 + 10 +17.620541 + 20 +2.510818 + 30 +0.0 + 10 +4.753153 + 20 +2.510818 + 30 +0.0 + 10 +4.501131 + 20 +2.986055 + 30 +0.0 + 10 +3.838682 + 20 +3.778115 + 30 +0.0 + 10 +3.046620 + 20 +4.440566 + 30 +0.0 + 10 +2.132149 + 20 +4.930205 + 30 +0.0 + 10 +1.124071 + 20 +5.247030 + 30 +0.0 + 10 +0.043990 + 20 +5.355037 + 30 +0.0 + 10 +-1.036095 + 20 +5.247030 + 30 +0.0 + 10 +-2.044170 + 20 +4.930205 + 30 +0.0 + 10 +-2.958641 + 20 +4.440566 + 30 +0.0 + 10 +-3.750702 + 20 +3.778115 + 30 +0.0 + 10 +-4.413153 + 20 +2.986055 + 30 +0.0 + 10 +-4.902791 + 20 +2.071584 + 30 +0.0 + 10 +-5.219615 + 20 +1.063506 + 30 +0.0 + 10 +-5.327623 + 20 +-0.016575 + 30 +0.0 + 10 +-5.219615 + 20 +-1.096659 + 30 +0.0 + 10 +-4.902791 + 20 +-2.104737 + 30 +0.0 + 10 +-4.413153 + 20 +-3.019208 + 30 +0.0 + 10 +-3.750702 + 20 +-3.811267 + 30 +0.0 + 10 +-2.958641 + 20 +-4.466519 + 30 +0.0 + 10 +-2.044170 + 20 +-4.963358 + 30 +0.0 + 10 +-1.036095 + 20 +-5.272981 + 30 +0.0 + 10 +0.043990 + 20 +-5.380990 + 30 +0.0 + 10 +1.124071 + 20 +-5.272981 + 30 +0.0 + 10 +2.132149 + 20 +-4.963358 + 30 +0.0 + 10 +3.046620 + 20 +-4.466519 + 30 +0.0 + 10 +3.838682 + 20 +-3.811267 + 30 +0.0 + 10 +4.501131 + 20 +-3.019208 + 30 +0.0 + 10 +4.990770 + 20 +-2.104737 + 30 +0.0 + 10 +5.012360 + 20 +-2.039930 + 30 +0.0 + 10 +17.656533 + 20 +-2.039930 + 30 +0.0 + 10 +17.375711 + 20 +-3.847270 + 30 +0.0 + 10 +16.878873 + 20 +-5.712214 + 30 +0.0 + 10 +16.202022 + 20 +-7.490751 + 30 +0.0 + 10 +15.352355 + 20 +-9.182882 + 30 +0.0 + 10 +14.344277 + 20 +-10.759804 + 30 +0.0 + 10 +13.192190 + 20 +-12.221515 + 30 +0.0 + 10 +11.903289 + 20 +-13.560817 + 30 +0.0 + 10 +11.932093 + 20 +-13.906444 + 30 +0.0 + 10 +12.090504 + 20 +-15.274550 + 30 +0.0 + 10 +12.364124 + 20 +-16.412235 + 30 +0.0 + 10 +12.788959 + 20 +-17.420313 + 30 +0.0 + 10 +13.393804 + 20 +-18.399591 + 30 +0.0 + 10 +14.272271 + 20 +-19.386065 + 30 +0.0 + 10 +15.301951 + 20 +-20.278934 + 30 +0.0 + 10 +17.022882 + 20 +-21.315813 + 30 +0.0 + 10 +19.031839 + 20 +-22.172676 + 30 +0.0 + 10 +21.393618 + 20 +-22.871136 + 30 +0.0 + 10 +24.173034 + 20 +-23.432776 + 30 +0.0 + 10 +24.713074 + 20 +-23.540788 + 30 +0.0 + 10 +24.605068 + 20 +-23.634390 + 30 +0.0 + 10 +22.905737 + 20 +-24.044820 + 30 +0.0 + 10 +20.774372 + 20 +-24.318445 + 30 +0.0 + 10 +15.978804 + 20 +-24.318445 + 30 +0.0 + 10 +12.875364 + 20 +-24.023221 + 30 +0.0 + 10 +9.771927 + 20 +-23.547982 + 30 +0.0 + 10 +6.711690 + 20 +-22.899934 + 30 +0.0 + 10 +3.745063 + 20 +-22.093470 + 30 +0.0 + 10 +0.915246 + 20 +-21.143000 + 30 +0.0 + 10 +-1.727358 + 20 +-20.070118 + 30 +0.0 + 10 +-4.139543 + 20 +-18.882027 + 30 +0.0 + 10 +-6.270907 + 20 +-17.593127 + 30 +0.0 + 10 +-6.789347 + 20 +-17.218700 + 30 +0.0 + 10 +-8.042244 + 20 +-16.671457 + 30 +0.0 + 10 +-9.251937 + 20 +-16.037808 + 30 +0.0 + 10 +-11.491309 + 20 +-14.504089 + 30 +0.0 + 10 +-13.478662 + 20 +-12.660749 + 30 +0.0 + 10 +-15.185192 + 20 +-10.536583 + 30 +0.0 + 10 +-16.567699 + 20 +-8.160402 + 30 +0.0 + 10 +-17.129342 + 20 +-6.893106 + 30 +0.0 + 10 +-17.597378 + 20 +-5.575404 + 30 +0.0 + 10 +-17.971807 + 20 +-4.221700 + 30 +0.0 + 10 +-18.238228 + 20 +-2.817591 + 30 +0.0 + 10 +-18.403840 + 20 +-1.384681 + 30 +0.0 + 10 +-18.461445 + 20 +0.084232 + 30 +0.0 + 10 +-18.360637 + 20 +2.064385 + 30 +0.0 + 10 +-18.058214 + 20 +3.986934 + 30 +0.0 + 10 +-17.568576 + 20 +5.830274 + 30 +0.0 + 10 +-16.898925 + 20 +7.594411 + 30 +0.0 + 10 +-16.063660 + 20 +9.272137 + 30 +0.0 + 10 +-15.077184 + 20 +10.841860 + 30 +0.0 + 10 +-13.939497 + 20 +12.296371 + 30 +0.0 + 10 +-12.672200 + 20 +13.628474 + 30 +0.0 + 10 +-12.708202 + 20 +14.067708 + 30 +0.0 + 10 +-12.866614 + 20 +15.435811 + 30 +0.0 + 10 +-13.147436 + 20 +16.573500 + 30 +0.0 + 10 +-13.572268 + 20 +17.581578 + 30 +0.0 + 10 +-14.177115 + 20 +18.560852 + 30 +0.0 + 10 +-15.055582 + 20 +19.547329 + 30 +0.0 + 10 +-16.078061 + 20 +20.447398 + 30 +0.0 + 10 +-17.798993 + 20 +21.484277 + 30 +0.0 + 10 +-19.807948 + 20 +22.333943 + 30 +0.0 + 10 +-22.169730 + 20 +23.032398 + 30 +0.0 + 10 +-24.949144 + 20 +23.594040 + 30 +0.0 + 10 +-25.489185 + 20 +23.702050 + 30 +0.0 + 10 +-25.381177 + 20 +23.795654 + 30 +0.0 + 10 +-23.681846 + 20 +24.206087 + 30 +0.0 + 10 +-21.550483 + 20 +24.479710 + 30 +0.0 + 10 +-19.188701 + 20 +24.530112 + 30 +0.0 + 10 +-19.188701 + 20 +24.530112 + 30 +0.0 + 0 +SPLINE + 5 +101 +100 +AcDbEntity + 8 +Origin + 62 +1 +100 +AcDbSpline + 70 +8 + 71 +3 + 72 +8 + 73 +4 + 74 +0 + 40 +0 + 40 +0 + 40 +0 + 40 +0 + 40 +1 + 40 +1 + 40 +1 + 40 +1 + 10 +0.282222 + 20 +0.000000 + 30 +0.0 + 10 +0.282222 + 20 +-0.100828 + 30 +0.0 + 10 +0.228431 + 20 +-0.193997 + 30 +0.0 + 10 +0.141111 + 20 +-0.244412 + 30 +0.0 + 0 +SPLINE + 5 +102 +100 +AcDbEntity + 8 +Origin + 62 +1 +100 +AcDbSpline + 70 +8 + 71 +3 + 72 +8 + 73 +4 + 74 +0 + 40 +0 + 40 +0 + 40 +0 + 40 +0 + 40 +1 + 40 +1 + 40 +1 + 40 +1 + 10 +0.141111 + 20 +-0.244412 + 30 +0.0 + 10 +0.053791 + 20 +-0.294826 + 30 +0.0 + 10 +-0.053791 + 20 +-0.294826 + 30 +0.0 + 10 +-0.141111 + 20 +-0.244412 + 30 +0.0 + 0 +SPLINE + 5 +103 +100 +AcDbEntity + 8 +Origin + 62 +1 +100 +AcDbSpline + 70 +8 + 71 +3 + 72 +8 + 73 +4 + 74 +0 + 40 +0 + 40 +0 + 40 +0 + 40 +0 + 40 +1 + 40 +1 + 40 +1 + 40 +1 + 10 +-0.141111 + 20 +-0.244412 + 30 +0.0 + 10 +-0.228431 + 20 +-0.193997 + 30 +0.0 + 10 +-0.282222 + 20 +-0.100828 + 30 +0.0 + 10 +-0.282222 + 20 +0.000000 + 30 +0.0 + 0 +SPLINE + 5 +104 +100 +AcDbEntity + 8 +Origin + 62 +1 +100 +AcDbSpline + 70 +8 + 71 +3 + 72 +8 + 73 +4 + 74 +0 + 40 +0 + 40 +0 + 40 +0 + 40 +0 + 40 +1 + 40 +1 + 40 +1 + 40 +1 + 10 +-0.282222 + 20 +0.000000 + 30 +0.0 + 10 +-0.282222 + 20 +0.100828 + 30 +0.0 + 10 +-0.228431 + 20 +0.193997 + 30 +0.0 + 10 +-0.141111 + 20 +0.244412 + 30 +0.0 + 0 +SPLINE + 5 +105 +100 +AcDbEntity + 8 +Origin + 62 +1 +100 +AcDbSpline + 70 +8 + 71 +3 + 72 +8 + 73 +4 + 74 +0 + 40 +0 + 40 +0 + 40 +0 + 40 +0 + 40 +1 + 40 +1 + 40 +1 + 40 +1 + 10 +-0.141111 + 20 +0.244412 + 30 +0.0 + 10 +-0.053791 + 20 +0.294826 + 30 +0.0 + 10 +0.053791 + 20 +0.294826 + 30 +0.0 + 10 +0.141111 + 20 +0.244412 + 30 +0.0 + 0 +SPLINE + 5 +106 +100 +AcDbEntity + 8 +Origin + 62 +1 +100 +AcDbSpline + 70 +8 + 71 +3 + 72 +8 + 73 +4 + 74 +0 + 40 +0 + 40 +0 + 40 +0 + 40 +0 + 40 +1 + 40 +1 + 40 +1 + 40 +1 + 10 +0.141111 + 20 +0.244412 + 30 +0.0 + 10 +0.228431 + 20 +0.193997 + 30 +0.0 + 10 +0.282222 + 20 +0.100828 + 30 +0.0 + 10 +0.282222 + 20 +0.000000 + 30 +0.0 + 0 +LWPOLYLINE + 5 +107 +100 +AcDbEntity + 8 +dot + 62 +7 +100 +AcDbPolyline + 90 +33 + 70 +0 + 10 +3.135963 + 20 +0.000003 + 30 +0.0 + 10 +3.072251 + 20 +-0.632006 + 30 +0.0 + 10 +2.889523 + 20 +-1.220656 + 30 +0.0 + 10 +2.600390 + 20 +-1.753345 + 30 +0.0 + 10 +2.217460 + 20 +-2.217460 + 30 +0.0 + 10 +1.753347 + 20 +-2.600387 + 30 +0.0 + 10 +1.220659 + 20 +-2.889521 + 30 +0.0 + 10 +0.632005 + 20 +-3.072251 + 30 +0.0 + 10 +0.000000 + 20 +-3.135960 + 30 +0.0 + 10 +-0.632006 + 20 +-3.072251 + 30 +0.0 + 10 +-1.220658 + 20 +-2.889521 + 30 +0.0 + 10 +-1.753347 + 20 +-2.600387 + 30 +0.0 + 10 +-2.217461 + 20 +-2.217460 + 30 +0.0 + 10 +-2.600389 + 20 +-1.753345 + 30 +0.0 + 10 +-2.889522 + 20 +-1.220656 + 30 +0.0 + 10 +-3.072252 + 20 +-0.632006 + 30 +0.0 + 10 +-3.135963 + 20 +0.000003 + 30 +0.0 + 10 +-3.072252 + 20 +0.632006 + 30 +0.0 + 10 +-2.889522 + 20 +1.220659 + 30 +0.0 + 10 +-2.600389 + 20 +1.753348 + 30 +0.0 + 10 +-2.217461 + 20 +2.217462 + 30 +0.0 + 10 +-1.753347 + 20 +2.600390 + 30 +0.0 + 10 +-1.220658 + 20 +2.889524 + 30 +0.0 + 10 +-0.632006 + 20 +3.072251 + 30 +0.0 + 10 +0.000000 + 20 +3.135963 + 30 +0.0 + 10 +0.632005 + 20 +3.072251 + 30 +0.0 + 10 +1.220659 + 20 +2.889524 + 30 +0.0 + 10 +1.753347 + 20 +2.600390 + 30 +0.0 + 10 +2.217460 + 20 +2.217462 + 30 +0.0 + 10 +2.600390 + 20 +1.753348 + 30 +0.0 + 10 +2.889523 + 20 +1.220659 + 30 +0.0 + 10 +3.072251 + 20 +0.632006 + 30 +0.0 + 10 +3.135963 + 20 +0.000003 + 30 +0.0 + 0 +LWPOLYLINE + 5 +108 +100 +AcDbEntity + 8 +Origin + 62 +1 +100 +AcDbPolyline + 90 +2 + 70 +0 + 10 +0.282222 + 20 +0.000000 + 30 +0.0 + 10 +0.282222 + 20 +0.000000 + 30 +0.0 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary + 3 +ACAD_GROUP +350 +D + 3 +ACAD_MLINESTYLE +350 +17 + 0 +DICTIONARY + 5 +D +330 +C +100 +AcDbDictionary + 0 +DICTIONARY + 5 +1A +330 +C +100 +AcDbDictionary + 0 +DICTIONARY + 5 +17 +330 +C +100 +AcDbDictionary + 3 +STANDARD +350 +18 + 0 +DICTIONARY + 5 +19 +330 +C +100 +AcDbDictionary + 0 +ENDSEC + 0 +EOF diff --git a/Hardware/CYCLONE_2/dxf/CycloneLogo.svg b/Hardware/CYCLONE_2/dxf/CycloneLogo.svg new file mode 100644 index 0000000..fe62a4f --- /dev/null +++ b/Hardware/CYCLONE_2/dxf/CycloneLogo.svg @@ -0,0 +1,99 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/Hardware/CYCLONE_2/libs/hole_for_screw.scad b/Hardware/CYCLONE_2/libs/hole_for_screw.scad index dc02736..f546919 100644 --- a/Hardware/CYCLONE_2/libs/hole_for_screw.scad +++ b/Hardware/CYCLONE_2/libs/hole_for_screw.scad @@ -27,7 +27,7 @@ module hole_for_screw(size=3,length=20,nutDepth=5,nutAddedLen=0,captiveLen=0,tol } translate([0,length/2-2.6,0]) rotate([90,0,0]) - render() boltHole(size=size, length=length-2.6+0.5, tolerance=tolerance-0.1, proj=-1, $fn=40); + render() boltHole(size=size, length=length-2.6+0.5, tolerance=tolerance-0.1, proj=-1); } hole_for_screw(size=3,length=20,nutDepth=0,nutAddedLen=0,captiveLen=10); diff --git a/Hardware/CYCLONE_2/libs/obiscad/attach.scad b/Hardware/CYCLONE_2/libs/obiscad/attach.scad deleted file mode 100644 index 91216eb..0000000 --- a/Hardware/CYCLONE_2/libs/obiscad/attach.scad +++ /dev/null @@ -1,148 +0,0 @@ -//--------------------------------------------------------------- -//-- Openscad Attachment library -//-- Attach parts easily. Make your designs more reusable and clean -//--------------------------------------------------------------- -//-- This is a component of the obiscad opescad tools by Obijuan -//-- (C) Juan Gonzalez-Gomez (Obijuan) -//-- Sep-2012 -//--------------------------------------------------------------- -//-- Released under the GPL license -//--------------------------------------------------------------- - -use - -//-------------------------------------------------------------------- -//-- Draw a connector -//-- A connector is defined a 3-tuple that consist of a point -//--- (the attachment point), and axis (the attachment axis) and -//--- an angle the connected part should be rotate around the -//-- attachment axis -//-- -//--- Input parameters: -//-- -//-- Connector c = [p , n, ang] where: -//-- -//-- p : The attachment point -//-- v : The attachment axis -//-- ang : the angle -//-------------------------------------------------------------------- -module connector(c) -{ - //-- Get the three components from the connector - p = c[0]; - v = c[1]; - ang = c[2]; - - //-- Draw the attachment poing - color("Gray") point(p); - - //-- Draw the attachment axis vector (with a mark) - translate(p) - rotate(a=ang, v=v) - color("Gray") vector(unitv(v)*6, l_arrow=2, mark=true); -} - - -//------------------------------------------------------------------------- -//-- ATTACH OPERATOR -//-- This operator applies the necesary transformations to the -//-- child (attachable part) so that it is attached to the main part -//-- -//-- Parameters -//-- a -> Connector of the main part -//-- b -> Connector of the attachable part -//------------------------------------------------------------------------- -module attach(a,b) -{ - //-- Get the data from the connectors - pos1 = a[0]; //-- Attachment point. Main part - v = a[1]; //-- Attachment axis. Main part - roll = a[2]; //-- Rolling angle - - pos2 = b[0]; //-- Attachment point. Attachable part - vref = b[1]; //-- Atachment axis. Attachable part - //-- The rolling angle of the attachable part is not used - - //-------- Calculations for the "orientate operator"------ - //-- Calculate the rotation axis - raxis = cross(vref,v); - - //-- Calculate the angle between the vectors - ang = anglev(vref,v); - //--------------------------------------------------------.- - - //-- Apply the transformations to the child --------------------------- - - //-- Place the attachable part on the main part attachment point - translate(pos1) - //-- Orientate operator. Apply the orientation so that - //-- both attachment axis are paralell. Also apply the roll angle - rotate(a=roll, v=v) rotate(a=ang, v=raxis) - //-- Attachable part to the origin - translate(-pos2) - child(0); -} - - -//-------------------------------------------------------------------- -//--- An example of the attach operator -//--- -//--- There are two parts: the main body and an arm -//--- They both are cubes (for simplicity) -//--- -//-- In the main body there are 2 connectors defined, so that -//-- the arm can be attached to any of them (or both if you like) -//------------------------------------------------------------------ - -//-- In the debug mode the connectors and additional information -//-- are shown -debug=true; - -//-- Define the Main part: A cube -//-- Two attachment points are defined: one on the top, another in the -//--- left side -size = [10,10,10]; - -//-- Connectors defined: - -//-- Att. point Att. Axis Roll -c1 = [ [0,0,size[2]/2], [0,0,1], 20]; //-- Connector on the top -c2 = [ [-size[0]/2,0,0], [-1,0,0], 90]; //-- Connector on the left - - -//-- Draw the main part along with the connectors (for debugging) -cube(size,center=true); - -//-- In debug mode: Draw the main part connectors! -if (debug) { - connector(c1); - connector(c2); -} - -//-- Define the Attachable part. It is another cube, with one connector -asize = [5,20,3]; -a = [ [0,asize[1]/2-3,-asize[2]/2], [0,0,1], 0 ]; - - -//-- Do the attach! -//-- Just change c1 by c2 to attach the part to the other -//-- connector. Super-easy!! :-) -//-- Modify the c1 and c2 roll angle for rotating the attachable -//-- part to the desired orientation -attach(c1,a) - //-- This is the attachable part! - union() { - cube(asize,center=true); //-- The part - - //-- In debug mode show additional info: - if (debug) { - frame(l=10); //-- The part frame of reference. - connector(a); //-- Show the part connector - } - }; - - - - - - diff --git a/Hardware/CYCLONE_2/libs/obiscad/bcube.scad b/Hardware/CYCLONE_2/libs/obiscad/bcube.scad deleted file mode 100644 index 9c34cf2..0000000 --- a/Hardware/CYCLONE_2/libs/obiscad/bcube.scad +++ /dev/null @@ -1,70 +0,0 @@ -//------------------------------------------------------------------------------ -// Bevel edge cube. -// (c) Juan Gonzalez-Gomez (Obijuan), Sep-2012 -//------------------------------------------------------------------------------ - -//----------------- IMPLEMENTATION USING THE MINKOWSKI OPERATOR ---------------- - -//------------------------------------------------------------------------------ -//-- Bevel Cube main function -//-- Parameters: -//-- * Size: Cube size -//-- * cr : Corner radius (if cr==0, a standar cube is built) -//-- * cres: Corner resolution (in points). cres=0 means flat corners -//------------------------------------------------------------------------------ -module bcube(size,cr=0,cres=0) -{ - //-- Internal cube size - bsize = size - 2*[cr,cr,0]; - - //-- Get the (x,y) coorner coordinates in the 1st cuadrant - x = bsize[0]/2; - y = bsize[1]/2; - - //-- A corner radius of 0 means a standar cube! - if (cr==0) - cube(bsize,center=true); - else { - - - //-- The height of minkowski object is double. So - //-- we sould scale by 0.5 - scale([1,1,0.5]) - - //-- This translation is for centering the minkowski objet - translate([-x, -y,0]) - - //-- Built the beveled cube with minkowski - minkowski() { - - //-- Internal cube - cube(bsize,center=true); - - //-- Cylinder in the corner (1st cuadrant) - translate([x,y, 0]) - cylinder(r=cr, h=bsize[2],center=true, $fn=4*(cres+1)); - } - } - -} - - -//-- Examples of use of the bcube() module - -//-- Standar cube -translate([-15,15,0]) -bcube([20,20,10]); - -//-- Beveled cube (0 point resolution) -translate([15,15,0]) - bcube([20,20,10],cr=4); - -//-- Beveled cube (1 point resolution) -translate([-15,-15,0]) - bcube([20,20,10],cr=4, cres=1); - -//-- Beveled cube (4 points resolution) -translate([15,-15,0]) - bcube([20,20,10],cr=4, cres=4); - - diff --git a/Hardware/CYCLONE_2/libs/obiscad/bevel.scad b/Hardware/CYCLONE_2/libs/obiscad/bevel.scad deleted file mode 100644 index cfe83a6..0000000 --- a/Hardware/CYCLONE_2/libs/obiscad/bevel.scad +++ /dev/null @@ -1,485 +0,0 @@ -//--------------------------------------------------------------- -//-- Openscad Bevel library -//-- Bevel the edges or add buttress to your parts! -//--------------------------------------------------------------- -//-- This is a component of the obiscad opescad tools by Obijuan -//-- (C) Juan Gonzalez-Gomez (Obijuan) -//-- Sep-2012 -//--------------------------------------------------------------- -//-- Released under the GPL license -//--------------------------------------------------------------- -use -use - -//----------------------------------------------------------------- -//- Rotate a vector an angle teta around the axis given by the -//-- unit vector k -//----------------------------------------------------------------- -function Rot_axis_ang(p,k,teta) = - p*cos(teta) + cross(k,p*sin(teta)) + k*dot(k,p)*(1-cos(teta)); - -//-- Transformation defined by rotating vfrom vector to vto -//-- It is applied to vector v -//-- It returns the transformed vector -function Tovector(vfrom, vto, v) = - Rot_axis_ang(v, unitv(cross(vfrom,vto)), anglev(vfrom,vto)); - -//-- Auxiliary function for extending a vector of 3 components to 4 -function ev(v,c=0) = [v[0], v[1], v[2], c]; - -//-- Calculate the determinant of a matrix given by 3 row vectors -function det(a,b,c) = - a[0]*(b[1]*c[2]-b[2]*c[1]) - - a[1]*(b[0]*c[2]-b[2]*c[0]) - + a[2]*(b[0]*c[1]-b[1]*c[0]); - - -//-- Sign function. It only returns 2 values: -1 when x is negative, -//-- or 1 when x=0 or x>0 -function sign2(x) = sign(x)+1 - abs(sign(x)); - -//-------------------------------------------------------------------- -//-- Beveled concave corner -//-- NOT AN INTERFACE MODULE (The user should call bconcave_corner instead) -//-- -//-- Parameters: -//-- * cr: Corner radius -//-- * cres: Corner resolution -//-- * l: Length -//- * th: Thickness -//-------------------------------------------------------------------- -module bconcave_corner_aux(cr,cres,l,th) -{ - - //-- vector for translating the main cube - //-- so that the top rigth corner is on the origin - v1 = -[(cr+th)/2, (cr+th)/2, 0]; - - //-- The part frame of reference is on the - //-- internal corner - v2 = [cr,cr,0]; - - //-- Locate the frame of ref. in the internal - //-- corner - translate(v2) - difference() { - - //-- Main cube for doing the corner - translate(v1) - //color("yellow",0.5) - cube([cr+th, cr+th, l],center=true); - - //-- Cylinder used for beveling... - cylinder(r=cr, h=l+1, center=true, $fn=4*(cres+1)); - } -} - - -//----------------------------------------------------------------------------- -//-- API MODULE -//-- -//-- Beveled concave corner -//-- -//-- Parameters: -//-- * cr: Corner radius -//-- * cres: Corner resolution -//-- * l: Length -//- * th: Thickness -//-- * ext_corner: Where the origin is locate. By default it is located -//-- in the internal corner (concave zone). If true, -//-- it will be in the external corner (convex zone) -//---------------------------------------------------------------------------- -module bconcave_corner(cr=1,cres=4,th=1,l=10,ext_corner=false) -{ - //-- Locate the origin in the exterior edge - if (ext_corner==true) - translate([th,th,0]) - bconcave_corner_aux(cr,cres,l,th); - else - //-- Locate the origin in the interior edge - translate([0.01, 0.01,0]) - bconcave_corner_aux(cr,cres,l,th); -} - -//---------------------------------------------------------------------- -//-- Auxiliary module (NOT FOR THE USER!) -//-- It is and standar "attach", particularized for placing concave -//-- corners -//---------------------------------------------------------------------- -module bconcave_corner_attach_final( - cfrom, //-- Origin connector - cto, //-- Target connector - cr, - cres, - l, - th, - ext_corner) -{ - - //-- This block represent an attach operation - //-- It is equivalent to: attach(cto,cfrom) - translate(cto[0]) - rotate(a=cto[2], v=cto[1]) - rotate(a=anglev(cfrom[1],cto[1]), - v=cross(cfrom[1],cto[1]) ) - translate(-cfrom[0]) - - //-- Place the concave corner (along with some debug information) - union() { - //color("Blue") - //connector(cfrom); - //connector([cfrom[0],cnormal_v,0]); - bconcave_corner(cr=cr, - cres=cres, - l=l, - th=th, - ext_corner=ext_corner); - } -} - - -//------------------------------------------------------------------------- -//-- Auxiliary module (NOT FOR THE USER!) -//-- It is the general module for performing the bconcave corner attach -//-- All the parameters should be passed to it -//-- -//-- External connectors are where de concave corner will be placed. They -//-- are provided by the user -//-- -//-- Internal connectors refers to the connectors of the concave corner -//-- -//-- Then an attach between the internal and external connectors is done -//------------------------------------------------------------------------- -module bconcave_corner_attach_aux( - - //-- External connectors - edge_c, - normal_c, - - //-- Internal connectors - iedge_c, - inormal_c, - - //-- Other params - cr, - cres, - th, - l, - ext_corner) - -{ - //-- Get the Corner vectors from the internal connectors - cedge_v = iedge_c[1]; //-- Corner edge vector - cnormal_v = inormal_c[1]; //-- Corner normal vector - - //-- Get the vector paralell and normal to the edge - //-- From the external connectors - edge_v = edge_c[1]; //-- Edge verctor - enormal_v = normal_c[1]; //-- Edge normal vector - - //--------------------------------------------------------------- - //-- For doing a correct attach, first the roll angle for the - //-- external connector should be calculated. It determines the - //-- orientation of the concave corner around the edge vector - //-- - //-- This orientation is calculated using the edge normal vectors - //-- that bisec the corner - //-- - //-- There are 2 different cases: depending on the relative angle - //-- between the internal and external edges. They can be parallel - //-- or not - //----------------------------------------------------------------- - //-- The roll angle has two components: the value and the sign - - //-- Calculate the sign of the rotation (the sign of roll) - s=sign2(det(cnormal_v,enormal_v,edge_v)); - - //-- Calculate the roll when the edges are paralell - rollp = s*anglev(cnormal_v, enormal_v); - - //-- Calculate the roll in the general case - Tcnormal_v = Tovector(cedge_v, edge_v, cnormal_v); - rollg=s*anglev(Tcnormal_v, enormal_v); - - //-- For the paralell case... use rollp - if (mod(cross(cedge_v,edge_v))==0) { - //echo("Paralell"); - - //-- Place the concave bevel corner! - bconcave_corner_attach_final( - cfrom = [[0,0,0], cedge_v, 0], - cto = [edge_c[0], edge_c[1], rollp], - cr = cr, - cres = cres, - l = l, - th = th, - ext_corner = ext_corner); - } - - //-- For the general case, use rollg - else { - //echo("not paralell"); - - //-- Place the concave bevel corner! - bconcave_corner_attach_final( - cfrom = [[0,0,0], cedge_v, 0], - cto = [edge_c[0], edge_c[1], rollg], - cr = cr, - cres = cres, - l = l, - th = th, - ext_corner = ext_corner); - } -} - -//--------------------------------------------------------------------------- -//-- API MODULE -//-- -//-- Bevel an edge. A concave corner is located so that the calling -//-- module can easily perform a difference() operation -//-- -//-- Two connectors are needed: -//-- * edge_c : Connector located on the edge, paralell to the edge -//-- * normal_c : Connector located on the same point than edge_c -//-- pointing to the internal corner part, in the direction -//-- of the corner bisector -//-- * cr : Corner radius -//-- * cres : Corner resolution -//-- * l : Corner length -//-------------------------------------------------------------------------- -module bevel( - edge_c, - normal_c, - cr=3, - cres=3, - l=5) -{ - - //-- Call the general module with the correct internal connectors - bconcave_corner_attach_aux( - - //-- External connectors - edge_c = edge_c, - normal_c = normal_c, - - //-- Internal connectors - iedge_c = [[0,0,0], unitv([0,0,1]), 0], - inormal_c = [[0,0,0], [-1,-1,0] , 0], - - //-- The other params - cr=cr, - cres=cres, - l=l, - th=1, - ext_corner=false); -} - - -//--------------------------------------------------------------------------- -//-- API MODULE -//-- -//-- Attach a Beveled concave corner -//-- Two connectors are needed: -//-- * edge_c : Connector located on the edge, paralell to the edge -//-- * normal_c : Connector located on the same point than edge_c -//-- pointing to the internal corner part, in the direction -//-- of the corner bisector -//-- * cr : Corner radius -//-- * cres : Corner resolution -//-- * l : Corner length -//-- * th : Corner thickness (not visible when ext_corner=false) -//-- * ext_corner: If the exterior corner is used as a reference -//-------------------------------------------------------------------------- -module bconcave_corner_attach( - edge_c, - normal_c, - cr=3, - cres=3, - l=5, - th=1, - ext_corner=false) -{ - - //-- Call the general module with the correct internal connectors - bconcave_corner_attach_aux( - - //-- External connectors - edge_c = edge_c, - normal_c = normal_c, - - //-- Internal connectors - iedge_c = [[0,0,0], unitv([0,0,1]), 0], - inormal_c = [[0,0,0], [1,1,0] , 0], - - //-- The other params - cr=cr, - cres=cres, - l=l, - th=th, - ext_corner=ext_corner); - -} - -//----------------------------------------------------------- -//--- TEST MODULES -//----------------------------------------------------------- - -//----------------------------------------------------------------- -//-- Testing the Bevel operator... All the 12 edges of a cube -//-- are beveled. All the cases are covered, so it is a good -//-- test for finding bugs! -//---------------------------------------------------------------- -module Test1_beveled_cube() -{ - //-------- Main object - size=[30,30,30]; - - - //-- Define all the edges connectors - ec1 = [[size[0]/2, 0,size[2]/2], [0,1,0], 0]; - en1 = [ec1[0], [1,0,1], 0]; - - ec2 = [[-size[0]/2, 0,size[2]/2], [0,1,0], 0]; - en2 = [ec2[0], [-1,0,1], 0]; - - ec3 = [[-size[0]/2, 0,-size[2]/2], [0,1,0], 0]; - en3 = [ec3[0], [-1,0,-1], 0]; - - ec4 = [[size[0]/2, 0,-size[2]/2], [0,1,0], 0]; - en4 = [ec4[0], [1,0,-1], 0]; - - ec5 = [[0, size[0]/2,size[2]/2], [1,0,0], 0]; - en5 = [ec5[0], [0,1,1], 0]; - - ec6 = [[0, -size[0]/2,size[2]/2], [1,0,0], 0]; - en6 = [ec6[0], [0,-1,1], 0]; - - ec7 = [[0, -size[0]/2,-size[2]/2], [1,0,0], 0]; - en7 = [ec7[0], [0,-1,-1], 0]; - - ec8 = [[0, size[0]/2,-size[2]/2], [1,0,0], 0]; - en8 = [ec8[0], [0,1,-1], 0]; - - ec9 = [[size[2]/2, size[0]/2,0 ], [0,0,1], 0]; - en9 = [ec9[0], [1,1,0], 0]; - - ec10 = [[size[2]/2, -size[0]/2,0 ], [0,0,1], 0]; - en10 = [ec10[0], [1,-1,0], 0]; - - ec11 = [[-size[2]/2, -size[0]/2,0 ], [0,0,1], 0]; - en11 = [ec11[0], [-1,-1,0], 0]; - - ec12 = [[-size[2]/2, size[0]/2,0 ], [0,0,1], 0]; - en12 = [ec12[0], [-1,1,0], 0]; - - - //-- for Debuging... Show a specefic connector - *connector(ec12); - *connector(en12); - - //-- Parameters for all the beveled edges - //-- It can be changed for testing - cr=2; - cres=0; - - //-- Remove from the main cube the concave corner parts - difference() { - - //-- Draw the main cube - cube(size,center=true); - - //-- Attach the concave corners for beveling! - bevel(ec1,en1,cr=cr,cres=0, l=size[1]+2); - bevel(ec2,en2,cr=cr,cres=0, l=size[1]+2); - bevel(ec3,en3,cr=cr,cres=0, l=size[1]+2); - bevel(ec4,en4,cr=cr,cres=0, l=size[1]+2); - - bevel(ec5,en5,cr=cr,cres=0, l=size[0]+2); - bevel(ec6,en6,cr=cr,cres=0, l=size[0]+2); - bevel(ec7,en7,cr=cr,cres=0, l=size[0]+2); - bevel(ec8,en8,cr=cr,cres=0, l=size[0]+2); - - bevel(ec9,en9,cr=cr,cres=0, l=size[0]+2); - bevel(ec10,en10,cr=cr,cres=0, l=size[0]+2); - bevel(ec11,en11,cr=cr,cres=0, l=size[0]+2); - bevel(ec12,en12,cr=cr,cres=0, l=size[0]+2); - - } -} - -//---------------------------------------------------------------- -//-- Testing the bconcave_corner_attach operator -//-- It is used for adding buttress between two ortogonal parts -//---------------------------------------------------------------- -module Test2_buttress() -{ - size=[30,30,30]; - th=3; - l=2; - cr = 6; - - - //-- A cross. It divides the space in 4 quadrants - difference() { - cube(size,center=true); - translate([size[0]/4 + th/2, 0, size[0]/4 + th/2]) - cube([size[0]/2, size[1]+2, size[2]/2],center=true); - - translate([-size[0]/4 - th/2, 0, size[0]/4 + th/2]) - cube([size[0]/2, size[1]+2, size[2]/2],center=true); - - translate([-size[0]/4 - th/2, 0, -size[0]/4 - th/2]) - cube([size[0]/2, size[1]+2, size[2]/2],center=true); - - translate([size[0]/4 + th/2, 0, -size[0]/4 - th/2]) - cube([size[0]/2, size[1]+2, size[2]/2],center=true); - } - - ec1 = [[th/2, size[1]/2-l/2, th/2], [0,1,0], 0]; - en1 = [ec1[0],[1,0,1],0]; - - ec2 = [[th/2, -size[1]/2+l/2, th/2], [0,1,0], 0]; - en2 = [ec2[0],[1,0,1],0]; - - ec3 = [[-th/2, 0, th/2], [0,1,0], 0]; - en3 = [ec3[0],[-1,0,1],0]; - - ec4 = [[-th/2, 0, -th/2], [0,1,0], 0]; - en4 = [ec4[0],[-1,0,-1],0]; - - ec5 = [[th/2, 0, -th/2], [0,1,0], 0]; - en5 = [ec5[0],[1,0,-1],0]; - - *connector(ec5); - *connector(en5); - - //-- quadrant 1: two buttress - bconcave_corner_attach(ec1,en1,cr, l=l, cres=0); - bconcave_corner_attach(ec2,en2,cr, l=l, cres=0); - - //-- quadrant 2: one bit buttress - bconcave_corner_attach(ec3,en3,cr=3, l=size[1], cres=0); - - //-- quadrant 3: a Rounded buttress - bconcave_corner_attach(ec4,en4,cr=8, l=size[1], cres=5); - - //-- Quadrant 4: A rounded buttress in the middle - bconcave_corner_attach(ec5,en5,cr=8, l=size[1]/3, cres=5); - -} - -//------------------------------------------------------------------- -//-- TESTS -//------------------------------------------------------------------- - -//-- example 1: A beveled concave corner -bconcave_corner(cr=15, cres=10, l=10, th=3, ext_corner=true); - -//-- Example 2: Testing the bevel() operator -//Test1_beveled_cube(); - -//-- Example 3: Testing the bconcave_corner_attach() operator -//Test2_buttress(); - - - diff --git a/Hardware/CYCLONE_2/libs/obiscad/utils.scad b/Hardware/CYCLONE_2/libs/obiscad/utils.scad deleted file mode 100644 index 1704e59..0000000 --- a/Hardware/CYCLONE_2/libs/obiscad/utils.scad +++ /dev/null @@ -1,30 +0,0 @@ -//--------------------------------------------------------------- -//-- Utils. General utilities... -//-- This is a component of the obiscad opescad tools by Obijuan -//-- (C) Juan Gonzalez-Gomez (Obijuan) -//-- Sep-2012 -//--------------------------------------------------------------- -//-- Released under the GPL license -//--------------------------------------------------------------- - -//----------------------------------------------------- -//-- Functions for converting a scalar into a vector: -//----------------------------------------------------- -//-- The scalar is interpreted as the x coordinate -function VX(x) = [x,0,0]; - -//-- The scalar is interpreted as the y coordinate -function VY(y) = [0,y,0]; - -//-- The scalar is interpreted as the z coordinate -function VZ(z) = [0,0,z]; - - -//----------------------------------------- -//-- Definition for accessing vector componentes easily -//-------------------------------------------------------- -X = 0; -Y = 1; -Z = 2; - - diff --git a/Hardware/CYCLONE_2/libs/obiscad/vector.scad b/Hardware/CYCLONE_2/libs/obiscad/vector.scad deleted file mode 100644 index 13e11c4..0000000 --- a/Hardware/CYCLONE_2/libs/obiscad/vector.scad +++ /dev/null @@ -1,344 +0,0 @@ -//--------------------------------------------------------------- -//-- Openscad vector library -//-- This is a component of the obiscad opescad tools by Obijuan -//-- (C) Juan Gonzalez-Gomez (Obijuan) -//-- Sep-2012 -//--------------------------------------------------------------- -//-- Released under the GPL license -//--------------------------------------------------------------- - -obiscad_drawing_resolution = 6; - -//---------------------------------------- -//-- FUNCTIONS FOR WORKING WITH VECTORS -//---------------------------------------- - -//-- Calculate the module of a vector -function mod(v) = (sqrt(v[0]*v[0]+v[1]*v[1]+v[2]*v[2])); - -//-- Calculate the cros product of two vectors -function cross(u,v) = [ - u[1]*v[2] - v[1]*u[2], - -(u[0]*v[2] - v[0]*u[2]) , - u[0]*v[1] - v[0]*u[1]]; - -//-- Calculate the dot product of two vectors -function dot(u,v) = u[0]*v[0]+u[1]*v[1]+u[2]*v[2]; - -//-- Return the unit vector of a vector -function unitv(v) = v/mod(v); - -//-- Return the angle between two vectores -function anglev(u,v) = acos( dot(u,v) / (mod(u)*mod(v)) ); - -//---------------------------------------------------------- -//-- Draw a point in the position given by the vector p -//---------------------------------------------------------- -module point(p) -{ - translate(p) - sphere(r=0.7,$fn=obiscad_drawing_resolution); -} - -//------------------------------------------------------------------ -//-- Draw a vector poiting to the z axis -//-- This is an auxiliary module for implementing the vector module -//-- -//-- Parameters: -//-- l: total vector length (line + arrow) -//-- l_arrow: Vector arrow length -//-- mark: If true, a mark is draw in the vector head, for having -//-- a visual reference of the rolling angle -//------------------------------------------------------------------ -module vectorz(l=10, l_arrow=4, mark=false) -{ - //-- vector body length (not including the arrow) - lb = l - l_arrow; - - //-- The vector is locatead at 0,0,0 - translate([0,0,lb/2]) - union() { - - //-- Draw the arrow - translate([0,0,lb/2]) - cylinder(r1=2/2, r2=0.2, h=l_arrow, $fn=obiscad_drawing_resolution); - - //-- Draw the mark - if (mark) { - translate([0,0,lb/2+l_arrow/2]) - translate([1,0,0]) - cube([2,0.3,l_arrow*0.8],center=true); - } - - //-- Draw the body - cylinder(r=1/2, h=lb, center=true, $fn=obiscad_drawing_resolution); - } - - //-- Draw a sphere in the vector base - sphere(r=1/2, $fn=obiscad_drawing_resolution); -} - -//----------------------------------------------------------------- -//-- ORIENTATE OPERATOR -//-- -//-- Orientate an object to the direction given by the vector v -//-- Parameters: -//-- v : Target orientation -//-- vref: Vector reference. It is the vector of the local frame -//-- of the object that want to be poiting in the direction -//-- of v -//-- roll: Rotation of the object around the v axis -//------------------------------------------------------------------- -module orientate(v,vref=[0,0,1], roll=0) -{ - //-- Calculate the rotation axis - raxis = cross(vref,v); - - //-- Calculate the angle between the vectors - ang = anglev(vref,v); - - //-- Rotate the child! - rotate(a=roll, v=v) - rotate(a=ang, v=raxis) - child(0); -} - -//--------------------------------------------------------------------------- -//-- Draw a vector -//-- -//-- There are two modes of drawing the vector -//-- * Mode 1: Given by a cartesian point(x,y,z). A vector from the origin -//-- to the end (x,y,z) is drawn. The l parameter (length) must -//-- be 0 (l=0) -//-- * Mode 2: Give by direction and length -//-- A vector of length l pointing to the direction given by -//-- v is drawn -//--------------------------------------------------------------------------- -//-- Parameters: -//-- v: Vector cartesian coordinates -//-- l: total vector length (line + arrow) -//-- l_arrow: Vector arrow length -// mark: If true, a mark is draw in the vector head, for having -//-- a visual reference of the rolling angle -//--------------------------------------------------------------------------- -module vector(v,l=0, l_arrow=4, mark=false) -{ - //-- Get the vector length from the coordinates - mod = mod(v); - - //-- The vector is very easy implemented by means of the orientate - //-- operator: - //-- orientate(v) vectorz(l=mod, l_arrow=l_arrow) - //-- BUT... in OPENSCAD 2012.02.22 the recursion does not - //-- not work, so that if the user use the orientate operator - //-- on a vector, openscad will ignore it.. - //-- The solution at the moment (I hope the openscad developers - //-- implement the recursion in the near future...) - //-- is to repite the orientate operation in this module - - //---- SAME CALCULATIONS THAN THE ORIENTATE OPERATOR! - //-- Calculate the rotation axis - - vref = [0,0,1]; - raxis = cross(vref,v); - - //-- Calculate the angle between the vectors - ang = anglev(vref,v); - - //-- orientate the vector - //-- Draw the vector. The vector length is given either - //--- by the mod variable (when l=0) or by l (when l!=0) - if (l==0) - rotate(a=ang, v=raxis) - vectorz(l=mod, l_arrow=l_arrow, mark=mark); - else - rotate(a=ang, v=raxis) - vectorz(l=l, l_arrow=l_arrow, mark=mark); - -} - -//---------------------------------------------------- -//-- Draw a Frame of reference -//-- Parameters: -//-- l: length of the Unit vectors -//----------------------------------------------------- -module frame(l=10, l_arrow=4) -{ - - //-- Z unit vector - color("Blue") - vector([0,0,l], l_arrow=l_arrow); - - //-- X unit vector - color("Red") - vector([l,0,0], l_arrow=l_arrow ); - - //-- Y unit vector - color("Green") - vector([0,l,0],l_arrow=l_arrow); - - //-- Origin - color("Gray") - sphere(r=1, $fn=obiscad_drawing_resolution); -} - -//-------------------------------------------------- -//-- Modules for testings and examples -//-- Testing that the vector library is working ok -//-------------------------------------------------- - -//-- 22 vectors in total are drawn, poiting to different directions -module Test_vectors1() -{ - - a = 20; - k = 1; - - //-- Add a frame of reference (in the origin) - frame(l=a); - - //-- Negative vectors, pointing towards the three axis: -x, -y, -z - color("Red") vector([-a, 0, 0]); - color("Green") vector([0, -a, 0]); - color("Blue") vector([0, 0, -a]); - - //-- It is *not* has been implemented using a for loop on purpose - //-- This way, individual vectors can be commented out or highlighted - - //-- vectors with positive z - vector([a, a, a*k]); - vector([0, a, a*k]); - vector([-a, a, a*k]); - vector([-a, 0, a*k]); - - vector([-a, -a, a*k]); - vector([0, -a, a*k]); - vector([a, -a, a*k]); - vector([a, 0, a*k]); - - - //-- Vectors with negative z - vector([a, a, -a*k]); - vector([0, a, -a*k]); - vector([-a, a, -a*k]); - vector([-a, 0, -a*k]); - - vector([-a, -a, -a*k]); - vector([0, -a, -a*k]); - vector([a, -a, -a*k]); - vector([a, 0, -a*k]); -} - -//--- Another test... -module Test_vectors2() -{ - - //-- Add the vector into the vector table - //-- This vectors are taken as directions - //-- All the vectors will be drawn with the same length (l) - vector_table = [ - [1, 1, 1], - [0, 1, 1], - [-1, 1, 1], - [-1, 0, 1], - [-1, -1, 1], - [0, -1, 1], - [1, -1, 1], - [1, 0, 1], - - [1, 1, -1], - [0, 1, -1], - [-1, 1, -1], - [-1, 0, -1], - [-1, -1, -1], - [0, -1, -1], - [1, -1, -1], - [1, 0, -1], - ]; - - //-- Vector length - l=20; - - frame(l=10); - - //-- Draw all the vector given in the table - //-- The vectors point to the direction given in the table - //-- They all are drawn with a length equal to l - for (v=vector_table) { - //-- Vector given by direction and length - vector(v,l=l); - } -} - - -//-- Test the cross product and the angle -//-- between vectors -module Test_vector3() -{ - //-- Start with 2 unit vectors - v=unitv([1,1,1]); - u=unitv([0,1,0]); - - //-- Draw the vector in different colors - //-- Increase the length for drawing - color("Red") vector(v*20); - color("blue") vector(u*20); - - //-- Get the cross product - w = cross(v,u); - vector(w*20); - - //-- The cross product is NOT conmutative... - //-- change the order of v and u - w2 = cross(u,v); - vector(w2*20); - - //-- w should be perpendicular to v and u - //-- Calculate the angles between them: - echo("U , V: ", anglev(u,v)); - echo("W , U: ", anglev(w,u)); - echo("W , V: ", anglev(w,v)); - -} - -//-- Test the orientate operator -module Test_vector4() -{ - o = [10,10,10]; - v = [-10,10,10]; - - color("Red") vector(o); - color("Blue") vector(v); - - //-- Orientate the vector o in the direction of v - orientate(v,o) - vector(o); - - //-- Inverse operation: orientate the v vector in the direction - //-- of o - orientate(o,v) - vector(v); - - //-- Example of orientation of a cube - orientate(o,vref=[10,-2,5],roll=0) - cube([10,2,5],center=true); - - vector([10,-2,5]); - -} - -//-------- Perform tests...... - -Test_vector4(); - - -/* - -Test_vectors1(); - - -translate([60,0,0]) - Test_vectors2(); -*/ - - diff --git a/Hardware/CYCLONE_2/libs/standard_parts.scad b/Hardware/CYCLONE_2/libs/standard_parts.scad index b973025..4b6ef5d 100644 --- a/Hardware/CYCLONE_2/libs/standard_parts.scad +++ b/Hardware/CYCLONE_2/libs/standard_parts.scad @@ -19,7 +19,7 @@ module standard_paperSheet_A4(t=0.05) { color("white") cube([297,210,t], center=true); } -module standard_rod(diam=8, length=10, threaded=true, center=false, $fn=18) { +module standard_rod(diam=8, length=10, threaded=true, center=false) { renderStandardPart() if(threaded) { color("black") rotate([-90,0,0]) cylinder(r=diam/2, h=length, center=center);