03d5f1fa |
1 | /* GNU AGPLv3 (or later at your option) |
2 | see bottom for more license info */ |
3 | |
4 | $fn = 50; |
5 | |
6 | // body |
7 | cube(30); |
8 | |
9 | // ears |
10 | translate([5, 5, 29]) { |
11 | rotate(a = -15, v = [0, 1, 0]) { |
12 | minkowski() { |
13 | cylinder(h = 6, r1 = 4, r2 = 0); |
14 | sphere(1); } } } |
15 | |
16 | translate([30 - 5, 5, 29]) { |
17 | rotate(a = 15, v = [0, 1, 0]) { |
18 | minkowski() { |
19 | cylinder(h = 6, r1 = 4, r2 = 0); |
20 | sphere(1); } } } |
21 | |
22 | // eyes |
23 | translate([7, 3, 20]) { |
24 | sphere(5); } |
25 | |
26 | translate([30 - 7, 3, 20]) { |
27 | sphere(5); } |
28 | |
29 | // nose |
30 | translate([15, 4.5, 19]) { |
31 | sphere(5); } |
32 | |
33 | // front paws |
34 | translate([0, -5, 0]) { |
35 | cube([10, 5, 5]); } |
36 | |
37 | translate([30 - 10, -5, 0]) { |
38 | cube([10, 5, 5]); } |
39 | |
40 | // back paws |
41 | translate([-5, 30 - 10, 0]) { |
42 | cube([5, 10, 5]); } |
43 | |
44 | translate([30, 30 - 10, 0]) { |
45 | cube([5, 10, 5]); } |
46 | |
47 | // tail |
48 | translate([(30 - 3)/2, 30, 0]) { |
49 | cube([3, 5, 3]); } |
50 | |
51 | /* |
52 | This file is part of 3d-printables. |
53 | |
54 | 3d-printables is free software: you can redistribute it and/or modify |
55 | it under the terms of the GNU Affero General Public License as published by |
56 | the Free Software Foundation, either version 3 of the License, or |
57 | (at your option) any later version. |
58 | |
59 | 3d-printables is distributed in the hope that it will be useful, |
60 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
61 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
62 | GNU Affero General Public License for more details. |
63 | |
64 | You should have received a copy of the GNU Affero General Public License |
65 | along with challenge-bot. If not, see <http://www.gnu.org/licenses/>. |
66 | */ |