You can subscribe to this list here.
2009 |
Jan
(9) |
Feb
(137) |
Mar
(123) |
Apr
(60) |
May
(305) |
Jun
(49) |
Jul
(39) |
Aug
(44) |
Sep
(23) |
Oct
(42) |
Nov
(39) |
Dec
(30) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2010 |
Jan
(61) |
Feb
(50) |
Mar
(33) |
Apr
(10) |
May
(17) |
Jun
(19) |
Jul
(48) |
Aug
(71) |
Sep
(69) |
Oct
(59) |
Nov
(21) |
Dec
(74) |
2011 |
Jan
(38) |
Feb
(29) |
Mar
(19) |
Apr
(43) |
May
(16) |
Jun
(8) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <adr...@us...> - 2011-02-23 16:11:12
|
Revision: 4039 http://reprap.svn.sourceforge.net/reprap/?rev=4039&view=rev Author: adrian-bowyer Date: 2011-02-23 16:11:04 +0000 (Wed, 23 Feb 2011) Log Message: ----------- Added the latest extruder nozzle design. This is push-fit, and so requires no thread cutting. Added Paths: ----------- trunk/mendel/mechanics/solid-models/extruders/geared-pinch-wheel/push-fit-nozzle.dxf Added: trunk/mendel/mechanics/solid-models/extruders/geared-pinch-wheel/push-fit-nozzle.dxf =================================================================== --- trunk/mendel/mechanics/solid-models/extruders/geared-pinch-wheel/push-fit-nozzle.dxf (rev 0) +++ trunk/mendel/mechanics/solid-models/extruders/geared-pinch-wheel/push-fit-nozzle.dxf 2011-02-23 16:11:04 UTC (rev 4039) @@ -0,0 +1,9682 @@ +999 +dxflib 2.0.4.8 + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1015 + 9 +$HANDSEED + 5 +FFFF + 9 +$DIMASZ + 40 +1.0 + 9 +$GRIDUNIT + 10 +0.25 + 20 +0.25 + 9 +$DIMADEC + 70 +2 + 9 +$DIMGAP + 40 +0.625 + 9 +$SPLINESEGS + 70 +8 + 9 +$AUPREC + 70 +2 + 9 +$LUNITS + 70 +2 + 9 +$DIMEXO + 40 +0.625 + 9 +$INSUNITS + 70 +4 + 9 +$DIMLUNIT + 70 +2 + 9 +$DIMTXT + 40 +2.0 + 9 +$GRIDMODE + 70 +1 + 9 +$LUPREC + 70 +4 + 9 +$DIMSTYLE + 2 +Standard + 9 +$PLIMMAX + 10 +210.0 + 20 +297.0 + 9 +$PLIMMIN + 10 +0.0 + 20 +0.0 + 9 +$DIMEXE + 40 +0.5 + 9 +$DIMAUNIT + 70 +0 + 9 +$AUNITS + 70 +0 + 0 +ENDSEC + 0 +SECTION + 2 +TABLES + 0 +TABLE + 2 +VPORT + 5 +8 +100 +AcDbSymbolTable + 70 +1 + 0 +VPORT + 5 +30 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 +0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +286.3055555555554861 + 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 +297.0 + 41 +1.92798353909465 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 +0 + 72 +100 + 73 +1 + 74 +3 + 75 +1 + 76 +1 + 77 +0 + 78 +0 +281 +0 + 65 +1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 +0 +146 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +100 +AcDbSymbolTable + 70 +21 + 0 +LTYPE + 5 +14 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 +0 + 3 + + 72 +65 + 73 +0 + 40 +0.0 + 0 +LTYPE + 5 +15 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 +0 + 3 + + 72 +65 + 73 +0 + 40 +0.0 + 0 +LTYPE + 5 +16 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +CONTINUOUS + 70 +0 + 3 +Solid line + 72 +65 + 73 +0 + 40 +0.0 + 0 +LTYPE + 5 +31 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DOT + 70 +0 + 3 +Dot . . . . . . . . . . . . . . . . . . . . . . + 72 +65 + 73 +2 + 40 +6.3499999999999996 + 49 +0.0 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 0 +LTYPE + 5 +32 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DOT2 + 70 +0 + 3 +Dot (.5x) ..................................... + 72 +65 + 73 +2 + 40 +3.1749999999999998 + 49 +0.0 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 0 +LTYPE + 5 +33 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DOTX2 + 70 +0 + 3 +Dot (2x) . . . . . . . . . . . . . + 72 +65 + 73 +2 + 40 +12.6999999999999993 + 49 +0.0 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 0 +LTYPE + 5 +34 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DASHED + 70 +0 + 3 +Dashed __ __ __ __ __ __ __ __ __ __ __ __ __ _ + 72 +65 + 73 +2 + 40 +19.0500000000000007 + 49 +12.6999999999999993 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 0 +LTYPE + 5 +35 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DASHED2 + 70 +0 + 3 +Dashed (.5x) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + 72 +65 + 73 +2 + 40 +9.5250000000000004 + 49 +6.3499999999999996 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 0 +LTYPE + 5 +36 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DASHEDX2 + 70 +0 + 3 +Dashed (2x) ____ ____ ____ ____ ____ ___ + 72 +65 + 73 +2 + 40 +38.1000000000000014 + 49 +25.3999999999999986 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 0 +LTYPE + 5 +37 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DASHDOT + 70 +0 + 3 +Dash dot __ . __ . __ . __ . __ . __ . __ . __ + 72 +65 + 73 +4 + 40 +25.3999999999999986 + 49 +12.6999999999999993 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 0 +LTYPE + 5 +38 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DASHDOT2 + 70 +0 + 3 +Dash dot (.5x) _._._._._._._._._._._._._._._. + 72 +65 + 73 +4 + 40 +12.6999999999999993 + 49 +6.3499999999999996 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 0 +LTYPE + 5 +39 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DASHDOTX2 + 70 +0 + 3 +Dash dot (2x) ____ . ____ . ____ . ___ + 72 +65 + 73 +4 + 40 +50.7999999999999972 + 49 +25.3999999999999986 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 0 +LTYPE + 5 +3A +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DIVIDE + 70 +0 + 3 +Divide ____ . . ____ . . ____ . . ____ . . ____ + 72 +65 + 73 +6 + 40 +31.75 + 49 +12.6999999999999993 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 0 +LTYPE + 5 +3B +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DIVIDE2 + 70 +0 + 3 +Divide (.5x) __..__..__..__..__..__..__..__.._ + 72 +65 + 73 +6 + 40 +15.875 + 49 +6.3499999999999996 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 0 +LTYPE + 5 +3C +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DIVIDEX2 + 70 +0 + 3 +Divide (2x) ________ . . ________ . . _ + 72 +65 + 73 +6 + 40 +63.5 + 49 +25.3999999999999986 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 0 +LTYPE + 5 +3D +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +CENTER + 70 +0 + 3 +Center ____ _ ____ _ ____ _ ____ _ ____ _ ____ + 72 +65 + 73 +4 + 40 +50.7999999999999972 + 49 +31.75 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 49 +6.3499999999999996 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 0 +LTYPE + 5 +3E +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +CENTER2 + 70 +0 + 3 +Center (.5x) ___ _ ___ _ ___ _ ___ _ ___ _ ___ + 72 +65 + 73 +4 + 40 +28.5749999999999993 + 49 +19.0500000000000007 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 49 +3.1749999999999998 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 0 +LTYPE + 5 +3F +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +CENTERX2 + 70 +0 + 3 +Center (2x) ________ __ ________ __ _____ + 72 +65 + 73 +4 + 40 +101.5999999999999943 + 49 +63.5 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 49 +12.6999999999999993 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 0 +LTYPE + 5 +40 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +BORDER + 70 +0 + 3 +Border __ __ . __ __ . __ __ . __ __ . __ __ . + 72 +65 + 73 +6 + 40 +44.4500000000000028 + 49 +12.6999999999999993 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 49 +12.6999999999999993 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 0 +LTYPE + 5 +41 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +BORDER2 + 70 +0 + 3 +Border (.5x) __.__.__.__.__.__.__.__.__.__.__. + 72 +65 + 73 +6 + 40 +22.2250000000000014 + 49 +6.3499999999999996 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 49 +6.3499999999999996 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 0 +LTYPE + 5 +42 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +BORDERX2 + 70 +0 + 3 +Border (2x) ____ ____ . ____ ____ . ___ + 72 +65 + 73 +6 + 40 +88.9000000000000057 + 49 +25.3999999999999986 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 49 +25.3999999999999986 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +100 +AcDbSymbolTable + 70 +6 + 0 +LAYER + 5 +10 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 +0 + 62 +7 + 6 +CONTINUOUS +370 +0 +390 +F + 0 +LAYER + 5 +43 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +outlines + 70 +0 + 62 +7 + 6 +CONTINUOUS +370 +0 +390 +F + 0 +LAYER + 5 +44 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +hatch + 70 +0 + 62 +7 + 6 +CONTINUOUS +370 +5 +390 +F + 0 +LAYER + 5 +45 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +Names + 70 +0 + 62 +7 + 6 +CONTINUOUS +370 +0 +390 +F + 0 +LAYER + 5 +46 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +dimensions + 70 +0 + 62 +7 + 6 +CONTINUOUS +370 +0 +390 +F + 0 +LAYER + 5 +47 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +centres + 70 +0 + 62 +7 + 6 +CONTINUOUS +370 +0 +390 +F + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +100 +AcDbSymbolTable + 70 +1 + 0 +STYLE + 5 +11 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 +0 + 40 +0.0 + 41 +0.75 + 50 +0.0 + 71 +0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +100 +AcDbSymbolTable + 70 +0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +100 +AcDbSymbolTable + 70 +0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +100 +AcDbSymbolTable + 70 +1 + 0 +APPID + 5 +12 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 +0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +100 +AcDbSymbolTable + 70 +1 +100 +AcDbDimStyleTable + 71 +0 + 0 +DIMSTYLE +105 +27 +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 41 +1.0 + 42 +0.625 + 43 +3.75 + 44 +0.5 + 70 +0 + 73 +0 + 74 +0 + 77 +1 + 78 +8 +140 +2.0 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 +3 +172 +1 +271 +2 +272 +2 +274 +3 +278 +44 +283 +0 +284 +8 +340 +11 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +100 +AcDbSymbolTable + 70 +1 + 0 +BLOCK_RECORD + 5 +1F +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +22 + 0 +BLOCK_RECORD + 5 +1B +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +1E + 0 +BLOCK_RECORD + 5 +23 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +26 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +20 +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 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +1C +100 +AcDbEntity + 67 +1 + 8 +0 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 +0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +1D +100 +AcDbEntity + 67 +1 + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +24 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 +0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +25 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +HATCH + 5 +48 + 8 +hatch + 62 +256 +370 +5 + 6 +CONTINUOUS +100 +AcDbEntity +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +ansi31 + 70 +0 + 71 +0 + 91 +1 + 92 +1 + 93 +9 + 72 +1 + 10 +107.5 + 20 +70.5 + 11 +67.5 + 21 +70.5 + 72 +1 + 10 +67.5 + 20 +70.5 + 11 +67.5 + 21 +65.5 + 72 +1 + 10 +67.5 + 20 +65.5 + 11 +68.25 + 21 +64.25 + 72 +1 + 10 +68.25 + 20 +64.25 + 11 +71.5 + 21 +64.25 + 72 +1 + 10 +71.5 + 20 +64.25 + 11 +71.5 + 21 +65.75 + 72 +1 + 10 +71.5 + 20 +65.75 + 11 +97.5 + 21 +65.75 + 72 +1 + 10 +97.5 + 20 +65.75 + 11 +97.5 + 21 +67.0 + 72 +1 + 10 +97.5 + 20 +67.0 + 11 +107.5 + 21 +67.0 + 72 +1 + 10 +107.5 + 20 +67.0 + 11 +107.5 + 21 +70.5 + 97 +0 + 75 +0 + 76 +1 + 52 +1.5707963267948966 + 41 +0.6 + 77 +0 + 78 +1 + 53 +45.0 + 43 +0.0 + 44 +0.0 + 45 +-0.0883883476483184 + 46 +0.0883883476483185 + 79 +0 + 98 +0 + 0 +HATCH + 5 +49 + 8 +hatch + 62 +256 +370 +5 + 6 +CONTINUOUS +100 +AcDbEntity +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +ansi31 + 70 +0 + 71 +0 + 91 +1 + 92 +1 + 93 +9 + 72 +1 + 10 +67.5 + 20 +54.5 + 11 +107.5 + 21 +54.5 + 72 +1 + 10 +107.5 + 20 +54.5 + 11 +107.5 + 21 +57.5 + 72 +1 + 10 +107.5 + 20 +57.5 + 11 +97.5 + 21 +57.5 + 72 +1 + 10 +97.5 + 20 +57.5 + 11 +97.5 + 21 +59.25 + 72 +1 + 10 +97.5 + 20 +59.25 + 11 +71.5 + 21 +59.25 + 72 +1 + 10 +71.5 + 20 +59.25 + 11 +71.5 + 21 +60.75 + 72 +1 + 10 +71.5 + 20 +60.75 + 11 +68.25 + 21 +60.75 + 72 +1 + 10 +68.25 + 20 +60.75 + 11 +67.5 + 21 +59.5 + 72 +1 + 10 +67.5 + 20 +59.5 + 11 +67.5 + 21 +54.5 + 97 +0 + 75 +0 + 76 +1 + 52 +1.5707963267948966 + 41 +0.6 + 77 +0 + 78 +1 + 53 +45.0 + 43 +0.0 + 44 +0.0 + 45 +-0.0883883476483184 + 46 +0.0883883476483185 + 79 +0 + 98 +0 + 0 +HATCH + 5 +4A + 8 +hatch + 62 +256 +370 +5 + 6 +CONTINUOUS +100 +AcDbEntity +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +ansi31 + 70 +0 + 71 +0 + 91 +1 + 92 +1 + 93 +11 + 72 +1 + 10 +162.25 + 20 +65.75 + 11 +172.25 + 21 +65.75 + 72 +1 + 10 +172.25 + 20 +65.75 + 11 +172.25 + 21 +64.25 + 72 +1 + 10 +172.25 + 20 +64.25 + 11 +195.75 + 21 +64.25 + 72 +1 + 10 +195.75 + 20 +64.25 + 11 +196.6071428571428612 + 21 +62.7500000000000071 + 72 +1 + 10 +196.6071428571428612 + 20 +62.75 + 11 +197.3541666666666572 + 21 +62.75 + 72 +1 + 10 +197.3541666666666572 + 20 +62.75 + 11 +195.1666666666666572 + 21 +66.5 + 72 +1 + 10 +195.1666666666666572 + 20 +66.5 + 11 +174.5 + 21 +66.5 + 72 +1 + 10 +174.5 + 20 +66.5 + 11 +174.25 + 21 +66.5 + 72 +1 + 10 +174.25 + 20 +66.5 + 11 +174.25 + 21 +67.25 + 72 +1 + 10 +174.25 + 20 +67.25 + 11 +162.25 + 21 +67.25 + 72 +1 + 10 +162.25 + 20 +67.25 + 11 +162.25 + 21 +65.75 + 97 +0 + 75 +0 + 76 +1 + 52 +1.5707963267948966 + 41 +0.6 + 77 +0 + 78 +1 + 53 +45.0 + 43 +0.0 + 44 +0.0 + 45 +-0.0883883476483184 + 46 +0.0883883476483185 + 79 +0 + 98 +0 + 0 +HATCH + 5 +4B + 8 +hatch + 62 +256 +370 +5 + 6 +CONTINUOUS +100 +AcDbEntity +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +ansi31 + 70 +0 + 71 +0 + 91 +1 + 92 +1 + 93 +10 + 72 +1 + 10 +172.25 + 20 +59.25 + 11 +162.25 + 21 +59.25 + 72 +1 + 10 +162.25 + 20 +59.25 + 11 +162.25 + 21 +57.75 + 72 +1 + 10 +162.25 + 20 +57.75 + 11 +174.25 + 21 +57.75 + 72 +1 + 10 +174.25 + 20 +57.75 + 11 +174.25 + 21 +58.5 + 72 +1 + 10 +174.25 + 20 +58.5 + 11 +195.25 + 21 +58.5 + 72 +1 + 10 +195.25 + 20 +58.5 + 11 +197.3541666666666572 + 21 +62.25 + 72 +1 + 10 +197.3541666666666572 + 20 +62.25 + 11 +196.6071428571428612 + 21 +62.25 + 72 +1 + 10 +196.6071428571428612 + 20 +62.25 + 11 +195.75 + 21 +60.75 + 72 +1 + 10 +195.75 + 20 +60.75 + 11 +172.25 + 21 +60.75 + 72 +1 + 10 +172.25 + 20 +60.75 + 11 +172.25 + 21 +59.25 + 97 +0 + 75 +0 + 76 +1 + 52 +1.5707963267948966 + 41 +0.6 + 77 +0 + 78 +1 + 53 +45.0 + 43 +0.0 + 44 +0.0 + 45 +-0.0883883476483184 + 46 +0.0883883476483185 + 79 +0 + 98 +0 + 0 +LINE + 5 +4C +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +ByLayer + 10 +100.0 + 20 +5.0 + 30 +0.0 + 11 +100.0 + 21 +5.0 + 31 +0.0 + 0 +LINE + 5 +4D +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +ByLayer + 10 +100.0 + 20 +20.0 + 30 +0.0 + 11 +100.0 + 21 +-20.0 + 31 +0.0 + 0 +LINE + 5 +4E +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +ByLayer + 10 +115.0 + 20 +-20.0 + 30 +0.0 + 11 +115.0 + 21 +20.0 + 31 +0.0 + 0 +LINE + 5 +4F +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +ByLayer + 10 +100.0 + 20 +20.0 + 30 +0.0 + 11 +100.0 + 21 +21.0 + 31 +0.0 + 0 +LINE + 5 +50 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +ByLayer + 10 +100.0 + 20 +21.0 + 30 +0.0 + 11 +115.0 + 21 +21.0 + 31 +0.0 + 0 +LINE + 5 +51 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +ByLayer + 10 +115.0 + 20 +21.0 + 30 +0.0 + 11 +115.0 + 21 +20.0 + 31 +0.0 + 0 +LINE + 5 +52 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +ByLayer + 10 +100.0 + 20 +-20.0 + 30 +0.0 + 11 +100.0 + 21 +-21.0 + 31 +0.0 + 0 +LINE + 5 +53 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +ByLayer + 10 +100.0 + 20 +-21.0 + 30 +0.0 + 11 +115.0 + 21 +-21.0 + 31 +0.0 + 0 +LINE + 5 +54 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +ByLayer + 10 +115.0 + 20 +-21.0 + 30 +0.0 + 11 +115.0 + 21 +-20.0 + 31 +0.0 + 0 +LINE + 5 +55 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +15 + 6 +ByLayer + 10 +64.0 + 20 +21.0 + 30 +0.0 + 11 +74.0 + 21 +21.0 + 31 +0.0 + 0 +LINE + 5 +56 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +15 + 6 +ByLayer + 10 +74.0 + 20 +21.0 + 30 +0.0 + 11 +74.0 + 21 +-21.0 + 31 +0.0 + 0 +LINE + 5 +57 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +15 + 6 +ByLayer + 10 +74.0 + 20 +-21.0 + 30 +0.0 + 11 +64.0 + 21 +-21.0 + 31 +0.0 + 0 +LINE + 5 +58 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +15 + 6 +ByLayer + 10 +64.0 + 20 +-21.0 + 30 +0.0 + 11 +64.0 + 21 +21.0 + 31 +0.0 + 0 +LINE + 5 +59 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +15 + 6 +DASHED + 10 +64.0 + 20 +16.5 + 30 +0.0 + 11 +74.0 + 21 +16.5 + 31 +0.0 + 0 +LINE + 5 +5A +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +15 + 6 +DASHED + 10 +64.0 + 20 +13.5 + 30 +0.0 + 11 +74.0 + 21 +13.5 + 31 +0.0 + 0 +LINE + 5 +5B +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +15 + 6 +DASHED + 10 +64.0 + 20 +-13.5 + 30 +0.0 + 11 +74.0 + 21 +-13.5 + 31 +0.0 + 0 +LINE + 5 +5C +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +15 + 6 +DASHED + 10 +64.0 + 20 +-16.5 + 30 +0.0 + 11 +74.0 + 21 +-16.5 + 31 +0.0 + 0 +LINE + 5 +5D +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +15 + 6 +DASHED + 10 +64.0 + 20 +4.0 + 30 +0.0 + 11 +66.0 + 21 +4.0 + 31 +0.0 + 0 +LINE + 5 +5E +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +15 + 6 +DASHED + 10 +66.75 + 20 +5.0 + 30 +0.0 + 11 +74.0 + 21 +5.0 + 31 +0.0 + 0 +LINE + 5 +5F +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +15 + 6 +DASHED + 10 +64.0 + 20 +-4.0 + 30 +0.0 + 11 +66.0 + 21 +-4.0 + 31 +0.0 + 0 +LINE + 5 +60 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +15 + 6 +DASHED + 10 +66.5 + 20 +-5.0 + 30 +0.0 + 11 +74.0 + 21 +-5.0 + 31 +0.0 + 0 +LINE + 5 +61 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +15 + 6 +DASHED + 10 +66.0 + 20 +-4.0 + 30 +0.0 + 11 +66.0 + 21 +4.25 + 31 +0.0 + 0 +LINE + 5 +62 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +15 + 6 +DASHED + 10 +66.75 + 20 +-5.0 + 30 +0.0 + 11 +66.75 + 21 +5.0 + 31 +0.0 + 0 +CIRCLE + 5 +63 +100 +AcDbEntity +100 +AcDbCircle + 8 +hatch + 62 +256 +370 +15 + 6 +ByLayer + 10 +107.5 + 20 +15.0 + 30 +0.0 + 40 +1.5 + 0 +CIRCLE + 5 +64 +100 +AcDbEntity +100 +AcDbCircle + 8 +hatch + 62 +256 +370 +15 + 6 +ByLayer + 10 +107.5 + 20 +-15.0 + 30 +0.0 + 40 +1.5 + 0 +CIRCLE + 5 +65 +100 +AcDbEntity +100 +AcDbCircle + 8 +hatch + 62 +256 +370 +15 + 6 +ByLayer + 10 +107.5 + 20 +0.0 + 30 +0.0 + 40 +4.0 + 0 +CIRCLE + 5 +66 +100 +AcDbEntity +100 +AcDbCircle + 8 +hatch + 62 +256 +370 +15 + 6 +ByLayer + 10 +107.5 + 20 +0.0 + 30 +0.0 + 40 +5.0 + 0 +LINE + 5 +67 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +15 + 6 +DASHED + 10 +66.0 + 20 +4.0 + 30 +0.0 + 11 +66.75 + 21 +5.0 + 31 +0.0 + 0 +LINE + 5 +68 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +15 + 6 +DASHED + 10 +66.0 + 20 +-4.0 + 30 +0.0 + 11 +66.5 + 21 +-5.0 + 31 +0.0 + 0 +MTEXT + 5 +69 +100 +AcDbEntity +100 +AcDbMText + 8 +Names + 62 +256 +370 +18 + 6 +CENTER + 10 +61.0970386887748447 + 20 +26.9818899126149638 + 30 +0.0 + 40 +1.5 + 41 +100.0 + 71 +1 + 72 +2 + 1 +PEEK\~block\~(elevation) + 7 +normallatin1 + 50 +0.0 + 73 +1 + 44 +1.0 + 0 +MTEXT + 5 +6A +100 +AcDbEntity +100 +AcDbMText + 8 +Names + 62 +256 +370 +18 + 6 +CENTER + 10 +96.0970386887748447 + 20 +26.9818899126149638 + 30 +0.0 + 40 +1.5 + 41 +100.0 + 71 +1 + 72 +2 + 1 +PEEK\~block\~(plan) + 7 +normallatin1 + 50 +0.0 + 73 +1 + 44 +1.0 + 0 +DIMENSION + 5 +6B +100 +AcDbEntity + 8 +dimensions + 62 +256 +370 +-1 + 6 +ByLayer +100 +AcDbDimension + 10 +74.0 + 20 +-26.25 + 30 +0.0 + 11 +69.0 + 21 +-24.625 + 31 +0.0 + 70 +0 + 71 +5 + 72 +0 + 41 +1.0 + 42 +0.0 + 1 + + 3 +Standard +100 +AcDbAlignedDimension + 13 +64.0 + 23 +-21.0 + 33 +0.0 + 14 +74.0 + 24 +-21.0 + 34 +0.0 + 50 +0.0 +100 +AcDbRotatedDimension + 0 +MTEXT + 5 +6C +100 +AcDbEntity +100 +AcDbMText + 8 +dimensions + 62 +256 +370 +-1 + 6 +ByLayer + 10 +79.25 + 20 +1.5 + 30 +0.0 + 40 +1.5 + 41 +100.0 + 71 +1 + 72 +2 + 1 +10\~mm\~dia + 7 +normallatin1 + 50 +0.0 + 73 +0 + 44 +1.0 + 0 +MTEXT + 5 +6D +100 +AcDbEntity +100 +AcDbMText + 8 +dimensions + 62 +256 +370 +-1 + 6 +ByLayer + 10 +54.25 + 20 +0.75 + 30 +0.0 + 40 +1.5 + 41 +100.0 + 71 +1 + 72 +2 + 1 +8\~mm\~dia + 7 +normallatin1 + 50 +0.0 + 73 +0 + 44 +1.0 + 0 +DIMENSION + 5 +6E +100 +AcDbEntity + 8 +dimensions + 62 +256 +370 +5 + 6 +ByLayer +100 +AcDbDimension + 10 +97.2523193879678161 + 20 +15.0000000000000018 + 30 +0.0 + 11 +95.6273193879678161 + 21 +7.4999999999999991 + 31 +0.0 + 70 +0 + 71 +5 + 72 +0 + 41 +1.0 + 42 +0.0 + 1 + + 3 +Standard +100 +AcDbAlignedDimension + 13 +100.0 + 23 +0.0 + 33 +0.0 + 14 +105.0 + 24 +15.0 + 34 +0.0 + 50 +90.0 +100 +AcDbRotatedDimension + 0 +DIMENSION + 5 +6F +100 +AcDbEntity + 8 +dimensions + 62 +256 +370 +5 + 6 +ByLayer +100 +AcDbDimension + 10 +94.5678137085006938 + 20 +21.0 + 30 +0.0 + 11 +92.9428137085006938 + 21 +10.5 + 31 +0.0 + 70 +0 + 71 +5 + 72 +0 + 41 +1.0 + 42 +0.0 + 1 + + 3 +Standard +100 +AcDbAlignedDimension + 13 +100.0 + 23 +0.0 + 33 +0.0 + 14 +100.0 + 24 +21.0 + 34 +0.0 + 50 +90.0 +100 +AcDbRotatedDimension + 0 +DIMENSION + 5 +70 +100 +AcDbEntity + 8 +dimensions + 62 +256 +370 +5 + 6 +ByLayer +100 +AcDbDimension + 10 +115.0 + 20 +-26.2349418675195487 + 30 +0.0 + 11 +107.5 + 21 +-24.6099418675195487 + 31 +0.0 + 70 +0 + 71 +5 + 72 +0 + 41 +1.0 + 42 +0.0 + 1 + + 3 +Standard +100 +AcDbAlignedDimension + 13 +100.0 + 23 +-20.0 + 33 +0.0 + 14 +115.0 + 24 +-20.0 + 34 +0.0 + 50 +0.0 +100 +AcDbRotatedDimension + 0 +LEADER + 5 +71 + 8 +dimensions + 62 +256 +370 +-1 + 6 +ByLayer +100 +AcDbEntity +100 +AcDbLeader + 3 +Standard + 71 +1 + 72 +0 + 73 +3 + 74 +0 + 75 +0 + 40 +1.0 + 41 +10.0 + 76 +3 + 10 +70.0 + 20 +-5.0 + 10 +72.5 + 20 +-0.5 + 10 +89.25 + 20 +-0.5 + 0 +LEADER + 5 +72 + 8 +dimensions + 62 +256 +370 +-1 + 6 +ByLayer +100 +AcDbEntity +100 +AcDbLeader + 3 +Standard + 71 +1 + 72 +0 + 73 +3 + 74 +0 + 75 +0 + 40 +1.0 + 41 +10.0 + 76 +3 + 10 +65.0 + 20 +-4.0 + 10 +62.75 + 20 +-1.25 + 10 +54.25 + 20 +-1.25 + 0 +MTEXT + 5 +73 +100 +AcDbEntity +100 +AcDbMText + 8 +dimensions + 62 +256 +370 +-1 + 6 +ByLayer + 10 +75.3498134328358162 + 20 +-1.1721082089552237 + 30 +0.0 + 40 +1.5 + 41 +100.0 + 71 +1 + 72 +2 + 1 +drill\~7\~mm\~deep + 7 +normallatin1 + 50 +0.0 + 73 +1 + 44 +1.0 + 0 +LINE + 5 +74 +100 +AcDbEntity +100 +AcDbLine + 8 +centres + 62 +256 +370 +5 + 6 +CENTER + 10 +105.0 + 20 +-15.0 + 30 +0.0 + 11 +112.0 + 21 +-15.0 + 31 +0.0 + 0 +LINE + 5 +75 +100 +AcDbEntity +100 +AcDbLine + 8 +centres + 62 +256 +370 +5 + 6 +CENTER + 10 +106.0 + 20 +15.0 + 30 +0.0 + 11 +112.0 + 21 +15.0 + 31 +0.0 + 0 +LINE + 5 +76 +100 +AcDbEntity +100 +AcDbLine + 8 +centres + 62 +256 +370 +5 + 6 +CENTER + 10 +107.5 + 20 +25.0 + 30 +0.0 + 11 +107.5 + 21 +-23.0 + 31 +0.0 + 0 +LINE + 5 +77 +100 +AcDbEntity +100 +AcDbLine + 8 +centres + 62 +256 +370 +5 + 6 +CENTER + 10 +97.0 + 20 +0.0 + 30 +0.0 + 11 +114.0 + 21 +0.0 + 31 +0.0 + 0 +LINE + 5 +78 +100 +AcDbEntity +100 +AcDbLine + 8 +centres + 62 +256 +370 +5 + 6 +CENTER + 10 +62.0 + 20 +0.0 + 30 +0.0 + 11 +79.0 + 21 +0.0 + 31 +0.0 + 0 +LINE + 5 +79 +100 +AcDbEntity +100 +AcDbLine + 8 +centres + 62 +256 +370 +5 + 6 +CENTER + 10 +62.0 + 20 +15.0 + 30 +0.0 + 11 +79.0 + 21 +15.0 + 31 +0.0 + 0 +LINE + 5 +7A +100 +AcDbEntity +100 +AcDbLine + 8 +centres + 62 +256 +370 +5 + 6 +CENTER + 10 +62.0 + 20 +-15.0 + 30 +0.0 + 11 +79.0 + 21 +-15.0 + 31 +0.0 + 0 +MTEXT + 5 +7B +100 +AcDbEntity +100 +AcDbMText + 8 +dimensions + 62 +256 +370 +-1 + 6 +ByLayer + 10 +77.0 + 20 +22.0 + 30 +0.0 + 40 +1.5 + 41 +100.0 + 71 +1 + 72 +2 + 1 +3\~mm\~dia + 7 +normallatin1 + 50 +0.0 + 73 +0 + 44 +1.0 + 0 +MTEXT + 5 +7C +100 +AcDbEntity +100 +AcDbMText + 8 +dimensions + 62 +256 +370 +-1 + 6 +ByLayer + 10 +76.25 + 20 +-18.25 + 30 +0.0 + 40 +1.5 + 41 +100.0 + 71 +1 + 72 +2 + 1 +3\~mm\~dia + 7 +normallatin1 + 50 +0.0 + 73 +0 + 44 +1.0 + 0 +LEADER + 5 +7D + 8 +dimensions + 62 +256 +370 +-1 + 6 +ByLayer +100 +AcDbEntity +100 +AcDbLeader + 3 +Standard + 71 +1 + 72 +0 + 73 +3 + 74 +0 + 75 +0 + 40 +1.0 + 41 +10.0 + 76 +3 + 10 +70.9135802469135825 + 20 +-16.5351377018043664 + 10 +75.857075023741686 + 20 +-20.7967711301044638 + 10 +85.9145299145299077 + 20 +-20.7967711301044638 + 0 +LEADER + 5 +7E + 8 +dimensions + 62 +256 +370 +-1 + 6 +ByLayer +100 +AcDbEntity +100 +AcDbLeader + 3 +Standard + 71 +1 + 72 +0 + 73 +3 + 74 +0 + 75 +0 + 40 +1.0 + 41 +10.0 + 76 +3 + 10 +70.2317188983855658 + 20 +16.5351377018043664 + 10 +76.1980056980057014 + 20 +19.7739791073124387 + 10 +86.7668566001899251 + 20 +19.7739791073124387 + 0 +MTEXT + 5 +7F +100 +AcDbEntity +100 +AcDbMText + 8 +dimensions + 62 +256 +370 +5 + 6 +ByLayer + 10 +53.0 + 20 +69.0 + 30 +0.0 + 40 +1.0 + 41 +100.0 + 71 +1 + 72 +2 + 1 +dish\~end\~with\Plarge\~drill + 7 +normallatin1 + 50 +0.0 + 73 +1 + 44 +1.0 + 0 +LEADER + 5 +80 + 8 +dimensions + 62 +256 +370 +5 + 6 +ByLayer +100 +AcDbEntity +100 +AcDbLeader + 3 +Standard + 71 +1 + 72 +0 + 73 +3 + 74 +0 + 75 +0 + 40 +1.0 + 41 +10.0 + 76 +3 + 10 +68.0 + 20 +60.5 + 10 +60.5 + 20 +67.5 + 10 +60.5 + 20 +67.5 + 0 +LINE + 5 +81 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +ByLayer + 10 +67.5 + 20 +54.5 + 30 +0.0 + 11 +107.5 + 21 +54.5 + 31 +0.0 + 0 +LINE + 5 +82 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +ByLayer + 10 +107.5 + 20 +70.5 + 30 +0.0 + 11 +67.5 + 21 +70.5 + 31 +0.0 + 0 +LINE + 5 +83 +100 +AcDbEntity +100 +AcDbLine + 8 +centres + 62 +256 +370 +5 + 6 +CENTER2 + 10 +63.5 + 20 +62.5 + 30 +0.0 + 11 +111.5 + 21 +62.5 + 31 +0.0 + 0 +LINE + 5 +84 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +CONTINUOUS + 10 +107.5 + 20 +67.0 + 30 +0.0 + 11 +97.5 + 21 +67.0 + 31 +0.0 + 0 +LINE + 5 +85 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +CONTINUOUS + 10 +97.5 + 20 +57.5 + 30 +0.0 + 11 +107.5 + 21 +57.5 + 31 +0.0 + 0 +LINE + 5 +86 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +CONTINUOUS + 10 +67.5 + 20 +65.5 + 30 +0.0 + 11 +68.25 + 21 +64.25 + 31 +0.0 + 0 +LINE + 5 +87 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +CONTINUOUS + 10 +67.5 + 20 +59.5 + 30 +0.0 + 11 +68.25 + 21 +60.75 + 31 +0.0 + 0 +LINE + 5 +88 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +CONTINUOUS + 10 +68.25 + 20 +60.75 + 30 +0.0 + 11 +68.25 + 21 +64.25 + 31 +0.0 + 0 +LINE + 5 +89 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +CONTINUOUS + 10 +97.5 + 20 +65.75 + 30 +0.0 + 11 +71.5 + 21 +65.75 + 31 +0.0 + 0 +LINE + 5 +8A +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +CONTINUOUS + 10 +71.5 + 20 +59.25 + 30 +0.0 + 11 +97.5 + 21 +59.25 + 31 +0.0 + 0 +LINE + 5 +8B +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +ByLayer + 10 +68.25 + 20 +64.25 + 30 +0.0 + 11 +71.5 + 21 +64.25 + 31 +0.0 + 0 +LINE + 5 +8C +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +ByLayer + 10 +68.25 + 20 +60.75 + 30 +0.0 + 11 +71.5 + 21 +60.75 + 31 +0.0 + 0 +DIMENSION + 5 +8D +100 +AcDbEntity + 8 +dimensions + 62 +256 +370 +5 + 6 +CONTINUOUS +100 +AcDbDimension + 10 +71.5 + 20 +50.5 + 30 +0.0 + 11 +69.5 + 21 +52.125 + 31 +0.0 + 70 +0 + 71 +5 + 72 +1 + 41 +1.0 + 42 +0.0 + 1 + + 3 +Standard +100 +AcDbAlignedDimension + 13 +67.5 + 23 +54.75 + 33 +0.0 + 14 +71.5 + 24 +59.25 + 34 +0.0 + 50 +0.0 +100 +AcDbRotatedDimension + 0 +DIMENSION + 5 +8E +100 +AcDbEntity + 8 +dimensions + 62 +256 +370 +5 + 6 +CONTINUOUS +100 +AcDbDimension + 10 +97.5 + 20 +48.5 + 30 +0.0 + 11 +82.5 + 21 +50.125 + 31 +0.0 + 70 +0 + 71 +5 + 72 +1 + 41 +1.0 + 42 +0.0 + 1 + + 3 +Standard +100 +AcDbAlignedDimension + 13 +67.5 + 23 +54.5 + 33 +0.0 + 14 +97.5 + 24 +57.5 + 34 +0.0 + 50 +0.0 +100 +AcDbRotatedDimension + 0 +DIMENSION + 5 +8F +100 +AcDbEntity + 8 +dimensions + 62 +256 +370 +5 + 6 +CONTINUOUS +100 +AcDbDimension + 10 +107.5 + 20 +45.0 + 30 +0.0 + 11 +87.5 + 21 +46.625 + 31 +0.0 + 70 +0 + 71 +5 + 72 +1 + 41 +1.0 + 42 +0.0 + 1 + + 3 +Standard +100 +AcDbAlignedDimension + 13 +67.5 + 23 +54.5 + 33 +0.0 + 14 +107.5 + 24 +54.5 + 34 +0.0 + 50 +0.0 +100 +AcDbRotatedDimension + 0 +LINE + 5 +90 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +ByLayer + 10 +67.5 + 20 +59.5 + 30 +0.0 + 11 +67.5 + 21 +54.5 + 31 +0.0 + 0 +LINE + 5 +91 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +ByLayer + 10 +67.5 + 20 +70.5 + 30 +0.0 + 11 +67.5 + 21 +65.5 + 31 +0.0 + 0 +LINE + 5 +92 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +ByLayer + 10 +67.5 + 20 +65.5 + 30 +0.0 + 11 +67.5 + 21 +59.5 + 31 +0.0 + 0 +LINE + 5 +93 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +CONTINUOUS + 10 +71.5 + 20 +65.75 + 30 +0.0 + 11 +71.5 + 21 +64.25 + 31 +0.0 + 0 +LINE + 5 +94 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +CONTINUOUS + 10 +71.5 + 20 +64.25 + 30 +0.0 + 11 +71.5 + 21 +60.75 + 31 +0.0 + 0 +LINE + 5 +95 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +CONTINUOUS + 10 +71.5 + 20 +60.75 + 30 +0.0 + 11 +71.5 + 21 +59.25 + 31 +0.0 + 0 +LINE + 5 +96 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +CONTINUOUS + 10 +97.5 + 20 +59.25 + 30 +0.0 + 11 +97.5 + 21 +57.5 + 31 +0.0 + 0 +LINE + 5 +97 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +CONTINUOUS + 10 +97.5 + 20 +67.0 + 30 +0.0 + 11 +97.5 + 21 +65.75 + 31 +0.0 + 0 +LINE + 5 +98 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +CONTINUOUS + 10 +97.5 + 20 +65.75 + 30 +0.0 + 11 +97.5 + 21 +59.25 + 31 +0.0 + 0 +LINE + 5 +99 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +ByLayer + 10 +107.5 + 20 +67.0 + 30 +0.0 + 11 +107.5 + 21 +70.5 + 31 +0.0 + 0 +LINE + 5 +9A +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +ByLayer + 10 +107.5 + 20 +54.5 + 30 +0.0 + 11 +107.5 + 21 +57.5 + 31 +0.0 + 0 +LINE + 5 +9B +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +ByLayer + 10 +107.5 + 20 +57.5 + 30 +0.0 + 11 +107.5 + 21 +67.0 + 31 +0.0 + 0 +DIMENSION + 5 +9C +100 +AcDbEntity + 8 +dimensions + 62 +256 +370 +5 + 6 +CONTINUOUS +100 +AcDbDimension + 10 +62.75 + 20 +54.5 + 30 +0.0 + 11 +61.125 + 21 +62.5 + 31 +0.0 + 70 +0 + 71 +5 + 72 +1 + 41 +1.0 + 42 +0.0 + 1 + + 3 +Standard +100 +AcDbAlignedDimension + 13 +67.5 + 23 +70.5 + 33 +0.0 + 14 +67.5 + 24 +54.5 + 34 +0.0 + 50 +90.0 +100 +AcDbRotatedDimension + 0 +MTEXT + 5 +9D +100 +AcDbEntity +100 +AcDbMText + 8 +Names + 62 +256 +370 +18 + 6 +ByLayer + 10 +72.4942313611735187 + 20 +80.7920650140736996 + 30 +0.0 + 40 +1.5 + 41 +100.0 + 71 +1 + 72 +2 + 1 +16\~mm\~dia.\~PEEK\~insulator + 7 +normallatin1 + 50 +0.0 + 73 +1 + 44 +1.0 + 0 +LEADER + 5 +9E + 8 +dimensions + 62 +256 +370 +5 + 6 +CONTINUOUS +100 +AcDbEntity +100 +AcDbLeader + 3 +Standard + 71 +1 + 72 +0 + 73 +3 + 74 +0 + 75 +0 + 40 +1.0 + 41 +10.0 + 76 +4 + 10 +69.25 + 20 +64.25 + 10 +73.25 + 20 +72.75 + 10 +73.25 + 20 +72.75 + 10 +73.25 + 20 +72.75 + 0 +LEADER + 5 +9F + 8 +dimensions + 62 +256 +370 +5 + 6 +CONTINUOUS +100 +AcDbEntity +100 +AcDbLeader + 3 +Standard + 71 +1 + 72 +0 + 73 +3 + 74 +0 + 75 +0 + 40 +1.0 + 41 +10.0 + 76 +3 + 10 +78.5 + 20 +65.75 + 10 +82.75 + 20 +72.75 + 10 +82.75 + 20 +72.75 + 0 +LEADER + 5 +A0 + 8 +dimensions + 62 +256 +370 +5 + 6 +CONTINUOUS +100 +AcDbEntity +100 +AcDbLeader + 3 +Standard + 71 +1 + 72 +0 + 73 +3 + 74 +0 + 75 +0 + 40 +1.0 + 41 +10.0 + 76 +2 + 10 +101.25 + 20 +67.0 + 10 +104.5 + 20 +72.75 + 0 +MTEXT + 5 +A1 +100 +AcDbEntity +100 +AcDbMText + 8 +dimensions + 62 +256 +370 +5 + 6 +CONTINUOUS + 10 +68.25 + 20 +74.5 + 30 +0.0 + 40 +1.5 + 41 +100.0 + 71 +1 + 72 +0 + 1 +3.5mm\~dia. + 7 +normallatin1 + 50 +0.0 + 73 +1 + 44 +1.0 + 0 +MTEXT + 5 +A2 +100 +AcDbEntity +100 +AcDbMText + 8 +dimensions + 62 +256 +370 +5 + 6 +CONTINUOUS + 10 +81.25 + 20 +74.5 + 30 +0.0 + 40 +1.5 + 41 +100.0 + 71 +1 + 72 +0 + 1 +6.4mm\~dia. + 7 +normallatin1 + 50 +0.0 + 73 +1 + 44 +1.0 + 0 +MTEXT + 5 +A3 +100 +AcDbEntity +100 +AcDbMText + 8 +dimensions + 62 +256 +370 +5 + 6 +CONTINUOUS + 10 +100.75 + 20 +74.5 + 30 +0.0 + 40 +1.5 + 41 +100.0 + 71 +1 + 72 +0 + 1 +9.5\~mm\~dia. + 7 +normallatin1 + 50 +0.0 + 73 +1 + 44 +1.0 + 0 +LINE + 5 +A4 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +CONTINUOUS + 10 +114.5 + 20 +62.5 + 30 +0.0 + 11 +114.5 + 21 +65.75 + 31 +0.0 + 0 +LINE + 5 +A5 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +CONTINUOUS + 10 +114.5 + 20 +65.75 + 30 +0.0 + 11 +152.5 + 21 +65.75 + 31 +0.0 + 0 +LINE + 5 +A6 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +CONTINUOUS + 10 +152.5 + 20 +65.75 + 30 +0.0 + 11 +152.5 + 21 +59.25 + 31 +0.0 + 0 +LINE + 5 +A7 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +CONTINUOUS + 10 +152.5 + 20 +59.25 + 30 +0.0 + 11 +114.5 + 21 +59.25 + 31 +0.0 + 0 +LINE + 5 +A8 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +CONTINUOUS + 10 +114.5 + 20 +59.25 + 30 +0.0 + 11 +114.5 + 21 +62.5 + 31 +0.0 + 0 +LINE + 5 +A9 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +5 + 6 +DOT + 10 +114.5 + 20 +64.25 + 30 +0.0 + 11 +152.5 + 21 +64.25 + 31 +0.0 + 0 +LINE + 5 +AA +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +5 + 6 +DOT + 10 +152.5 + 20 +60.75 + 30 +0.0 + 11 +114.5 + 21 +60.75 + 31 +0.0 + 0 +MTEXT + 5 +AB +100 +AcDbEntity +100 +AcDbMText + 8 +Names + 62 +256 +370 +18 + 6 +CONTINUOUS + 10 +120.25 + 20 +72.0 + 30 +0.0 + 40 +1.5 + 41 +100.0 + 71 +1 + 72 +0 + 1 +6.4\~mm\~dia\~PTFE\~sleeve + 7 +normallatin1 + 50 +0.0 + 73 +1 + 44 +1.0 + 0 +LINE + 5 +AC +100 +AcDbEntity +100 +AcDbLine + 8 +centres + 62 +256 +370 +5 + 6 +CENTER2 + 10 +113.25 + 20 +62.5 + 30 +0.0 + 11 +154.25 + 21 +62.5 + 31 +0.0 + 0 +DIMENSION + 5 +AD +100 +AcDbEntity + 8 +dimensions + 62 +256 +370 +5 + 6 +CONTINUOUS +100 +AcDbDimension + 10 +152.5 + 20 +55.0 + 30 +0.0 + 11 +133.5 + 21 +56.625 + 31 +0.0 + 70 +0 + 71 +5 + 72 +1 + 41 +1.0 + 42 +0.0 + 1 + + 3 +Standard +100 +AcDbAlignedDimension + 13 +114.5 + 23 +59.25 + 33 +0.0 + 14 +152.5 + 24 +59.25 + 34 +0.0 + 50 +0.0 +100 +AcDbRotatedDimension + 0 +LEADER + 5 +AE + 8 +centres + 62 +256 +370 +-1 + 6 +ByLayer +100 +AcDbEntity +100 +AcDbLeader + 3 +Standard + 71 +1 + 72 +0 + 73 +3 + 74 +0 + 75 +0 + 40 +1.0 + 41 +10.0 + 76 +5 + 10 +184.0 + 20 +64.25 + 10 +190.5 + 20 +55.75 + 10 +190.5 + 20 +55.75 + 10 +190.5 + 20 +55.75 + 10 +190.5 + 20 +55.75 + 0 +MTEXT + 5 +AF +100 +AcDbEntity +100 +AcDbMText + 8 +dimensions + 62 +256 +370 +5 + 6 +ByLayer + 10 +200.4079416197829175 + 20 +65.7873333705496748 + 30 +0.0 + 40 +1.0 + 41 +100.0 + 71 +1 + 72 +2 + 1 +nozzle\~0.5\~dia. + 7 +normallatin1 + 50 +0.0 + 73 +1 + 44 +1.0 + 0 +MTEXT + 5 +B0 +100 +AcDbEntity +100 +AcDbMText + 8 +dimensions + 62 +256 +370 +5 + 6 +ByLayer + 10 +199.3117110405670758 + 20 +57.4187136394205169 + 30 +0.0 + 40 +1.0 + 41 +100.0 + 71 +1 + 72 +2 + 1 +nozzle\~hole\~\P0.5\~mm\~long + 7 +normallatin1 + 50 +0.0 + 73 +1 + 44 +1.0 + 0 +MTEXT + 5 +B1 +100 +AcDbEntity +100 +AcDbMText + 8 +dimensions + 62 +256 +370 +5 + 6 +ByLayer + 10 +196.2614415360461351 + 20 +72.2349020483521826 + 30 +0.0 + 40 +1.0 + 41 +100.0 + 71 +1 + 72 +2 + 1 +cone\~angle\Pmatches\~drill\~tip\P + 7 +normallatin1 + 50 +0.0 + 73 +1 + 44 +1.0 + 0 +LINE + 5 +B2 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +CONTINUOUS + 10 +162.25 + 20 +65.75 + 30 +0.0 + 11 +172.25 + 21 +65.75 + 31 +0.0 + 0 +LINE + 5 +B3 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +CONTINUOUS + 10 +172.25 + 20 +59.25 + 30 +0.0 + 11 +162.25 + 21 +59.25 + 31 +0.0 + 0 +DIMENSION + 5 +B4 +100 +AcDbEntity + 8 +dimensions + 62 +256 +370 +5 + 6 +CONTINUOUS +100 +AcDbDimension + 10 +172.25 + 20 +54.25 + 30 +0.0 + 11 +167.25 + 21 +55.875 + 31 +0.0 + 70 +0 + 71 +5 + 72 +1 + 41 +1.0 + 42 +0.0 + 1 + + 3 +Standard +100 +AcDbAlignedDimension + 13 +162.25 + 23 +57.75 + 33 +0.0 + 14 +172.25 + 24 +59.25 + 34 +0.0 + 50 +0.0 +100 +AcDbRotatedDimension + 0 +LINE + 5 +B5 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +CONTINUOUS + 10 +174.25 + 20 +66.5 + 30 +0.0 + 11 +174.5 + 21 +66.5 + 31 +0.0 + 0 +LINE + 5 +B6 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +CONTINUOUS + 10 +174.25 + 20 +67.25 + 30 +0.0 + 11 +174.25 + 21 +66.5 + 31 +0.0 + 0 +LINE + 5 +B7 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +CONTINUOUS + 10 +162.25 + 20 +67.25 + 30 +0.0 + 11 +174.25 + 21 +67.25 + 31 +0.0 + 0 +LINE + 5 +B8 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +CONTINUOUS + 10 +174.25 + 20 +57.75 + 30 +0.0 + 11 +174.25 + 21 +58.5 + 31 +0.0 + 0 +LINE + 5 +B9 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +CONTINUOUS + 10 +174.25 + 20 +57.75 + 30 +0.0 + 11 +162.25 + 21 +57.75 + 31 +0.0 + 0 +DIMENSION + 5 +BA +100 +AcDbEntity + 8 +dimensions + 62 +256 +370 +5 + 6 +CONTINUOUS +100 +AcDbDimension + 10 +174.25 + 20 +51.0 + 30 +0.0 + 11 +168.25 + 21 +52.625 + 31 +0.0 + 70 +0 + 71 +5 + 72 +1 + 41 +1.0 + 42 +0.0 + 1 + + 3 +Standard +100 +AcDbAlignedDimension + 13 +162.25 + 23 +57.75 + 33 +0.0 + 14 +174.25 + 24 +57.75 + 34 +0.0 + 50 +0.0 +100 +AcDbRotatedDimension + 0 +MTEXT + 5 +BB +100 +AcDbEntity +100 +AcDbMText + 8 +dimensions + 62 +256 +370 +5 + 6 +ByLayer + 10 +191.6095988772171381 + 20 +55.5717254004390142 + 30 +0.0 + 40 +1.0 + 41 +100.0 + 71 +1 + 72 +2 + 1 +3.5\~dia. + 7 +normallatin1 + 50 +0.0 + 73 +1 + 44 +1.0 + 0 +LINE + 5 +BC +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +ByLayer + 10 +196.6071428571428612 + 20 +62.75 + 30 +0.0 + 11 +196.6071428571428612 + 21 +62.25 + 31 +0.0 + 0 +LEADER + 5 +BD + 8 +dimensions + 62 +256 +370 +5 + 6 +ByLayer +100 +AcDbEntity +100 +AcDbLeader + 3 +Standard + 71 +1 + 72 +0 + 73 +3 + 74 +0 + 75 +0 + 40 +1.0 + 41 +10.0 + 76 +2 + 10 +196.2531572250571514 + 20 +65.0138431657144622 + 10 +199.443804320002414 + 20 +69.0263236032971577 + 0 +LEADER + 5 +BE + 8 +dimensions + 62 +256 +370 +5 + 6 +ByLayer +100 +AcDbEntity +100 +AcDbLeader + 3 +Standard + 71 +1 + 72 +0 + 73 +3 + 74 +0 + 75 +0 + 40 +1.0 + 41 +10.0 + 76 +2 + 10 +197.5659813264409763 + 20 +62.2603166811047402 + 10 +202.2158377130089661 + 20 +56.5558536913975871 + 0 +LINE + 5 +BF +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +ByLayer + 10 +195.75 + 20 +64.25 + 30 +0.0 + 11 +196.6071428571428612 + 21 +62.7500000000000071 + 31 +0.0 + 0 +LINE + 5 +C0 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +ByLayer + 10 +196.6071428571428612 + 20 +62.25 + 30 +0.0 + 11 +195.75 + 21 +60.75 + 31 +0.0 + 0 +LINE + 5 +C1 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +ByLayer + 10 +196.6071428571428612 + 20 +62.75 + 30 +0.0 + 11 +197.3541666666666572 + 21 +62.75 + 31 +0.0 + 0 +LINE + 5 +C2 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +ByLayer + 10 +196.6071428571428612 + 20 +62.25 + 30 +0.0 + 11 +197.3541666666666572 + 21 +62.25 + 31 +0.0 + 0 +LINE + 5 +C3 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +ByLayer + 10 +197.3541666666666572 + 20 +62.75 + 30 +0.0 + 11 +197.3541666666666572 + 21 +62.25 + 31 +0.0 + 0 +LINE + 5 +C4 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +ByLayer + 10 +195.75 + 20 +65.5 + 30 +0.0 + 11 +196.0416666666666572 + 21 +65.0 + 31 +0.0 + 0 +LEADER + 5 +C5 + 8 +dimensions + 62 +256 +370 +5 + 6 +ByLayer +100 +AcDbEntity +100 +AcDbLeader + 3 +Standard + 71 +1 + 72 +0 + 73 +3 + 74 +0 + 75 +0 + 40 +1.0 + 41 +10.0 + 76 +3 + 10 +197.5 + 20 +62.75 + 10 +203.25 + 20 +64.75 + 10 +203.25 + 20 +64.75 + 0 +LINE + 5 +C6 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +ByLayer + 10 +195.1666666666666572 + 20 +66.5 + 30 +0.0 + 11 +197.3541666666666572 + 21 +62.75 + 31 +0.0 + 0 +LINE + 5 +C7 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +ByLayer + 10 +174.5 + 20 +66.5 + 30 +0.0 + 11 +195.1666666666666572 + 21 +66.5 + 31 +0.0 + 0 +LINE + 5 +C8 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +ByLayer + 10 +195.75 + 20 +60.75 + 30 +0.0 + 11 +172.25 + 21 +60.75 + 31 +0.0 + 0 +LINE + 5 +C9 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +ByLayer + 10 +195.75 + 20 +64.25 + 30 +0.0 + 11 +195.75 + 21 +60.75 + 31 +0.0 + 0 +LINE + 5 +CA +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +ByLayer + 10 +172.25 + 20 +64.25 + 30 +0.0 + 11 +195.75 + 21 +64.25 + 31 +0.0 + 0 +DIMENSION + 5 +CB +100 +AcDbEntity + 8 +dimensions + 62 +256 +370 +5 + 6 +CONTINUOUS +100 +AcDbDimension + 10 +197.25 + 20 +49.25 + 30 +0.0 + 11 +179.75 + 21 +50.875 + 31 +0.0 + 70 +0 + 71 +5 + 72 +1 + 41 +1.0 + 42 +0.0 + 1 + + 3 +Standard +100 +AcDbAlignedDimension + 13 +162.25 + 23 +57.75 + 33 +0.0 + 14 +197.25 + 24 +62.5 + 34 +0.0 + 50 +0.0 +100 +AcDbRotatedDimension + 0 +MTEXT + 5 +CC +100 +AcDbEntity +100 +AcDbMText + 8 +Names + 62 +256 +370 +18 + 6 +ByLayer + 10 +172.5 + 20 +79.75 + 30 +0.0 + 40 +1.5 + 41 +100.0 + 71 +1 + 72 +2 + 1 +Brass\~Nozzle + 7 +normallatin1 + 50 +0.0 + 73 +1 + 44 +1.0 + 0 +LEADER + 5 +CD + 8 +dimensions + 62 +256 +370 +5 + 6 +CONTINUOUS +100 +AcDbEntity +100 +AcDbLeader + 3 +Standard + 71 +1 + 72 +0 + 73 +3 + 74 +0 + 75 +0 + 40 +1.0 + 41 +10.0 + 76 +2 + 10 +179.0 + 20 +66.5 + 10 +183.25 + 20 +70.0 + 0 +LINE + 5 +CE +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +CONTINUOUS + 10 +162.25 + 20 +62.5 + 30 +0.0 + 11 +162.25 + 21 +65.75 + 31 +0.0 + 0 +LINE + 5 +CF +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +CONTINUOUS + 10 +162.25 + 20 +65.75 + 30 +0.0 + 11 +162.25 + 21 +67.25 + 31 +0.0 + 0 +LINE + 5 +D0 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +CONTINUOUS + 10 +162.25 + 20 +57.75 + 30 +0.0 + 11 +162.25 + 21 +59.25 + 31 +0.0 + 0 +LINE + 5 +D1 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +CONTINUOUS + 10 +162.25 + 20 +59.25 + 30 +0.0 + 11 +162.25 + 21 +62.5 + 31 +0.0 + 0 +LINE + 5 +D2 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +CONTINUOUS + 10 +172.25 + 20 +65.75 + 30 +0.0 + 11 +172.25 + 21 +64.25 + 31 +0.0 + 0 +LINE + 5 +D3 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +CONTINUOUS + 10 +172.25 + 20 +64.25 + 30 +0.0 + 11 +172.25 + 21 +60.75 + 31 +0.0 + 0 +LINE + 5 +D4 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +CONTINUOUS + 10 +172.25 + 20 +60.75 + 30 +0.0 + 11 +172.25 + 21 +59.25 + 31 +0.0 + 0 +LINE + 5 +D5 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +CONTINUOUS + 10 +174.25 + 20 +58.5 + 30 +0.0 + 11 +195.25 + 21 +58.5 + 31 +0.0 + 0 +LINE + 5 +D6 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +CONTINUOUS + 10 +195.25 + 20 +58.5 + 30 +0.0 + 11 +197.3541666666666572 + 21 +62.25 + 31 +0.0 + 0 +MTEXT + 5 +D7 +100 +AcDbEntity +100 +AcDbMText + 8 +dimensions + 62 +256 +370 +5 + 6 +CONTINUOUS + 10 +181.0 + 20 +71.5 + 30 +0.0 + 40 +1.5 + 41 +100.0 + 71 +1 + 72 +0 + 1 +8\~mm\~dia + 7 +normallatin1 + 50 +0.0 + 73 +1 + 44 +1.0 + 0 +LINE + 5 +D8 +100 +AcDbEntity +100 +AcDbLine + 8 +centres + 62 +256 +370 +5 + 6 +CENTER + 10 +160.25 + 20 +62.5 + 30 +0.0 + 11 +201.25 + 21 +62.5 + 31 +0.0 + 0 +MTEXT + 5 +D9 +100 +AcDbEntity +100 +AcDbMText + 8 +dimensions + 62 +256 +370 +5 + 6 +CONTINUOUS + 10 +159.75 + 20 +72.75 + 30 +0.0 + 40 +1.5 + 41 +100.0 + 71 +1 + 72 +0 + 1 +9.5mm\~dia + 7 +normallatin1 + 50 +0.0 + 73 +1 + 44 +1.0 + 0 +LEADER + 5 +DA + 8 +dimensions + 62 +256 +370 +5 + 6 +CONTINUOUS +100 +AcDbEntity +100 +AcDbLeader + 3 +Standard + 71 +1 + 72 +0 + 73 +3 + 74 +0 + 75 +0 + 40 +1.0 + 41 +10.0 + 76 +2 + 10 +167.0 + 20 +67.25 + 10 +164.25 + 20 +70.75 + 0 +LEADER + 5 +DB + 8 +dimensions + 62 +256 +370 +5 + 6 +CONTINUOUS +100 +AcDbEntity +100 +AcDbLeader + 3 +Standard + 71 +1 + 72 +0 + 73 +3 + 74 +0 + 75 +0 + 40 +1.0 + 41 +10.0 + 76 +2 + 10 +169.25 + 20 +65.75 + 10 +177.25 + 20 +73.5 + 0 +MTEXT + 5 +DC +100 +AcDbEntity +100 +AcDbMText + 8 +dimensions + 62 +256 +370 +5 + 6 +CONTINUOUS + 10 +174.25 + 20 +75.25 + 30 +0.0 + 40 +1.5 + 41 +100.0 + 71 +1 + 72 +0 + 1 +6.4\~mm\~dia + 7 +normallatin1 + 50 +0.0 + 73 +1 + 44 +1.0 + 0 +LINE + 5 +DD +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +5 + 6 +DOT2 + 10 +114.5 + 20 +65.5 + 30 +0.0 + 11 +115.25 + 21 +64.25 + 31 +0.0 + 0 +LINE + 5 +DE +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +5 + 6 +DOT2 + 10 +115.25 + 20 +64.25 + 30 +0.0 + 11 +115.25 + 21 +60.75 + 31 +0.0 + 0 +LINE + 5 +DF +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +5 + 6 +DOT2 + 10 +115.25 + 20 +60.75 + 30 +0.0 + 11 +114.5 + 21 +59.5 + 31 +0.0 + 0 +LEADER + 5 +E0 + 8 +dimensions + 62 +256 +370 +5 + 6 +CONTINUOUS +100 +AcDbEntity +100 +AcDbLeader + 3 +Standard + 71 +1 + 72 +0 + 73 +3 + 74 +0 + 75 +0 + 40 +1.0 + 41 +10.0 + 76 +2 + 10 +115.0 + 20 +60.25 + 10 +120.0 + 20 +50.0 + 0 +MTEXT + 5 +E1 +100 +AcDbEntity +100 +AcDbMText + 8 +dimensions + 62 +256 +370 +5 + 6 +CONTINUOUS + 10 +120.25 + 20 +52.0 + 30 +0.0 + 40 +1.5 + 41 +100.0 + 71 +1 + 72 +0 + 1 +dish\~end\Pwith\~drill\Pby\~hand + 7 +normallatin1 + 50 +0.0 + 73 +1 + 44 +1.0 + 0 +LINE + 5 +E2 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +15 + 6 +ByLayer + 10 +155.0 + 20 +13.0 + 30 +0.0 + 11 +165.0 + 21 +13.0 + 31 +0.0 + 0 +LINE + 5 +E3 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +15 + 6 +ByLayer + 10 +165.0 + 20 +13.0 + 30 +0.0 + 11 +165.0 + 21 +-5.0 + 31 +0.0 + 0 +LINE + 5 +E4 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +15 + 6 +ByLayer + 10 +155.0 + 20 +-5.0 + 30 +0.0 + 11 +155.0 + 21 +13.0 + 31 +0.0 + 0 +LINE + 5 +E5 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +15 + 6 +ByLayer + 10 +165.0 + 20 +-5.0 + 30 +0.0 + 11 +155.0 + 21 +-5.0 + 31 +0.0 + 0 +LINE + 5 +E6 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +5 + 6 +DASHED + 10 +164.0 + 20 +-5.0 + 30 +0.0 + 11 +164.0 + 21 +-1.25 + 31 +0.0 + 0 +LINE + 5 +E7 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +5 + 6 +DASHED + 10 +164.0 + 20 +-1.25 + 30 +0.0 + 11 +163.25 + 21 +-0.5 + 31 +0.0 + 0 +LINE + 5 +E8 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +5 + 6 +DASHED + 10 +163.25 + 20 +-0.5 + 30 +0.0 + 11 +162.5 + 21 +-1.25 + 31 +0.0 + 0 +LINE + 5 +E9 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +5 + 6 +DASHED + 10 +162.5 + 20 +-1.25 + 30 +0.0 + 11 +162.5 + 21 +-5.0 + 31 +0.0 + 0 +LINE + 5 +EA +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +5 + 6 +DASHED + 10 +164.0 + 20 +-1.25 + 30 +0.0 + 11 +162.5 + 21 +-1.25 + 31 +0.0 + 0 +LINE + 5 +EB +100 +AcDbEntity +100 +AcDbLine + 8 +centres + 62 +256 +370 +5 + 6 +DASHDOTX2 + 10 +155.75 + 20 +9.0 + 30 +0.0 + 11 +163.75 + 21 +9.0 + 31 +0.0 + 0 +LINE + 5 +EC +100 +AcDbEntity +100 +AcDbLine + 8 +centres + 62 +256 +370 +5 + 6 +DASHDOTX2 + 10 +160.0 + 20 +12.5 + 30 +0.0 + 11 +160.0 + 21 +5.5 + 31 +0.0 + 0 +LINE + 5 +ED +100 +AcDbEntity +100 +AcDbLine + 8 +centres + 62 +256 +370 +5 + 6 +DASHDOTX2 + 10 +163.25 + 20 +0.75 + 30 +0.0 + 11 +163.25 + 21 +-6.5 + 31 +0.0 + 0 +DIMENSION + 5 +EE +100 +AcDbEntity + 8 +dimensions + 62 +256 +370 +5 + 6 +ByLayer +100 +AcDbDimension + 10 +160.0 + 20 +-9.5 + 30 +0.0 + 11 +157.5 + 21 +-7.875 + 31 +0.0 + 70 +0 + 71 +5 + 72 +1 + 41 +1.0 + 42 +0.0 + 1 + + 3 +Standard +100 +AcDbAlignedDimension + 13 +155.0 + 23 +-5.0 + 33 +0.0 + 14 +160.0 + 24 +9.0 + 34 +0.0 + 50 +0.0 +100 +AcDbRotatedDimension + 0 +DIMENSION + 5 +EF +100 +AcDbEntity + 8 +dimensions + 62 +256 +370 +5 + 6 +ByLayer +100 +AcDbDimension + 10 +163.25 + 20 +-13.25 + 30 +0.0 + 11 +159.125 + 21 +-11.625 + 31 +0.0 + 70 +0 + 71 +5 + 72 +1 + 41 +1.0 + 42 +0.0 + 1 + + 3 +Standard +100 +AcDbAlignedDimension + 13 +155.0 + 23 +-5.0 + 33 +0.0 + 14 +163.25 + 24 +-5.0 + 34 +0.0 + 50 +0.0 +100 +AcDbRotatedDimension + 0 +DIMENSION + 5 +F0 +100 +AcDbEntity + 8 +dimensions + 62 +256 +370 +5 + 6 +ByLayer +100 +AcDbDimension + 10 +165.0 + 20 +-16.25 + 30 +0.0 + 11 +160.0 + 21 +-14.625 + 31 +0.0 + 70 +0 + 71 +5 + 72 +1 + 41 +1.0 + 42 +0.0 + 1 + + 3 +Standard +100 +AcDbAlignedDimension + 13 +155.0 + 23 +-5.0 + 33 +0.0 + 14 +165.0 + 24 +-5.0 + 34 +0.0 + 50 +0.0 +100 +AcDbRotatedDimension + 0 +DIMENSION + 5 +F1 +100 +AcDbEntity + 8 +dimensions + 62 +256 +370 +5 + 6 +ByLayer +100 +AcDbDimension + 10 +146.25 + 20 +9.0000000000000018 + 30 +0.0 + 11 +144.625 + 21 +1.9999999999999993 + 31 +0.0 + 70 +0 + 71 +5 + 72 +1 + 41 +1.0 + 42 +0.0 + 1 + + 3 +Standard +100 +AcDbAlignedDimension + 13 +155.0 + 23 +-5.0 + 33 +0.0 + 14 +155.75 + 24 +9.0 + 34 +0.0 + 50 +90.0 +100 +AcDbRotatedDimension + 0 +DIMENSION + 5 +F2 +100 +AcDbEntity + 8 +dimensions + 62 +256 +370 +5 + 6 +ByLayer +100 +AcDbDimension + 10 +143.25 + 20 +13.0000000000000018 + 30 +0.0 + 11 +141.625 + 21 +4.0000000000000009 + 31 +0.0 + 70 +0 + 71 +5 + 72 +1 + 41 +1.0 + 42 +0.0 + 1 + + 3 +Standard +100 +AcDbAlignedDimension + 13 +155.0 + 23 +-5.0 + 33 +0.0 + 14 +155.0 + 24 +13.0 + 34 +0.0 + 50 +90.0 +100 +AcDbRotatedDimension + 0 +DIMENSION + 5 +F3 +100 +AcDbEntity + 8 +dimensions + 62 +256 +370 +5 + 6 +ByLayer +100 +AcDbDimension + 10 +168.0 + 20 +-0.5000000000000004 + 30 +0.0 + 11 +166.375 + 21 +-2.625 + 31 +0.0 + 70 +0 + 71 +5 + 72 +1 + 41 +1.0 + 42 +0.0 + 1 + + 3 +Standard +100 +AcDbAlignedDimension + 13 +165.0 + 23 +-4.75 + 33 +0.0 + 14 +164.5 + 24 +-0.5 + 34 +0.0 + 50 +90.0 +100 +AcDbRotatedDimension + 0 +POINT + 5 +F4 +100 +AcDbEntity +100 +AcDbPoint + 8 +outlines + 62 +256 +370 +9 + 6 +DOTX2 + 10 +165.0 + 20 +3.25 + 30 +0.0 + 0 +POINT + 5 +F5 +100 +AcDbEntity +100 +AcDbPoint + 8 +outlines + 62 +256 +370 +9 + 6 +DOTX2 + 10 +155.0 + 20 +3.25 + 30 +0.0 + 0 +LEADER + 5 +F6 + 8 +Names + 62 +256 +370 +5 + 6 +ByLayer +100 +AcDbEntity +100 +AcDbLeader + 3 +Standard + 71 +1 + 72 +0 + 73 +3 + 74 +0 + 75 +0 + 40 +1.0 + 41 +10.0 + 76 +2 + 10 +177.0 + 20 +-2.5 + 10 +171.25 + 20 +-9.0 + 0 +CIRCLE + 5 +F7 +100 +AcDbEntity +100 +AcDbCircle + 8 +outlines + 62 +256 +370 +13 + 6 +ByLayer + 10 +160.0 + 20 +9.0 + 30 +0.0 + 40 +3.0 + 0 +DIMENSION + 5 +F8 +100 +AcDbEntity + 8 +outlines + 62 +256 +370 +5 + 6 +ByLayer +100 +AcDbDimension + 10 +157.5038491169864585 + 20 +7.3358994113243128 + 30 +0.0 + 11 +159.0986121811340013 + 21 +10.3520817282989981 + 31 +0.0 + 70 +3 + 71 +5 + 72 +0 + 41 +1.0 + 42 +0.0 + 1 + + 3 +Standard +100 +AcDbDiametricDimension + 15 +162.4961508830135415 + 25 +10.6641005886756872 + 35 +0.0 + 40 +0.0 + 0 +LINE + 5 +F9 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +5 + 6 +DOTX2 + 10 +165.0 + 20 +5.0 + 30 +0.0 + 11 +155.0 + 21 +5.0 + 31 +0.0 + 0 +LINE + 5 +FA +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +5 + 6 +DOTX2 + 10 +165.0 + 20 +-3.0 + 30 +0.0 + 11 +155.0 + 21 +-3.0 + 31 +0.0 + 0 +LINE + 5 +FB +100 +AcDbEntity +100 +AcDbLine + 8 +centres + 62 +256 +370 +5 + 6 +CENTERX2 + 10 +169.0 + 20 +1.0 + 30 +0.0 + 11 +151.25 + 21 +1.0 + 31 +0.0 + 0 +LEADER + 5 +FC + 8 +dimensions + 62 +256 +370 +5 + 6 +CONTINUOUS +100 +AcDbEntity +100 +AcDbLeader + 3 +Standard + 71 +1 + 72 +0 + 73 +3 + 74 +0 + 75 +0 + 40 +1.0 + 41 +10.0 + 76 +2 + 10 +183.0 + 20 +-4.0 + 10 +192.0 + 20 +-9.75 + 0 +LEADER + 5 +FD + 8 +dimensions + 62 +256 +370 +5 + 6 +CONTINUOUS +100 +AcDbEntity +100 +AcDbLeader + 3 +Standard + 71 +1 + 72 +0 + 73 +3 + 74 +0 + 75 +0 + 40 +1.0 + 41 +10.0 + 76 +2 + 10 +186.0 + 20 +3.25 + 10 +194.25 + 20 +4.5 + 0 +LINE + 5 +FE +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +15 + 6 +ByLayer + 10 +185.0 + 20 +-5.0 + 30 +0.0 + 11 +185.0 + 21 +13.0 + 31 +0.0 + 0 +LINE + 5 +FF +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +5 + 6 +DASHED + 10 +187.0 + 20 +-5.0 + 30 +0.0 + 11 +187.0 + 21 +-1.25 + 31 +0.0 + 0 +LINE + 5 +100 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +5 + 6 +DASHED + 10 +187.0 + 20 +-1.25 + 30 +0.0 + 11 +187.75 + 21 +-0.5 + 31 +0.0 + 0 +LINE + 5 +101 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +5 + 6 +DASHED + 10 +187.75 + 20 +-0.5 + 30 +0.0 + 11 +188.5 + 21 +-1.25 + 31 +0.0 + 0 +LINE + 5 +102 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +5 + 6 +DASHED + 10 +188.5 + 20 +-1.25 + 30 +0.0 + 11 +188.5 + 21 +-5.0 + 31 +0.0 + 0 +LINE + 5 +103 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +5 + 6 +DASHED + 10 +188.5 + 20 +-1.25 + 30 +0.0 + 11 +187.0 + 21 +-1.25 + 31 +0.0 + 0 +LINE + 5 +104 +100 +AcDbEntity +100 +AcDbLine + 8 +centres + 62 +256 +370 +5 + 6 +DASHDOTX2 + 10 +187.75 + 20 +0.75 + 30 +0.0 + 11 +187.75 + 21 +-6.25 + 31 +0.0 + 0 +DIMENSION + 5 +105 +100 +AcDbEntity + 8 +dimensions + 62 +256 +370 +5 + 6 +ByLayer +100 +AcDbDimension + 10 +187.75 + 20 +-9.25 + 30 +0.0 + 11 +186.375 + 21 +-7.625 + 31 +0.0 + 70 +0 + 71 +5 + 72 +1 + 41 +1.0 + 42 +0.0 + 1 + + 3 +Standard +100 +AcDbAlignedDimension + 13 +185.0 + 23 +-5.0 + 33 +0.0 + 14 +187.75 + 24 +-5.0 + 34 +0.0 + 50 +0.0 +100 +AcDbRotatedDimension + 0 +DIMENSION + 5 +106 +100 +AcDbEntity + 8 +dimensions + 62 +256 +370 +5 + 6 +ByLayer +100 +AcDbDimension + 10 +192.5 + 20 +-12.5 + 30 +0.0 + 11 +188.75 + 21 +-10.875 + 31 +0.0 + 70 +0 + 71 +5 + 72 +1 + 41 +1.0 + 42 +0.0 + 1 + + 3 +Standard +100 +AcDbAlignedDimension + 13 +185.0 + 23 +-5.0 + 33 +0.0 + 14 +192.5 + 24 +-4.0 + 34 +0.0 + 50 +0.0 +100 +AcDbRotatedDimension + 0 +LINE + 5 +107 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +15 + 6 +ByLayer + 10 +200.0 + 20 +-5.0 + 30 +0.0 + 11 +200.0 + 21 +13.0 + 31 +0.0 + 0 +DIMENSION + 5 +108 +100 +AcDbEntity + 8 +dimensions + 62 +256 +370 +5 + 6 +ByLayer +100 +AcDbDimension + 10 +200.0 + 20 +-16.25 + 30 +0.0 + 11 +192.5 + 21 +-14.625 + 31 +0.0 + 70 +0 + 71 +5 + 72 +1 + 41 +1.0 + 42 +0.0 + 1 + + 3 +Standard +100 +AcDbAlignedDimension + 13 +185.0 + 23 +-5.0 + 33 +0.0 + 14 +200.0 + 24 +-5.0 + 34 +0.0 + 50 +0.0 +100 +AcDbRotatedDimension + 0 +LINE + 5 +109 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +15 + 6 +ByLayer + 10 +185.0 + 20 +13.0 + 30 +0.0 + 11 +200.0 + 21 +13.0 + 31 +0.0 + 0 +LINE + 5 +10A +100 +AcDbEntity +100 +AcDbLine + 8 +centres + 62 +256 +370 +5 + 6 +DASHDOTX2 + 10 +183.0 + 20 +9.0 + 30 +0.0 + 11 +203.0878378378378386 + 21 +9.0 + 31 +0.0 + 0 +LINE + 5 +10B +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +5 + 6 +DASHED + 10 +185.0 + 20 +12.0 + 30 +0.0 + 11 +200.0 + 21 +12.0 + 31 +0.0 + 0 +LINE + 5 +10C +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +5 + 6 +DASHED + 10 +185.0 + 20 +6.0 + 30 +0.0 + 11 +200.0 + 21 +6.0 + 31 +0.0 + 0 +LINE + 5 +10D +100 +AcDbEntity +100 +AcDbLine + 8 +centres + 62 +256 +370 +5 + 6 +CENTERX2 + 10 +197.75 + 20 +1.0 + 30 +0.0 + 11 +186.75 + 21 +1.0 + 31 +0.0 + 0 +LINE + 5 +10E +100 +AcDbEntity +100 +AcDbLine + 8 +centres + 62 +256 +370 +5 + 6 +CENTERX2 + 10 +192.5 + 20 +-3.75 + 30 +0.0 + 11 +192.5 + 21 +5.5 + 31 +0.0 + 0 +ARC + 5 +10F +100 +AcDbEntity + 8 +outlines + 62 +7 +370 +13 + 6 +CONTINUOUS +100 +AcDbCircle + 10 +192.5 + 20 +1.0 + 30 +0.0 + 40 +4.0 +100 +AcDbArc + 50 +277.1807557814582879 + 51 +262.8192442185417121 + 0 +LINE + 5 +110 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +15 + 6 +ByLayer + 10 +192.0 + 20 +-5.0 + 30 +0.0 + 11 +185.0 + 21 +-5.0 + 31 +0.0 + 0 +LINE + 5 +111 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +CONTINUOUS + 10 +192.0 + 20 +-2.9686269665968861 + 30 +0.0 + 11 +192.0 + 21 +-5.0 + 31 +0.0 + 0 +LINE + 5 +112 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +15 + 6 +ByLayer + 10 +200.0 + 20 +-5.0000000000000009 + 30 +0.0 + 11 +193.0 + 21 +-5.0 + 31 +0.0 + 0 +LINE + 5 +113 +100 +AcDbEntity +100 +AcDbLine + 8 +outlines + 62 +256 +370 +13 + 6 +CONTINUOUS + 10 +193.0 + 20 +-2.9686269665968861 + 30 +0.0 + 11 +193.0 + 21 +-5.0 + 31 +0.0 + 0 +MTEXT + 5 +114 +100 +AcDbEntity +100 +AcDbMText + 8 +dimensions + 62 +256 +370 +5 + 6 +CONTINUOUS + 10 +202.0 + 20 +-8.0 + 30 +0.0 + 40 +1.5 + 41 +100.0 + 71 +1 + 72 +0 + 1 +hacksaw\Pslot + 7 +normallatin1 + 50 +0.0 + 73 +1 + 44 +1.0 + 0 +MTEXT + 5 +115 +100 +AcDbEntity +100 +AcDbMText + 8 +dimensions + 62 +256 +370 +5 + 6 +CONTINUOUS + 10 +205.5 + 20 +5.25 + 30 +0.0 + 40 +1.5 + 41 +100.0 + 71 +1 + 72 +0 + 1 +8\~mm\~dia. + 7 +normallatin1 + 50 +0.0 + 73 +1 + 44 +1.0 + 0 +MTEXT + 5 +116 +100 +AcDbEntity +100 +AcDbMText + 8 +Names + 62 +256 +370 +5 + 6 +ByLayer + 10 +173.25 + 20 +-6.75 + 30 +0.0 + 40 +1.0 + 41 +100.0 + 71 +1 + 72 +2 + 1 +1.5mm\~dia\~for\Pthermistor + 7 +normallatin1 + 50 +0.0 + 73 +1 + 44 +1.0 + 0 +LEADER + 5 +117 + 8 +dimensions + 62 +256 +370 +5 + 6 +CONTINUOUS +100 +AcDbEntity +100 +AcDbLeader + 3 +Standard + 71 +1 + 72 +0 + 73 +3 + 74 +0 + 75 +0 + 40 +1.0 + 41 +10.0 + 76 +2 + 10 +186.9624984970426453 + 20 +-2.9357747697882726 + 10 +178.464203110813429 + 20 +-6.0260640011443494 + 0 +MTEXT + 5 +118 +100 +AcDbEntity +100 +AcDbMText + 8 +Names + 62 +256 +370 +18 + 6 +ByLayer + 10 +155.0 + 20 +30.0 + 30 +0.0 + 40 +1.5 + 41 +100.0 + 71 +1 + 72 +2 + 1 +Brass\~heater\~block\P\Pelevation\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~plan + 7 +normallatin1 + 50 +0.0 + 73 +1 + 44 +1.0 + 0 +LEADER + 5 +119 + 8 +dimensions + 62 +256 +370 +5 + 6 +CONTINUOUS +100 +AcDbEntity +100 +AcDbLeader + 3 +Standard + 71 +1 + 72 +0 + 73 +3 + 74 +0 + 75 +0 + 40 +1.0 + 41 +10.0 + 76 +2 + 10 +196.3878806526786605 + 20 +2.3177169235170574 + 10 +204.731661577340077 + 20 +4.1718904623307029 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +100 +AcDbDictionary +280 +0 +281 +1 + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +AcDbVariableDictionary +350 +11A + 0 +DICTIONARY + 5 +D +100 +AcDbDictionary +280 +0 +281 +1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +100 +AcDbDictionary +281 +1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +ACDBPLACEHOLDER + 5 +F + 0 +DICTIONARY + 5 +17 +100 +AcDbDictionary +280 +0 +281 +1 + 3 +Standard +350 +18 + 0 +MLINESTYLE + 5 +18 +100 +AcDbMlineStyle + 2 +STANDARD + 70 +0 + 3 + + 62 +256 + 51 +90.0 + 52 +90.0 + 71 +2 + 49 +0.5 + 62 +256 + 6 +BYLAYER + 49 +-0.5 + 62 +256 + 6 +BYLAYER + 0 +DICTIONARY + 5 +19 +100 +AcDbDictionary +280 +0 +281 +1 + 0 +DICTIONARY + 5 +1A +100 +AcDbDictionary +281 +1 + 3 +Layout1 +350 +1E + 3 +Layout2 +350 +26 + 3 +Model +350 +22 + 0 +LAYOUT + 5 +1E +100 +AcDbPlotSettings + 1 + + 2 +C:\Program Files\AutoCAD 2002\plotters\DWF ePlot (optimized for plotting).pc3 + 4 + + 6 + + 40 +0.0 + 41 +0.0 + 42 +0.0 + 43 +0.0 + 44 +0.0 + 45 +0.0 + 46 +0.0 + 47 +0.0 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +1.0 + 70 +688 + 72 +0 + 73 +0 + 74 +5 + 7 + + 75 +16 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +Layout1 + 70 +1 + 71 +1 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +100000000000000000000.0 + 24 +100000000000000000000.0 + 34 +100000000000000000000.0 + 15 +-1000000000000000000... [truncated message content] |
From: <adr...@us...> - 2011-02-21 14:08:30
|
Revision: 4038 http://reprap.svn.sourceforge.net/reprap/?rev=4038&view=rev Author: adrian-bowyer Date: 2011-02-21 14:08:24 +0000 (Mon, 21 Feb 2011) Log Message: ----------- More messing about with the OpenSCAD Huxley design. Modified Paths: -------------- trunk/huxley/OpenSCAD-huxley/extruder-2.scad Modified: trunk/huxley/OpenSCAD-huxley/extruder-2.scad =================================================================== --- trunk/huxley/OpenSCAD-huxley/extruder-2.scad 2011-02-21 00:21:40 UTC (rev 4037) +++ trunk/huxley/OpenSCAD-huxley/extruder-2.scad 2011-02-21 14:08:24 UTC (rev 4038) @@ -85,26 +85,26 @@ } } -module m6_shaft(body=true) +module m6_shaft(body=true, bearing_gap=28) { - translate([0,27.5,0]) + translate([0,-17,0]) rotate([-90,0,0]) { union() { + translate([0,0,(bearing_gap+27)/2]) + if(body) + rod(bearing_gap+27); + else + cylinder(h=bearing_gap+52,r=7.5,center=true); - if(body) - rod(55); - else - cylinder(h=80,r=7.5,center=true); - - translate([0,0,22]) + translate([0,0,bearing_gap+22]) if(body) cylinder(h=6,r=9.5,center=true); else cylinder(h=6.2,r=10,center=true); - translate([0,0,-6]) + translate([0,0,22]) if(body) cylinder(h=6,r=9.5,center=true); else @@ -113,7 +113,10 @@ } } -driven_gear(); -translate([0,-17,0]) -m6_shaft(); -//accessories(); \ No newline at end of file + +translate([3,-20,35]) +{ + m6_shaft(body=true, bearing_gap=28); + driven_gear(wingnut=true); +} +accessories(); \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <adr...@us...> - 2011-02-21 00:21:46
|
Revision: 4037 http://reprap.svn.sourceforge.net/reprap/?rev=4037&view=rev Author: adrian-bowyer Date: 2011-02-21 00:21:40 +0000 (Mon, 21 Feb 2011) Log Message: ----------- More messing about with the OpenSCAD Huxley design. Modified Paths: -------------- trunk/huxley/OpenSCAD-huxley/extruder.scad Added Paths: ----------- trunk/huxley/OpenSCAD-huxley/extruder-2.scad Added: trunk/huxley/OpenSCAD-huxley/extruder-2.scad =================================================================== --- trunk/huxley/OpenSCAD-huxley/extruder-2.scad (rev 0) +++ trunk/huxley/OpenSCAD-huxley/extruder-2.scad 2011-02-21 00:21:40 UTC (rev 4037) @@ -0,0 +1,119 @@ +include <parameters.scad>; +use <library.scad>; + +module accessories(holes=false, angle=270) +{ + for(i=[-1,1]) + { + + // X axis rods + + if(!holes) + translate([0, i*x_bar_gap/2 , 0]) + rotate([0,90,0]) + rod(100); + // Belts + + if(!holes) + translate([0, i*40 , 0]) + cube([100,2,6], center=true); + + //360 bearings + + translate([i*20, -x_bar_gap/2, 0]) + rotate([90,0,-90]) + if(holes) + adjustable_bearing(true,angle); + else + adjustable_bearing(true,-1); + + } + + // 180 bearing + + translate([20, x_bar_gap/2, 0]) + rotate([90, 0,90]) + if(holes) + adjustable_bearing(false,360-angle); + else + adjustable_bearing(false,-1); + // Filament + + cylinder(h=150,r=1,center=true, $fn=15); + + // Nozzle + + translate([0, 0, -23]) + cylinder(h=46,r=4,center=true, $fn=15); + +} + +module driven_gear(wingnut=false) +{ + translate([0,-7,0]) + rotate([-90,0,0]) + difference() + { + union() + { + grub_gear(hub_height = 10, hub_radius = 10, shaft_radius = 3, height = 7, + number_of_teeth = 31, inner_radius = 22, outer_radius = 25, angle=15); + if(wingnut) + difference() + { + strut(p1=[0,-7,-5], p2=[0,7,-5], wide = 10, deep = 15, round=2); + cylinder(h=50,r=9, center=true,$fn=20); + } + } + if(wingnut) + { + intersection() + { + translate([0,16,-14]) + rotate([-30,0,0]) + cube([4, 26, 20], center=true); + cylinder(h=50,r=13, center=true,$fn=20); + } + intersection() + { + translate([0,-16,-14]) + rotate([30,0,0]) + cube([4, 26, 20], center=true); + cylinder(h=50,r=13, center=true,$fn=20); + } + } + } +} + +module m6_shaft(body=true) +{ + translate([0,27.5,0]) + rotate([-90,0,0]) + { + union() + { + + if(body) + rod(55); + else + cylinder(h=80,r=7.5,center=true); + + translate([0,0,22]) + if(body) + cylinder(h=6,r=9.5,center=true); + else + cylinder(h=6.2,r=10,center=true); + + translate([0,0,-6]) + if(body) + cylinder(h=6,r=9.5,center=true); + else + cylinder(h=6.2,r=10,center=true); + } + } +} + +driven_gear(); +translate([0,-17,0]) +m6_shaft(); +//accessories(); \ No newline at end of file Modified: trunk/huxley/OpenSCAD-huxley/extruder.scad =================================================================== --- trunk/huxley/OpenSCAD-huxley/extruder.scad 2011-02-16 12:20:16 UTC (rev 4036) +++ trunk/huxley/OpenSCAD-huxley/extruder.scad 2011-02-21 00:21:40 UTC (rev 4037) @@ -15,30 +15,38 @@ if(!holes) translate([0, i*40 , 0]) cube([100,2,6], center=true); - - - translate([-13+i*20, x_bar_gap/2, 0]) - rotate([-90,180,90]) - if(holes) - adjustable_bearing(true,angle); - else - adjustable_bearing(true,-1); } + translate([7, x_bar_gap/2, 0]) + rotate([-90,180,90]) + if(holes) + adjustable_bearing(true,angle); + else + adjustable_bearing(true,-1); + translate([-35, x_bar_gap/2, 0]) + rotate([-90,180,90]) + if(holes) + adjustable_bearing(true,angle); + else + adjustable_bearing(true,-1); + if(holes) translate([14, 25-4 , 0]) rotate([0,0,angle]) - teardrop(h=40,r=2,truncateMM=0.5); + if(huxley) + teardrop(h=40,r=screwsize/2,truncateMM=0.5); + else + teardrop(h=40,r=2,truncateMM=0.5); - if(holes) + if(holes && mendel) translate([14, -25-4 , 0]) - rotate([0,0,360-angle]) + rotate([0,0,angle]) teardrop(h=40,r=2,truncateMM=0.5); - if(holes) + if(holes && huxley) translate([14, 25-12 , 0]) rotate([0,0,angle]) - teardrop(h=40,r=2,truncateMM=0.5); + teardrop(h=40,r=screwsize/2,truncateMM=0.5); translate([15, -x_bar_gap/2 + 3, 0]) rotate([-90,180,-90]) @@ -232,35 +240,64 @@ } -module m6_shaft(body=true) +module m6_shaft(body=true, gearonly = false) { rotate([-90,0,0]) { union() { - if(body) - translate([0,0,-17]) - rod(55); - else - cylinder(h=80,r=7.5,center=true); - translate([0,0,5]) - if(body) - cylinder(h=6,r=9.5,center=true); - else - cylinder(h=6.2,r=10,center=true); + if(gearonly || body) + translate([0,0,-33]) + rotate([0,0,2]) + difference() + { + union() + { + grub_gear(hub_height = 10, hub_radius = 10, shaft_radius = 3, height = 7, + number_of_teeth = 31, inner_radius = 22, outer_radius = 25, angle=15); + difference() + { + strut(p1=[0,-13,-5], p2=[0,13,-5], wide = 10, deep = 15, round=2); + cylinder(h=50,r=9, center=true,$fn=20); + } + } + intersection() + { + translate([0,18,-14]) + rotate([-45,0,0]) + cube([4, 26, 20], center=true); + cylinder(h=50,r=20, center=true,$fn=20); + } + intersection() + { + translate([0,-18,-14]) + rotate([45,0,0]) + cube([4, 26, 20], center=true); + cylinder(h=50,r=20, center=true,$fn=20); + } - translate([0,0,-23]) + } + if(!gearonly) + { if(body) - cylinder(h=6,r=9.5,center=true); + translate([0,0,-17]) + rod(55); else - cylinder(h=6.2,r=10,center=true); - - if(body) - translate([0,0,-33]) - rotate([0,0,2]) - grub_gear(hub_height = 10, hub_radius = 9.5, shaft_radius = 3, height = 7, - number_of_teeth = 31, inner_radius = 22, outer_radius = 25, angle=15); + cylinder(h=80,r=7.5,center=true); + + translate([0,0,5]) + if(body) + cylinder(h=6,r=9.5,center=true); + else + cylinder(h=6.2,r=10,center=true); + + translate([0,0,-23]) + if(body) + cylinder(h=6,r=9.5,center=true); + else + cylinder(h=6.2,r=10,center=true); + } } } } @@ -271,7 +308,7 @@ { rotate([0,-60,0]) translate([-32, 25,0]) - m6_shaft(body=false); + m6_shaft(body=false,gearonly = false); translate([-42+32*cos(-60),16,32*sin(-60)]) idler(body=false); @@ -333,32 +370,35 @@ cube([20, 20, 5]); translate([-8,0,0]) cube([12, 20, 5]); - translate([17, 15, -1]) - intersection() + if(huxley) { - difference() + translate([17, 15, -1]) + intersection() { - cube([28, 30, 35],center=true); difference() { - translate([0,0,25]) - rotate([-25,0,0]) - cube([40, 60, 40],center=true); - translate([0,0,-20]) - cube([42, 62, 42],center=true); + cube([28, 30, 35],center=true); + difference() + { + translate([0,0,25]) + rotate([-25,0,0]) + cube([40, 60, 40],center=true); + translate([0,0,-20]) + cube([42, 62, 42],center=true); + } + } - + union() + { + translate([0,0,15]) + rotate([-25,0,0]) + cube([40, 60, 40],center=true); + translate([0,20,5]) + rotate([-45,0,0]) + cube([42, 62, 42],center=true); + } + } - union() - { - translate([0,0,15]) - rotate([-25,0,0]) - cube([40, 60, 40],center=true); - translate([0,20,5]) - rotate([-45,0,0]) - cube([42, 62, 42],center=true); - } - } } plate_holes(); @@ -367,17 +407,29 @@ } +module belt_clamp() +{ + difference() + { + translate([-(50-nema11_square/2-2), 24,nema11_square/2 + 2 - 69]) + translate([26, 35, -9.5]) + cube([7,7,18.5], center=true); + plate_holes(); + } +} + motor_plate(); back_plate(); +belt_clamp(); rotate([0,-60,0]) translate([-32, 25,0]) - m6_shaft(body=true); + m6_shaft(body=true, gearonly=true); translate([-42+32*cos(-60),16,32*sin(-60)]) idler(body=true); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <adr...@us...> - 2011-02-16 12:20:22
|
Revision: 4036 http://reprap.svn.sourceforge.net/reprap/?rev=4036&view=rev Author: adrian-bowyer Date: 2011-02-16 12:20:16 +0000 (Wed, 16 Feb 2011) Log Message: ----------- More messing about with the OpenSCAD Huxley design. Modified Paths: -------------- trunk/huxley/OpenSCAD-huxley/extruder.scad trunk/huxley/OpenSCAD-huxley/parameters.scad Modified: trunk/huxley/OpenSCAD-huxley/extruder.scad =================================================================== --- trunk/huxley/OpenSCAD-huxley/extruder.scad 2011-02-16 00:03:55 UTC (rev 4035) +++ trunk/huxley/OpenSCAD-huxley/extruder.scad 2011-02-16 12:20:16 UTC (rev 4036) @@ -1,7 +1,7 @@ include <parameters.scad>; use <library.scad>; -module accessories(holes=false) +module accessories(holes=false, angle=270) { translate([-3,15,-62]) { @@ -12,11 +12,6 @@ rotate([0,90,0]) rod(100); - // Mendel centres - if(holes) - translate([12, i*25-4 , 0]) - cylinder(h=40,r=2,center=true, $fn=15); - if(!holes) translate([0, i*40 , 0]) cube([100,2,6], center=true); @@ -25,15 +20,30 @@ translate([-13+i*20, x_bar_gap/2, 0]) rotate([-90,180,90]) if(holes) - adjustable_bearing(true,90); + adjustable_bearing(true,angle); else adjustable_bearing(true,-1); } + if(holes) + translate([14, 25-4 , 0]) + rotate([0,0,angle]) + teardrop(h=40,r=2,truncateMM=0.5); + + if(holes) + translate([14, -25-4 , 0]) + rotate([0,0,360-angle]) + teardrop(h=40,r=2,truncateMM=0.5); + + if(holes) + translate([14, 25-12 , 0]) + rotate([0,0,angle]) + teardrop(h=40,r=2,truncateMM=0.5); + translate([15, -x_bar_gap/2 + 3, 0]) rotate([-90,180,-90]) if(holes) - adjustable_bearing(false,90); + adjustable_bearing(false,360-angle); else adjustable_bearing(false,-1); @@ -187,6 +197,8 @@ cylinder(h = 60, r = screwsize/2, center=true,$fn=10); translate([0,0,23]) cylinder(h = 20, r = screwsize, center=true,$fn=10); + translate([0,0,-23]) + cylinder(h = 20, r = screwsize, center=true,$fn=6); } } } @@ -203,9 +215,10 @@ difference() { cube([59,16,10], center = true); - for(i=[-1,1]) - translate([i*(59/2-15/2), 0, 5]) - cube([16,20,10], center = true); + translate([59/2-16/2, 0, 5]) + cube([22,20,10], center = true); + translate([-59/2+8/2, 0, 5]) + cube([13,20,10], center = true); } translate([7,0,-14]) cube([10,16,10], center = true); @@ -271,6 +284,15 @@ { retaining_block(body=false); nozzle_block(body=false); + for(i=[-1,1]) + for(j=[0,1]) + translate([j*18,0,-34+i*6]) + rotate([90,0,0]) + { + cylinder(h=200,r=screwsize/2, center=true, $fn=10); + translate([0,0,-9]) + cylinder(h=50,r=screwsize, center=true, $fn=6); + } } /*translate([-55,0,0]) @@ -295,7 +317,7 @@ cube([12, 20, 5]); } plate_holes(); - accessories(holes=true); + accessories(holes=true, angle=90); } } @@ -310,15 +332,44 @@ translate([30,0,0]) cube([20, 20, 5]); translate([-8,0,0]) - cube([14, 20, 5]); + cube([12, 20, 5]); + translate([17, 15, -1]) + intersection() + { + difference() + { + cube([28, 30, 35],center=true); + difference() + { + translate([0,0,25]) + rotate([-25,0,0]) + cube([40, 60, 40],center=true); + translate([0,0,-20]) + cube([42, 62, 42],center=true); + } + + } + union() + { + translate([0,0,15]) + rotate([-25,0,0]) + cube([40, 60, 40],center=true); + translate([0,20,5]) + rotate([-45,0,0]) + cube([42, 62, 42],center=true); + } + + } } plate_holes(); - accessories(holes=true); + accessories(holes=true, angle=270); } } + + motor_plate(); back_plate(); @@ -338,7 +389,7 @@ { translate([-42+32*cos(-60),16,32*sin(-60)]) nozzle_block(body=true); -accessories(holes=true); +accessories(holes=true, angle=90); } Modified: trunk/huxley/OpenSCAD-huxley/parameters.scad =================================================================== --- trunk/huxley/OpenSCAD-huxley/parameters.scad 2011-02-16 00:03:55 UTC (rev 4035) +++ trunk/huxley/OpenSCAD-huxley/parameters.scad 2011-02-16 12:20:16 UTC (rev 4036) @@ -1,5 +1,8 @@ -// Parameters file for RepRap Huxley +// Parameters file for RepRap Huxley (and maybe Mendel) +huxley=true; +mendel=!huxley; + pi=3.14159265; // The relative location in your file system where the .dxf files are This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <adr...@us...> - 2011-02-16 00:04:02
|
Revision: 4035 http://reprap.svn.sourceforge.net/reprap/?rev=4035&view=rev Author: adrian-bowyer Date: 2011-02-16 00:03:55 +0000 (Wed, 16 Feb 2011) Log Message: ----------- More messing about with the OpenSCAD Huxley design. Modified Paths: -------------- trunk/huxley/OpenSCAD-huxley/extruder.scad trunk/huxley/OpenSCAD-huxley/library.scad Modified: trunk/huxley/OpenSCAD-huxley/extruder.scad =================================================================== --- trunk/huxley/OpenSCAD-huxley/extruder.scad 2011-02-13 22:37:58 UTC (rev 4034) +++ trunk/huxley/OpenSCAD-huxley/extruder.scad 2011-02-16 00:03:55 UTC (rev 4035) @@ -1,33 +1,41 @@ include <parameters.scad>; use <library.scad>; -module accessories() +module accessories(holes=false) { translate([-3,15,-62]) { for(i=[-1,1]) { + if(!holes) translate([0, i*x_bar_gap/2 , 0]) rotate([0,90,0]) rod(100); // Mendel centres - - translate([3, i*25 , 0]) + if(holes) + translate([12, i*25-4 , 0]) cylinder(h=40,r=2,center=true, $fn=15); + if(!holes) translate([0, i*40 , 0]) cube([100,2,6], center=true); - translate([-10+i*25, x_bar_gap/2, 0]) + translate([-13+i*20, x_bar_gap/2, 0]) rotate([-90,180,90]) - adjustable_bearing(true,false); + if(holes) + adjustable_bearing(true,90); + else + adjustable_bearing(true,-1); } - translate([7, -x_bar_gap/2 + 3, 0]) + translate([15, -x_bar_gap/2 + 3, 0]) rotate([-90,180,-90]) - adjustable_bearing(false,false); + if(holes) + adjustable_bearing(false,90); + else + adjustable_bearing(false,-1); } @@ -191,8 +199,14 @@ { union() { - translate([7,0,-20]) - cube([29,16,10], center = true); + translate([13,0,-20]) + difference() + { + cube([59,16,10], center = true); + for(i=[-1,1]) + translate([i*(59/2-15/2), 0, 5]) + cube([16,20,10], center = true); + } translate([7,0,-14]) cube([10,16,10], center = true); } @@ -274,8 +288,14 @@ difference() { translate([nema11_square/2+2-50, 0,nema11_square/2+2-69]) + union() + { cube([50, 8, 69]); + translate([38,-20,0]) + cube([12, 20, 5]); + } plate_holes(); + accessories(holes=true); } } @@ -284,8 +304,16 @@ difference() { translate([-(50-nema11_square/2-2), 24,nema11_square/2 + 2 - 69]) + union() + { cube([50-nema11_square/2, 8, 69-nema11_square - 4]); + translate([30,0,0]) + cube([20, 20, 5]); + translate([-8,0,0]) + cube([14, 20, 5]); + } plate_holes(); + accessories(holes=true); } } @@ -304,11 +332,16 @@ idler(body=true); translate([-42+32*cos(-60),16,32*sin(-60)]) + retaining_block(body=true); + +difference() { - retaining_block(body=true); +translate([-42+32*cos(-60),16,32*sin(-60)]) nozzle_block(body=true); +accessories(holes=true); } + rotate([90,0,0]) grub_gear(hub_height = 7, hub_radius = 9.5, shaft_radius = 2.5, height = 8, number_of_teeth = 11, inner_radius = 6.5, outer_radius = 9, angle=25); Modified: trunk/huxley/OpenSCAD-huxley/library.scad =================================================================== --- trunk/huxley/OpenSCAD-huxley/library.scad 2011-02-13 22:37:58 UTC (rev 4034) +++ trunk/huxley/OpenSCAD-huxley/library.scad 2011-02-16 00:03:55 UTC (rev 4035) @@ -29,23 +29,31 @@ } // The distance between the 3mm screw centres is 18 mm -// Set mounts true to get mounting holes, false to get the bearing +// Set mounts negative to get the bearing, positive to define the teardrop angle, > 360 to get circular holes // Set b360 true for a 360 degree bearing, false for a 180 one. -module adjustable_bearing(b360, mounts=false) +module adjustable_bearing(b360=true, mounts=-1) { translate([-13,-9,0]) // Centre the shaft on the z axis { - if(mounts) + if(mounts>=0) { union() { translate([4, -10, 0])rotate(90, [0, 1, 0]) rotate(-90, [1, 0, 0]) - cylinder(r=1.5, h=50, centre = true, $fn=10); + if(mounts > 360) + cylinder(r=1.5, h=50, centre = true, $fn=10); + else + rotate([0,0,mounts]) + teardrop(r=1.5, h=50, truncateMM=0.5); translate([22, -10, 0])rotate(90, [0, 1, 0]) rotate(-90, [1, 0, 0]) - cylinder(r=1.5, h=50, centre = true, $fn=10); + if(mounts > 360) + cylinder(r=1.5, h=50, centre = true, $fn=10); + else + rotate([0,0,mounts]) + teardrop(r=1.5, h=50, truncateMM=0.5); } }else { @@ -54,10 +62,10 @@ bearingProfile(b360); translate([4, -10, 0])rotate(90, [0, 1, 0]) rotate(-90, [1, 0, 0]) - teardrop(r=1.5, h=50, truncateMM=-1); + teardrop(r=1.5, h=50, truncateMM=0.5); translate([22, -10, 0])rotate(90, [0, 1, 0]) rotate(-90, [1, 0, 0]) - teardrop(r=1.5, h=50, truncateMM=-1); + teardrop(r=1.5, h=50, truncateMM=0.5); } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <adr...@us...> - 2011-02-13 22:38:04
|
Revision: 4034 http://reprap.svn.sourceforge.net/reprap/?rev=4034&view=rev Author: adrian-bowyer Date: 2011-02-13 22:37:58 +0000 (Sun, 13 Feb 2011) Log Message: ----------- More messing about with the OpenSCAD Huxley design. Modified Paths: -------------- trunk/huxley/OpenSCAD-huxley/extruder.scad Modified: trunk/huxley/OpenSCAD-huxley/extruder.scad =================================================================== --- trunk/huxley/OpenSCAD-huxley/extruder.scad 2011-02-13 21:21:46 UTC (rev 4033) +++ trunk/huxley/OpenSCAD-huxley/extruder.scad 2011-02-13 22:37:58 UTC (rev 4034) @@ -11,6 +11,11 @@ rotate([0,90,0]) rod(100); + // Mendel centres + + translate([3, i*25 , 0]) + cylinder(h=40,r=2,center=true, $fn=15); + translate([0, i*40 , 0]) cube([100,2,6], center=true); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <adr...@us...> - 2011-02-13 21:21:52
|
Revision: 4033 http://reprap.svn.sourceforge.net/reprap/?rev=4033&view=rev Author: adrian-bowyer Date: 2011-02-13 21:21:46 +0000 (Sun, 13 Feb 2011) Log Message: ----------- More messing about with the OpenSCAD Huxley design. Modified Paths: -------------- trunk/huxley/OpenSCAD-huxley/extruder.scad trunk/huxley/OpenSCAD-huxley/library.scad Modified: trunk/huxley/OpenSCAD-huxley/extruder.scad =================================================================== --- trunk/huxley/OpenSCAD-huxley/extruder.scad 2011-02-12 17:42:59 UTC (rev 4032) +++ trunk/huxley/OpenSCAD-huxley/extruder.scad 2011-02-13 21:21:46 UTC (rev 4033) @@ -1,8 +1,48 @@ include <parameters.scad>; use <library.scad>; -module idler_holes(screws=true, bearing=true, filament=true) +module accessories() { + translate([-3,15,-62]) + { + for(i=[-1,1]) + { + translate([0, i*x_bar_gap/2 , 0]) + rotate([0,90,0]) + rod(100); + + translate([0, i*40 , 0]) + cube([100,2,6], center=true); + + + translate([-10+i*25, x_bar_gap/2, 0]) + rotate([-90,180,90]) + adjustable_bearing(true,false); + } + + translate([7, -x_bar_gap/2 + 3, 0]) + rotate([-90,180,-90]) + adjustable_bearing(false,false); + + } + +/*translate([-42+32*cos(-60),16,32*sin(-60)]) + translate([7,0,-50+12.5]) + cylinder(h=25,r=4,center=true, $fn=15);*/ +} + +module filament() +{ + union() + { + cylinder(h=100,r=1,center=true, $fn=15); + translate([0,0,-10]) + cylinder(h=10,r1=1, r2=2,center=true, $fn=15); + } +} + +module idler_holes(screws=true, bearing=true) +{ translate([1,0,0]) union() { @@ -23,28 +63,25 @@ { rotate([90,0,0]) { - cylinder(h=30,r=screwsize/2,center=true, $fn=10); - cylinder(h=4.2,r=5,center=true, $fn=20); + translate([0,0,-15]) + rotate([0,0,180]) + { + teardrop(h=30,r=screwsize/2,truncateMM=0.5); + translate([0,0,-19]) + { + teardrop(h=30,r=screwsize,truncateMM=0.5); + translate([0,0,59]) + pentanut(height=20); + } + } + cylinder(h=4.2,r=6,center=true, $fn=20); translate([5,0,0]) - cube([10,11,4.2],center=true); + cube([10,12,4.2],center=true); } } - if(filament) - { - translate([6,0,0]) - { - cylinder(h=100,r=1,center=true, $fn=15); - translate([0,0,-33]) - cylinder(h=30,r=4.2,center=true, $fn=25); - for(i=[-1,1]) - rotate([0,0,90]) - translate([0,i*19/2,-35]) - cylinder(h=50,r=screwsize/2,center=true, $fn=15); - } - } } } @@ -55,31 +92,111 @@ { difference() { - translate([-2,0,0]) - cube([12,15,16], center = true); + union() + { + translate([-2,0,0]) + cube([12,15,16], center = true); + translate([1,0,10]) + cube([18,10,5], center = true); + } idler_holes(); + translate([7,0,0]) + filament(); } } else - idler_holes(); + idler_holes(screws=true, bearing=false, filament=true); } -module l_block(body=true) +module retaining_block_holes(teardrop=false) { + translate([24,30,0]) + rotate([90,180,0]) + if(teardrop) + teardrop(h = 60, r = screwsize/2, truncateMM=0.5); + else + translate([0,0,30]) + { + cylinder(h = 60, r = screwsize/2, center=true,$fn=10); + translate([0,0,23]) + cylinder(h = 20, r = screwsize, center=true,$fn=10); + } + + if(!teardrop) + translate([21,0,0]) + for(i=[-1,1]) + translate([0,i*8,0]) + rotate([0,0,45]) + cube([5,5,18], center = true); +} + +module retaining_block(body=true) +{ if(body) { difference() { + translate([21,0,0]) + union() + { + cube([14,16,18], center = true); + for(i=[-1,1]) + translate([0,i*8,0]) + rotate([0,0,45]) + cube([5,5,18], center = true); + } + idler_holes(screws=true, bearing=false,filament=true); + retaining_block_holes(teardrop=true); + } + } else + retaining_block_holes(teardrop=false); +} + +module nozzle_block_holes(teardrop=false, filament=true) +{ + translate([7,0,0]) + union() + { + filament(); + + translate([0,0,-50]) + rotate([0,0,90]) + teardrop(h=30,r=4.2,truncateMM=0.5); + for(i=[-1,1]) + rotate([0,0,90]) + translate([0,i*19/2,-35]) + teardrop(h=50,r=screwsize/2,truncateMM=0.5); + + for(i=[-1,1]) + translate([i*6,30,-20]) + rotate([90,-90,0]) + translate([0,0,30]) + { + cylinder(h = 60, r = screwsize/2, center=true,$fn=10); + translate([0,0,23]) + cylinder(h = 20, r = screwsize, center=true,$fn=10); + } + } +} + +module nozzle_block(body=true) +{ + if(body) + { + difference() + { union() { - translate([19,0,0]) - cube([10,16,18], center = true); translate([7,0,-20]) cube([29,16,10], center = true); + translate([7,0,-14]) + cube([10,16,10], center = true); } + idler_holes(screws=true, bearing=false,filament=true); + nozzle_block_holes(teardrop=true); } } else - idler_holes(); + nozzle_block_holes(teardrop=false); } @@ -116,35 +233,64 @@ } } -difference() +module plate_holes() { + union() + { + rotate([0,-60,0]) + translate([-32, 25,0]) + m6_shaft(body=false); + + translate([-42+32*cos(-60),16,32*sin(-60)]) + idler(body=false); + + translate([0, 11.5,0]) + rotate([-90,0,0]) + nema11(body=false, slots = 5, counterbore=8); + + translate([-42+32*cos(-60),16,32*sin(-60)]) + { + retaining_block(body=false); + nozzle_block(body=false); + } -union() + /*translate([-55,0,0]) + rotate([0, 30, 0]) + cube([50,80,100], center=true); + + translate([32,0,-40]) + rotate([0, 28, 0]) + cube([50,80,100], center=true);*/ + } +} + +module motor_plate() { -translate([nema11_square/2+2, 0,nema11_square/2+2]) - mirror([1,0,1]) - cube([69, 8, 50]); + difference() + { + translate([nema11_square/2+2-50, 0,nema11_square/2+2-69]) + cube([50, 8, 69]); + plate_holes(); + } +} -translate([nema11_square/2+2-18, 24,-nema11_square/2-2]) - mirror([1,0,1]) - cube([53-nema11_square/2-2, 8, 50-18]); +module back_plate() +{ + difference() + { + translate([-(50-nema11_square/2-2), 24,nema11_square/2 + 2 - 69]) + cube([50-nema11_square/2, 8, 69-nema11_square - 4]); + plate_holes(); + } } -rotate([0,-60,0]) - translate([-32, 25,0]) - m6_shaft(body=false); -translate([-42+32*cos(-60),16,32*sin(-60)]) - idler(body=false); +motor_plate(); -translate([0, 11.5,0]) - rotate([-90,0,0]) - nema11(body=false, slots = 5, counterbore=8); +back_plate(); -} - rotate([0,-60,0]) translate([-32, 25,0]) m6_shaft(body=true); @@ -153,7 +299,10 @@ idler(body=true); translate([-42+32*cos(-60),16,32*sin(-60)]) - l_block(body=true); +{ + retaining_block(body=true); + nozzle_block(body=true); +} rotate([90,0,0]) grub_gear(hub_height = 7, hub_radius = 9.5, shaft_radius = 2.5, height = 8, number_of_teeth = 11, @@ -161,6 +310,6 @@ translate([0, 8,0]) rotate([-90,0,0]) - nema11(body=true, slots = 5, counterbore=8); + nema11(body=true, slots = 5, counterbore=8); - +accessories(); Modified: trunk/huxley/OpenSCAD-huxley/library.scad =================================================================== --- trunk/huxley/OpenSCAD-huxley/library.scad 2011-02-12 17:42:59 UTC (rev 4032) +++ trunk/huxley/OpenSCAD-huxley/library.scad 2011-02-13 21:21:46 UTC (rev 4033) @@ -447,7 +447,11 @@ hat_cube([2.7,5.5,10], center=true); translate([0,0,-3.75]) rotate([0,90,0]) - teardrop(h = 2*hub_radius, r = screwsize/2,truncateMM=0.5); + if(hub_radius >= outer_radius) + teardrop(h = 2*hub_radius, r = screwsize/2,truncateMM=0.5); + else + rotate([0,0,180]) + teardrop(h = 2*hub_radius, r = screwsize/2,truncateMM=0.5); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <adr...@us...> - 2011-02-12 17:43:06
|
Revision: 4032 http://reprap.svn.sourceforge.net/reprap/?rev=4032&view=rev Author: adrian-bowyer Date: 2011-02-12 17:42:59 +0000 (Sat, 12 Feb 2011) Log Message: ----------- More messing about with the OpenSCAD Huxley design. Modified Paths: -------------- trunk/huxley/OpenSCAD-huxley/extruder.scad trunk/huxley/OpenSCAD-huxley/library.scad Modified: trunk/huxley/OpenSCAD-huxley/extruder.scad =================================================================== --- trunk/huxley/OpenSCAD-huxley/extruder.scad 2011-02-10 14:44:46 UTC (rev 4031) +++ trunk/huxley/OpenSCAD-huxley/extruder.scad 2011-02-12 17:42:59 UTC (rev 4032) @@ -1,49 +1,88 @@ include <parameters.scad>; use <library.scad>; -module idler_holes() +module idler_holes(screws=true, bearing=true, filament=true) { + translate([1,0,0]) union() { - for(i=[-1,1]) - for(j=[-1,1]) - translate([0,i*5,j*7]) - rotate([0,90,0]) + if(screws) + { + for(i=[-1,1]) + for(j=[-1,1]) + translate([0,i*4,j*5]) + rotate([0,90,0]) + { + cylinder(h=60,r=screwsize/2,center=true, $fn=10); + translate([0,0,30]) + cylinder(h=20,r=nutsize,center=true, $fn=6); + } + } + + if(bearing) + { + rotate([90,0,0]) { - cylinder(h=60,r=screwsize/2,center=true, $fn=10); - translate([0,0,30]) - cylinder(h=20,r=nutsize,center=true, $fn=6); + cylinder(h=30,r=screwsize/2,center=true, $fn=10); + cylinder(h=4.2,r=5,center=true, $fn=20); + translate([5,0,0]) + cube([10,11,4.2],center=true); } - rotate([90,0,0]) - { - cylinder(h=30,r=screwsize/2,center=true, $fn=10); - cylinder(h=4.2,r=5.5,center=true, $fn=20); - translate([5.5,0,0]) - cube([11,11,4.2],center=true); } - // Filament - translate([6,0,0]) - cylinder(h=100,r=1,center=true, $fn=15); + if(filament) + { + translate([6,0,0]) + { + cylinder(h=100,r=1,center=true, $fn=15); + translate([0,0,-33]) + cylinder(h=30,r=4.2,center=true, $fn=25); + for(i=[-1,1]) + rotate([0,0,90]) + translate([0,i*19/2,-35]) + cylinder(h=50,r=screwsize/2,center=true, $fn=15); + + } + } } } + module idler(body=true) { if(body) { difference() { - translate([-3,0,0]) - cube([12,15,20], center = true); + translate([-2,0,0]) + cube([12,15,16], center = true); idler_holes(); } } else idler_holes(); } +module l_block(body=true) +{ + if(body) + { + difference() + { + union() + { + translate([19,0,0]) + cube([10,16,18], center = true); + translate([7,0,-20]) + cube([29,16,10], center = true); + } + idler_holes(screws=true, bearing=false,filament=true); + } + } else + idler_holes(); +} + module m6_shaft(body=true) { rotate([-90,0,0]) @@ -51,25 +90,26 @@ union() { if(body) - rod(80); + translate([0,0,-17]) + rod(55); else cylinder(h=80,r=7.5,center=true); - translate([0,0,17]) + translate([0,0,5]) if(body) cylinder(h=6,r=9.5,center=true); else cylinder(h=6.2,r=10,center=true); - translate([0,0,-7]) + translate([0,0,-23]) if(body) cylinder(h=6,r=9.5,center=true); else cylinder(h=6.2,r=10,center=true); if(body) - translate([0,0,-26]) - rotate([180,0,6]) + translate([0,0,-33]) + rotate([0,0,2]) grub_gear(hub_height = 10, hub_radius = 9.5, shaft_radius = 3, height = 7, number_of_teeth = 31, inner_radius = 22, outer_radius = 25, angle=15); } @@ -79,23 +119,23 @@ difference() { -translate([nema11_square/2, 0,nema11_square/2]) +union() +{ +translate([nema11_square/2+2, 0,nema11_square/2+2]) mirror([1,0,1]) - cube([50, 60, 60]); + cube([69, 8, 50]); +translate([nema11_square/2+2-18, 24,-nema11_square/2-2]) + mirror([1,0,1]) + cube([53-nema11_square/2-2, 8, 50-18]); +} -translate([0, 15+40,nema11_square*0.1]) - cube([nema11_square*1.2, 80, nema11_square*1.2], center=true); -translate([-30, 30,-15]) - cube([30, 80, 30], center=true); - - rotate([0,-60,0]) translate([-32, 25,0]) m6_shaft(body=false); -translate([-42+32*cos(-60),30,32*sin(-60)]) +translate([-42+32*cos(-60),16,32*sin(-60)]) idler(body=false); translate([0, 11.5,0]) @@ -109,14 +149,17 @@ translate([-32, 25,0]) m6_shaft(body=true); -translate([-42+32*cos(-60),30,32*sin(-60)]) +translate([-42+32*cos(-60),16,32*sin(-60)]) idler(body=true); +translate([-42+32*cos(-60),16,32*sin(-60)]) + l_block(body=true); + rotate([90,0,0]) grub_gear(hub_height = 7, hub_radius = 9.5, shaft_radius = 2.5, height = 8, number_of_teeth = 11, inner_radius = 6.5, outer_radius = 9, angle=25); -translate([0, 11.5,0]) +translate([0, 8,0]) rotate([-90,0,0]) nema11(body=true, slots = 5, counterbore=8); Modified: trunk/huxley/OpenSCAD-huxley/library.scad =================================================================== --- trunk/huxley/OpenSCAD-huxley/library.scad 2011-02-10 14:44:46 UTC (rev 4031) +++ trunk/huxley/OpenSCAD-huxley/library.scad 2011-02-12 17:42:59 UTC (rev 4032) @@ -421,7 +421,7 @@ for(i = [0:number_of_teeth]) { rotate([0, 0, i*360/number_of_teeth]) - translate([0, inner_radius, 0]) + translate([0, inner_radius, 0.5*height]) tooth_gap(height = height, number_of_teeth = number_of_teeth, inner_radius = inner_radius, dr = outer_radius - inner_radius, angle=angle); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <adr...@us...> - 2011-02-10 14:44:52
|
Revision: 4031 http://reprap.svn.sourceforge.net/reprap/?rev=4031&view=rev Author: adrian-bowyer Date: 2011-02-10 14:44:46 +0000 (Thu, 10 Feb 2011) Log Message: ----------- More messing about with the OpenSCAD Huxley design. Modified Paths: -------------- trunk/huxley/OpenSCAD-huxley/extruder.scad trunk/huxley/OpenSCAD-huxley/x_axis_z_nut_holder_and_z_zero_adjuster.scad Modified: trunk/huxley/OpenSCAD-huxley/extruder.scad =================================================================== --- trunk/huxley/OpenSCAD-huxley/extruder.scad 2011-02-09 21:14:34 UTC (rev 4030) +++ trunk/huxley/OpenSCAD-huxley/extruder.scad 2011-02-10 14:44:46 UTC (rev 4031) @@ -79,9 +79,14 @@ difference() { -translate([-15, 30,-30]) - cube([30, 60, 60], center=true); +translate([nema11_square/2, 0,nema11_square/2]) + mirror([1,0,1]) + cube([50, 60, 60]); + +translate([0, 15+40,nema11_square*0.1]) + cube([nema11_square*1.2, 80, nema11_square*1.2], center=true); + translate([-30, 30,-15]) cube([30, 80, 30], center=true); @@ -93,6 +98,11 @@ translate([-42+32*cos(-60),30,32*sin(-60)]) idler(body=false); +translate([0, 11.5,0]) + rotate([-90,0,0]) + nema11(body=false, slots = 5, counterbore=8); + + } rotate([0,-60,0]) Modified: trunk/huxley/OpenSCAD-huxley/x_axis_z_nut_holder_and_z_zero_adjuster.scad =================================================================== --- trunk/huxley/OpenSCAD-huxley/x_axis_z_nut_holder_and_z_zero_adjuster.scad 2011-02-09 21:14:34 UTC (rev 4030) +++ trunk/huxley/OpenSCAD-huxley/x_axis_z_nut_holder_and_z_zero_adjuster.scad 2011-02-10 14:44:46 UTC (rev 4031) @@ -21,12 +21,17 @@ cylinder(r=rodsize/2, h= rodsize*10, center=true); for(a = [1, -1]) - for(b = [1, -1]) - for(c = [1, -1]) - translate([a*clamp_holes/2,b*x_bar_gap/2+c*clamp_holes/2,0]) - cylinder(r=screwsize/2, h= rodsize*10, center=true, $fn=15); - translate([0,0,7/2]) - rodnut(position=0,washer=0); + { + translate([0,a*(x_bar_gap/2-clamp_holes/2),0]) + cylinder(r=screwsize/2, h= rodsize*10, center=true, $fn=15); + for(b = [1, -1]) + for(c = [1, -1]) + translate([a*clamp_holes/2,b*x_bar_gap/2+c*clamp_holes/2,0]) + cylinder(r=screwsize/2, h= rodsize*10, center=true, $fn=15); + } + translate([0,0,7/2-0.2]) + cylinder(r=rodsize, h= 5, center=true, $fn=6); + //rodnut(position=0,washer=0); } } @@ -47,12 +52,18 @@ difference() { cube([20,20,5],center=true); + + //translate([0,a*(x_bar_gap/2-clamp_holes/2),0]) + //rotate([0,0,90]) + //teardrop(r=screwsize/2, h= rodsize*10, truncateMM=-1); for(a = [1, -1]) - for(b = [1, -1]) - translate([a*clamp_holes/2,b*clamp_holes/2,-5*rodsize]) - rotate([0,0,90]) - teardrop(r=screwsize/2, h= rodsize*10, truncateMM=-1); + { + for(b = [1, -1]) + translate([a*clamp_holes/2,b*clamp_holes/2,-5*rodsize]) + rotate([0,0,90]) + teardrop(r=screwsize/2, h= rodsize*10, truncateMM=-1); + } } } @@ -101,5 +112,5 @@ x_axis_z_nut_holder(); -//translate([0,20,-stretch*halfwidth-15]) -//z_height_adjuster(); \ No newline at end of file +translate([0,20,-stretch*halfwidth-15]) +z_height_adjuster(); \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <adr...@us...> - 2011-02-09 21:14:40
|
Revision: 4030 http://reprap.svn.sourceforge.net/reprap/?rev=4030&view=rev Author: adrian-bowyer Date: 2011-02-09 21:14:34 +0000 (Wed, 09 Feb 2011) Log Message: ----------- More messing about with the OpenSCAD Huxley design. Modified Paths: -------------- trunk/huxley/OpenSCAD-huxley/extruder.scad trunk/huxley/OpenSCAD-huxley/x_axis_z_nut_holder_and_z_zero_adjuster.scad trunk/huxley/OpenSCAD-huxley/x_idler_mount.scad Modified: trunk/huxley/OpenSCAD-huxley/extruder.scad =================================================================== --- trunk/huxley/OpenSCAD-huxley/extruder.scad 2011-02-06 21:00:25 UTC (rev 4029) +++ trunk/huxley/OpenSCAD-huxley/extruder.scad 2011-02-09 21:14:34 UTC (rev 4030) @@ -1,46 +1,107 @@ include <parameters.scad>; use <library.scad>; -module idler() +module idler_holes() { - for(i=[-1,1]) - for(j=[-1,1]) - translate([0,i*10,j*7]) - rotate([0,90,0]) + union() + { + for(i=[-1,1]) + for(j=[-1,1]) + translate([0,i*5,j*7]) + rotate([0,90,0]) + { + cylinder(h=60,r=screwsize/2,center=true, $fn=10); + translate([0,0,30]) + cylinder(h=20,r=nutsize,center=true, $fn=6); + } + rotate([90,0,0]) + { cylinder(h=30,r=screwsize/2,center=true, $fn=10); - translate([-3,0,0]) - cube([12,25,20], center = true); - rotate([90,0,0]) - { - cylinder(h=30,r=screwsize/2,center=true, $fn=10); - cylinder(h=4,r=5,center=true, $fn=20); + cylinder(h=4.2,r=5.5,center=true, $fn=20); + translate([5.5,0,0]) + cube([11,11,4.2],center=true); + } + + // Filament + + translate([6,0,0]) + cylinder(h=100,r=1,center=true, $fn=15); } } +module idler(body=true) +{ + if(body) + { + difference() + { + translate([-3,0,0]) + cube([12,15,20], center = true); + idler_holes(); + } + } else + idler_holes(); +} -module m6_shaft() + +module m6_shaft(body=true) { rotate([-90,0,0]) { union() { - rod(80); - translate([0,0,22]) - cylinder(h=6,r=9.5,center=true); - translate([0,0,-12]) - cylinder(h=6,r=9.5,center=true); - translate([0,0,-26]) - rotate([180,0,6]) - grub_gear(hub_height = 10, hub_radius = 9.5, shaft_radius = 3, height = 7, number_of_teeth = 31, - inner_radius = 22, outer_radius = 25, angle=15); + if(body) + rod(80); + else + cylinder(h=80,r=7.5,center=true); + + translate([0,0,17]) + if(body) + cylinder(h=6,r=9.5,center=true); + else + cylinder(h=6.2,r=10,center=true); + + translate([0,0,-7]) + if(body) + cylinder(h=6,r=9.5,center=true); + else + cylinder(h=6.2,r=10,center=true); + + if(body) + translate([0,0,-26]) + rotate([180,0,6]) + grub_gear(hub_height = 10, hub_radius = 9.5, shaft_radius = 3, height = 7, + number_of_teeth = 31, inner_radius = 22, outer_radius = 25, angle=15); } } } +difference() +{ + +translate([-15, 30,-30]) + cube([30, 60, 60], center=true); + +translate([-30, 30,-15]) + cube([30, 80, 30], center=true); + + rotate([0,-60,0]) -translate([-32, 25,0]) - m6_shaft(); + translate([-32, 25,0]) + m6_shaft(body=false); +translate([-42+32*cos(-60),30,32*sin(-60)]) + idler(body=false); + +} + +rotate([0,-60,0]) + translate([-32, 25,0]) + m6_shaft(body=true); + +translate([-42+32*cos(-60),30,32*sin(-60)]) + idler(body=true); + rotate([90,0,0]) grub_gear(hub_height = 7, hub_radius = 9.5, shaft_radius = 2.5, height = 8, number_of_teeth = 11, inner_radius = 6.5, outer_radius = 9, angle=25); @@ -50,5 +111,3 @@ nema11(body=true, slots = 5, counterbore=8); -translate([-40+32*cos(-60),30,32*sin(-60)]) - idler(); \ No newline at end of file Modified: trunk/huxley/OpenSCAD-huxley/x_axis_z_nut_holder_and_z_zero_adjuster.scad =================================================================== --- trunk/huxley/OpenSCAD-huxley/x_axis_z_nut_holder_and_z_zero_adjuster.scad 2011-02-06 21:00:25 UTC (rev 4029) +++ trunk/huxley/OpenSCAD-huxley/x_axis_z_nut_holder_and_z_zero_adjuster.scad 2011-02-09 21:14:34 UTC (rev 4030) @@ -99,7 +99,7 @@ } } -//x_axis_z_nut_holder(); +x_axis_z_nut_holder(); //translate([0,20,-stretch*halfwidth-15]) -z_height_adjuster(); \ No newline at end of file +//z_height_adjuster(); \ No newline at end of file Modified: trunk/huxley/OpenSCAD-huxley/x_idler_mount.scad =================================================================== --- trunk/huxley/OpenSCAD-huxley/x_idler_mount.scad 2011-02-06 21:00:25 UTC (rev 4029) +++ trunk/huxley/OpenSCAD-huxley/x_idler_mount.scad 2011-02-09 21:14:34 UTC (rev 4030) @@ -4,7 +4,6 @@ // Adrian Bowyer 18 December 2010 include <parameters.scad>; -include <nema14_motor.scad>; use<library.scad> // Rewrite some values @@ -83,15 +82,15 @@ union() { translate([-bar_clamp_x_gap, bar_clamp_y, 0]) - cylinder(r = screw_hole_r, h = 30, center = true, $fn=10); + cylinder(r = screw_hole_r, h = 60, center = true, $fn=10); translate([0, bar_clamp_y, 0]) - cylinder(r = screw_hole_r, h = 30, center = true, $fn=10); + cylinder(r = screw_hole_r, h = 60, center = true, $fn=10); translate([bar_clamp_x_gap, bar_clamp_y, 0]) - cylinder(r = screw_hole_r, h = 30, center = true, $fn=10); + cylinder(r = screw_hole_r, h = 60, center = true, $fn=10); translate([-bearing_x, bearing_y, 0]) - cylinder(r = screw_hole_r, h = 30, center = true, $fn=10); + cylinder(r = screw_hole_r, h = 60, center = true, $fn=10); translate([bearing_x, bearing_y, 0]) - cylinder(r = screw_hole_r, h = 30, center = true, $fn=10); + cylinder(r = screw_hole_r, h = 60, center = true, $fn=10); } @@ -110,9 +109,35 @@ } } +module bar_clamp() +{ + difference() + { + translate([0, bar_clamp_y, -21]) + union() + { + cube([2*bar_clamp_x_gap,10,8], center=true); + translate([-bar_clamp_x_gap, 0, 0]) + cylinder(r = 5, h = 8, center = true, $fn=20); + translate([bar_clamp_x_gap, 0, 0]) + cylinder(r = 5, h = 8, center = true, $fn=20); + } + for(i=[-1,1]) + translate([i*x_bar_gap/2,0,-20]) + rotate([0,90,90]) + { + rod(rodsize*10); + translate([-rodsize, 0, 0]) + cube([2*rodsize, rodsize, rodsize*10], center=true); + } + + cylindrical_z_holes(); + } + +} + + bar_clamp(); + x_motor_mount(); -//translate([0, motor_center_y, thickness]) -// rotate(a = 45, v = [0, 0, 1]) -// nema14(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <adr...@us...> - 2011-02-06 21:00:33
|
Revision: 4029 http://reprap.svn.sourceforge.net/reprap/?rev=4029&view=rev Author: adrian-bowyer Date: 2011-02-06 21:00:25 +0000 (Sun, 06 Feb 2011) Log Message: ----------- More messing about with the OpenSCAD Huxley design. Modified Paths: -------------- trunk/huxley/OpenSCAD-huxley/extruder.scad trunk/huxley/OpenSCAD-huxley/library.scad Modified: trunk/huxley/OpenSCAD-huxley/extruder.scad =================================================================== --- trunk/huxley/OpenSCAD-huxley/extruder.scad 2011-02-05 15:49:29 UTC (rev 4028) +++ trunk/huxley/OpenSCAD-huxley/extruder.scad 2011-02-06 21:00:25 UTC (rev 4029) @@ -1,7 +1,23 @@ include <parameters.scad>; use <library.scad>; +module idler() +{ + for(i=[-1,1]) + for(j=[-1,1]) + translate([0,i*10,j*7]) + rotate([0,90,0]) + cylinder(h=30,r=screwsize/2,center=true, $fn=10); + translate([-3,0,0]) + cube([12,25,20], center = true); + rotate([90,0,0]) + { + cylinder(h=30,r=screwsize/2,center=true, $fn=10); + cylinder(h=4,r=5,center=true, $fn=20); + } +} + module m6_shaft() { rotate([-90,0,0]) @@ -9,33 +25,30 @@ union() { rod(80); - for(i=[-1,1]) - translate([0,0,10*i]) - cylinder(h=6,r=9.5,center=true); - translate([0,0,-36]) - union() - { - difference() - { - cylinder(h=11,r=43,center=true); - translate([0,0,-3]) - gear(height = 20, number_of_teeth = 57, inner_radius = - 38, outer_radius = 41, angle=10); - } - - cylinder(h=11,r=15,center=true); - } - + translate([0,0,22]) + cylinder(h=6,r=9.5,center=true); + translate([0,0,-12]) + cylinder(h=6,r=9.5,center=true); + translate([0,0,-26]) + rotate([180,0,6]) + grub_gear(hub_height = 10, hub_radius = 9.5, shaft_radius = 3, height = 7, number_of_teeth = 31, + inner_radius = 22, outer_radius = 25, angle=15); } } } +rotate([0,-60,0]) translate([-32, 25,0]) m6_shaft(); rotate([90,0,0]) - grub_gear(base_height = 7, height = 8, number_of_teeth = 11, inner_radius = 6.5, outer_radius = 9, angle=25); + grub_gear(hub_height = 7, hub_radius = 9.5, shaft_radius = 2.5, height = 8, number_of_teeth = 11, + inner_radius = 6.5, outer_radius = 9, angle=25); translate([0, 11.5,0]) rotate([-90,0,0]) - nema11(); \ No newline at end of file + nema11(body=true, slots = 5, counterbore=8); + + +translate([-40+32*cos(-60),30,32*sin(-60)]) + idler(); \ No newline at end of file Modified: trunk/huxley/OpenSCAD-huxley/library.scad =================================================================== --- trunk/huxley/OpenSCAD-huxley/library.scad 2011-02-05 15:49:29 UTC (rev 4028) +++ trunk/huxley/OpenSCAD-huxley/library.scad 2011-02-06 21:00:25 UTC (rev 4029) @@ -129,7 +129,7 @@ */ -module nema14(body = true, counterbore = -1) +module nema14(body = true, slots = -1, counterbore = -1) { color([1,0.4,0.4,1]) union() @@ -151,21 +151,27 @@ { union() { - for ( x = [0:1] ) - for ( y = [0:1] ) + for ( x = [-0.5, 0.5] ) + for ( y = [-0.5, 0.5] ) { - translate([(x-0.5)*nema14_screws, (y-0.5)*nema14_screws, -20]) - cylinder(r = nema14_screw_r, h = 50, center = true, $fn=10); + translate([x*nema14_screws, y*nema14_screws, -20]) + if(slots <= 0) + cylinder(r = nema14_screw_r, h = 50, center = true, $fn=10); + else + cube([slots, nema14_screw_r*2, 50], center=true); if(counterbore >= 0) - translate([(x-0.5)*nema14_screws, (y-0.5)*nema14_screws, -25-counterbore]) - cylinder(r = 2*nema14_screw_r, h = 50, center = true, $fn=10); + translate([x*nema14_screws, y*nema14_screws, -25-counterbore]) + if(slots <= 0) + cylinder(r = 2*nema14_screw_r, h = 50, center = true, $fn=10); + else + cube([slots+2*nema14_screw_r, nema14_screw_r*4, 50], center=true); } } } } } -module nema11(body = true, counterbore = -1) +module nema11(body = true, slots = -1, counterbore = -1) { color([1,0.4,0.4,1]) union() @@ -187,14 +193,20 @@ { union() { - for ( x = [0:1] ) - for ( y = [0:1] ) + for ( x = [-0.5, 0.5] ) + for ( y = [-0.5, 0.5] ) { - translate([(x-0.5)*nema11_screws, (y-0.5)*nema11_screws, -20]) - cylinder(r = nema11_screw_r, h = 50, center = true, $fn=10); + translate([x*nema11_screws, y*nema11_screws, -20]) + if(slots <= 0) + cylinder(r = nema11_screw_r, h = 50, center = true, $fn=10); + else + cube([slots, nema11_screw_r*2, 50], center=true); if(counterbore >= 0) - translate([(x-0.5)*nema11_screws, (y-0.5)*nema11_screws, -25-counterbore]) - cylinder(r = 2*nema11_screw_r, h = 50, center = true, $fn=10); + translate([x*nema11_screws, y*nema11_screws, -25-counterbore]) + if(slots <= 0) + cylinder(r = 2*nema11_screw_r, h = 50, center = true, $fn=10); + else + cube([slots+2*nema11_screw_r, nema11_screw_r*4, 50], center=true); } } } @@ -416,7 +428,7 @@ } } -module grub_gear(base_height=7.5, height =13, number_of_teeth = 8, inner_radius = 4.5, outer_radius = 6.5, angle=40) +module grub_gear(hub_height=7.5, hub_radius = 9.5, shaft_radius = 2.5, height =13, number_of_teeth = 8, inner_radius = 4.5, outer_radius = 6.5, angle=40) { difference() { @@ -425,17 +437,17 @@ translate([0,0,0]) gear(height =height, number_of_teeth = number_of_teeth, inner_radius = inner_radius, outer_radius = outer_radius, angle=angle); - translate([0,0,-base_height/2]) - cylinder(h = base_height, r = outer_radius+1,center=true,$fn=20); + translate([0,0,-hub_height/2]) + cylinder(h = hub_height, r = hub_radius,center=true,$fn=20); } - cylinder(h = 30, r = 2.5,center=true,$fn=20); + cylinder(h = 30, r = shaft_radius, center=true,$fn=20); - translate([4.75,0,-6]) + translate([shaft_radius + 2, 0, -6]) hat_cube([2.7,5.5,10], center=true); translate([0,0,-3.75]) rotate([0,90,0]) - teardrop(h = 20, r = 1.5,truncateMM=0.5); + teardrop(h = 2*hub_radius, r = screwsize/2,truncateMM=0.5); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <adr...@us...> - 2011-02-05 15:49:35
|
Revision: 4028 http://reprap.svn.sourceforge.net/reprap/?rev=4028&view=rev Author: adrian-bowyer Date: 2011-02-05 15:49:29 +0000 (Sat, 05 Feb 2011) Log Message: ----------- More messing about with the OpenSCAD Huxley design. Modified Paths: -------------- trunk/huxley/OpenSCAD-huxley/library.scad trunk/huxley/OpenSCAD-huxley/y_frog.scad Added Paths: ----------- trunk/huxley/OpenSCAD-huxley/extruder.scad Added: trunk/huxley/OpenSCAD-huxley/extruder.scad =================================================================== --- trunk/huxley/OpenSCAD-huxley/extruder.scad (rev 0) +++ trunk/huxley/OpenSCAD-huxley/extruder.scad 2011-02-05 15:49:29 UTC (rev 4028) @@ -0,0 +1,41 @@ +include <parameters.scad>; +use <library.scad>; + + +module m6_shaft() +{ + rotate([-90,0,0]) + { + union() + { + rod(80); + for(i=[-1,1]) + translate([0,0,10*i]) + cylinder(h=6,r=9.5,center=true); + translate([0,0,-36]) + union() + { + difference() + { + cylinder(h=11,r=43,center=true); + translate([0,0,-3]) + gear(height = 20, number_of_teeth = 57, inner_radius = + 38, outer_radius = 41, angle=10); + } + + cylinder(h=11,r=15,center=true); + } + + } + } +} + +translate([-32, 25,0]) + m6_shaft(); + +rotate([90,0,0]) + grub_gear(base_height = 7, height = 8, number_of_teeth = 11, inner_radius = 6.5, outer_radius = 9, angle=25); + +translate([0, 11.5,0]) + rotate([-90,0,0]) + nema11(); \ No newline at end of file Modified: trunk/huxley/OpenSCAD-huxley/library.scad =================================================================== --- trunk/huxley/OpenSCAD-huxley/library.scad 2011-02-05 14:29:57 UTC (rev 4027) +++ trunk/huxley/OpenSCAD-huxley/library.scad 2011-02-05 15:49:29 UTC (rev 4028) @@ -310,7 +310,7 @@ -module rod(length, threaded) if (threaded && renderrodthreads) { +module rod(length, threaded=false) if (threaded && renderrodthreads) { linear_extrude(height = length, center = true, convexity = 10, twist = -360 * length / rodpitch, $fn = fn) translate([rodsize * 0.1 / 2, 0, 0]) circle(r = rodsize * 0.9 / 2, $fn = fn); @@ -416,8 +416,31 @@ } } +module grub_gear(base_height=7.5, height =13, number_of_teeth = 8, inner_radius = 4.5, outer_radius = 6.5, angle=40) +{ + difference() + { + union() + { + translate([0,0,0]) + gear(height =height, number_of_teeth = number_of_teeth, inner_radius = inner_radius, + outer_radius = outer_radius, angle=angle); + translate([0,0,-base_height/2]) + cylinder(h = base_height, r = outer_radius+1,center=true,$fn=20); + } + + cylinder(h = 30, r = 2.5,center=true,$fn=20); + + translate([4.75,0,-6]) + hat_cube([2.7,5.5,10], center=true); + translate([0,0,-3.75]) + rotate([0,90,0]) + teardrop(h = 20, r = 1.5,truncateMM=0.5); + } +} +grub_gear(); //gear(); @@ -446,4 +469,4 @@ //strut(p1=[20,10,20], p2=[20, 60, 40], wide=10, deep=5, round=2); -adjustable_bearing(true, false); +//adjustable_bearing(true, false); Modified: trunk/huxley/OpenSCAD-huxley/y_frog.scad =================================================================== --- trunk/huxley/OpenSCAD-huxley/y_frog.scad 2011-02-05 14:29:57 UTC (rev 4027) +++ trunk/huxley/OpenSCAD-huxley/y_frog.scad 2011-02-05 15:49:29 UTC (rev 4028) @@ -1,11 +1,16 @@ include <parameters.scad>; use <library.scad>; -xbars=120; -ylength=86; +xbars=109; +ylength=50; // 86; d=22; w=5; +belt_clamp_x=33; +belt_to_switch=26; +x_join=xbars/2; +join_thick=16; + // Triangle values yl2 = ylength/2; @@ -47,14 +52,14 @@ // Limit switch - translate([56,-yl2-20,6]) - cube([2,20,2]); + translate([belt_clamp_x+belt_to_switch,-yl2-30,6]) + cube([2,20,2],center=true); // Y belt - translate([28,-100,-5.7-1.5]) + translate([belt_clamp_x-3,-100,-5.7-1.5]) cube([6,200,1.5]); - translate([28,-100,-5.7-1.5+8.75]) + translate([belt_clamp_x-3,-100,-5.7-1.5+8.75]) cube([6,200,1.5]); // Y rods @@ -68,13 +73,16 @@ } } -module belt_clamp_holes() +module belt_clamp_holes(depth=2) { - - translate([-5,0,0]) + for(i=[-1,1]) + translate([i*5,0,0]) + { cylinder(r=screwsize/2, h=50, center=true, $fn=10); - translate([5,0,0]) - cylinder(r=screwsize/2, h=50, center=true, $fn=10); + if(depth > 4) + translate([0,0,6]) + cylinder (h = 10, r = nutdiameter / 1.8, center = true, $fn = 6); + } } module belt_clamp(depth=6, nut=false, holes=false) @@ -84,15 +92,106 @@ else difference() { - cube([16,8,depth], center=true); - belt_clamp_holes(); + cube([20,8,depth], center=true); + belt_clamp_holes(depth); } } +module pusher_holes() +{ + translate([0, 14, 0]) + rotate([0,0,90-theta]) + { + for(j=[-1,1]) + translate([j*15, 0, 0]) + cylinder(r=screwsize/2, h=50, center=true, $fn=10); + } +} + +module limit_pusher(offset=[x_join+8, -x_join/tan(theta)-15, 0], holes=false) +{ + + if(holes) + translate(offset) + pusher_holes(); + else + { + union() + { + translate(offset) + difference() + { + difference() + { + translate([5, -6, 0]) + rotate([0,0,90-theta]) + cube([36, 50, 5], center=true); + pusher_holes(); + } + + translate(-offset-[0,0,10]) + big_chop(); + } + + translate([belt_clamp_x+belt_to_switch-5,offset.y-8,offset.z-2.5]) + difference() + { + cube([10,15,20]); + translate([-2,13,-2]) + rotate([20,0,0]) + cube([20,15,30]); + } + } + } +} + +module big_chop() +{ + union() + { + translate(p0+[0, 20,-25]) + rotate([0,0,-90+theta]) + cube([xbars+26+50, ylength+20+50, 5+50]); + + mirror([0,1,0]) + translate(p0+[0, 20,-25]) + rotate([0,0,-90+theta]) + cube([xbars+26+50, ylength+20+50, 5+50]); + + linear_extrude(height = 100, center = true, convexity = 10, twist = 0) + polygon(points=[[p00.x,p00.y],[p11.x,p11.y],[p22.x,p22.y]]); + + + + for(i=[-1,1]) + { + translate([x_join + 45, i*(x_join/tan(theta)+2),-2.75]) + rotate([0,-90,0]) + teardrop(r=screwsize/2, h = 50, truncateMM=0.5); + + translate([x_join + 45, i*(x_join/tan(theta)+12),-2.75]) + rotate([0,-90,0]) + teardrop(r=screwsize/2, h = 50, truncateMM=0.5); + } + + translate([-6, 25,-2.75]) + rotate([0,-90,90]) + teardrop(r=screwsize/2, h = 50, truncateMM=0.5); + + translate([3, 25,-2.75]) + rotate([0,-90,90]) + teardrop(r=screwsize/2, h = 50, truncateMM=0.5); + + for(i=[-1,1]) + translate([belt_clamp_x+2.5,i*(yl2+11),0]) + cube([35,20,60], center=true); + } +} + module y_frog() { translate([0, 0,-14]) - { + { difference() { union() @@ -102,63 +201,33 @@ strut(p00, p11, 10,10,2); strut(p00, p22, 10,10,2); strut(p11, p22, 10,10,2); - translate([xbars/2-6.5, -(ylength +50)/2,-5]) - cube([16, ylength+50, 10]); - translate([-13, -8,-5]) - cube([30, 16, 10]); + translate([x_join, -(ylength +50)/2,-5]) + cube([join_thick, ylength+50, 10]); + translate([-9, -join_thick/2,-5]) + cube([30, join_thick, 10]); } + big_chop(); - translate(p0+[0, 20,-25]) - rotate([0,0,-90+theta]) - cube([xbars+26+50, ylength+20+50, 5+50]); - - mirror([0,1,0]) - translate(p0+[0, 20,-25]) - rotate([0,0,-90+theta]) - cube([xbars+26+50, ylength+20+50, 5+50]); - accesories(holes=true); - - linear_extrude(height = 100, center = true, convexity = 10, twist = 0) - polygon(points=[[p00.x,p00.y],[p11.x,p11.y],[p22.x,p22.y]]); - translate([31,-yl2+4,0]) - belt_clamp(depth=6, holes=true); - - translate([31,yl2-4,0]) - belt_clamp(depth=6, holes=true); - for(i=[-1,1]) - { - translate([xbars*0.8, i*ylength/2.4,-2.75]) - rotate([0,-90,0]) - teardrop(r=screwsize/2, h = 50, truncateMM=0.5); - - translate([xbars*0.8, i*ylength/3.2,-2.75]) - rotate([0,-90,0]) - teardrop(r=screwsize/2, h = 50, truncateMM=0.5); - } + translate([belt_clamp_x,i*(yl2-4),0]) + belt_clamp(depth=2, holes=true); - translate([-10, 25,-2.75]) - rotate([0,-90,90]) - teardrop(r=screwsize/2, h = 50, truncateMM=0.5); - - translate([0, 25,-2.75]) - rotate([0,-90,90]) - teardrop(r=screwsize/2, h = 50, truncateMM=0.5); - + limit_pusher(holes=true); } } } +/* difference() { y_frog(); translate([-100, 0,-100]) cube([500, 500, 500]); - translate([xbars/2-6.5+8, -250,-100]) cube([500, 500, 500]); + translate([x_join + join_thick/2, -250,-100]) cube([500, 500, 500]); } difference() @@ -166,20 +235,25 @@ y_frog(); mirror([0,1,0]) translate([-100, 0,-100]) cube([500, 500, 500]); - translate([xbars/2-6.5+8, -250,-100]) cube([500, 500, 500]); + translate([x_join + join_thick/2, -250,-100]) cube([500, 500, 500]); } intersection() { y_frog(); - translate([xbars/2-6.5+8, -250,-100]) cube([500, 500, 500]); + translate([x_join + join_thick/2, -250,-100]) cube([500, 500, 500]); } +*/ +y_frog(); +translate([0,0,-7]) + limit_pusher(holes=false); -translate([31,-yl2+4,-2.7]) +translate([belt_clamp_x,-yl2+4,-2.7]) { belt_clamp(depth=6, nut=true, holes=false); translate([0,0,-5.5]) belt_clamp(depth=2, nut = false, holes=false); } + accesories(false); \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <adr...@us...> - 2011-02-05 14:30:04
|
Revision: 4027 http://reprap.svn.sourceforge.net/reprap/?rev=4027&view=rev Author: adrian-bowyer Date: 2011-02-05 14:29:57 +0000 (Sat, 05 Feb 2011) Log Message: ----------- Firmware enhanced to detect the endstop hit when an axis is zeroed. If no hit is detected this is flagged as a hard fatal error and RepRap shuts down after screaming that fact at the host. No endstop hit on an axis-zero command usually means the belt's broken... Modified Paths: -------------- trunk/software/firmware/FiveD_GCode/FiveD_GCode_Interpreter/FiveD_GCode_Interpreter.pde trunk/software/firmware/FiveD_GCode/FiveD_GCode_Interpreter/cartesian_dda.h trunk/software/firmware/FiveD_GCode/FiveD_GCode_Interpreter/features.h trunk/software/firmware/FiveD_GCode/FiveD_GCode_Interpreter/process_g_code.pde Property Changed: ---------------- trunk/software/firmware/FiveD_GCode/FiveD_GCode_Interpreter/ Property changes on: trunk/software/firmware/FiveD_GCode/FiveD_GCode_Interpreter ___________________________________________________________________ Modified: svn:ignore - configuration.h applet + configuration.h applet *.3890 *.3967 *.latest Modified: trunk/software/firmware/FiveD_GCode/FiveD_GCode_Interpreter/FiveD_GCode_Interpreter.pde =================================================================== --- trunk/software/firmware/FiveD_GCode/FiveD_GCode_Interpreter/FiveD_GCode_Interpreter.pde 2011-02-05 14:03:26 UTC (rev 4026) +++ trunk/software/firmware/FiveD_GCode/FiveD_GCode_Interpreter/FiveD_GCode_Interpreter.pde 2011-02-05 14:29:57 UTC (rev 4027) @@ -151,7 +151,9 @@ LongPoint zeroHit; +// And what we hit +volatile byte endstop_hits; // Our interrupt function @@ -188,6 +190,7 @@ void setup() { nonest = false; + endstop_hits = 0; disableTimerInterrupt(); setupTimerInterrupt(); interruptBlink = 0; Modified: trunk/software/firmware/FiveD_GCode/FiveD_GCode_Interpreter/cartesian_dda.h =================================================================== --- trunk/software/firmware/FiveD_GCode/FiveD_GCode_Interpreter/cartesian_dda.h 2011-02-05 14:03:26 UTC (rev 4026) +++ trunk/software/firmware/FiveD_GCode/FiveD_GCode_Interpreter/cartesian_dda.h 2011-02-05 14:29:57 UTC (rev 4027) @@ -190,14 +190,24 @@ inline bool cartesian_dda::xCanStep(long current, long target, bool dir) { + + // clear the hit bits + + endstop_hits &= (~X_LOW_HIT & ~X_HIGH_HIT); + //stop us if we're on target if (target == current) return false; - + //stop us if we're home and still going lower #if ENDSTOPS_MIN_ENABLED == 1 + + // Set the low hit bit + + endstop_hits |= X_LOW_HIT; + #if X_ENDSTOP_INVERTING if(!dir && !digitalRead(X_MIN_PIN) ) { @@ -211,11 +221,21 @@ return false; } #endif + + // clear the low hit bit + + endstop_hits &= ~X_LOW_HIT; + #endif - + //stop us if we're at max and still going higher #if ENDSTOPS_MAX_ENABLED == 1 + + // Set the high hit bit + + endstop_hits |= X_HIGH_HIT; + #if X_ENDSTOP_INVERTING if(dir && !digitalRead(X_MAX_PIN) ) return false; @@ -223,8 +243,14 @@ if(!dir && digitalRead(X_MAX_PIN) ) return false; #endif + + // Clear the high hit bit + + endstop_hits &= ~X_HIGH_HIT; + #endif + // All OK - we can step return true; @@ -232,6 +258,11 @@ inline bool cartesian_dda::yCanStep(long current, long target, bool dir) { + + // clear the hit bits + + endstop_hits &= (~Y_LOW_HIT & ~Y_HIGH_HIT); + //stop us if we're on target if (target == current) @@ -240,6 +271,11 @@ //stop us if we're home and still going lower #if ENDSTOPS_MIN_ENABLED == 1 + + // Set the low hit bit + + endstop_hits |= Y_LOW_HIT; + #if Y_ENDSTOP_INVERTING if(!dir && !digitalRead(Y_MIN_PIN) ) { @@ -253,11 +289,21 @@ return false; } #endif + + // clear the low hit bit + + endstop_hits &= ~Y_LOW_HIT; + #endif //stop us if we're at max and still going higher #if ENDSTOPS_MAX_ENABLED == 1 + + // Set the high hit bit + + endstop_hits |= Y_HIGH_HIT; + #if Y_ENDSTOP_INVERTING if(dir && !digitalRead(Y_MAX_PIN) ) return false; @@ -265,6 +311,11 @@ if(!dir && digitalRead(Y_MAX_PIN) ) return false; #endif + + // Clear the high hit bit + + endstop_hits &= ~Y_HIGH_HIT; + #endif // All OK - we can step @@ -274,6 +325,11 @@ inline bool cartesian_dda::zCanStep(long current, long target, bool dir) { + + // clear the hit bits + + endstop_hits &= (~Z_LOW_HIT & ~Z_HIGH_HIT); + //stop us if we're on target if (target == current) @@ -282,6 +338,11 @@ //stop us if we're home and still going lower #if ENDSTOPS_MIN_ENABLED == 1 + + // Set the low hit bit + + endstop_hits |= Z_LOW_HIT; + #if Z_ENDSTOP_INVERTING if(!dir && !digitalRead(Z_MIN_PIN) ) { @@ -295,11 +356,21 @@ return false; } #endif + + // clear the low hit bit + + endstop_hits &= ~Z_LOW_HIT; + #endif //stop us if we're at max and still going higher #if ENDSTOPS_MAX_ENABLED == 1 + + // Set the high hit bit + + endstop_hits |= Z_HIGH_HIT; + #if Z_ENDSTOP_INVERTING if(dir && !digitalRead(Z_MAX_PIN) ) return false; @@ -307,6 +378,11 @@ if(!dir && digitalRead(Z_MAX_PIN) ) return false; #endif + + // Clear the high hit bit + + endstop_hits &= ~Z_HIGH_HIT; + #endif // All OK - we can step @@ -314,6 +390,7 @@ return true; } + inline bool cartesian_dda::eCanStep(long current, long target, bool dir) { //stop us if we're on target Modified: trunk/software/firmware/FiveD_GCode/FiveD_GCode_Interpreter/features.h =================================================================== --- trunk/software/firmware/FiveD_GCode/FiveD_GCode_Interpreter/features.h 2011-02-05 14:03:26 UTC (rev 4026) +++ trunk/software/firmware/FiveD_GCode/FiveD_GCode_Interpreter/features.h 2011-02-05 14:29:57 UTC (rev 4027) @@ -209,6 +209,19 @@ // What delay() value to use when waiting for things to free up in milliseconds #define WAITING_DELAY 1 // *RO +// Bit flags for hit endstops + +#define X_LOW_HIT 1 +#define Y_LOW_HIT 2 +#define Z_LOW_HIT 4 +#define X_HIGH_HIT 8 +#define Y_HIGH_HIT 16 +#define Z_HIGH_HIT 32 + +// Not sure if this is the best place for... + +extern volatile byte endstop_hits; + #endif Modified: trunk/software/firmware/FiveD_GCode/FiveD_GCode_Interpreter/process_g_code.pde =================================================================== --- trunk/software/firmware/FiveD_GCode/FiveD_GCode_Interpreter/process_g_code.pde 2011-02-05 14:03:26 UTC (rev 4026) +++ trunk/software/firmware/FiveD_GCode/FiveD_GCode_Interpreter/process_g_code.pde 2011-02-05 14:29:57 UTC (rev 4027) @@ -130,7 +130,16 @@ where_i_am.f = SLOW_XY_FEEDRATE; specialMoveX(where_i_am.x + 1, SLOW_XY_FEEDRATE); specialMoveX(where_i_am.x - 10, SLOW_XY_FEEDRATE); - where_i_am.x = 0; + where_i_am.x = 0; + + // Wait for movements to finish, then check we hit the stop + + while(!qEmpty()) delay(WAITING_DELAY); + if(!(endstop_hits & X_LOW_HIT)) + { + sprintf(talkToHost.string(), "X endstop not hit - hard fault."); + talkToHost.setFatal(); + } } void zeroY() @@ -141,7 +150,16 @@ where_i_am.f = SLOW_XY_FEEDRATE; specialMoveY(where_i_am.y + 1, SLOW_XY_FEEDRATE); specialMoveY(where_i_am.y - 10, SLOW_XY_FEEDRATE); - where_i_am.y = 0; + where_i_am.y = 0; + + // Wait for movements to finish, then check we hit the stop + + while(!qEmpty()) delay(WAITING_DELAY); + if(!(endstop_hits & Y_LOW_HIT)) + { + sprintf(talkToHost.string(), "Y endstop not hit - hard fault."); + talkToHost.setFatal(); + } } @@ -154,7 +172,16 @@ where_i_am.f = SLOW_Z_FEEDRATE; specialMoveZ(where_i_am.z + 1, SLOW_Z_FEEDRATE); specialMoveZ(where_i_am.z - 2, SLOW_Z_FEEDRATE); - where_i_am.z = 0; + where_i_am.z = 0; + + // Wait for movements to finish, then check we hit the stop + + while(!qEmpty()) delay(WAITING_DELAY); + if(!(endstop_hits & Z_LOW_HIT)) + { + sprintf(talkToHost.string(), "Z endstop not hit - hard fault."); + talkToHost.setFatal(); + } } //our feedrate variables. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <adr...@us...> - 2011-02-05 14:03:32
|
Revision: 4026 http://reprap.svn.sourceforge.net/reprap/?rev=4026&view=rev Author: adrian-bowyer Date: 2011-02-05 14:03:26 +0000 (Sat, 05 Feb 2011) Log Message: ----------- Properties file updated to the current best-quality settings. Modified Paths: -------------- trunk/software/host/lib/reprap.properties.dist trunk/software/host/src/org/reprap/geometry/polygons/AllSTLsToBuild.java Modified: trunk/software/host/lib/reprap.properties.dist =================================================================== --- trunk/software/host/lib/reprap.properties.dist 2011-02-02 17:58:01 UTC (rev 4025) +++ trunk/software/host/lib/reprap.properties.dist 2011-02-05 14:03:26 UTC (rev 4026) @@ -1,10 +1,10 @@ #RepRap machine parameters. See http://objects.reprap.org/wiki/Java_Software_Preferences_File -#Sun Oct 17 20:36:30 BST 2010 +#Sat Feb 05 12:52:42 GMT 2011 BaudRate=57600 -BedTemperature(C)=55 +BedTemperature(C)=65 CommsDebug=false Debug=false -DumpX(mm)=130 +DumpX(mm)=143 DumpY(mm)=5 Extruder0_Address=0 Extruder0_ArcCompensationFactor(0..)=8 @@ -20,13 +20,13 @@ Extruder0_ExtrusionDelayForPolygon(ms)=0 Extruder0_ExtrusionFoundationWidth(mm)=2 Extruder0_ExtrusionHeight(mm)=0.3 -Extruder0_ExtrusionInfillWidth(mm)=0.7 +Extruder0_ExtrusionInfillWidth(mm)=0.5 Extruder0_ExtrusionLastFoundationWidth(mm)=2 Extruder0_ExtrusionOverRun(mm)=-1 Extruder0_ExtrusionPWM(0..1)=-1 Extruder0_ExtrusionSize(mm)=0.5 -Extruder0_ExtrusionSpeed(mm/minute)=3500 -Extruder0_ExtrusionTemp(C)=220 +Extruder0_ExtrusionSpeed(mm/minute)=3000 +Extruder0_ExtrusionTemp(C)=205 Extruder0_FastEFeedrate(mm/minute)=18000.0 Extruder0_FastXYFeedrate(mm/minute)=4000.0 Extruder0_InFillMaterialType(name)=PLA-infill @@ -36,7 +36,7 @@ Extruder0_MaterialType(name)=PLA Extruder0_MaxAcceleration(mm/minute/minute)=1200000.0 Extruder0_MiddleStart=true -Extruder0_NumberOfShells(0..N)=1 +Extruder0_NumberOfShells(0..N)=2 Extruder0_OddHatchDirection(degrees)=-45 Extruder0_OffsetX(mm)=0 Extruder0_OffsetY(mm)=0 @@ -69,8 +69,8 @@ Extruder1_ExtrusionOverRun(mm)=3 Extruder1_ExtrusionPWM(0..1)=-1 Extruder1_ExtrusionSize(mm)=0.5 -Extruder1_ExtrusionSpeed(mm/minute)=3500 -Extruder1_ExtrusionTemp(C)=220 +Extruder1_ExtrusionSpeed(mm/minute)=3000 +Extruder1_ExtrusionTemp(C)=205 Extruder1_FastEFeedrate(mm/minute)=18000.0 Extruder1_FastXYFeedrate(mm/minute)=4000.0 Extruder1_InFillMaterialType(name)=PLA-support @@ -113,8 +113,8 @@ Extruder2_ExtrusionOverRun(mm)=0 Extruder2_ExtrusionPWM(0..1)=-1 Extruder2_ExtrusionSize(mm)=0.5 -Extruder2_ExtrusionSpeed(mm/minute)=3500 -Extruder2_ExtrusionTemp(C)=220 +Extruder2_ExtrusionSpeed(mm/minute)=3000 +Extruder2_ExtrusionTemp(C)=205 Extruder2_FastEFeedrate(mm/minute)=18000.0 Extruder2_FastXYFeedrate(mm/minute)=4000.0 Extruder2_InFillMaterialType(name)=PLA-infill @@ -196,7 +196,7 @@ MaximumFeedrateZ(mm/minute)=50 NumberOfExtruders=4 PathOptimise=true -Port(name)=/dev/ttyUSB0 +Port(name)=/dev/ttyUSB0 Shield=true SlowXYFeedrate(mm/minute)=1500.0 SlowZFeedrate(mm/minute)=50.0 Modified: trunk/software/host/src/org/reprap/geometry/polygons/AllSTLsToBuild.java =================================================================== --- trunk/software/host/src/org/reprap/geometry/polygons/AllSTLsToBuild.java 2011-02-02 17:58:01 UTC (rev 4025) +++ trunk/software/host/src/org/reprap/geometry/polygons/AllSTLsToBuild.java 2011-02-05 14:03:26 UTC (rev 4026) @@ -118,7 +118,7 @@ private int[] layerNumber; private int ringPointer; private final int noLayer = Integer.MIN_VALUE; - private final int ringSize = 7; + private final int ringSize = 5; public SliceCache() { @@ -735,10 +735,10 @@ BooleanGridList adjacentSlices = slice(stl, layer+1, layerConditions); adjacentSlices = BooleanGridList.intersections(slice(stl, layer+2, layerConditions), adjacentSlices); - adjacentSlices = BooleanGridList.intersections(slice(stl, layer+3, layerConditions), adjacentSlices); + //adjacentSlices = BooleanGridList.intersections(slice(stl, layer+3, layerConditions), adjacentSlices); adjacentSlices = BooleanGridList.intersections(slice(stl, layer-1, layerConditions), adjacentSlices); adjacentSlices = BooleanGridList.intersections(slice(stl, layer-2, layerConditions), adjacentSlices); - adjacentSlices = BooleanGridList.intersections(slice(stl, layer-3, layerConditions), adjacentSlices); + //adjacentSlices = BooleanGridList.intersections(slice(stl, layer-3, layerConditions), adjacentSlices); BooleanGridList insides = null; // The insides are the bits that aren't surface. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <adr...@us...> - 2011-02-01 22:41:47
|
Revision: 4024 http://reprap.svn.sourceforge.net/reprap/?rev=4024&view=rev Author: adrian-bowyer Date: 2011-02-01 22:41:40 +0000 (Tue, 01 Feb 2011) Log Message: ----------- More messing about with the OpenSCAD Huxley design. Modified Paths: -------------- trunk/huxley/OpenSCAD-huxley/y_frog.scad Modified: trunk/huxley/OpenSCAD-huxley/y_frog.scad =================================================================== --- trunk/huxley/OpenSCAD-huxley/y_frog.scad 2011-02-01 13:38:36 UTC (rev 4023) +++ trunk/huxley/OpenSCAD-huxley/y_frog.scad 2011-02-01 22:41:40 UTC (rev 4024) @@ -13,19 +13,52 @@ b = xbars - a; theta = atan(xbars/yl2); +p0=[0,yl2,0]; +p1=[0,-yl2,0]; +p2=[xbars,0,0]; +p00=p0+[12,-12,0]; +p11=p1+[12,12,0]; +p22=p2+[-20,0,0] ; + module accesories(holes=false) { - for(i=[-1,1]) - translate([0,i*yl2,0]) - rotate([-90,180,180]) - adjustable_bearing(true,holes); + // Bearings + + translate(p0) + rotate([-90,180,180]) + adjustable_bearing(true,holes); + + translate(p1) + rotate([-90,180,180]) + adjustable_bearing(true,holes); - translate([xbars,0,0]) + translate(p2) rotate([-90,180,0]) adjustable_bearing(false,holes); + + if(!holes) { + // Clearance + + //mirror([0,0,1]) + //cube([10,10,20]); + + // Limit switch + + translate([56,-yl2-20,6]) + cube([2,20,2]); + + // Y belt + + translate([28,-100,-5.7-1.5]) + cube([6,200,1.5]); + translate([28,-100,-5.7-1.5+8.75]) + cube([6,200,1.5]); + + // Y rods + rotate([90,0,0]) rod(1.5*ylength,false); @@ -35,7 +68,118 @@ } } -accesories(false); +module belt_clamp_holes() +{ -translate([-13, -yl2-10,-14]) -cube([xbars+26, ylength+20, 5]); \ No newline at end of file + translate([-5,0,0]) + cylinder(r=screwsize/2, h=50, center=true, $fn=10); + translate([5,0,0]) + cylinder(r=screwsize/2, h=50, center=true, $fn=10); +} + +module belt_clamp(depth=6, nut=false, holes=false) +{ + if(holes) + belt_clamp_holes(); + else + difference() + { + cube([16,8,depth], center=true); + belt_clamp_holes(); + } +} + +module y_frog() +{ + translate([0, 0,-14]) + { + difference() + { + union() + { + translate([-13, -yl2-10,0]) + cube([xbars+26, ylength+20, 5]); + strut(p00, p11, 10,10,2); + strut(p00, p22, 10,10,2); + strut(p11, p22, 10,10,2); + translate([xbars/2-6.5, -(ylength +50)/2,-5]) + cube([16, ylength+50, 10]); + translate([-13, -8,-5]) + cube([30, 16, 10]); + } + + + translate(p0+[0, 20,-25]) + rotate([0,0,-90+theta]) + cube([xbars+26+50, ylength+20+50, 5+50]); + + mirror([0,1,0]) + translate(p0+[0, 20,-25]) + rotate([0,0,-90+theta]) + cube([xbars+26+50, ylength+20+50, 5+50]); + + accesories(holes=true); + + linear_extrude(height = 100, center = true, convexity = 10, twist = 0) + polygon(points=[[p00.x,p00.y],[p11.x,p11.y],[p22.x,p22.y]]); + + translate([31,-yl2+4,0]) + belt_clamp(depth=6, holes=true); + + translate([31,yl2-4,0]) + belt_clamp(depth=6, holes=true); + + for(i=[-1,1]) + { + translate([xbars*0.8, i*ylength/2.4,-2.75]) + rotate([0,-90,0]) + teardrop(r=screwsize/2, h = 50, truncateMM=0.5); + + translate([xbars*0.8, i*ylength/3.2,-2.75]) + rotate([0,-90,0]) + teardrop(r=screwsize/2, h = 50, truncateMM=0.5); + } + + translate([-10, 25,-2.75]) + rotate([0,-90,90]) + teardrop(r=screwsize/2, h = 50, truncateMM=0.5); + + translate([0, 25,-2.75]) + rotate([0,-90,90]) + teardrop(r=screwsize/2, h = 50, truncateMM=0.5); + + } + } +} + + + +difference() +{ + y_frog(); + translate([-100, 0,-100]) cube([500, 500, 500]); + translate([xbars/2-6.5+8, -250,-100]) cube([500, 500, 500]); +} + +difference() +{ + y_frog(); + mirror([0,1,0]) + translate([-100, 0,-100]) cube([500, 500, 500]); + translate([xbars/2-6.5+8, -250,-100]) cube([500, 500, 500]); +} + +intersection() +{ + y_frog(); + translate([xbars/2-6.5+8, -250,-100]) cube([500, 500, 500]); +} + + +translate([31,-yl2+4,-2.7]) +{ + belt_clamp(depth=6, nut=true, holes=false); + translate([0,0,-5.5]) + belt_clamp(depth=2, nut = false, holes=false); +} +accesories(false); \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <adr...@us...> - 2011-02-01 13:38:43
|
Revision: 4023 http://reprap.svn.sourceforge.net/reprap/?rev=4023&view=rev Author: adrian-bowyer Date: 2011-02-01 13:38:36 +0000 (Tue, 01 Feb 2011) Log Message: ----------- More messing about with the OpenSCAD Huxley design. Modified Paths: -------------- trunk/huxley/OpenSCAD-huxley/library.scad trunk/huxley/OpenSCAD-huxley/parameters.scad trunk/huxley/OpenSCAD-huxley/x_motor_mount.scad trunk/huxley/OpenSCAD-huxley/y_frog.scad Removed Paths: ------------- trunk/huxley/OpenSCAD-huxley/bearing.scad Deleted: trunk/huxley/OpenSCAD-huxley/bearing.scad =================================================================== --- trunk/huxley/OpenSCAD-huxley/bearing.scad 2011-02-01 13:37:18 UTC (rev 4022) +++ trunk/huxley/OpenSCAD-huxley/bearing.scad 2011-02-01 13:38:36 UTC (rev 4023) @@ -1,44 +0,0 @@ - -// Adjustable slide bearings for 6mm diameter rods mounted using M3 cap screws 18 mm apart. - -// The profile for these should be CSG from the parameters, but at the moment it's a dxf. - -// Adrian Bowyer 18 December 2010 - -include <parameters.scad>; -use <library.scad>; - - -//***************************************************************************************************************** - -// Make an extrusion from the appropriate profile - -module bearingProfile(b360=true) -{ - if(b360) - linear_extrude(file = str(fileroot, "bearing360.dxf"), layer = "0", height = bearing_width, - center = true, convexity = 10, twist = 0, $fn=40); - else - linear_extrude(file = str(fileroot, "bearing180.dxf"), layer = "0", height = bearing_width, - center = true, convexity = 10, twist = 0, $fn=40); -} - -// The distance between the 3mm screw centres is 18 mm - -module bearing(b360) -{ - difference() - { - bearingProfile(b360); - translate([4, -10, 0])rotate(90, [0, 1, 0]) - rotate(-90, [1, 0, 0]) - teardrop(r=1.5, h=50, truncateMM=-1); - translate([22, -10, 0])rotate(90, [0, 1, 0]) - rotate(-90, [1, 0, 0]) - teardrop(r=1.5, h=50, truncateMM=-1); - } -} - -// true for a 360 degree bearing, false for a 180 one. - -//bearing(true); Modified: trunk/huxley/OpenSCAD-huxley/library.scad =================================================================== --- trunk/huxley/OpenSCAD-huxley/library.scad 2011-02-01 13:37:18 UTC (rev 4022) +++ trunk/huxley/OpenSCAD-huxley/library.scad 2011-02-01 13:38:36 UTC (rev 4023) @@ -8,6 +8,64 @@ function op(v1 = [0,0,0], v2 = [0,0,0]) = [v1.y*v2.z - v1.z*v2.y, v1.z*v2.x - v1.x*v2.z, v1.x*v2.y - v1.y*v2.x]; +// Adjustable slide bearings for 6mm diameter rods mounted using M3 cap screws 18 mm apart. + +// The profile for these should be CSG from the parameters, but at the moment it's a dxf. + +// Adrian Bowyer 18 December 2010 + +//***************************************************************************************************************** + +// Make an extrusion from the appropriate profile + +module bearingProfile(b360=true) +{ + if(b360) + linear_extrude(file = str(fileroot, "bearing360.dxf"), layer = "0", height = bearing_width, + center = true, convexity = 10, twist = 0, $fn=40); + else + linear_extrude(file = str(fileroot, "bearing180.dxf"), layer = "0", height = bearing_width, + center = true, convexity = 10, twist = 0, $fn=40); +} + +// The distance between the 3mm screw centres is 18 mm +// Set mounts true to get mounting holes, false to get the bearing +// Set b360 true for a 360 degree bearing, false for a 180 one. + +module adjustable_bearing(b360, mounts=false) +{ + translate([-13,-9,0]) // Centre the shaft on the z axis + { + if(mounts) + { + union() + { + translate([4, -10, 0])rotate(90, [0, 1, 0]) + rotate(-90, [1, 0, 0]) + cylinder(r=1.5, h=50, centre = true, $fn=10); + translate([22, -10, 0])rotate(90, [0, 1, 0]) + rotate(-90, [1, 0, 0]) + cylinder(r=1.5, h=50, centre = true, $fn=10); + } + }else + { + difference() + { + bearingProfile(b360); + translate([4, -10, 0])rotate(90, [0, 1, 0]) + rotate(-90, [1, 0, 0]) + teardrop(r=1.5, h=50, truncateMM=-1); + translate([22, -10, 0])rotate(90, [0, 1, 0]) + rotate(-90, [1, 0, 0]) + teardrop(r=1.5, h=50, truncateMM=-1); + } + } + } +} + + + + /* This makes an angled strut in space between two points. It is parallel to one of the coordinate planes, which means that one coordinate of the two endpoints must be the same. @@ -97,16 +155,50 @@ for ( y = [0:1] ) { translate([(x-0.5)*nema14_screws, (y-0.5)*nema14_screws, -20]) - cylinder(r = screwsize/2, h = 50, center = true, $fn=10); + cylinder(r = nema14_screw_r, h = 50, center = true, $fn=10); if(counterbore >= 0) translate([(x-0.5)*nema14_screws, (y-0.5)*nema14_screws, -25-counterbore]) - cylinder(r = screwsize, h = 50, center = true, $fn=10); + cylinder(r = 2*nema14_screw_r, h = 50, center = true, $fn=10); } } } } +} +module nema11(body = true, counterbore = -1) +{ + color([1,0.4,0.4,1]) + union() + { + if(body) + { + translate([0, 0, nema11_shaft_length/2 - nema11_shaft_projection - nema11_hub_depth]) + cylinder(r = nema11_shaft/2, h = nema11_shaft_length, center = true, $fn=20); + translate([0, 0, -nema11_hub_depth]) + cylinder(r = nema11_hub/2, h = nema11_hub_depth*2, center = true, $fn=20); + + translate([0, 0, nema11_length/2]) + cube([nema11_square,nema11_square,nema11_length], center = true); + } else + translate([0, 0, -20]) + cylinder(r = nema11_hub/2 + 1, h = 50, center = true, $fn=20); + if(!body) + { + union() + { + for ( x = [0:1] ) + for ( y = [0:1] ) + { + translate([(x-0.5)*nema11_screws, (y-0.5)*nema11_screws, -20]) + cylinder(r = nema11_screw_r, h = 50, center = true, $fn=10); + if(counterbore >= 0) + translate([(x-0.5)*nema11_screws, (y-0.5)*nema11_screws, -25-counterbore]) + cylinder(r = 2*nema11_screw_r, h = 50, center = true, $fn=10); + } + } + } + } } @@ -296,6 +388,41 @@ } +module tooth_gap(height = 10, number_of_teeth = 11, inner_radius = 10, dr = 3, angle=7) +{ + linear_extrude(height = 2*height, center = true, convexity = 10, twist = 0) + polygon( points = [ + [pi*inner_radius/(2*number_of_teeth), 0], + [-pi*inner_radius/(2*number_of_teeth), 0], + [-2*dr *sin(angle) - pi*inner_radius/(2*number_of_teeth), 2*dr], + [2*dr *sin(angle) + pi*inner_radius/(2*number_of_teeth), 2*dr], + ], convexity = 3); +} + + + +module gear(height = 10, number_of_teeth = 11, inner_radius = 10, outer_radius = 12, angle=15) +{ + difference() + { + cylinder(h = height, r = outer_radius, centre = true); + for(i = [0:number_of_teeth]) + { + rotate([0, 0, i*360/number_of_teeth]) + translate([0, inner_radius, 0]) + tooth_gap(height = height, number_of_teeth = number_of_teeth, inner_radius = inner_radius, + dr = outer_radius - inner_radius, angle=angle); + } + } +} + + + + +//gear(); + + + //rod(20); //translate([rodsize * 2.5, 0, 0]) rod(20, true); //translate([rodsize * 5, 0, 0]) screw(10, true); @@ -313,7 +440,10 @@ //pentanut(); -//nema14(body = true, counterbore = -1); +//nema14(body = false, counterbore = 8); +//nema11(body = false, counterbore = 8); +//strut(p1=[20,10,20], p2=[20, 60, 40], wide=10, deep=5, round=2); -strut(p1=[20,10,20], p2=[20, 60, 40], wide=10, deep=5, round=2); \ No newline at end of file + +adjustable_bearing(true, false); Modified: trunk/huxley/OpenSCAD-huxley/parameters.scad =================================================================== --- trunk/huxley/OpenSCAD-huxley/parameters.scad 2011-02-01 13:37:18 UTC (rev 4022) +++ trunk/huxley/OpenSCAD-huxley/parameters.scad 2011-02-01 13:38:36 UTC (rev 4023) @@ -50,6 +50,7 @@ nema14_square=35.3; nema14_screws=26; +nema14_screw_r=1.5; nema14_hub=22; nema14_hub_depth=2; nema14_length=36; @@ -57,6 +58,18 @@ nema14_shaft_length=66; nema14_shaft_projection=19; +// Nema 11 dimensions - these are absolute + +nema11_square=28.5; +nema11_screws=23; +nema11_screw_r=1.25; +nema11_hub=22; +nema11_hub_depth=2; +nema11_length=44.5; +nema11_shaft=5; +nema11_shaft_length=78; +nema11_shaft_projection=18; + // Limit switch parameters limit_switch_hole_diameter=2.5; Modified: trunk/huxley/OpenSCAD-huxley/x_motor_mount.scad =================================================================== --- trunk/huxley/OpenSCAD-huxley/x_motor_mount.scad 2011-02-01 13:37:18 UTC (rev 4022) +++ trunk/huxley/OpenSCAD-huxley/x_motor_mount.scad 2011-02-01 13:38:36 UTC (rev 4023) @@ -49,11 +49,11 @@ module bearing_plate() { - union() - { + difference() { - + union() + { translate([-bearing_plate_width/2, bearing_plate_overlap - thickness, -thickness]) { difference() @@ -65,7 +65,27 @@ bearing_low_z + bearing_z_gap + hole_land + thickness + 10]); } } + // Shim support ledges + translate([-bearing_mount_centres/2, -0.8*thickness, bearing_low_z + bearing_z_gap-1.5*thickness-1.5]) + intersection() + { + rotate([35,0,0]) + cube([bearing_mount_centres, thickness, thickness]); + translate([-thickness/5, -thickness*3/5, -thickness*6/5]) + cube([2*bearing_mount_centres, 2*thickness, 2*thickness]); + } + + translate([-bearing_mount_centres/2, -0.8*thickness, bearing_low_z -1.5*thickness-1.5]) + intersection() + { + rotate([35,0,0]) + cube([bearing_mount_centres, thickness, thickness]); + translate([-thickness/5, -thickness*3/5, -thickness*6/5]) + cube([2*bearing_mount_centres, 2*thickness, 2*thickness]); + } + } + // Bearing mount holes for ( y = [0:1] ) @@ -77,34 +97,24 @@ // Limit switch mounting holes - translate([-40,4,12]) + translate([-40,1,15]) rotate([0,90,0]) + { teardrop(r=limit_switch_hole_diameter/2, h=40, truncateMM=-1); - translate([-40,4,12+limit_switch_centres]) + translate([0,0,27]) + teardrop(r=limit_switch_hole_diameter, h=18, truncateMM=-1); + } + translate([-40,1,15+limit_switch_centres]) rotate([0,90,0]) + { teardrop(r=limit_switch_hole_diameter/2, h=40, truncateMM=-1); - } + translate([0,0,27]) + teardrop(r=limit_switch_hole_diameter, h=18, truncateMM=-1); + } + } - // Shim support ledges - translate([-bearing_mount_centres/2, -0.8*thickness, bearing_low_z + bearing_z_gap-1.5*thickness-1.5]) - intersection() - { - rotate([35,0,0]) - cube([bearing_mount_centres, thickness, thickness]); - translate([-thickness/5, -thickness*3/5, -thickness*6/5]) - cube([2*bearing_mount_centres, 2*thickness, 2*thickness]); - } - translate([-bearing_mount_centres/2, -0.8*thickness, bearing_low_z -1.5*thickness-1.5]) - intersection() - { - rotate([35,0,0]) - cube([bearing_mount_centres, thickness, thickness]); - translate([-thickness/5, -thickness*3/5, -thickness*6/5]) - cube([2*bearing_mount_centres, 2*thickness, 2*thickness]); - } - } } module cylindrical_z_holes() Modified: trunk/huxley/OpenSCAD-huxley/y_frog.scad =================================================================== --- trunk/huxley/OpenSCAD-huxley/y_frog.scad 2011-02-01 13:37:18 UTC (rev 4022) +++ trunk/huxley/OpenSCAD-huxley/y_frog.scad 2011-02-01 13:38:36 UTC (rev 4023) @@ -6,21 +6,36 @@ d=22; w=5; -difference() +// Triangle values + +yl2 = ylength/2; +a = (yl2*yl2 + xbars*xbars)/(2*xbars); +b = xbars - a; +theta = atan(xbars/yl2); + + +module accesories(holes=false) { - union() + for(i=[-1,1]) + translate([0,i*yl2,0]) + rotate([-90,180,180]) + adjustable_bearing(true,holes); + + translate([xbars,0,0]) + rotate([-90,180,0]) + adjustable_bearing(false,holes); + if(!holes) { - strut(p1=[0,-ylength/2,0], p2=[0,ylength/2 , 0], wide=w, deep=d, round=2); - strut(p1=[0,-ylength/2,0], p2=[xbars, 0, 0], wide=w, deep=d, round=2); - strut(p1=[0,ylength/2,0], p2=[xbars,0 , 0], wide=w, deep=d, round=2); - translate([0,0,-w]) - { - strut(p1=[0,-ylength/2,0], p2=[0,ylength/2 , 0], wide=2*w + 1, deep=w, round=2); - strut(p1=[0,-ylength/2,0], p2=[xbars, 0, 0], wide=2*w + 1, deep=w, round=2); - strut(p1=[0,ylength/2,0], p2=[xbars,0 , 0], wide=2*w + 1, deep=w, round=2); - } - + rotate([90,0,0]) + rod(1.5*ylength,false); + + translate([xbars,0,0]) + rotate([90,0,0]) + rod(1.5*ylength,false); } +} - translate([]) - cylinder(r=screwsize/2,h=2*d, center=true \ No newline at end of file +accesories(false); + +translate([-13, -yl2-10,-14]) +cube([xbars+26, ylength+20, 5]); \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <adr...@us...> - 2011-01-30 15:35:44
|
Revision: 4021 http://reprap.svn.sourceforge.net/reprap/?rev=4021&view=rev Author: adrian-bowyer Date: 2011-01-30 15:35:37 +0000 (Sun, 30 Jan 2011) Log Message: ----------- File tidying. Modified Paths: -------------- trunk/mendel/mechanics/RFO-files/tray-4.rfo trunk/mendel/mechanics/RFO-files/tray-5.rfo trunk/mendel/mechanics/solid-models/cartesian-robot-m4/printed-parts/alternative-parts/set-screw-drive-pulleys_3off.aoi Modified: trunk/mendel/mechanics/RFO-files/tray-4.rfo =================================================================== (Binary files differ) Modified: trunk/mendel/mechanics/RFO-files/tray-5.rfo =================================================================== (Binary files differ) Modified: trunk/mendel/mechanics/solid-models/cartesian-robot-m4/printed-parts/alternative-parts/set-screw-drive-pulleys_3off.aoi =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <adr...@us...> - 2011-01-28 11:31:22
|
Revision: 4020 http://reprap.svn.sourceforge.net/reprap/?rev=4020&view=rev Author: adrian-bowyer Date: 2011-01-28 11:31:16 +0000 (Fri, 28 Jan 2011) Log Message: ----------- Fixed layer cache size so that it stores 7 layers, not 5. Modified Paths: -------------- trunk/software/host/src/org/reprap/geometry/polygons/AllSTLsToBuild.java Modified: trunk/software/host/src/org/reprap/geometry/polygons/AllSTLsToBuild.java =================================================================== --- trunk/software/host/src/org/reprap/geometry/polygons/AllSTLsToBuild.java 2011-01-28 01:20:39 UTC (rev 4019) +++ trunk/software/host/src/org/reprap/geometry/polygons/AllSTLsToBuild.java 2011-01-28 11:31:16 UTC (rev 4020) @@ -118,7 +118,7 @@ private int[] layerNumber; private int ringPointer; private final int noLayer = Integer.MIN_VALUE; - private final int ringSize = 5; + private final int ringSize = 7; public SliceCache() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ree...@us...> - 2011-01-28 01:20:48
|
Revision: 4019 http://reprap.svn.sourceforge.net/reprap/?rev=4019&view=rev Author: reece-arnott Date: 2011-01-28 01:20:39 +0000 (Fri, 28 Jan 2011) Log Message: ----------- CarapaceCopier: Integrating half finished triangular surface patch code into GUI. Still has a lot of debugging type output going to standard out and has a number of hardcoded thresholds etc. that will need to be changed when it is working correctly. Modified Paths: -------------- trunk/old_files/miscellaneous/CarapaceCopier/src/org/reprap/scanning/DataStructures/TrianglePlusVertexArray.java trunk/old_files/miscellaneous/CarapaceCopier/src/org/reprap/scanning/GUI/Main.java trunk/old_files/miscellaneous/CarapaceCopier/src/org/reprap/scanning/Geometry/Triangle3D.java Modified: trunk/old_files/miscellaneous/CarapaceCopier/src/org/reprap/scanning/DataStructures/TrianglePlusVertexArray.java =================================================================== --- trunk/old_files/miscellaneous/CarapaceCopier/src/org/reprap/scanning/DataStructures/TrianglePlusVertexArray.java 2011-01-28 00:16:11 UTC (rev 4018) +++ trunk/old_files/miscellaneous/CarapaceCopier/src/org/reprap/scanning/DataStructures/TrianglePlusVertexArray.java 2011-01-28 01:20:39 UTC (rev 4019) @@ -155,7 +155,7 @@ // There are a maximum of 2 new patches we can get from this patch, as it is assumed that the point on the otherside of the line ab has already been found. // Note that we will not expand in a direction if it means going outside the bounding box or if it is a circular triangle creation. - // TODO The latter is determined simply by seeing if there is any other triangle that contains both points a and c or b and c respectively + // The latter is determined simply by seeing if there is any other triangle that contains both points a and c or b and c respectively int[] points=triangles[current].GetFace(); // Just for additional readability @@ -182,16 +182,35 @@ // Find if the specified point is close to a point we already have and snap to it if that is the case int i=0; - boolean exit=false; - while ((i<vertices.length) && (!exit)){ - if (newcandnormal[0].CalculateDistanceSquared(vertices[i])<mindistancesquaredbetweenvertices) {newcindex=i; exit=true;} + boolean snappedto=false; + while ((i<vertices.length) && (!snappedto)){ + if (newcandnormal[0].CalculateDistanceSquared(vertices[i])<mindistancesquaredbetweenvertices) { + newcindex=i; + snappedto=true; + } i++; } - // Find if the point is inside the bounding box, if so, add the triangle + // Find if the point is inside the bounding box, and doesn't interpenetrate any other pre-existing triangles, if so, add the triangle if (aabb.PointInside3DBoundingBox(newcandnormal[0])) { - if (newcindex==vertices.length) AddVertex(newcandnormal[0]); - AddTriangle(new Triangle3D(newa,newb,newcindex,vertices,newcandnormal[1])); + Point3d[] oldpointsarray=new Point3d[0]; + if (!snappedto) {oldpointsarray=vertices.clone();AddVertex(newcandnormal[0]);} + Triangle3D tri=new Triangle3D(newa,newb,newcindex,vertices,newcandnormal[1]); + boolean interpenetration=Interpenetration(tri,current); + //for (i=0;i<vertices.length;i++){System.out.print(i+" ");vertices[i].Print();System.out.println();} + if (!interpenetration){ + if (snappedto) //we will need to recalculate the normal. + //As long as the snapping to a previously existing index did not change the angle by more than 90 degrees + //(given that the snapping is supposed to be a small portion just to get around rounding errors this shouldn't be a problem) + //we can easily calculate the new normal with the question of which side of the triangle is up + //solved by having it be the same side as with the previous normal + tri.CalculateNormalAwayFromPoint(vertices,vertices[newcindex].minus(newcandnormal[1])); + AddTriangle(tri); + } + else { + if (!snappedto) vertices=oldpointsarray.clone(); // reset the vertex array if need be + } + } // end if within boundingbox } // end if skip } // end for loop @@ -214,53 +233,59 @@ rotatedpoint=rotatedpoint.plus(newa); Point3d rotatedupvector=new Point3d(R.times(normal.ConvertPointTo3x1Matrix())); double averagevariance=TexturePatch.FindSimilarityMeasure(images, newa, newb, rotatedpoint, squaresize, rotatedupvector); - if (averagevariance<minvariance){ - minvariance=averagevariance; - minvarianceangle=angle; - returnvalue[0]=rotatedpoint.clone(); - returnvalue[1]=new Point3d(R.times(normal.ConvertPointTo3x1Matrix())); - } - else if (averagevariance>maxvariance) maxvariance=averagevariance; + if (averagevariance!=Double.MAX_VALUE) // if the value returned is Double.MAX_VALUE then this means this angle is invalid as there are not at least 2 cameras above a patch at this angle (it could be this is the correct angle but the object is self-occluding so we cannot tell) + if (averagevariance<minvariance){ + minvariance=averagevariance; + minvarianceangle=angle; + returnvalue[0]=rotatedpoint.clone(); + returnvalue[1]=rotatedupvector.clone(); + } + else if ((averagevariance>maxvariance) || (maxvariance==Double.MAX_VALUE)) maxvariance=averagevariance; } // end for angle minangle=minvarianceangle-(step/2); maxangle=minvarianceangle+(step/2); } // end for loop - // If there is not enough variation to be able to tell, just leave it at zero degrees. - if ((maxvariance-minvariance)<minimumrange){ + // If there is not enough variation to be able to tell, just leave it at zero degrees. i.e. continue expanding the plane in this direction + if ((maxvariance-minvariance)<=minimumrange){ returnvalue[0]=newczero.clone(); returnvalue[1]=normal.clone(); } + else System.out.println((maxvariance-minvariance)); return returnvalue; } - //TODO uncomment and get working - /* - public boolean Interpenetration(TriangularTexturePatch[] others, int skip){ + + + // Note this only tests the interpenetration of edges ac and bc + private boolean Interpenetration(Triangle3D tri, int skip){ boolean interpenetration=false; - Line3d[] perimeter=new Line3d[3]; - perimeter[0]=new Line3d(a,b); - perimeter[1]=new Line3d(b,c); - perimeter[2]=new Line3d(c,a); - + int[] vertex=tri.GetFace(); + Line3d[] perimeter=new Line3d[2]; + perimeter[0]=new Line3d(vertices[vertex[0]],vertices[vertex[2]]); + perimeter[1]=new Line3d(vertices[vertex[1]],vertices[vertex[2]]); int k=0; - while ((k<others.length) && (!interpenetration))if (k!=skip){ - Plane plane=new Plane(others[k].a,others[k].b,others[k].c); + while ((k<triangles.length) && (!interpenetration))if (k!=skip){ + Plane plane=new Plane(triangles[k],vertices); //Test for penetration of each edge, first with the plane, then with the triangle - for (int linesegment=0;linesegment<3;linesegment++) if (!interpenetration){ + for (int linesegment=0;linesegment<2;linesegment++) if (!interpenetration){ + int[] v=triangles[k].GetFace(); + // First before anything else, test to see if one of the points in the line segment is one of the vertices of the triangle we're about to test + if ((!triangles[k].IncludesPoint(vertex[2])) && (!triangles[k].IncludesPoint(vertex[linesegment]))) + { // Test to see if the line segment intersects the plane which it will unless it is the // special case that the line segment and plane are parallel in which case we need to do more testing - boolean parallel=plane.Intersect(perimeter[linesegment]); - // If it is parallel are the points close enough to be considered part of the plane and if they are are they within the triangle + boolean parallel=!plane.Intersect(perimeter[linesegment]); + // If it is parallel are the points close enough to be considered part of the plane and if they are are they within the triangle? if (parallel) { // these are the special cases Point3d point=plane.FindClosestPointOnPlane(perimeter[linesegment].P); if (perimeter[linesegment].P.ApproxEqual(point)){ // Test to see if either end of the line segment are within the triangle, using barycentric coordinates after transferring to 2d barycentric coordinates // if neither end is, does the line segment intersect with the other line segments - Point3d up=others[k].b.minus(others[k].a); + Point3d up=vertices[v[1]].minus(vertices[v[0]]); Point2d[] triangularvertices; triangularvertices=new Point2d[3]; - triangularvertices[0]=plane.GetParametricCoordinatesFromPointOnPlane(up, others[k].a); - triangularvertices[1]=plane.GetParametricCoordinatesFromPointOnPlane(up, others[k].b); - triangularvertices[2]=plane.GetParametricCoordinatesFromPointOnPlane(up, others[k].c); + triangularvertices[0]=plane.GetParametricCoordinatesFromPointOnPlane(up, vertices[v[0]]); + triangularvertices[1]=plane.GetParametricCoordinatesFromPointOnPlane(up, vertices[v[1]]); + triangularvertices[2]=plane.GetParametricCoordinatesFromPointOnPlane(up, vertices[v[2]]); Point2d point1=plane.GetParametricCoordinatesFromPointOnPlane(up, point); Coordinates test=new Coordinates(3); test.pixel=point1.clone(); @@ -273,37 +298,37 @@ if (test.isOutside()) { // Both ends of the line segment are outside the triangle but does the line segment itself intersect the perimeter of the triangle LineSegment2D line=new LineSegment2D(point1,point2); - interpenetration=point1.isEqual(line.SingleIntersectionPointBetweenStartAndEndExclusive(new LineSegment2D(triangularvertices[0],triangularvertices[1]))); - if (!interpenetration) interpenetration=point1.isEqual(line.SingleIntersectionPointBetweenStartAndEndExclusive(new LineSegment2D(triangularvertices[1],triangularvertices[2]))); - if (!interpenetration) interpenetration=point1.isEqual(line.SingleIntersectionPointBetweenStartAndEndExclusive(new LineSegment2D(triangularvertices[2],triangularvertices[0]))); - if (interpenetration) System.out.println("Interpenetration detected: The triangle and line segment are parallel, on the same plane with line segment "+linesegment+" crossing the triangle"); - } else {interpenetration=true; System.out.println("Interpenetration detected: The triangle and line segment are parallel, on the same plane with the end of line segment "+linesegment+" inside the triangle"+k);} - } else {interpenetration=true;System.out.println("Interpenetration detected: The triangle and line segment are parallel, on the same plane with the start of line segment "+linesegment+" inside the triangle"+k);} + interpenetration=!point1.isEqual(line.SingleIntersectionPointBetweenStartAndEndExclusive(new LineSegment2D(triangularvertices[0],triangularvertices[1]))); + if (!interpenetration) interpenetration=!point1.isEqual(line.SingleIntersectionPointBetweenStartAndEndExclusive(new LineSegment2D(triangularvertices[1],triangularvertices[2]))); + if (!interpenetration) interpenetration=!point1.isEqual(line.SingleIntersectionPointBetweenStartAndEndExclusive(new LineSegment2D(triangularvertices[2],triangularvertices[0]))); + if (interpenetration) System.out.println("Interpenetration detected: The triangle and line segment are parallel, on the same plane with line segment "+vertex[linesegment]+"-"+vertex[2]+" crossing the triangle"+k+" vertices ("+v[0]+","+v[1]+","+v[2]+")"); + } else {interpenetration=true; System.out.println("Interpenetration detected: The triangle and line segment are parallel, on the same plane with the end of line segment "+vertex[linesegment]+"-"+vertex[2]+" inside the triangle"+k+" vertices ("+v[0]+","+v[1]+","+v[2]+")");} + } else {interpenetration=true;System.out.println("Interpenetration detected: The triangle and line segment are parallel, on the same plane with the start of line segment "+vertex[linesegment]+"-"+vertex[2]+" inside the triangle"+k+" vertices ("+v[0]+","+v[1]+","+v[2]+")");} } // end if on the plane } // end if parallel - else if (plane.IntersectLineSegment(perimeter[linesegment])){ // this is the general case + else if (plane.IntersectLineSegment(perimeter[linesegment])){ // this is the general case. Note now we just want to see if the line segment intersects the plane Point3d intersectionpoint=plane.IntersectionPoint(perimeter[linesegment]); // Now use barycentric coordinates after transforming to 2d parameteric coordinates to see if the point is in the triangle - Point3d up=others[k].b.minus(others[k].a); + Point3d up=vertices[v[1]].minus(vertices[v[0]]); Point2d[] triangularvertices; triangularvertices=new Point2d[3]; - triangularvertices[0]=plane.GetParametricCoordinatesFromPointOnPlane(up, others[k].a); - triangularvertices[1]=plane.GetParametricCoordinatesFromPointOnPlane(up, others[k].b); - triangularvertices[2]=plane.GetParametricCoordinatesFromPointOnPlane(up, others[k].c); + triangularvertices[0]=plane.GetParametricCoordinatesFromPointOnPlane(up, vertices[v[0]]); + triangularvertices[1]=plane.GetParametricCoordinatesFromPointOnPlane(up, vertices[v[1]]); + triangularvertices[2]=plane.GetParametricCoordinatesFromPointOnPlane(up, vertices[v[2]]); Point2d point=plane.GetParametricCoordinatesFromPointOnPlane(up, intersectionpoint); Coordinates test=new Coordinates(3); test.pixel=point.clone(); test.calculatebary(triangularvertices); interpenetration=(!test.isOutside()); - if (interpenetration) System.out.println("Interpenetration detected: The triangle and line segment are not parallel, but the line segment "+linesegment+" intersects the plane made by the triangle at a point inside the triangle "+k); + if (interpenetration) System.out.println("Interpenetration detected: The triangle and line segment are not parallel, but the line segment "+vertex[linesegment]+"-"+vertex[2]+" intersects the plane made by the triangle at a point inside the triangle"+k+" vertices ("+v[0]+","+v[1]+","+v[2]+")"); } // end else if + } // end if line segment ends not include one of points of triangle } // end for linesegments k++; } // end if/while loop else k++; return interpenetration; } - */ } Modified: trunk/old_files/miscellaneous/CarapaceCopier/src/org/reprap/scanning/GUI/Main.java =================================================================== --- trunk/old_files/miscellaneous/CarapaceCopier/src/org/reprap/scanning/GUI/Main.java 2011-01-28 00:16:11 UTC (rev 4018) +++ trunk/old_files/miscellaneous/CarapaceCopier/src/org/reprap/scanning/GUI/Main.java 2011-01-28 01:20:39 UTC (rev 4019) @@ -22,7 +22,7 @@ * * Reece Arnott ree...@gm... * - * Last modified by Reece Arnott 25th January 2011 + * Last modified by Reece Arnott 28th January 2011 * * Note that most of the layout commands were initially produced by NetBeans for JDK 6 * and significantly modified by hand. For future reference if it needs to be done the other way the main things to change are: @@ -140,7 +140,7 @@ */ //public static enum steps {calibrationsheet, fileio, calibrationsheetinterrogation,calibration,objectfindingvoxelisation,texturematching,writetofile,end}; - public static enum steps {calibrationsheet, fileio, calibrationsheetinterrogation,calibration,test,end}; + public static enum steps {calibrationsheet, fileio, calibrationsheetinterrogation,calibration,objectfindingvoxelisation,test,writetofile,end}; private final static steps stepsarray[]=steps.values(); private static steps laststep = steps.valueOf("end"); private static steps firststep = steps.valueOf("calibrationsheet"); @@ -263,18 +263,17 @@ // There is an if statement in this step that reads values from: a properties file and two image files per original image file if it is an automatic step // Note that the end is an unconditional call to this method with an incremented step // i.e. automatically go onto the next step - /* case objectfindingvoxelisation : FindCoarseVoxelisedObject(); break; // this is another of the big ones // Note that the end is a call to this method with an incremented step if the next step is set to Automatic // i.e. exit without the user pressing the exit button - case texturematching :SurfacePointTextureMatching();break; + //case texturematching :SurfacePointTextureMatching();break; + case test: Test2();break; + case writetofile: OutputSTLFile(); GraphicsFeedback(); // image feedback if the debug options are set break; - //*/ - case test: Test2();break; case end : end(); break; } @@ -291,16 +290,31 @@ Testing test=new Testing(); test.TemporaryTestMethod(); } - +//TODO make into a "real" method rather than just using it for testing public void Test2(){ // Create an equalateral triangle starting at top of calibration sheet - // Point2d a2d=new Point2d(-(calibrationsheetwidth/2),-(calibrationsheetheight/2)); + //Point2d a2d=new Point2d(-(calibrationsheetwidth/2),-(calibrationsheetheight/2)); // Point2d a2d=new Point2d(0,0); - Point2d a2d=new Point2d(calibrationsheetwidth/2,calibrationsheetheight/2); - - double initialangle=Math.PI; - double length=20; + Point2d a2d=new Point2d(volumeofinterest.minx,volumeofinterest.miny); + // Increment the second progress bar + try{ + // This is the recommended way of passing GUI information between threads + EventQueue.invokeLater(new Runnable(){ + public void run(){ + // Update progress bar + jProgressBar2.setValue(jProgressBar2.getValue()+1); + jLabelProgressBar1.setText("Estimating Surface Triangles"); + + } + }); + } + catch (Exception e) { + System.out.println("Exception in updating the progress bar"+e.getMessage()); + } + double initialangle=0; + double length=10; + double mindistancebetweenvertices=length/4; Point2d b2d=a2d.GetOtherPoint(initialangle,length); Point2d c2d=a2d.GetOtherPoint(initialangle+(((double)60/(double)360)*tau),length); @@ -310,49 +324,80 @@ Point3d upvector=new Point3d(0,0,1); + //volumeofinterest.minx=(-calibrationsheetwidth/2); + //volumeofinterest.miny=(-calibrationsheetheight/2); + //volumeofinterest.minz=-1; + //volumeofinterest.maxx=(calibrationsheetwidth/2); + //volumeofinterest.maxy=(calibrationsheetheight/2); + //volumeofinterest.maxz=(calibrationsheetwidth/2); + + + // Standard "test every degree from -89.5 to 89.5 inclusive in steps of 1 degree" + //int numberofsubdivisions=1; + //int numberofranges=180; + // subdivide search space recursively to a certain accuracy. int numberofsubdivisions=3; int numberofranges=8; int squaresize=10; - double minimumsimilarityrange=1000; - double mindistancesquaredbetweenvertices=4; - volumeofinterest.minx=(-calibrationsheetwidth/2); - volumeofinterest.miny=(-calibrationsheetheight/2); - volumeofinterest.minz=-1; - volumeofinterest.maxx=(calibrationsheetwidth/2); - volumeofinterest.maxy=(calibrationsheetheight/2); - volumeofinterest.maxz=(calibrationsheetwidth/2); + double minimumsimilarityrange=1000; // between 0 and 255*255*3=195075 + int max=1000; + JProgressBar bar=new JProgressBar(0,max); + bar.setValue(0); + + + surfacepoints=new Point3d[3]; + surfacepoints[0]=a.clone(); + surfacepoints[1]=b.clone(); + surfacepoints[2]=c.clone(); - Point3d[] vertices=new Point3d[3]; - vertices[0]=a.clone(); - vertices[1]=b.clone(); - vertices[2]=c.clone(); + surfacetriangles=new Triangle3D[1]; + surfacetriangles[0]=new Triangle3D(0,1,2,surfacepoints,upvector); - Triangle3D[] tri=new Triangle3D[1]; - tri[0]=new Triangle3D(0,1,2,vertices,upvector); - - TrianglePlusVertexArray tripatches=new TrianglePlusVertexArray(vertices,tri); + TrianglePlusVertexArray tripatches=new TrianglePlusVertexArray(surfacepoints,surfacetriangles); int i=0; - int max=100; + double mindistancesquaredbetweenvertices=mindistancebetweenvertices*mindistancebetweenvertices; while ((i<max) && (i<tripatches.GetTriangleArrayLength())){ tripatches.ExpandTexturePatch(i, volumeofinterest,numberofranges,numberofsubdivisions,images,squaresize,minimumsimilarityrange,mindistancesquaredbetweenvertices); - System.out.println(i+" "+tripatches.GetTriangleArrayLength()+" "+tripatches.GetVertexArrayLength()); + System.out.print((double)((int)(((double)i/(double)tripatches.GetTriangleArrayLength())*10000))/100+"%"); + System.out.println(" "+i+" "+tripatches.GetTriangleArrayLength()+" "+tripatches.GetVertexArrayLength()); i++; + if (i==tripatches.GetTriangleArrayLength()) i=max; + bar.setValue(i); + final JProgressBar temp=bar; + //final String text="Estimating Surface Triangles. Found "+i+" out of a maximum of "+max; + try{ + // This is the recommended way of passing GUI information between threads + EventQueue.invokeLater(new Runnable(){ + public void run(){ + // Update progress bar + jProgressBar1.setMinimum(temp.getMinimum()); + jProgressBar1.setMaximum(temp.getMaximum()); + jProgressBar1.setValue(temp.getValue()); + // jLabelProgressBar1.setText(text); + } + }); + } + catch (Exception e) { + System.out.println("Exception in updating the progress bar"+e.getMessage()); + } + } - - tri=tripatches.GetTriangleArray(); - vertices=tripatches.GetVertexArray(); - max=tri.length; + // Split the patches into the triangles array and the vertices array + surfacepoints=tripatches.GetVertexArray(); + surfacetriangles=tripatches.GetTriangleArray(); + + max=surfacetriangles.length; String filename=prefs.DebugSaveOutputImagesFolder+File.separatorChar+"test.jpg"; PixelColour colour=new PixelColour(PixelColour.StandardColours.Blue); GraphicsFeedback graphics=new GraphicsFeedback(true); graphics.ShowImage(images[0]); for (i=0;i<max;i++){ // if (i>=(tri.length-1)) colour=new PixelColour(PixelColour.StandardColours.Red); - int[] v=tri[i].GetFace(); - Line3d ab=new Line3d(vertices[v[0]],vertices[v[1]]); - Line3d bc=new Line3d(vertices[v[1]],vertices[v[2]]); - Line3d ac=new Line3d(vertices[v[0]],vertices[v[2]]); + int[] v=surfacetriangles[i].GetFace(); + Line3d ab=new Line3d(surfacepoints[v[0]],surfacepoints[v[1]]); + Line3d bc=new Line3d(surfacepoints[v[1]],surfacepoints[v[2]]); + Line3d ac=new Line3d(surfacepoints[v[0]],surfacepoints[v[2]]); graphics.PrintLineSegment(ab, colour,images[0]); graphics.PrintLineSegment(bc, colour,images[0]); graphics.PrintLineSegment(ac, colour,images[0]); @@ -360,6 +405,17 @@ } graphics.SaveImage(filename); + final String text="Object bounding volume surface estimated using "+surfacetriangles.length+" triangles.\n"; + // display output + EventQueue.invokeLater(new Runnable(){ + public void run(){ + jTextAreaOutput.setText(jTextAreaOutput.getText()+text); + } + }); + + +// Automatically go onto the next step + setStep(stepsarray[currentstep.ordinal()+1]); } Modified: trunk/old_files/miscellaneous/CarapaceCopier/src/org/reprap/scanning/Geometry/Triangle3D.java =================================================================== --- trunk/old_files/miscellaneous/CarapaceCopier/src/org/reprap/scanning/Geometry/Triangle3D.java 2011-01-28 00:16:11 UTC (rev 4018) +++ trunk/old_files/miscellaneous/CarapaceCopier/src/org/reprap/scanning/Geometry/Triangle3D.java 2011-01-28 01:20:39 UTC (rev 4019) @@ -80,7 +80,7 @@ return returnvalue; } // TODO delete when not needed - + /* public double getArea(Point3d[] P){ // Using Herons formula A=sqrt(p(p-a)(p-b)(p-c)) where a,b,c are the lengths of the sides of the triangle and p is half the perimeter i.e. (a+b+c)/2 double ab=Math.sqrt(P[b].minus(P[a]).lengthSquared()); @@ -89,7 +89,22 @@ double p=(ab+ac+bc)/2; return (Math.sqrt(p*(p-ac)*(p-bc)*(p-ac))); } - + public Point3d GetPointA(Point3d[] P){ + Point3d returnvalue=new Point3d(); + if ((a>=0) && (a<P.length)) returnvalue=P[a].clone(); + return returnvalue; + } + public Point3d GetPointB(Point3d[] P){ + Point3d returnvalue=new Point3d(); + if ((b>=0) && (b<P.length)) returnvalue=P[b].clone(); + return returnvalue; + } + public Point3d GetPointC(Point3d[] P){ + Point3d returnvalue=new Point3d(); + if ((c>=0) && (c<P.length)) returnvalue=P[c].clone(); + return returnvalue; + } + */ public boolean TriangleEqual(Triangle3D other){ // This just checks that the 3 vertices of the triangle are the same, but they may not be in the same order etc. int count=0; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <adr...@us...> - 2011-01-28 00:16:18
|
Revision: 4018 http://reprap.svn.sourceforge.net/reprap/?rev=4018&view=rev Author: adrian-bowyer Date: 2011-01-28 00:16:11 +0000 (Fri, 28 Jan 2011) Log Message: ----------- More messing about with the OpenSCAD Huxley design. Modified Paths: -------------- trunk/huxley/OpenSCAD-huxley/x_axis_z_nut_holder_and_z_zero_adjuster.scad trunk/huxley/OpenSCAD-huxley/x_motor_mount.scad Modified: trunk/huxley/OpenSCAD-huxley/x_axis_z_nut_holder_and_z_zero_adjuster.scad =================================================================== --- trunk/huxley/OpenSCAD-huxley/x_axis_z_nut_holder_and_z_zero_adjuster.scad 2011-01-26 23:52:47 UTC (rev 4017) +++ trunk/huxley/OpenSCAD-huxley/x_axis_z_nut_holder_and_z_zero_adjuster.scad 2011-01-28 00:16:11 UTC (rev 4018) @@ -30,7 +30,7 @@ } } -stretch=1.2; +stretch=1; halfwidth=12; module z_height_adjuster() @@ -39,24 +39,14 @@ { union() { - union() - { - strut(p1=[-halfwidth,0,0], p2=[-13,0,stretch*halfwidth], wide = 2.5, deep = 8, round = true); - strut(p1=[halfwidth,0,0], p2=[13,0,stretch*halfwidth], wide = 2.5, deep = 8, round = true); - strut(p1=[-halfwidth,0,0], p2=[0,0,-stretch*halfwidth], wide = 2.5, deep = 8, round = false); - strut(p1=[halfwidth,0,0], p2=[0,0,-stretch*halfwidth], wide = 2.5, deep = 8, round = false); - } - translate([halfwidth,0,0]) - cube([5,8,8],center=true); - - translate([-halfwidth,0,0]) - cube([5,8,8],center=true); - translate([0,-6,stretch*halfwidth]) + // Attachment plate + + translate([0,-halfwidth/2,2*stretch*halfwidth]) { difference() { - cube([27,20,5],center=true); + cube([20,20,5],center=true); for(a = [1, -1]) for(b = [1, -1]) translate([a*clamp_holes/2,b*clamp_holes/2,-5*rodsize]) @@ -65,22 +55,51 @@ } } + + // Vertical stalk + + strut(p1=[0,0,stretch*halfwidth], p2=[0,0,1.9*stretch*halfwidth], wide = 8, deep = 6, round = 2); + + // Angled legs + + union() + { + strut(p1=[-halfwidth,0,0], p2=[0,0,stretch*halfwidth], wide = 2.5, deep = 8, round = 1); + strut(p1=[halfwidth,0,0], p2=[0,0,stretch*halfwidth], wide = 2.5, deep = 8, round = 1); + strut(p1=[-halfwidth,0,0], p2=[0,0,-stretch*halfwidth], wide = 2.5, deep = 8, round = 0); + strut(p1=[halfwidth,0,0], p2=[0,0,-stretch*halfwidth], wide = 2.5, deep = 8, round = 0); + } + + // Screw landing blocks either side + + translate([halfwidth,0,0]) + cube([5,8,8],center=true); - translate([0,0,-stretch*halfwidth]) - cube([10,8,5],center=true); + translate([-halfwidth,0,0]) + cube([5,8,8],center=true); + + + // Block that pushes the switch + + translate([0,-1,-stretch*halfwidth]) + cube([10,10,5],center=true); } + + // Screw holes and nut retainer + rotate([90,0,0]) rotate([0,90,0]) { translate([0,0,-50]) teardrop(r=screwsize/2,h=100,truncateMM=-1); translate([0,0,halfwidth+20]) - pentanut(height=10); + scale(v=[1.1,1.1,1]) + pentanut(height=10); } } } -x_axis_z_nut_holder(); +//x_axis_z_nut_holder(); -translate([0,20,-stretch*halfwidth-15]) +//translate([0,20,-stretch*halfwidth-15]) z_height_adjuster(); \ No newline at end of file Modified: trunk/huxley/OpenSCAD-huxley/x_motor_mount.scad =================================================================== --- trunk/huxley/OpenSCAD-huxley/x_motor_mount.scad 2011-01-26 23:52:47 UTC (rev 4017) +++ trunk/huxley/OpenSCAD-huxley/x_motor_mount.scad 2011-01-28 00:16:11 UTC (rev 4018) @@ -49,36 +49,61 @@ module bearing_plate() { - difference() + union() { - - translate([-bearing_plate_width/2, bearing_plate_overlap - thickness, -thickness]) + difference() { - difference() + + translate([-bearing_plate_width/2, bearing_plate_overlap - thickness, -thickness]) { - cube([bearing_plate_width, thickness + bearing_plate_support, - bearing_low_z + bearing_z_gap + hole_land + thickness]); - translate([thickness, thickness, - 5]) - cube([bearing_plate_width - 2*thickness, 2*thickness + bearing_plate_support, - bearing_low_z + bearing_z_gap + hole_land + thickness + 10]); + difference() + { + cube([bearing_plate_width, thickness + bearing_plate_support, + bearing_low_z + bearing_z_gap + hole_land + thickness]); + translate([thickness, thickness, - 5]) + cube([bearing_plate_width - 2*thickness, 2*thickness + bearing_plate_support, + bearing_low_z + bearing_z_gap + hole_land + thickness + 10]); + } } - } - for ( y = [0:1] ) - for ( x = [0:1] ) - { - translate([(x-0.5)*bearing_mount_centres, 0, bearing_low_z + y*bearing_z_gap]) - oriented_teardrop(); + // Bearing mount holes + + for ( y = [0:1] ) + for ( x = [0:1] ) + { + translate([(x-0.5)*bearing_mount_centres, 0, bearing_low_z + y*bearing_z_gap]) + oriented_teardrop(); + } + + // Limit switch mounting holes + + translate([-40,4,12]) + rotate([0,90,0]) + teardrop(r=limit_switch_hole_diameter/2, h=40, truncateMM=-1); + translate([-40,4,12+limit_switch_centres]) + rotate([0,90,0]) + teardrop(r=limit_switch_hole_diameter/2, h=40, truncateMM=-1); } - // Limit switch mounting holes + // Shim support ledges - translate([-40,4,12]) - rotate([0,90,0]) - teardrop(r=limit_switch_hole_diameter/2, h=40, truncateMM=-1); - translate([-40,4,12+limit_switch_centres]) - rotate([0,90,0]) - teardrop(r=limit_switch_hole_diameter/2, h=40, truncateMM=-1); + translate([-bearing_mount_centres/2, -0.8*thickness, bearing_low_z + bearing_z_gap-1.5*thickness-1.5]) + intersection() + { + rotate([35,0,0]) + cube([bearing_mount_centres, thickness, thickness]); + translate([-thickness/5, -thickness*3/5, -thickness*6/5]) + cube([2*bearing_mount_centres, 2*thickness, 2*thickness]); + } + + translate([-bearing_mount_centres/2, -0.8*thickness, bearing_low_z -1.5*thickness-1.5]) + intersection() + { + rotate([35,0,0]) + cube([bearing_mount_centres, thickness, thickness]); + translate([-thickness/5, -thickness*3/5, -thickness*6/5]) + cube([2*bearing_mount_centres, 2*thickness, 2*thickness]); + } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <adr...@us...> - 2011-01-26 23:52:53
|
Revision: 4017 http://reprap.svn.sourceforge.net/reprap/?rev=4017&view=rev Author: adrian-bowyer Date: 2011-01-26 23:52:47 +0000 (Wed, 26 Jan 2011) Log Message: ----------- More messing about with the OpenSCAD Huxley design. Modified Paths: -------------- trunk/huxley/OpenSCAD-huxley/library.scad trunk/huxley/OpenSCAD-huxley/x_axis_z_nut_holder_and_z_zero_adjuster.scad Added Paths: ----------- trunk/huxley/OpenSCAD-huxley/y_frog.scad Modified: trunk/huxley/OpenSCAD-huxley/library.scad =================================================================== --- trunk/huxley/OpenSCAD-huxley/library.scad 2011-01-26 03:16:34 UTC (rev 4016) +++ trunk/huxley/OpenSCAD-huxley/library.scad 2011-01-26 23:52:47 UTC (rev 4017) @@ -13,13 +13,31 @@ coordinate planes, which means that one coordinate of the two endpoints must be the same. */ -module strut_block(da, db, wide, deep, round=true) +module strut_block(da, db, wide, deep, round=1) { - translate([-wide/2,-deep/2,0]) - cube([wide, deep, sqrt(da*da + db*db)]); + union() + { + translate([-wide/2,-deep/2,0]) + cube([wide, deep, sqrt(da*da + db*db)]); + if(round == 1) + { + rotate([90,0,0]) + cylinder(r=wide/2, h=deep,center=true,$fn=20); + translate([0,0,sqrt(da*da + db*db)]) + rotate([90,0,0]) + cylinder(r=wide/2, h=deep,center=true,$fn=20); + } else if(round == 2) + { + rotate([0,90,0]) + cylinder(r=deep/2, h=wide,center=true,$fn=20); + translate([0,0,sqrt(da*da + db*db)]) + rotate([0,90,0]) + cylinder(r=deep/2, h=wide,center=true,$fn=20); + } + } } -module strut(p1=[0,0,0], p2=[0,0,1], wide = 10, deep = 5, round=true) +module strut(p1=[0,0,0], p2=[0,0,1], wide = 10, deep = 5, round=1) { if(abs(p1.x - p2.x) < 0.00001) { @@ -27,7 +45,7 @@ rotate([atan2(p2.z - p1.z, p2.y - p1.y), 0, 0]) rotate([-90,0,0]) rotate([0,0,90]) - strut_block(p2.y - p1.y, p2.z - p1.z, wide, deep); + strut_block(p2.y - p1.y, p2.z - p1.z, wide, deep, round); } else if(abs(p1.y - p2.y) < 0.00001) { translate(p1) @@ -38,7 +56,7 @@ translate(p1) rotate([0,0,atan2(p2.y - p1.y, p2.x - p1.x)]) rotate([0,90,0]) - strut_block(p2.x - p1.x, p2.y - p1.y, wide, deep); + strut_block(p2.x - p1.x, p2.y - p1.y, wide, deep, round); } } @@ -297,4 +315,5 @@ //nema14(body = true, counterbore = -1); -//strut(p1=[20,10,20], p2=[20, 60, 40], wide=10, deep=5); \ No newline at end of file + +strut(p1=[20,10,20], p2=[20, 60, 40], wide=10, deep=5, round=2); \ No newline at end of file Modified: trunk/huxley/OpenSCAD-huxley/x_axis_z_nut_holder_and_z_zero_adjuster.scad =================================================================== --- trunk/huxley/OpenSCAD-huxley/x_axis_z_nut_holder_and_z_zero_adjuster.scad 2011-01-26 03:16:34 UTC (rev 4016) +++ trunk/huxley/OpenSCAD-huxley/x_axis_z_nut_holder_and_z_zero_adjuster.scad 2011-01-26 23:52:47 UTC (rev 4017) @@ -30,7 +30,7 @@ } } -stretch=1.5; +stretch=1.2; halfwidth=12; module z_height_adjuster() @@ -41,10 +41,10 @@ { union() { - strut(p1=[-halfwidth,0,0], p2=[-10,0,stretch*halfwidth], wide = 3, deep = 8); - strut(p1=[halfwidth,0,0], p2=[10,0,stretch*halfwidth], wide = 3, deep = 8); - strut(p1=[-halfwidth,0,0], p2=[0,0,-stretch*halfwidth], wide = 3, deep = 8); - strut(p1=[halfwidth,0,0], p2=[0,0,-stretch*halfwidth], wide = 3, deep = 8); + strut(p1=[-halfwidth,0,0], p2=[-13,0,stretch*halfwidth], wide = 2.5, deep = 8, round = true); + strut(p1=[halfwidth,0,0], p2=[13,0,stretch*halfwidth], wide = 2.5, deep = 8, round = true); + strut(p1=[-halfwidth,0,0], p2=[0,0,-stretch*halfwidth], wide = 2.5, deep = 8, round = false); + strut(p1=[halfwidth,0,0], p2=[0,0,-stretch*halfwidth], wide = 2.5, deep = 8, round = false); } translate([halfwidth,0,0]) cube([5,8,8],center=true); @@ -56,7 +56,7 @@ { difference() { - cube([25,20,5],center=true); + cube([27,20,5],center=true); for(a = [1, -1]) for(b = [1, -1]) translate([a*clamp_holes/2,b*clamp_holes/2,-5*rodsize]) Added: trunk/huxley/OpenSCAD-huxley/y_frog.scad =================================================================== --- trunk/huxley/OpenSCAD-huxley/y_frog.scad (rev 0) +++ trunk/huxley/OpenSCAD-huxley/y_frog.scad 2011-01-26 23:52:47 UTC (rev 4017) @@ -0,0 +1,26 @@ +include <parameters.scad>; +use <library.scad>; + +xbars=120; +ylength=86; +d=22; +w=5; + +difference() +{ + union() + { + strut(p1=[0,-ylength/2,0], p2=[0,ylength/2 , 0], wide=w, deep=d, round=2); + strut(p1=[0,-ylength/2,0], p2=[xbars, 0, 0], wide=w, deep=d, round=2); + strut(p1=[0,ylength/2,0], p2=[xbars,0 , 0], wide=w, deep=d, round=2); + translate([0,0,-w]) + { + strut(p1=[0,-ylength/2,0], p2=[0,ylength/2 , 0], wide=2*w + 1, deep=w, round=2); + strut(p1=[0,-ylength/2,0], p2=[xbars, 0, 0], wide=2*w + 1, deep=w, round=2); + strut(p1=[0,ylength/2,0], p2=[xbars,0 , 0], wide=2*w + 1, deep=w, round=2); + } + + } + + translate([]) + cylinder(r=screwsize/2,h=2*d, center=true \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ree...@us...> - 2011-01-26 03:16:41
|
Revision: 4016 http://reprap.svn.sourceforge.net/reprap/?rev=4016&view=rev Author: reece-arnott Date: 2011-01-26 03:16:34 +0000 (Wed, 26 Jan 2011) Log Message: ----------- CarapaceCopier: Modified skeleton code for triangular patches. Still don't have interpenetration of triangles working but do have check for cyclic triangle creation and a "snap to existing point" feature for new point estimation (if within a certain distance of said point. Modified Paths: -------------- trunk/old_files/miscellaneous/CarapaceCopier/src/org/reprap/scanning/DataStructures/MatrixManipulations.java trunk/old_files/miscellaneous/CarapaceCopier/src/org/reprap/scanning/DataStructures/TrianglePlusVertexArray.java trunk/old_files/miscellaneous/CarapaceCopier/src/org/reprap/scanning/FeatureExtraction/TexturePatch.java trunk/old_files/miscellaneous/CarapaceCopier/src/org/reprap/scanning/GUI/GraphicsFeedback.java trunk/old_files/miscellaneous/CarapaceCopier/src/org/reprap/scanning/GUI/Main.java trunk/old_files/miscellaneous/CarapaceCopier/src/org/reprap/scanning/Geometry/Triangle3D.java Modified: trunk/old_files/miscellaneous/CarapaceCopier/src/org/reprap/scanning/DataStructures/MatrixManipulations.java =================================================================== --- trunk/old_files/miscellaneous/CarapaceCopier/src/org/reprap/scanning/DataStructures/MatrixManipulations.java 2011-01-25 22:33:29 UTC (rev 4015) +++ trunk/old_files/miscellaneous/CarapaceCopier/src/org/reprap/scanning/DataStructures/MatrixManipulations.java 2011-01-26 03:16:34 UTC (rev 4016) @@ -173,7 +173,7 @@ normalisedvector=normalisedvector.times(1/Math.sqrt(normalisedvector.lengthSquared())); matrix.set(0,0,rcos + (normalisedvector.x*normalisedvector.x*(1-rcos))); matrix.set(1,0,(normalisedvector.z * rsin) + (normalisedvector.y*normalisedvector.x*(1-rcos))); - matrix.set(1,0,(-normalisedvector.y * rsin) + (normalisedvector.z*normalisedvector.x*(1-rcos))); + matrix.set(2,0,(-normalisedvector.y * rsin) + (normalisedvector.z*normalisedvector.x*(1-rcos))); matrix.set(0,1,(-normalisedvector.z * rsin) + (normalisedvector.x*normalisedvector.y*(1-rcos))); matrix.set(1,1,rcos + (normalisedvector.y*normalisedvector.y*(1-rcos))); matrix.set(2,1,(normalisedvector.x * rsin) + (normalisedvector.z*normalisedvector.y*(1-rcos))); @@ -188,9 +188,7 @@ Point3d ab=b.minus(a); Point3d ac=c.minus(a); Matrix R=Calculate3x3RotationMatrixFor3DVectorUsingQuarternions(angle,ab); - Point3d returnvalue=new Point3d(R.times(ac.ConvertPointTo3x1Matrix())); - returnvalue=returnvalue.plus(a); - return returnvalue; + return new Point3d(R.times(ac.ConvertPointTo3x1Matrix())).plus(a); } public Matrix[] CalculateImageRectificationHomographies(AxisAlignedBoundingBox image1, AxisAlignedBoundingBox image2){ Modified: trunk/old_files/miscellaneous/CarapaceCopier/src/org/reprap/scanning/DataStructures/TrianglePlusVertexArray.java =================================================================== --- trunk/old_files/miscellaneous/CarapaceCopier/src/org/reprap/scanning/DataStructures/TrianglePlusVertexArray.java 2011-01-25 22:33:29 UTC (rev 4015) +++ trunk/old_files/miscellaneous/CarapaceCopier/src/org/reprap/scanning/DataStructures/TrianglePlusVertexArray.java 2011-01-26 03:16:34 UTC (rev 4016) @@ -29,13 +29,24 @@ * The triangles are defined by three indices that relate to the points array. This is used so that two triangles that share an edge i.e. two vertices will not have a problem with rounding errors * leading to the two common vertices not being exactly the same points. * - ********************************************************************************/ + * Note that some formulae that traditionally use pi have been replaced to use tau where tau is defined as 2*pi. For an explanation of why this may make things clearer see That Tau Manifesto available at http://tauday.com/ +* +****************************************************************************************************************************/ + +import org.reprap.scanning.FeatureExtraction.TexturePatch; +import org.reprap.scanning.Geometry.AxisAlignedBoundingBox; +import org.reprap.scanning.Geometry.Coordinates; +import org.reprap.scanning.Geometry.Line3d; +import org.reprap.scanning.Geometry.LineSegment2D; +import org.reprap.scanning.Geometry.Plane; +import org.reprap.scanning.Geometry.Point2d; import org.reprap.scanning.Geometry.Point3d; import org.reprap.scanning.Geometry.Triangle3D; +import Jama.Matrix; public class TrianglePlusVertexArray { - + private final static double tau=Math.PI*2; private Point3d[] vertices; private Triangle3D[] triangles; @@ -75,6 +86,12 @@ } return returnvalue; } + public void AddVertex(Point3d add){ + Point3d[] newvertices=new Point3d[vertices.length+1]; + for (int i=0;i<vertices.length;i++) newvertices[i]=vertices[i].clone(); + newvertices[vertices.length]=add.clone(); + vertices=newvertices.clone(); + } //Purge the vertices in the array and only keep those for which triangles have been added public void PurgeIrreleventVertices(){ // initialise the mapping between old and new indices @@ -127,4 +144,166 @@ public int GetTriangleArrayLength(){ return triangles.length; } + public int GetVertexArrayLength(){ + return vertices.length; + } + + public void ExpandTexturePatch(int current,AxisAlignedBoundingBox aabb, int numberofranges, int numberofsubdivisions,Image[] images, int squaresize, double minimumsimilarityrange, double mindistancesquaredbetweenvertices){ + // We are only concerned with angles between -90 and 90 degrees. + double minangle=-tau/4; + double maxangle=tau/4; + + // There are a maximum of 2 new patches we can get from this patch, as it is assumed that the point on the otherside of the line ab has already been found. + // Note that we will not expand in a direction if it means going outside the bounding box or if it is a circular triangle creation. + // TODO The latter is determined simply by seeing if there is any other triangle that contains both points a and c or b and c respectively + + int[] points=triangles[current].GetFace(); + // Just for additional readability + int a=points[0]; + int b=points[1]; + int c=points[2]; + + for (int loop=0;loop<2;loop++){ + int newa,newb,newc; + if (loop==0){newa=a;newb=c;newc=b;} + else{newa=b;newb=c;newc=a;} + + boolean skip=false; + int j=0; + while ((j<triangles.length) && (!skip)){ + if (j!=current) if (triangles[j].IncludesPoint(newa)) if (triangles[j].IncludesPoint(newb)) skip=true; + j++; + } // end while + if (!skip){ + // Find the new patch on the other side of line newa-newb + int newcindex=vertices.length; + Point3d newczero=MatrixManipulations.RotatePointCaroundLineAB(Math.PI,vertices[newa],vertices[newb],vertices[newc]); // rotate 180 degrees + Point3d[] newcandnormal=FindNewCandNormal(minangle,maxangle,numberofranges,numberofsubdivisions,newczero,vertices[newa],vertices[newb],triangles[current].normal,images,squaresize,minimumsimilarityrange); + + // Find if the specified point is close to a point we already have and snap to it if that is the case + int i=0; + boolean exit=false; + while ((i<vertices.length) && (!exit)){ + if (newcandnormal[0].CalculateDistanceSquared(vertices[i])<mindistancesquaredbetweenvertices) {newcindex=i; exit=true;} + i++; + } + + // Find if the point is inside the bounding box, if so, add the triangle + if (aabb.PointInside3DBoundingBox(newcandnormal[0])) { + if (newcindex==vertices.length) AddVertex(newcandnormal[0]); + AddTriangle(new Triangle3D(newa,newb,newcindex,vertices,newcandnormal[1])); + } // end if within boundingbox + } // end if skip + } // end for loop + } + + private static Point3d[] FindNewCandNormal(double minangle, double maxangle, int numberofranges, int numberofsubdivisions,Point3d newczero,Point3d newa,Point3d newb,Point3d normal,Image[] images, int squaresize, double minimumrange){ + + // Initialise with 0 angle so if no real texture, it will just continue + Point3d[] returnvalue=new Point3d[2]; + double minvarianceangle=0; + returnvalue[0]=newczero.clone(); + returnvalue[1]=normal.clone(); + double minvariance=TexturePatch.FindSimilarityMeasure(images, newa, newb, newczero, squaresize, normal); + double maxvariance=minvariance; + for (int loop=0;loop<numberofsubdivisions;loop++){ + double step=(maxangle-minangle)/numberofranges; + for (double angle=(minangle+(step/2));angle<=maxangle;angle=angle+step){ + Matrix R=MatrixManipulations.Calculate3x3RotationMatrixFor3DVectorUsingQuarternions(angle,newb.minus(newa)); + Point3d rotatedpoint=new Point3d(R.times(newczero.minus(newa).ConvertPointTo3x1Matrix())); + rotatedpoint=rotatedpoint.plus(newa); + Point3d rotatedupvector=new Point3d(R.times(normal.ConvertPointTo3x1Matrix())); + double averagevariance=TexturePatch.FindSimilarityMeasure(images, newa, newb, rotatedpoint, squaresize, rotatedupvector); + if (averagevariance<minvariance){ + minvariance=averagevariance; + minvarianceangle=angle; + returnvalue[0]=rotatedpoint.clone(); + returnvalue[1]=new Point3d(R.times(normal.ConvertPointTo3x1Matrix())); + } + else if (averagevariance>maxvariance) maxvariance=averagevariance; + } // end for angle + minangle=minvarianceangle-(step/2); + maxangle=minvarianceangle+(step/2); + } // end for loop + // If there is not enough variation to be able to tell, just leave it at zero degrees. + if ((maxvariance-minvariance)<minimumrange){ + returnvalue[0]=newczero.clone(); + returnvalue[1]=normal.clone(); + } + return returnvalue; + } + //TODO uncomment and get working + /* + public boolean Interpenetration(TriangularTexturePatch[] others, int skip){ + boolean interpenetration=false; + Line3d[] perimeter=new Line3d[3]; + perimeter[0]=new Line3d(a,b); + perimeter[1]=new Line3d(b,c); + perimeter[2]=new Line3d(c,a); + + int k=0; + while ((k<others.length) && (!interpenetration))if (k!=skip){ + Plane plane=new Plane(others[k].a,others[k].b,others[k].c); + //Test for penetration of each edge, first with the plane, then with the triangle + for (int linesegment=0;linesegment<3;linesegment++) if (!interpenetration){ + // Test to see if the line segment intersects the plane which it will unless it is the + // special case that the line segment and plane are parallel in which case we need to do more testing + boolean parallel=plane.Intersect(perimeter[linesegment]); + // If it is parallel are the points close enough to be considered part of the plane and if they are are they within the triangle + if (parallel) { // these are the special cases + Point3d point=plane.FindClosestPointOnPlane(perimeter[linesegment].P); + if (perimeter[linesegment].P.ApproxEqual(point)){ + // Test to see if either end of the line segment are within the triangle, using barycentric coordinates after transferring to 2d barycentric coordinates + // if neither end is, does the line segment intersect with the other line segments + Point3d up=others[k].b.minus(others[k].a); + Point2d[] triangularvertices; + triangularvertices=new Point2d[3]; + triangularvertices[0]=plane.GetParametricCoordinatesFromPointOnPlane(up, others[k].a); + triangularvertices[1]=plane.GetParametricCoordinatesFromPointOnPlane(up, others[k].b); + triangularvertices[2]=plane.GetParametricCoordinatesFromPointOnPlane(up, others[k].c); + Point2d point1=plane.GetParametricCoordinatesFromPointOnPlane(up, point); + Coordinates test=new Coordinates(3); + test.pixel=point1.clone(); + test.calculatebary(triangularvertices); + if (test.isOutside()){ + point=plane.FindClosestPointOnPlane(perimeter[linesegment].GetPointonLine(1)); + Point2d point2=plane.GetParametricCoordinatesFromPointOnPlane(up, point); + test.pixel=point2.clone(); + test.calculatebary(triangularvertices); + if (test.isOutside()) { + // Both ends of the line segment are outside the triangle but does the line segment itself intersect the perimeter of the triangle + LineSegment2D line=new LineSegment2D(point1,point2); + interpenetration=point1.isEqual(line.SingleIntersectionPointBetweenStartAndEndExclusive(new LineSegment2D(triangularvertices[0],triangularvertices[1]))); + if (!interpenetration) interpenetration=point1.isEqual(line.SingleIntersectionPointBetweenStartAndEndExclusive(new LineSegment2D(triangularvertices[1],triangularvertices[2]))); + if (!interpenetration) interpenetration=point1.isEqual(line.SingleIntersectionPointBetweenStartAndEndExclusive(new LineSegment2D(triangularvertices[2],triangularvertices[0]))); + if (interpenetration) System.out.println("Interpenetration detected: The triangle and line segment are parallel, on the same plane with line segment "+linesegment+" crossing the triangle"); + } else {interpenetration=true; System.out.println("Interpenetration detected: The triangle and line segment are parallel, on the same plane with the end of line segment "+linesegment+" inside the triangle"+k);} + } else {interpenetration=true;System.out.println("Interpenetration detected: The triangle and line segment are parallel, on the same plane with the start of line segment "+linesegment+" inside the triangle"+k);} + } // end if on the plane + } // end if parallel + else if (plane.IntersectLineSegment(perimeter[linesegment])){ // this is the general case + Point3d intersectionpoint=plane.IntersectionPoint(perimeter[linesegment]); + // Now use barycentric coordinates after transforming to 2d parameteric coordinates to see if the point is in the triangle + Point3d up=others[k].b.minus(others[k].a); + Point2d[] triangularvertices; + triangularvertices=new Point2d[3]; + triangularvertices[0]=plane.GetParametricCoordinatesFromPointOnPlane(up, others[k].a); + triangularvertices[1]=plane.GetParametricCoordinatesFromPointOnPlane(up, others[k].b); + triangularvertices[2]=plane.GetParametricCoordinatesFromPointOnPlane(up, others[k].c); + Point2d point=plane.GetParametricCoordinatesFromPointOnPlane(up, intersectionpoint); + Coordinates test=new Coordinates(3); + test.pixel=point.clone(); + test.calculatebary(triangularvertices); + interpenetration=(!test.isOutside()); + if (interpenetration) System.out.println("Interpenetration detected: The triangle and line segment are not parallel, but the line segment "+linesegment+" intersects the plane made by the triangle at a point inside the triangle "+k); + } // end else if + } // end for linesegments + k++; + } // end if/while loop + else k++; + return interpenetration; + } + */ + + } Modified: trunk/old_files/miscellaneous/CarapaceCopier/src/org/reprap/scanning/FeatureExtraction/TexturePatch.java =================================================================== --- trunk/old_files/miscellaneous/CarapaceCopier/src/org/reprap/scanning/FeatureExtraction/TexturePatch.java 2011-01-25 22:33:29 UTC (rev 4015) +++ trunk/old_files/miscellaneous/CarapaceCopier/src/org/reprap/scanning/FeatureExtraction/TexturePatch.java 2011-01-26 03:16:34 UTC (rev 4016) @@ -23,7 +23,7 @@ * * Reece Arnott ree...@gm... * -* Last modified by Reece Arnott 24th January 2011 +* Last modified by Reece Arnott 25th January 2011 * * TODO - should the pixel colours be stored as int and converted when needed? * @@ -40,6 +40,8 @@ import org.reprap.scanning.DataStructures.*; import org.reprap.scanning.Geometry.*; import org.reprap.scanning.GUI.GraphicsFeedback; + +import Jama.Matrix; public class TexturePatch { private PixelColour[] sampledtexturecolours; // Note that this is really a set of points in a 2d grid so could be a 2d array but as they form a triangle then half the array would be blank. Instead there is a private method to transform 2d coordinates into the array index @@ -54,6 +56,8 @@ for (int i=0;i<sampledtexturecolours.length;i++) sampledtexturecolours[i]=image.InterpolatePixelColour(image.getWorldtoImageTransform(samplepoints[i].ConvertPointTo4x1Matrix())); } + //TODO delete when know it is not needed + /* public TexturePatch(int approxnumberofsamples, Image image, Point3d a, Point3d b, Point3d c){ // Set up the sampled texture colours array and initialise to blank. Note that the number of sample points will be a little over 1/2 the square of the length of the 2d grid. i.e. 1+2+3+...+n or (n*(n+1))/2 // using the quadratic formula we can work out n as we can rearrange n(n+1)/2=s to be @@ -65,6 +69,8 @@ sampledtexturecolours=new PixelColour[samplepoints.length]; for (int i=0;i<sampledtexturecolours.length;i++) sampledtexturecolours[i]=image.InterpolatePixelColour(image.getWorldtoImageTransform(samplepoints[i].ConvertPointTo4x1Matrix())); } + */ + public TexturePatch(){squarewidth=0;sampledtexturecolours=new PixelColour[0];} // Clone method @@ -83,7 +89,7 @@ return ConvertTextureToSquareArrayOfColoursForDisplay(sampledtexturecolours,squarewidth); } - public static double FindSimilarityMeasure(Image[] images, Point3d a, Point3d b, Point3d c, int squaresize, Point3d pointabovetriangleplane){ + public static double FindSimilarityMeasure(Image[] images, Point3d a, Point3d b, Point3d c, int squaresize, Point3d upvector){ double variancesum=0; // First filter out those images that do not have a camera centre above the plane defined by the triangle boolean[] skip=new boolean[images.length]; @@ -91,7 +97,7 @@ Plane plane=new Plane(a,b,c); for (int i=0;i<images.length;i++){ Point3d C=new Point3d(MatrixManipulations.GetRightNullSpace(images[i].getWorldtoImageTransformMatrix())); - skip[i]=plane.GetHalfspace(pointabovetriangleplane)!=plane.GetHalfspace(C); + skip[i]=plane.GetHalfspace(upvector.plus(a))!=plane.GetHalfspace(C); if (!skip[i]) count++; } if (count>1) { @@ -119,7 +125,13 @@ else return Double.MAX_VALUE; } - public static double SaveSimilarityPatch(Image[] images, Point3d a, Point3d b, Point3d c, int squaresize, Point3d pointabovetriangleplane, String displayfilename, double temppointsimilaritythreshold){ + + + + + + + public static double SaveSimilarityPatch(Image[] images, Point3d a, Point3d b, Point3d c, int squaresize, Point3d upvector, String displayfilename, double temppointsimilaritythreshold){ // First filter out those images that do not have a camera centre above the plane defined by the triangle double variancesum=0; boolean[] skip=new boolean[images.length]; @@ -127,7 +139,7 @@ Plane plane=new Plane(a,b,c); for (int i=0;i<images.length;i++){ Point3d C=new Point3d(MatrixManipulations.GetRightNullSpace(images[i].getWorldtoImageTransformMatrix())); - skip[i]=plane.GetHalfspace(pointabovetriangleplane)!=plane.GetHalfspace(C); + skip[i]=plane.GetHalfspace(upvector.plus(a))!=plane.GetHalfspace(C); if (!skip[i]) count++; } if (count>1) { @@ -137,14 +149,12 @@ Point3d[] samplepoints=Get3dSamplePoints(a,b,c,squaresize); // Now, for each image that we are not skipping use these sample points to create a patch for (int i=0;i<images.length;i++) if (!skip[i]){ - System.out.print("."); patch[count]=new TexturePatch(); patch[count].squarewidth=squaresize; patch[count].sampledtexturecolours=new PixelColour[samplepoints.length]; for (int j=0;j<patch[count].sampledtexturecolours.length;j++) patch[count].sampledtexturecolours[j]=images[i].InterpolatePixelColour(images[i].getWorldtoImageTransform(samplepoints[j].ConvertPointTo4x1Matrix())); count++; } // end for/if !skip - System.out.println(); // For display purposes create a pixel colour of the same size as the sampled patches PixelColour[] display=new PixelColour[patch[0].sampledtexturecolours.length]; // Now do a point similarity measure for each one and set the colour for the display patch Modified: trunk/old_files/miscellaneous/CarapaceCopier/src/org/reprap/scanning/GUI/GraphicsFeedback.java =================================================================== --- trunk/old_files/miscellaneous/CarapaceCopier/src/org/reprap/scanning/GUI/GraphicsFeedback.java 2011-01-25 22:33:29 UTC (rev 4015) +++ trunk/old_files/miscellaneous/CarapaceCopier/src/org/reprap/scanning/GUI/GraphicsFeedback.java 2011-01-26 03:16:34 UTC (rev 4016) @@ -202,6 +202,9 @@ } } + public void PrintLineSegment(Line3d line,PixelColour colour, Image image){ PrintLineSegment(new LineSegment2D(image.getWorldtoImageTransform(line.P.ConvertPointTo4x1Matrix()),image.getWorldtoImageTransform(line.GetPointonLine(1).ConvertPointTo4x1Matrix())),colour);} + + public void PrintSurfaceSubVoxels(Voxel rootvoxel, Image givenimage, PixelColour colour){ int max=rootvoxel.getSubVoxelArraySize(); for (int i=0;i<max;i++){ Modified: trunk/old_files/miscellaneous/CarapaceCopier/src/org/reprap/scanning/GUI/Main.java =================================================================== --- trunk/old_files/miscellaneous/CarapaceCopier/src/org/reprap/scanning/GUI/Main.java 2011-01-25 22:33:29 UTC (rev 4015) +++ trunk/old_files/miscellaneous/CarapaceCopier/src/org/reprap/scanning/GUI/Main.java 2011-01-26 03:16:34 UTC (rev 4016) @@ -22,7 +22,7 @@ * * Reece Arnott ree...@gm... * - * Last modified by Reece Arnott 18th January 2011 + * Last modified by Reece Arnott 25th January 2011 * * Note that most of the layout commands were initially produced by NetBeans for JDK 6 * and significantly modified by hand. For future reference if it needs to be done the other way the main things to change are: @@ -293,52 +293,74 @@ } public void Test2(){ - //Point3d a=new Point3d(-(calibrationsheetwidth/2),-(calibrationsheetheight/2),0); - //Point3d b=new Point3d(calibrationsheetwidth/2,-calibrationsheetheight/2,0); - //Point3d c=new Point3d(-calibrationsheetwidth/2,calibrationsheetheight/2,0); - Point3d a=new Point3d(calibrationsheetwidth/2,calibrationsheetheight/2,0); - Point3d b=new Point3d(-calibrationsheetwidth/2,calibrationsheetheight/2,0); - Point3d c=new Point3d(calibrationsheetwidth/2,-calibrationsheetheight/2,0); + // Create an equalateral triangle starting at top of calibration sheet + + // Point2d a2d=new Point2d(-(calibrationsheetwidth/2),-(calibrationsheetheight/2)); + // Point2d a2d=new Point2d(0,0); + Point2d a2d=new Point2d(calibrationsheetwidth/2,calibrationsheetheight/2); + + double initialangle=Math.PI; + double length=20; + Point2d b2d=a2d.GetOtherPoint(initialangle,length); + Point2d c2d=a2d.GetOtherPoint(initialangle+(((double)60/(double)360)*tau),length); + + Point3d a=new Point3d(a2d.x,a2d.y,0); + Point3d b=new Point3d(b2d.x,b2d.y,0); + Point3d c=new Point3d(c2d.x,c2d.y,0); + Point3d upvector=new Point3d(0,0,1); - Point3d uppoint=a.plus(upvector); - double minvarianceangle=0; - double step=0; - double minvariance=Double.MAX_VALUE; - long starttime=System.currentTimeMillis(); - int numberofsubdivisions=3; - int numberofdivsionspergap=8; - double minangle=((double)-90/(double)360)*tau; - double maxangle=((double)90/(double)360)*tau; - int size=40; + int numberofranges=8; + int squaresize=10; + double minimumsimilarityrange=1000; + double mindistancesquaredbetweenvertices=4; + volumeofinterest.minx=(-calibrationsheetwidth/2); + volumeofinterest.miny=(-calibrationsheetheight/2); + volumeofinterest.minz=-1; + volumeofinterest.maxx=(calibrationsheetwidth/2); + volumeofinterest.maxy=(calibrationsheetheight/2); + volumeofinterest.maxz=(calibrationsheetwidth/2); - for (int loop=0;loop<numberofsubdivisions;loop++){ - step=(maxangle-minangle)/numberofdivsionspergap; + Point3d[] vertices=new Point3d[3]; + vertices[0]=a.clone(); + vertices[1]=b.clone(); + vertices[2]=c.clone(); + + Triangle3D[] tri=new Triangle3D[1]; + tri[0]=new Triangle3D(0,1,2,vertices,upvector); + + TrianglePlusVertexArray tripatches=new TrianglePlusVertexArray(vertices,tri); + int i=0; + int max=100; + while ((i<max) && (i<tripatches.GetTriangleArrayLength())){ + tripatches.ExpandTexturePatch(i, volumeofinterest,numberofranges,numberofsubdivisions,images,squaresize,minimumsimilarityrange,mindistancesquaredbetweenvertices); + System.out.println(i+" "+tripatches.GetTriangleArrayLength()+" "+tripatches.GetVertexArrayLength()); + i++; - for (double angle=minangle;angle<=maxangle;angle=angle+step){ - Point3d rotatedpoint=MatrixManipulations.RotatePointCaroundLineAB(angle,a,b,c); - Point3d rotateduppoint=MatrixManipulations.RotatePointCaroundLineAB(angle,a,b,uppoint); - // Note that if set threshold to Double.MAX_VALUE then all pixels will be shown, otherwise pixels with a similarity value over the threshold will be shown as red - //String texturespatchimilarityfilename=prefs.DebugSaveOutputImagesFolder+File.separatorChar+"similaritypatch"+i+".jpg"; - double averagevariance=TexturePatch.FindSimilarityMeasure(images, a, b, rotatedpoint, size, rotateduppoint); - if (averagevariance<minvariance){ minvariance=averagevariance;minvarianceangle=angle;} - } // end for angle - minangle=minvarianceangle-(step/2); - maxangle=minvarianceangle+(step/2); - size=size/2; - } // end for loop + } + + tri=tripatches.GetTriangleArray(); + vertices=tripatches.GetVertexArray(); + max=tri.length; + String filename=prefs.DebugSaveOutputImagesFolder+File.separatorChar+"test.jpg"; + PixelColour colour=new PixelColour(PixelColour.StandardColours.Blue); + GraphicsFeedback graphics=new GraphicsFeedback(true); + graphics.ShowImage(images[0]); + for (i=0;i<max;i++){ + // if (i>=(tri.length-1)) colour=new PixelColour(PixelColour.StandardColours.Red); + int[] v=tri[i].GetFace(); + Line3d ab=new Line3d(vertices[v[0]],vertices[v[1]]); + Line3d bc=new Line3d(vertices[v[1]],vertices[v[2]]); + Line3d ac=new Line3d(vertices[v[0]],vertices[v[2]]); + graphics.PrintLineSegment(ab, colour,images[0]); + graphics.PrintLineSegment(bc, colour,images[0]); + graphics.PrintLineSegment(ac, colour,images[0]); + + } + graphics.SaveImage(filename); - System.out.println(((minvarianceangle/tau)*360)+" degrees +/-"+((step/tau)*360)*0.5+" "+minvariance); - System.out.println("Time: "+(System.currentTimeMillis()-starttime)+"ms"); - double angle=minvarianceangle; - size=800; - Point3d rotatedpoint=MatrixManipulations.RotatePointCaroundLineAB(angle,a,b,c); - Point3d rotateduppoint=MatrixManipulations.RotatePointCaroundLineAB(angle,a,b,uppoint); - String texturespatchimilarityfilename=prefs.DebugSaveOutputImagesFolder+File.separatorChar+"similaritypatch.jpg"; - double value=TexturePatch.SaveSimilarityPatch(images, a, b, rotatedpoint, size, rotateduppoint,texturespatchimilarityfilename, prefs.AlgorithmSettingSurfacePointTextureVarianceThreshold); - System.out.println(value); - } +} // This method redraws the Window for the step in which the calibration pattern is chosen Modified: trunk/old_files/miscellaneous/CarapaceCopier/src/org/reprap/scanning/Geometry/Triangle3D.java =================================================================== --- trunk/old_files/miscellaneous/CarapaceCopier/src/org/reprap/scanning/Geometry/Triangle3D.java 2011-01-25 22:33:29 UTC (rev 4015) +++ trunk/old_files/miscellaneous/CarapaceCopier/src/org/reprap/scanning/Geometry/Triangle3D.java 2011-01-26 03:16:34 UTC (rev 4016) @@ -24,7 +24,7 @@ * * Reece Arnott ree...@gm... * -* Last modified by Reece Arnott 21st December 2010 +* Last modified by Reece Arnott 26th January 2011 * * This class stores a triangluar face which may be part of 0,1 or 2 tetrahedrons. * A triangular face is 3 vertices a,b,c and potentially 0,1, or 2 other points relating @@ -51,7 +51,15 @@ c=pointc; CalculateNormalAwayFromPoint(p,p[a]); // pick a random normal direction } - + public Triangle3D(int pointa, int pointb, int pointc, Point3d[] p, Point3d normalvector){ + // Store the face as unsorted points - note that have to sort the points when calculating hashvalue if we do this + a=pointa; + b=pointb; + c=pointc; + normal=normalvector.clone(); + normal=normalvector.times(Math.sqrt(normalvector.lengthSquared())); + normaldota=normal.dot(p[a]); + } // Construct a null face - can be detected using IsNull method public Triangle3D(){ a=-1; @@ -71,7 +79,17 @@ returnvalue.hashvalue=hashvalue; return returnvalue; } +// TODO delete when not needed + public double getArea(Point3d[] P){ + // Using Herons formula A=sqrt(p(p-a)(p-b)(p-c)) where a,b,c are the lengths of the sides of the triangle and p is half the perimeter i.e. (a+b+c)/2 + double ab=Math.sqrt(P[b].minus(P[a]).lengthSquared()); + double bc=Math.sqrt(P[c].minus(P[b]).lengthSquared()); + double ac=Math.sqrt(P[c].minus(P[a]).lengthSquared()); + double p=(ab+ac+bc)/2; + return (Math.sqrt(p*(p-ac)*(p-bc)*(p-ac))); + } + public boolean TriangleEqual(Triangle3D other){ // This just checks that the 3 vertices of the triangle are the same, but they may not be in the same order etc. int count=0; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <adr...@us...> - 2011-01-25 22:33:35
|
Revision: 4015 http://reprap.svn.sourceforge.net/reprap/?rev=4015&view=rev Author: adrian-bowyer Date: 2011-01-25 22:33:29 +0000 (Tue, 25 Jan 2011) Log Message: ----------- More messing about with the OpenSCAD Huxley design. Modified Paths: -------------- trunk/huxley/OpenSCAD-huxley/library.scad Added Paths: ----------- trunk/huxley/OpenSCAD-huxley/x_axis_z_nut_holder_and_z_zero_adjuster.scad Removed Paths: ------------- trunk/huxley/OpenSCAD-huxley/x_axis_z_nut_holder.scad Modified: trunk/huxley/OpenSCAD-huxley/library.scad =================================================================== --- trunk/huxley/OpenSCAD-huxley/library.scad 2011-01-25 16:01:19 UTC (rev 4014) +++ trunk/huxley/OpenSCAD-huxley/library.scad 2011-01-25 22:33:29 UTC (rev 4015) @@ -11,25 +11,38 @@ /* This makes an angled strut in space between two points. It is parallel to one of the coordinate planes, which means that one coordinate of the two endpoints must be the same. +*/ +module strut_block(da, db, wide, deep, round=true) +{ + translate([-wide/2,-deep/2,0]) + cube([wide, deep, sqrt(da*da + db*db)]); +} -module strut(p1=[0,0,0], p2=[0,0,1], deep = 5, wide = 10) +module strut(p1=[0,0,0], p2=[0,0,1], wide = 10, deep = 5, round=true) { if(abs(p1.x - p2.x) < 0.00001) { - + translate(p1) + rotate([atan2(p2.z - p1.z, p2.y - p1.y), 0, 0]) + rotate([-90,0,0]) + rotate([0,0,90]) + strut_block(p2.y - p1.y, p2.z - p1.z, wide, deep); } else if(abs(p1.y - p2.y) < 0.00001) { - + translate(p1) + rotate([0,atan2( p2.x - p1.x, p2.z - p1.z), 0]) + strut_block(p2.x - p1.x, p2.z - p1.z, wide, deep); } else { - - cube([sqrt( - + translate(p1) + rotate([0,0,atan2(p2.y - p1.y, p2.x - p1.x)]) + rotate([0,90,0]) + strut_block(p2.x - p1.x, p2.y - p1.y, wide, deep); } } -*/ + /* This gives either a NEMA 14 stepper motor or its mounting holes. @@ -282,4 +295,6 @@ //pentanut(); -//nema14(body = true, counterbore = -1); \ No newline at end of file +//nema14(body = true, counterbore = -1); + +//strut(p1=[20,10,20], p2=[20, 60, 40], wide=10, deep=5); \ No newline at end of file Deleted: trunk/huxley/OpenSCAD-huxley/x_axis_z_nut_holder.scad =================================================================== --- trunk/huxley/OpenSCAD-huxley/x_axis_z_nut_holder.scad 2011-01-25 16:01:19 UTC (rev 4014) +++ trunk/huxley/OpenSCAD-huxley/x_axis_z_nut_holder.scad 2011-01-25 22:33:29 UTC (rev 4015) @@ -1,70 +0,0 @@ -include <parameters.scad>; -use <library.scad>; - -clamp_holes=13; - -module x_axis_z_nut_holder() -{ - difference() - { - cube([20,50,7], center=true); - cylinder(r=rodsize/1.8, h= rodsize*10, center=true); - translate([10,0,0]) - cube([20,2*rodsize/1.8,30], center=true); - - translate([0,x_bar_gap/2,7/2]) - rotate([0,90,0]) - cylinder(r=rodsize/2, h= rodsize*10, center=true); - - translate([0,-x_bar_gap/2,7/2]) - rotate([0,90,0]) - cylinder(r=rodsize/2, h= rodsize*10, center=true); - - for(a = [1, -1]) - for(b = [1, -1]) - for(c = [1, -1]) - translate([a*clamp_holes/2,b*x_bar_gap/2+c*clamp_holes/2,0]) - cylinder(r=screwsize/2, h= rodsize*10, center=true, $fn=15); - translate([0,0,7/2]) - rodnut(position=0,washer=0); - } -} - -stretch=1.5; - -module z_height_adjuster() -{ - difference() - { - union() - { - scale([1,1,stretch]) - rotate([0,45,0]) - difference() - { - cube([30,8,30],center=true); - cube([24,20,24],center=true); - } - translate([15*sqrt(2)-2,0,0]) - cube([5,8,8],center=true); - - translate([-15*sqrt(2)+2,0,0]) - cube([5,8,8],center=true); - - translate([0,0,stretch*(15*sqrt(2)-2)]) - cube([20,20,5],center=true); - - translate([0,0,stretch*(-15*sqrt(2)+2)]) - cube([20,20,5],center=true); - } - translate([-50,0,0]) - rotate([90,0,0]) - rotate([0,90,0]) - teardrop(r=screwsize/2,h=100,truncateMM=-1); - } -} - -x_axis_z_nut_holder(); - -translate([0,25,0]) -z_height_adjuster(); \ No newline at end of file Added: trunk/huxley/OpenSCAD-huxley/x_axis_z_nut_holder_and_z_zero_adjuster.scad =================================================================== --- trunk/huxley/OpenSCAD-huxley/x_axis_z_nut_holder_and_z_zero_adjuster.scad (rev 0) +++ trunk/huxley/OpenSCAD-huxley/x_axis_z_nut_holder_and_z_zero_adjuster.scad 2011-01-25 22:33:29 UTC (rev 4015) @@ -0,0 +1,86 @@ +include <parameters.scad>; +use <library.scad>; + +clamp_holes=13; + +module x_axis_z_nut_holder() +{ + difference() + { + cube([20,50,7], center=true); + cylinder(r=rodsize/1.8, h= rodsize*10, center=true); + translate([10,0,0]) + cube([20,2*rodsize/1.8,30], center=true); + + translate([0,x_bar_gap/2,7/2]) + rotate([0,90,0]) + cylinder(r=rodsize/2, h= rodsize*10, center=true); + + translate([0,-x_bar_gap/2,7/2]) + rotate([0,90,0]) + cylinder(r=rodsize/2, h= rodsize*10, center=true); + + for(a = [1, -1]) + for(b = [1, -1]) + for(c = [1, -1]) + translate([a*clamp_holes/2,b*x_bar_gap/2+c*clamp_holes/2,0]) + cylinder(r=screwsize/2, h= rodsize*10, center=true, $fn=15); + translate([0,0,7/2]) + rodnut(position=0,washer=0); + } +} + +stretch=1.5; +halfwidth=12; + +module z_height_adjuster() +{ + difference() + { + union() + { + union() + { + strut(p1=[-halfwidth,0,0], p2=[-10,0,stretch*halfwidth], wide = 3, deep = 8); + strut(p1=[halfwidth,0,0], p2=[10,0,stretch*halfwidth], wide = 3, deep = 8); + strut(p1=[-halfwidth,0,0], p2=[0,0,-stretch*halfwidth], wide = 3, deep = 8); + strut(p1=[halfwidth,0,0], p2=[0,0,-stretch*halfwidth], wide = 3, deep = 8); + } + translate([halfwidth,0,0]) + cube([5,8,8],center=true); + + translate([-halfwidth,0,0]) + cube([5,8,8],center=true); + + translate([0,-6,stretch*halfwidth]) + { + difference() + { + cube([25,20,5],center=true); + for(a = [1, -1]) + for(b = [1, -1]) + translate([a*clamp_holes/2,b*clamp_holes/2,-5*rodsize]) + rotate([0,0,90]) + teardrop(r=screwsize/2, h= rodsize*10, truncateMM=-1); + + } + } + + translate([0,0,-stretch*halfwidth]) + cube([10,8,5],center=true); + } + rotate([90,0,0]) + rotate([0,90,0]) + { + translate([0,0,-50]) + teardrop(r=screwsize/2,h=100,truncateMM=-1); + translate([0,0,halfwidth+20]) + pentanut(height=10); + } + } +} + +x_axis_z_nut_holder(); + +translate([0,20,-stretch*halfwidth-15]) +z_height_adjuster(); \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <Rhy...@us...> - 2011-01-25 16:01:26
|
Revision: 4014 http://reprap.svn.sourceforge.net/reprap/?rev=4014&view=rev Author: Rhys-Jones Date: 2011-01-25 16:01:19 +0000 (Tue, 25 Jan 2011) Log Message: ----------- Host now produces 3 Fine Layers of infill Modified Paths: -------------- trunk/software/host/src/org/reprap/devices/GenericExtruder.java trunk/software/host/src/org/reprap/geometry/polygons/AllSTLsToBuild.java Modified: trunk/software/host/src/org/reprap/devices/GenericExtruder.java =================================================================== --- trunk/software/host/src/org/reprap/devices/GenericExtruder.java 2011-01-24 23:58:37 UTC (rev 4013) +++ trunk/software/host/src/org/reprap/devices/GenericExtruder.java 2011-01-25 16:01:19 UTC (rev 4014) @@ -412,8 +412,8 @@ extrusionSize = Preferences.loadGlobalDouble(prefName + "ExtrusionSize(mm)"); extrusionHeight = Preferences.loadGlobalDouble(prefName + "ExtrusionHeight(mm)"); extrusionInfillWidth = Preferences.loadGlobalDouble(prefName + "ExtrusionInfillWidth(mm)"); - lowerFineLayers = 2; //Preferences.loadGlobalInt(prefName + "LowerFineLayers(0...)"); - upperFineLayers = 2; //Preferences.loadGlobalInt(prefName + "UpperFineLayers(0...)"); + lowerFineLayers = 3; //Preferences.loadGlobalInt(prefName + "LowerFineLayers(0...)"); + upperFineLayers = 3; //Preferences.loadGlobalInt(prefName + "UpperFineLayers(0...)"); extrusionBroadWidth = Preferences.loadGlobalDouble(prefName + "ExtrusionBroadWidth(mm)"); coolingPeriod = Preferences.loadGlobalDouble(prefName + "CoolingPeriod(s)"); fastXYFeedrate = Preferences.loadGlobalDouble(prefName + "FastXYFeedrate(mm/minute)"); Modified: trunk/software/host/src/org/reprap/geometry/polygons/AllSTLsToBuild.java =================================================================== --- trunk/software/host/src/org/reprap/geometry/polygons/AllSTLsToBuild.java 2011-01-24 23:58:37 UTC (rev 4013) +++ trunk/software/host/src/org/reprap/geometry/polygons/AllSTLsToBuild.java 2011-01-25 16:01:19 UTC (rev 4014) @@ -735,8 +735,10 @@ BooleanGridList adjacentSlices = slice(stl, layer+1, layerConditions); adjacentSlices = BooleanGridList.intersections(slice(stl, layer+2, layerConditions), adjacentSlices); + adjacentSlices = BooleanGridList.intersections(slice(stl, layer+3, layerConditions), adjacentSlices); adjacentSlices = BooleanGridList.intersections(slice(stl, layer-1, layerConditions), adjacentSlices); adjacentSlices = BooleanGridList.intersections(slice(stl, layer-2, layerConditions), adjacentSlices); + adjacentSlices = BooleanGridList.intersections(slice(stl, layer-3, layerConditions), adjacentSlices); BooleanGridList insides = null; // The insides are the bits that aren't surface. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <adr...@us...> - 2011-01-24 23:58:43
|
Revision: 4013 http://reprap.svn.sourceforge.net/reprap/?rev=4013&view=rev Author: adrian-bowyer Date: 2011-01-24 23:58:37 +0000 (Mon, 24 Jan 2011) Log Message: ----------- More messing about with the OpenSCAD Huxley design. Modified Paths: -------------- trunk/huxley/OpenSCAD-huxley/library.scad trunk/huxley/OpenSCAD-huxley/x_axis_z_nut_holder.scad trunk/huxley/OpenSCAD-huxley/x_motor_mount.scad trunk/huxley/OpenSCAD-huxley/y_axis_motor_mount_and_limit_switch_holder.scad trunk/huxley/OpenSCAD-huxley/z_axis_motor_base_and_limit_switch_holder.scad Modified: trunk/huxley/OpenSCAD-huxley/library.scad =================================================================== --- trunk/huxley/OpenSCAD-huxley/library.scad 2011-01-24 22:14:11 UTC (rev 4012) +++ trunk/huxley/OpenSCAD-huxley/library.scad 2011-01-24 23:58:37 UTC (rev 4013) @@ -9,6 +9,28 @@ /* + This makes an angled strut in space between two points. It is parallel to one of the + coordinate planes, which means that one coordinate of the two endpoints must be the same. + + +module strut(p1=[0,0,0], p2=[0,0,1], deep = 5, wide = 10) +{ + if(abs(p1.x - p2.x) < 0.00001) + { + + } else if(abs(p1.y - p2.y) < 0.00001) + { + + } else + { + + cube([sqrt( + + } +} +*/ + +/* This gives either a NEMA 14 stepper motor or its mounting holes. If body is true, you get the motor. If it is false you get the screw holes and central Modified: trunk/huxley/OpenSCAD-huxley/x_axis_z_nut_holder.scad =================================================================== --- trunk/huxley/OpenSCAD-huxley/x_axis_z_nut_holder.scad 2011-01-24 22:14:11 UTC (rev 4012) +++ trunk/huxley/OpenSCAD-huxley/x_axis_z_nut_holder.scad 2011-01-24 23:58:37 UTC (rev 4013) @@ -30,4 +30,41 @@ } } +stretch=1.5; + +module z_height_adjuster() +{ + difference() + { + union() + { + scale([1,1,stretch]) + rotate([0,45,0]) + difference() + { + cube([30,8,30],center=true); + cube([24,20,24],center=true); + } + translate([15*sqrt(2)-2,0,0]) + cube([5,8,8],center=true); + + translate([-15*sqrt(2)+2,0,0]) + cube([5,8,8],center=true); + + translate([0,0,stretch*(15*sqrt(2)-2)]) + cube([20,20,5],center=true); + + translate([0,0,stretch*(-15*sqrt(2)+2)]) + cube([20,20,5],center=true); + } + translate([-50,0,0]) + rotate([90,0,0]) + rotate([0,90,0]) + teardrop(r=screwsize/2,h=100,truncateMM=-1); + } +} + x_axis_z_nut_holder(); + +translate([0,25,0]) +z_height_adjuster(); \ No newline at end of file Modified: trunk/huxley/OpenSCAD-huxley/x_motor_mount.scad =================================================================== --- trunk/huxley/OpenSCAD-huxley/x_motor_mount.scad 2011-01-24 22:14:11 UTC (rev 4012) +++ trunk/huxley/OpenSCAD-huxley/x_motor_mount.scad 2011-01-24 23:58:37 UTC (rev 4013) @@ -73,10 +73,10 @@ // Limit switch mounting holes - translate([-40,4,25]) + translate([-40,4,12]) rotate([0,90,0]) teardrop(r=limit_switch_hole_diameter/2, h=40, truncateMM=-1); - translate([-40,4,25-limit_switch_centres]) + translate([-40,4,12+limit_switch_centres]) rotate([0,90,0]) teardrop(r=limit_switch_hole_diameter/2, h=40, truncateMM=-1); } Modified: trunk/huxley/OpenSCAD-huxley/y_axis_motor_mount_and_limit_switch_holder.scad =================================================================== --- trunk/huxley/OpenSCAD-huxley/y_axis_motor_mount_and_limit_switch_holder.scad 2011-01-24 22:14:11 UTC (rev 4012) +++ trunk/huxley/OpenSCAD-huxley/y_axis_motor_mount_and_limit_switch_holder.scad 2011-01-24 23:58:37 UTC (rev 4013) @@ -66,7 +66,7 @@ rotate([180,0,-30]) { mirror([0,0,1]) - nema14(body=false, counterbore = 8); + nema14(body=false, counterbore = 9.5); translate([0,nema14_square*1.05 ,-rodsize]) cube([2*(vertex_gap+rodsize), 6*rodsize, 6*rodsize], center = true); translate([nema14_square*1.05 , 0, -rodsize]) @@ -109,7 +109,7 @@ belt_bearing_holes(teardrop=true); } } -rotate([0,0,30]) +//rotate([0,0,30]) y_limit_switch_mount(); -//y_axis_motor_mount(); +y_axis_motor_mount(); Modified: trunk/huxley/OpenSCAD-huxley/z_axis_motor_base_and_limit_switch_holder.scad =================================================================== --- trunk/huxley/OpenSCAD-huxley/z_axis_motor_base_and_limit_switch_holder.scad 2011-01-24 22:14:11 UTC (rev 4012) +++ trunk/huxley/OpenSCAD-huxley/z_axis_motor_base_and_limit_switch_holder.scad 2011-01-24 23:58:37 UTC (rev 4013) @@ -122,11 +122,24 @@ { difference() { - cube([25,15,40]); + union() + { + difference() + { + cube([25,15,40]); + translate([-5,5,5]) + cube([30,15,40]); + } + translate([10,4,4]) + difference() + { + cube([5,10,25]); + translate([-1,10,-1]) + rotate([20,0,0]) + cube([10,10,50]); + } + } - translate([-5,5,5]) - cube([30,15,40]); - translate([-10, -5, 0]) rotate([0,7,0]) cube([20,100,100],center=true); @@ -147,5 +160,5 @@ } z_limit_switch_holder(); -//z_axis_motor_base(); +z_axis_motor_base(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |