├── LICENSE
├── README.md
├── openWheel.scad
├── openWheel.stl
├── openWheel2.scad
├── openWheel2_basic_fixationSupport16.stl
├── openWheel2_basic_fixationSupport16Stretch.stl
├── openWheel2_basic_fixationSupport16Stretch5.stl
├── openWheel2_gearingWheel_20bumps6mm.stl
├── openWheel2_gearingWheel_20bumps8mm.gcode
├── openWheel2_gearingWheel_20bumps8mm.stl
├── openWheel2_gearingWheel_20bumps9.5mm.stl
├── openWheel2_rIanTrack12.stl
├── openWheel2_rIanTrack16.stl
├── openWheel2_rIanTrack16_2.25.stl
├── openWheel2_rIanTrack29.stl
├── openWheel2_rIanTrack30.stl
├── openWheel2_rIanTrack31.stl
├── openWheel2_rIanTrack32.stl
├── openWheel2_rIanTrack33.stl
├── openWheel2_trackWheel_27bumps.stl
├── openWheel2_trackWheel_27bumps_18mm.stl
├── openWheel2_tyre_27cogs.stl
├── openWheel3.scad
├── openWheel3_drive_train.stl
├── openWheel3_servo_support.gcode
├── openWheel3_servo_support.stl
├── openWheel_test_trackwheel_withLip.stl
├── openWheel_track.stl
└── openWheel_track32.stl
/LICENSE:
--------------------------------------------------------------------------------
1 | GNU GENERAL PUBLIC LICENSE
2 | Version 3, 29 June 2007
3 |
4 | Copyright (C) 2007 Free Software Foundation, Inc.
5 | Everyone is permitted to copy and distribute verbatim copies
6 | of this license document, but changing it is not allowed.
7 |
8 | Preamble
9 |
10 | The GNU General Public License is a free, copyleft license for
11 | software and other kinds of works.
12 |
13 | The licenses for most software and other practical works are designed
14 | to take away your freedom to share and change the works. By contrast,
15 | the GNU General Public License is intended to guarantee your freedom to
16 | share and change all versions of a program--to make sure it remains free
17 | software for all its users. We, the Free Software Foundation, use the
18 | GNU General Public License for most of our software; it applies also to
19 | any other work released this way by its authors. You can apply it to
20 | your programs, too.
21 |
22 | When we speak of free software, we are referring to freedom, not
23 | price. Our General Public Licenses are designed to make sure that you
24 | have the freedom to distribute copies of free software (and charge for
25 | them if you wish), that you receive source code or can get it if you
26 | want it, that you can change the software or use pieces of it in new
27 | free programs, and that you know you can do these things.
28 |
29 | To protect your rights, we need to prevent others from denying you
30 | these rights or asking you to surrender the rights. Therefore, you have
31 | certain responsibilities if you distribute copies of the software, or if
32 | you modify it: responsibilities to respect the freedom of others.
33 |
34 | For example, if you distribute copies of such a program, whether
35 | gratis or for a fee, you must pass on to the recipients the same
36 | freedoms that you received. You must make sure that they, too, receive
37 | or can get the source code. And you must show them these terms so they
38 | know their rights.
39 |
40 | Developers that use the GNU GPL protect your rights with two steps:
41 | (1) assert copyright on the software, and (2) offer you this License
42 | giving you legal permission to copy, distribute and/or modify it.
43 |
44 | For the developers' and authors' protection, the GPL clearly explains
45 | that there is no warranty for this free software. For both users' and
46 | authors' sake, the GPL requires that modified versions be marked as
47 | changed, so that their problems will not be attributed erroneously to
48 | authors of previous versions.
49 |
50 | Some devices are designed to deny users access to install or run
51 | modified versions of the software inside them, although the manufacturer
52 | can do so. This is fundamentally incompatible with the aim of
53 | protecting users' freedom to change the software. The systematic
54 | pattern of such abuse occurs in the area of products for individuals to
55 | use, which is precisely where it is most unacceptable. Therefore, we
56 | have designed this version of the GPL to prohibit the practice for those
57 | products. If such problems arise substantially in other domains, we
58 | stand ready to extend this provision to those domains in future versions
59 | of the GPL, as needed to protect the freedom of users.
60 |
61 | Finally, every program is threatened constantly by software patents.
62 | States should not allow patents to restrict development and use of
63 | software on general-purpose computers, but in those that do, we wish to
64 | avoid the special danger that patents applied to a free program could
65 | make it effectively proprietary. To prevent this, the GPL assures that
66 | patents cannot be used to render the program non-free.
67 |
68 | The precise terms and conditions for copying, distribution and
69 | modification follow.
70 |
71 | TERMS AND CONDITIONS
72 |
73 | 0. Definitions.
74 |
75 | "This License" refers to version 3 of the GNU General Public License.
76 |
77 | "Copyright" also means copyright-like laws that apply to other kinds of
78 | works, such as semiconductor masks.
79 |
80 | "The Program" refers to any copyrightable work licensed under this
81 | License. Each licensee is addressed as "you". "Licensees" and
82 | "recipients" may be individuals or organizations.
83 |
84 | To "modify" a work means to copy from or adapt all or part of the work
85 | in a fashion requiring copyright permission, other than the making of an
86 | exact copy. The resulting work is called a "modified version" of the
87 | earlier work or a work "based on" the earlier work.
88 |
89 | A "covered work" means either the unmodified Program or a work based
90 | on the Program.
91 |
92 | To "propagate" a work means to do anything with it that, without
93 | permission, would make you directly or secondarily liable for
94 | infringement under applicable copyright law, except executing it on a
95 | computer or modifying a private copy. Propagation includes copying,
96 | distribution (with or without modification), making available to the
97 | public, and in some countries other activities as well.
98 |
99 | To "convey" a work means any kind of propagation that enables other
100 | parties to make or receive copies. Mere interaction with a user through
101 | a computer network, with no transfer of a copy, is not conveying.
102 |
103 | An interactive user interface displays "Appropriate Legal Notices"
104 | to the extent that it includes a convenient and prominently visible
105 | feature that (1) displays an appropriate copyright notice, and (2)
106 | tells the user that there is no warranty for the work (except to the
107 | extent that warranties are provided), that licensees may convey the
108 | work under this License, and how to view a copy of this License. If
109 | the interface presents a list of user commands or options, such as a
110 | menu, a prominent item in the list meets this criterion.
111 |
112 | 1. Source Code.
113 |
114 | The "source code" for a work means the preferred form of the work
115 | for making modifications to it. "Object code" means any non-source
116 | form of a work.
117 |
118 | A "Standard Interface" means an interface that either is an official
119 | standard defined by a recognized standards body, or, in the case of
120 | interfaces specified for a particular programming language, one that
121 | is widely used among developers working in that language.
122 |
123 | The "System Libraries" of an executable work include anything, other
124 | than the work as a whole, that (a) is included in the normal form of
125 | packaging a Major Component, but which is not part of that Major
126 | Component, and (b) serves only to enable use of the work with that
127 | Major Component, or to implement a Standard Interface for which an
128 | implementation is available to the public in source code form. A
129 | "Major Component", in this context, means a major essential component
130 | (kernel, window system, and so on) of the specific operating system
131 | (if any) on which the executable work runs, or a compiler used to
132 | produce the work, or an object code interpreter used to run it.
133 |
134 | The "Corresponding Source" for a work in object code form means all
135 | the source code needed to generate, install, and (for an executable
136 | work) run the object code and to modify the work, including scripts to
137 | control those activities. However, it does not include the work's
138 | System Libraries, or general-purpose tools or generally available free
139 | programs which are used unmodified in performing those activities but
140 | which are not part of the work. For example, Corresponding Source
141 | includes interface definition files associated with source files for
142 | the work, and the source code for shared libraries and dynamically
143 | linked subprograms that the work is specifically designed to require,
144 | such as by intimate data communication or control flow between those
145 | subprograms and other parts of the work.
146 |
147 | The Corresponding Source need not include anything that users
148 | can regenerate automatically from other parts of the Corresponding
149 | Source.
150 |
151 | The Corresponding Source for a work in source code form is that
152 | same work.
153 |
154 | 2. Basic Permissions.
155 |
156 | All rights granted under this License are granted for the term of
157 | copyright on the Program, and are irrevocable provided the stated
158 | conditions are met. This License explicitly affirms your unlimited
159 | permission to run the unmodified Program. The output from running a
160 | covered work is covered by this License only if the output, given its
161 | content, constitutes a covered work. This License acknowledges your
162 | rights of fair use or other equivalent, as provided by copyright law.
163 |
164 | You may make, run and propagate covered works that you do not
165 | convey, without conditions so long as your license otherwise remains
166 | in force. You may convey covered works to others for the sole purpose
167 | of having them make modifications exclusively for you, or provide you
168 | with facilities for running those works, provided that you comply with
169 | the terms of this License in conveying all material for which you do
170 | not control copyright. Those thus making or running the covered works
171 | for you must do so exclusively on your behalf, under your direction
172 | and control, on terms that prohibit them from making any copies of
173 | your copyrighted material outside their relationship with you.
174 |
175 | Conveying under any other circumstances is permitted solely under
176 | the conditions stated below. Sublicensing is not allowed; section 10
177 | makes it unnecessary.
178 |
179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
180 |
181 | No covered work shall be deemed part of an effective technological
182 | measure under any applicable law fulfilling obligations under article
183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or
184 | similar laws prohibiting or restricting circumvention of such
185 | measures.
186 |
187 | When you convey a covered work, you waive any legal power to forbid
188 | circumvention of technological measures to the extent such circumvention
189 | is effected by exercising rights under this License with respect to
190 | the covered work, and you disclaim any intention to limit operation or
191 | modification of the work as a means of enforcing, against the work's
192 | users, your or third parties' legal rights to forbid circumvention of
193 | technological measures.
194 |
195 | 4. Conveying Verbatim Copies.
196 |
197 | You may convey verbatim copies of the Program's source code as you
198 | receive it, in any medium, provided that you conspicuously and
199 | appropriately publish on each copy an appropriate copyright notice;
200 | keep intact all notices stating that this License and any
201 | non-permissive terms added in accord with section 7 apply to the code;
202 | keep intact all notices of the absence of any warranty; and give all
203 | recipients a copy of this License along with the Program.
204 |
205 | You may charge any price or no price for each copy that you convey,
206 | and you may offer support or warranty protection for a fee.
207 |
208 | 5. Conveying Modified Source Versions.
209 |
210 | You may convey a work based on the Program, or the modifications to
211 | produce it from the Program, in the form of source code under the
212 | terms of section 4, provided that you also meet all of these conditions:
213 |
214 | a) The work must carry prominent notices stating that you modified
215 | it, and giving a relevant date.
216 |
217 | b) The work must carry prominent notices stating that it is
218 | released under this License and any conditions added under section
219 | 7. This requirement modifies the requirement in section 4 to
220 | "keep intact all notices".
221 |
222 | c) You must license the entire work, as a whole, under this
223 | License to anyone who comes into possession of a copy. This
224 | License will therefore apply, along with any applicable section 7
225 | additional terms, to the whole of the work, and all its parts,
226 | regardless of how they are packaged. This License gives no
227 | permission to license the work in any other way, but it does not
228 | invalidate such permission if you have separately received it.
229 |
230 | d) If the work has interactive user interfaces, each must display
231 | Appropriate Legal Notices; however, if the Program has interactive
232 | interfaces that do not display Appropriate Legal Notices, your
233 | work need not make them do so.
234 |
235 | A compilation of a covered work with other separate and independent
236 | works, which are not by their nature extensions of the covered work,
237 | and which are not combined with it such as to form a larger program,
238 | in or on a volume of a storage or distribution medium, is called an
239 | "aggregate" if the compilation and its resulting copyright are not
240 | used to limit the access or legal rights of the compilation's users
241 | beyond what the individual works permit. Inclusion of a covered work
242 | in an aggregate does not cause this License to apply to the other
243 | parts of the aggregate.
244 |
245 | 6. Conveying Non-Source Forms.
246 |
247 | You may convey a covered work in object code form under the terms
248 | of sections 4 and 5, provided that you also convey the
249 | machine-readable Corresponding Source under the terms of this License,
250 | in one of these ways:
251 |
252 | a) Convey the object code in, or embodied in, a physical product
253 | (including a physical distribution medium), accompanied by the
254 | Corresponding Source fixed on a durable physical medium
255 | customarily used for software interchange.
256 |
257 | b) Convey the object code in, or embodied in, a physical product
258 | (including a physical distribution medium), accompanied by a
259 | written offer, valid for at least three years and valid for as
260 | long as you offer spare parts or customer support for that product
261 | model, to give anyone who possesses the object code either (1) a
262 | copy of the Corresponding Source for all the software in the
263 | product that is covered by this License, on a durable physical
264 | medium customarily used for software interchange, for a price no
265 | more than your reasonable cost of physically performing this
266 | conveying of source, or (2) access to copy the
267 | Corresponding Source from a network server at no charge.
268 |
269 | c) Convey individual copies of the object code with a copy of the
270 | written offer to provide the Corresponding Source. This
271 | alternative is allowed only occasionally and noncommercially, and
272 | only if you received the object code with such an offer, in accord
273 | with subsection 6b.
274 |
275 | d) Convey the object code by offering access from a designated
276 | place (gratis or for a charge), and offer equivalent access to the
277 | Corresponding Source in the same way through the same place at no
278 | further charge. You need not require recipients to copy the
279 | Corresponding Source along with the object code. If the place to
280 | copy the object code is a network server, the Corresponding Source
281 | may be on a different server (operated by you or a third party)
282 | that supports equivalent copying facilities, provided you maintain
283 | clear directions next to the object code saying where to find the
284 | Corresponding Source. Regardless of what server hosts the
285 | Corresponding Source, you remain obligated to ensure that it is
286 | available for as long as needed to satisfy these requirements.
287 |
288 | e) Convey the object code using peer-to-peer transmission, provided
289 | you inform other peers where the object code and Corresponding
290 | Source of the work are being offered to the general public at no
291 | charge under subsection 6d.
292 |
293 | A separable portion of the object code, whose source code is excluded
294 | from the Corresponding Source as a System Library, need not be
295 | included in conveying the object code work.
296 |
297 | A "User Product" is either (1) a "consumer product", which means any
298 | tangible personal property which is normally used for personal, family,
299 | or household purposes, or (2) anything designed or sold for incorporation
300 | into a dwelling. In determining whether a product is a consumer product,
301 | doubtful cases shall be resolved in favor of coverage. For a particular
302 | product received by a particular user, "normally used" refers to a
303 | typical or common use of that class of product, regardless of the status
304 | of the particular user or of the way in which the particular user
305 | actually uses, or expects or is expected to use, the product. A product
306 | is a consumer product regardless of whether the product has substantial
307 | commercial, industrial or non-consumer uses, unless such uses represent
308 | the only significant mode of use of the product.
309 |
310 | "Installation Information" for a User Product means any methods,
311 | procedures, authorization keys, or other information required to install
312 | and execute modified versions of a covered work in that User Product from
313 | a modified version of its Corresponding Source. The information must
314 | suffice to ensure that the continued functioning of the modified object
315 | code is in no case prevented or interfered with solely because
316 | modification has been made.
317 |
318 | If you convey an object code work under this section in, or with, or
319 | specifically for use in, a User Product, and the conveying occurs as
320 | part of a transaction in which the right of possession and use of the
321 | User Product is transferred to the recipient in perpetuity or for a
322 | fixed term (regardless of how the transaction is characterized), the
323 | Corresponding Source conveyed under this section must be accompanied
324 | by the Installation Information. But this requirement does not apply
325 | if neither you nor any third party retains the ability to install
326 | modified object code on the User Product (for example, the work has
327 | been installed in ROM).
328 |
329 | The requirement to provide Installation Information does not include a
330 | requirement to continue to provide support service, warranty, or updates
331 | for a work that has been modified or installed by the recipient, or for
332 | the User Product in which it has been modified or installed. Access to a
333 | network may be denied when the modification itself materially and
334 | adversely affects the operation of the network or violates the rules and
335 | protocols for communication across the network.
336 |
337 | Corresponding Source conveyed, and Installation Information provided,
338 | in accord with this section must be in a format that is publicly
339 | documented (and with an implementation available to the public in
340 | source code form), and must require no special password or key for
341 | unpacking, reading or copying.
342 |
343 | 7. Additional Terms.
344 |
345 | "Additional permissions" are terms that supplement the terms of this
346 | License by making exceptions from one or more of its conditions.
347 | Additional permissions that are applicable to the entire Program shall
348 | be treated as though they were included in this License, to the extent
349 | that they are valid under applicable law. If additional permissions
350 | apply only to part of the Program, that part may be used separately
351 | under those permissions, but the entire Program remains governed by
352 | this License without regard to the additional permissions.
353 |
354 | When you convey a copy of a covered work, you may at your option
355 | remove any additional permissions from that copy, or from any part of
356 | it. (Additional permissions may be written to require their own
357 | removal in certain cases when you modify the work.) You may place
358 | additional permissions on material, added by you to a covered work,
359 | for which you have or can give appropriate copyright permission.
360 |
361 | Notwithstanding any other provision of this License, for material you
362 | add to a covered work, you may (if authorized by the copyright holders of
363 | that material) supplement the terms of this License with terms:
364 |
365 | a) Disclaiming warranty or limiting liability differently from the
366 | terms of sections 15 and 16 of this License; or
367 |
368 | b) Requiring preservation of specified reasonable legal notices or
369 | author attributions in that material or in the Appropriate Legal
370 | Notices displayed by works containing it; or
371 |
372 | c) Prohibiting misrepresentation of the origin of that material, or
373 | requiring that modified versions of such material be marked in
374 | reasonable ways as different from the original version; or
375 |
376 | d) Limiting the use for publicity purposes of names of licensors or
377 | authors of the material; or
378 |
379 | e) Declining to grant rights under trademark law for use of some
380 | trade names, trademarks, or service marks; or
381 |
382 | f) Requiring indemnification of licensors and authors of that
383 | material by anyone who conveys the material (or modified versions of
384 | it) with contractual assumptions of liability to the recipient, for
385 | any liability that these contractual assumptions directly impose on
386 | those licensors and authors.
387 |
388 | All other non-permissive additional terms are considered "further
389 | restrictions" within the meaning of section 10. If the Program as you
390 | received it, or any part of it, contains a notice stating that it is
391 | governed by this License along with a term that is a further
392 | restriction, you may remove that term. If a license document contains
393 | a further restriction but permits relicensing or conveying under this
394 | License, you may add to a covered work material governed by the terms
395 | of that license document, provided that the further restriction does
396 | not survive such relicensing or conveying.
397 |
398 | If you add terms to a covered work in accord with this section, you
399 | must place, in the relevant source files, a statement of the
400 | additional terms that apply to those files, or a notice indicating
401 | where to find the applicable terms.
402 |
403 | Additional terms, permissive or non-permissive, may be stated in the
404 | form of a separately written license, or stated as exceptions;
405 | the above requirements apply either way.
406 |
407 | 8. Termination.
408 |
409 | You may not propagate or modify a covered work except as expressly
410 | provided under this License. Any attempt otherwise to propagate or
411 | modify it is void, and will automatically terminate your rights under
412 | this License (including any patent licenses granted under the third
413 | paragraph of section 11).
414 |
415 | However, if you cease all violation of this License, then your
416 | license from a particular copyright holder is reinstated (a)
417 | provisionally, unless and until the copyright holder explicitly and
418 | finally terminates your license, and (b) permanently, if the copyright
419 | holder fails to notify you of the violation by some reasonable means
420 | prior to 60 days after the cessation.
421 |
422 | Moreover, your license from a particular copyright holder is
423 | reinstated permanently if the copyright holder notifies you of the
424 | violation by some reasonable means, this is the first time you have
425 | received notice of violation of this License (for any work) from that
426 | copyright holder, and you cure the violation prior to 30 days after
427 | your receipt of the notice.
428 |
429 | Termination of your rights under this section does not terminate the
430 | licenses of parties who have received copies or rights from you under
431 | this License. If your rights have been terminated and not permanently
432 | reinstated, you do not qualify to receive new licenses for the same
433 | material under section 10.
434 |
435 | 9. Acceptance Not Required for Having Copies.
436 |
437 | You are not required to accept this License in order to receive or
438 | run a copy of the Program. Ancillary propagation of a covered work
439 | occurring solely as a consequence of using peer-to-peer transmission
440 | to receive a copy likewise does not require acceptance. However,
441 | nothing other than this License grants you permission to propagate or
442 | modify any covered work. These actions infringe copyright if you do
443 | not accept this License. Therefore, by modifying or propagating a
444 | covered work, you indicate your acceptance of this License to do so.
445 |
446 | 10. Automatic Licensing of Downstream Recipients.
447 |
448 | Each time you convey a covered work, the recipient automatically
449 | receives a license from the original licensors, to run, modify and
450 | propagate that work, subject to this License. You are not responsible
451 | for enforcing compliance by third parties with this License.
452 |
453 | An "entity transaction" is a transaction transferring control of an
454 | organization, or substantially all assets of one, or subdividing an
455 | organization, or merging organizations. If propagation of a covered
456 | work results from an entity transaction, each party to that
457 | transaction who receives a copy of the work also receives whatever
458 | licenses to the work the party's predecessor in interest had or could
459 | give under the previous paragraph, plus a right to possession of the
460 | Corresponding Source of the work from the predecessor in interest, if
461 | the predecessor has it or can get it with reasonable efforts.
462 |
463 | You may not impose any further restrictions on the exercise of the
464 | rights granted or affirmed under this License. For example, you may
465 | not impose a license fee, royalty, or other charge for exercise of
466 | rights granted under this License, and you may not initiate litigation
467 | (including a cross-claim or counterclaim in a lawsuit) alleging that
468 | any patent claim is infringed by making, using, selling, offering for
469 | sale, or importing the Program or any portion of it.
470 |
471 | 11. Patents.
472 |
473 | A "contributor" is a copyright holder who authorizes use under this
474 | License of the Program or a work on which the Program is based. The
475 | work thus licensed is called the contributor's "contributor version".
476 |
477 | A contributor's "essential patent claims" are all patent claims
478 | owned or controlled by the contributor, whether already acquired or
479 | hereafter acquired, that would be infringed by some manner, permitted
480 | by this License, of making, using, or selling its contributor version,
481 | but do not include claims that would be infringed only as a
482 | consequence of further modification of the contributor version. For
483 | purposes of this definition, "control" includes the right to grant
484 | patent sublicenses in a manner consistent with the requirements of
485 | this License.
486 |
487 | Each contributor grants you a non-exclusive, worldwide, royalty-free
488 | patent license under the contributor's essential patent claims, to
489 | make, use, sell, offer for sale, import and otherwise run, modify and
490 | propagate the contents of its contributor version.
491 |
492 | In the following three paragraphs, a "patent license" is any express
493 | agreement or commitment, however denominated, not to enforce a patent
494 | (such as an express permission to practice a patent or covenant not to
495 | sue for patent infringement). To "grant" such a patent license to a
496 | party means to make such an agreement or commitment not to enforce a
497 | patent against the party.
498 |
499 | If you convey a covered work, knowingly relying on a patent license,
500 | and the Corresponding Source of the work is not available for anyone
501 | to copy, free of charge and under the terms of this License, through a
502 | publicly available network server or other readily accessible means,
503 | then you must either (1) cause the Corresponding Source to be so
504 | available, or (2) arrange to deprive yourself of the benefit of the
505 | patent license for this particular work, or (3) arrange, in a manner
506 | consistent with the requirements of this License, to extend the patent
507 | license to downstream recipients. "Knowingly relying" means you have
508 | actual knowledge that, but for the patent license, your conveying the
509 | covered work in a country, or your recipient's use of the covered work
510 | in a country, would infringe one or more identifiable patents in that
511 | country that you have reason to believe are valid.
512 |
513 | If, pursuant to or in connection with a single transaction or
514 | arrangement, you convey, or propagate by procuring conveyance of, a
515 | covered work, and grant a patent license to some of the parties
516 | receiving the covered work authorizing them to use, propagate, modify
517 | or convey a specific copy of the covered work, then the patent license
518 | you grant is automatically extended to all recipients of the covered
519 | work and works based on it.
520 |
521 | A patent license is "discriminatory" if it does not include within
522 | the scope of its coverage, prohibits the exercise of, or is
523 | conditioned on the non-exercise of one or more of the rights that are
524 | specifically granted under this License. You may not convey a covered
525 | work if you are a party to an arrangement with a third party that is
526 | in the business of distributing software, under which you make payment
527 | to the third party based on the extent of your activity of conveying
528 | the work, and under which the third party grants, to any of the
529 | parties who would receive the covered work from you, a discriminatory
530 | patent license (a) in connection with copies of the covered work
531 | conveyed by you (or copies made from those copies), or (b) primarily
532 | for and in connection with specific products or compilations that
533 | contain the covered work, unless you entered into that arrangement,
534 | or that patent license was granted, prior to 28 March 2007.
535 |
536 | Nothing in this License shall be construed as excluding or limiting
537 | any implied license or other defenses to infringement that may
538 | otherwise be available to you under applicable patent law.
539 |
540 | 12. No Surrender of Others' Freedom.
541 |
542 | If conditions are imposed on you (whether by court order, agreement or
543 | otherwise) that contradict the conditions of this License, they do not
544 | excuse you from the conditions of this License. If you cannot convey a
545 | covered work so as to satisfy simultaneously your obligations under this
546 | License and any other pertinent obligations, then as a consequence you may
547 | not convey it at all. For example, if you agree to terms that obligate you
548 | to collect a royalty for further conveying from those to whom you convey
549 | the Program, the only way you could satisfy both those terms and this
550 | License would be to refrain entirely from conveying the Program.
551 |
552 | 13. Use with the GNU Affero General Public License.
553 |
554 | Notwithstanding any other provision of this License, you have
555 | permission to link or combine any covered work with a work licensed
556 | under version 3 of the GNU Affero General Public License into a single
557 | combined work, and to convey the resulting work. The terms of this
558 | License will continue to apply to the part which is the covered work,
559 | but the special requirements of the GNU Affero General Public License,
560 | section 13, concerning interaction through a network will apply to the
561 | combination as such.
562 |
563 | 14. Revised Versions of this License.
564 |
565 | The Free Software Foundation may publish revised and/or new versions of
566 | the GNU General Public License from time to time. Such new versions will
567 | be similar in spirit to the present version, but may differ in detail to
568 | address new problems or concerns.
569 |
570 | Each version is given a distinguishing version number. If the
571 | Program specifies that a certain numbered version of the GNU General
572 | Public License "or any later version" applies to it, you have the
573 | option of following the terms and conditions either of that numbered
574 | version or of any later version published by the Free Software
575 | Foundation. If the Program does not specify a version number of the
576 | GNU General Public License, you may choose any version ever published
577 | by the Free Software Foundation.
578 |
579 | If the Program specifies that a proxy can decide which future
580 | versions of the GNU General Public License can be used, that proxy's
581 | public statement of acceptance of a version permanently authorizes you
582 | to choose that version for the Program.
583 |
584 | Later license versions may give you additional or different
585 | permissions. However, no additional obligations are imposed on any
586 | author or copyright holder as a result of your choosing to follow a
587 | later version.
588 |
589 | 15. Disclaimer of Warranty.
590 |
591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
599 |
600 | 16. Limitation of Liability.
601 |
602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
610 | SUCH DAMAGES.
611 |
612 | 17. Interpretation of Sections 15 and 16.
613 |
614 | If the disclaimer of warranty and limitation of liability provided
615 | above cannot be given local legal effect according to their terms,
616 | reviewing courts shall apply local law that most closely approximates
617 | an absolute waiver of all civil liability in connection with the
618 | Program, unless a warranty or assumption of liability accompanies a
619 | copy of the Program in return for a fee.
620 |
621 | END OF TERMS AND CONDITIONS
622 |
623 | How to Apply These Terms to Your New Programs
624 |
625 | If you develop a new program, and you want it to be of the greatest
626 | possible use to the public, the best way to achieve this is to make it
627 | free software which everyone can redistribute and change under these terms.
628 |
629 | To do so, attach the following notices to the program. It is safest
630 | to attach them to the start of each source file to most effectively
631 | state the exclusion of warranty; and each file should have at least
632 | the "copyright" line and a pointer to where the full notice is found.
633 |
634 | {one line to give the program's name and a brief idea of what it does.}
635 | Copyright (C) {year} {name of author}
636 |
637 | This program is free software: you can redistribute it and/or modify
638 | it under the terms of the GNU General Public License as published by
639 | the Free Software Foundation, either version 3 of the License, or
640 | (at your option) any later version.
641 |
642 | This program is distributed in the hope that it will be useful,
643 | but WITHOUT ANY WARRANTY; without even the implied warranty of
644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
645 | GNU General Public License for more details.
646 |
647 | You should have received a copy of the GNU General Public License
648 | along with this program. If not, see .
649 |
650 | Also add information on how to contact you by electronic and paper mail.
651 |
652 | If the program does terminal interaction, make it output a short
653 | notice like this when it starts in an interactive mode:
654 |
655 | {project} Copyright (C) {year} {fullname}
656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
657 | This is free software, and you are welcome to redistribute it
658 | under certain conditions; type `show c' for details.
659 |
660 | The hypothetical commands `show w' and `show c' should show the appropriate
661 | parts of the General Public License. Of course, your program's commands
662 | might be different; for a GUI interface, you would use an "about box".
663 |
664 | You should also get your employer (if you work as a programmer) or school,
665 | if any, to sign a "copyright disclaimer" for the program, if necessary.
666 | For more information on this, and how to apply and follow the GNU GPL, see
667 | .
668 |
669 | The GNU General Public License does not permit incorporating your program
670 | into proprietary programs. If your program is a subroutine library, you
671 | may consider it more useful to permit linking proprietary applications with
672 | the library. If this is what you want to do, use the GNU Lesser General
673 | Public License instead of this License. But first, please read
674 | .
675 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # openWheel
2 | open source parametric wheels, tyres and tracks for robots meant for 3D printing
3 |
--------------------------------------------------------------------------------
/openWheel.scad:
--------------------------------------------------------------------------------
1 |
2 |
3 | openWheelRimLipOn=1;
4 | openWheelRimLipThickness=1;
5 | openWheelRimLipLengthAdjustment=1;
6 |
7 |
8 | servoWheelsTyreThickness=2;
9 |
10 | trackSprocketWidthAdjustment=1;
11 |
12 | servoWheelWidth=5+openWheelRimLipThickness*2*openWheelRimLipOn+trackSprocketWidthAdjustment*openWheelRimLipOn;
13 |
14 | openWheelRimThickness=2.5;
15 | servoWheelCentralHubRadius=20/2;
16 | servoWheelCentralHubLip=1;
17 | servoWheelCentralHubHoleRadius=7/2;
18 | servoWheelRimBarsThickness=2;
19 | servoWheelRimBarsWidth=4;
20 |
21 | servoWheelFixHolesDistFromCenter=8.5;
22 | servoWheelFixHolesRadius=2/2;
23 |
24 | openWheelsArmsCount01=6;
25 |
26 |
27 |
28 |
29 | openWheelRimBumps=1;
30 | openWheelRimBumpsRadius=openWheelRimThickness;
31 | openWheelRimBumpsCount=16;
32 |
33 |
34 | openWheelRimRidges=1;
35 | openWheelRimRidgesCount=openWheelRimBumpsCount;
36 | openWheelRimRidgesRadius=openWheelRimThickness;
37 |
38 |
39 |
40 | openWheelRimPerimeter=openWheelRimBumpsCount*2*openWheelRimBumpsRadius;
41 |
42 | //servoWheelsRadius=35-servoWheelsTyreThickness;
43 | //openWheelRimPerimeter=3.14159*servoWheelsRadius*2;
44 | servoWheelsRadius=(openWheelRimPerimeter/3.14159)/2;
45 |
46 | servoWheelRimBarsLength=servoWheelsRadius-servoWheelCentralHubRadius-openWheelRimThickness;
47 |
48 | servoTyreRadius=servoWheelsRadius*97/100;
49 |
50 |
51 | openWheelTyreInteralBumpsCount=openWheelRimBumpsCount+32;
52 | openWheelTyreInternalPerimeter=openWheelTyreInteralBumpsCount*2*openWheelRimBumpsRadius;
53 |
54 | //openWheelInternalTrackRadius=20;
55 | openWheelInternalTrackRadius=(openWheelTyreInternalPerimeter/3.14159)/2;
56 |
57 |
58 |
59 | module openWheelRimBar()
60 | {
61 | translate([servoWheelCentralHubRadius,-servoWheelRimBarsWidth/2,0])
62 | cube([servoWheelRimBarsLength,servoWheelRimBarsWidth,servoWheelRimBarsThickness]);
63 |
64 | translate([servoWheelCentralHubRadius-1,-1/2,0])
65 | cube([servoWheelRimBarsLength+1,1,servoWheelWidth]);
66 | }
67 |
68 | module openWheelCentralHub()
69 | {
70 | difference()
71 | {
72 | union()
73 | {
74 | cylinder(r=servoWheelCentralHubRadius,h=servoWheelWidth,$fn=128);
75 | cylinder(r=servoWheelCentralHubRadius+servoWheelCentralHubLip,h=servoWheelRimBarsThickness,$fn=128);
76 | }
77 | translate([0,0,-1])
78 | cylinder(r=servoWheelCentralHubHoleRadius,h= servoWheelWidth*2,$fn=128);
79 | for(i = [0 : 1 : 4])
80 | {
81 | angle01=90*i;
82 | rotate([0,0,angle01])
83 | translate([servoWheelFixHolesDistFromCenter,0,-1])
84 | cylinder(r=servoWheelFixHolesRadius,h= servoWheelWidth*2,$fn=8);
85 |
86 | }
87 | }
88 |
89 | }
90 |
91 | module openWheel()
92 | {
93 | difference()
94 | {
95 | union()
96 | {
97 | cylinder(r=servoWheelsRadius,h=servoWheelWidth,$fn=128);
98 | }
99 |
100 |
101 | translate([0,0,-1])
102 | cylinder(r=servoWheelsRadius-openWheelRimThickness,h=servoWheelWidth*2,$fn=128);
103 | if(openWheelRimRidges==1)
104 | {
105 |
106 | rotationAngle01=360/openWheelRimRidgesCount;
107 | for(i = [0 : 1 : openWheelRimRidgesCount])
108 | {
109 | angle01=rotationAngle01*i;
110 | rotate([0,0,angle01])
111 | translate([servoWheelsRadius,0,-1])
112 | cylinder(r=openWheelRimRidgesRadius/2,h=servoWheelWidth+2,$fn=10);
113 |
114 | }
115 | }
116 | }
117 | openWheelCentralHub();
118 | rotationAngle01=360/openWheelsArmsCount01;
119 |
120 | for(i = [0 : 1 : openWheelsArmsCount01])
121 | {
122 | angle01=rotationAngle01*i;
123 | rotate([0,0,angle01])
124 | openWheelRimBar();
125 |
126 |
127 | }
128 |
129 |
130 |
131 | if(openWheelRimBumps==1)
132 | {
133 |
134 | rotationAngle01=360/openWheelRimBumpsCount;
135 | for(i = [0 : 1 : openWheelRimBumpsCount])
136 | {
137 | angle01=rotationAngle01*i+rotationAngle01/2;
138 | rotate([0,0,angle01])
139 | translate([servoWheelsRadius,0,0])
140 | cylinder(r=openWheelRimBumpsRadius/2,h=servoWheelWidth,$fn=10);
141 |
142 | }
143 | }
144 |
145 |
146 | if(openWheelRimLipOn==1)
147 | {
148 | difference()
149 | {
150 | union()
151 | {
152 | translate([0,0,0])
153 | cylinder(r=servoWheelsRadius+openWheelRimRidgesRadius/2,h=openWheelRimLipThickness,$fn=128);
154 | translate([0,0,servoWheelWidth-openWheelRimLipThickness])
155 | cylinder(r=servoWheelsRadius+openWheelRimRidgesRadius/2,h=openWheelRimLipThickness,$fn=128);
156 | }
157 | translate([0,0,-openWheelRimLipThickness-1])
158 | cylinder(r=servoWheelsRadius-openWheelRimThickness,h=servoWheelWidth*2+openWheelRimLipThickness*2,$fn=128);
159 | }
160 | }
161 | }
162 |
163 |
164 |
165 |
166 |
167 | module openWheelTyre()
168 | {
169 | difference()
170 | {
171 | cylinder(r=servoTyreRadius,h=servoWheelWidth,$fn=128);
172 |
173 | translate([0,0,-1])
174 | cylinder(r=servoTyreRadius-servoWheelsTyreThickness,h=servoWheelWidth*2,$fn=128);
175 | }
176 |
177 | difference()
178 | {
179 | translate([0,0,-1])
180 | cylinder(r=servoTyreRadius,h=1,$fn=128);
181 | translate([0,0,-2])
182 | cylinder(r=servoTyreRadius-servoWheelsTyreThickness-2,h=servoWheelWidth*2,$fn=128);
183 | }
184 |
185 | difference()
186 | {
187 | translate([0,0,servoWheelWidth])
188 | cylinder(r=servoTyreRadius,h=1,$fn=128);
189 | translate([0,0,-1])
190 | cylinder(r=servoTyreRadius-servoWheelsTyreThickness-2,h=servoWheelWidth*2,$fn=128);
191 | }
192 |
193 | gripBars=81;
194 | rotationAngle01=360/gripBars;
195 | for(i = [0 : 1 : gripBars])
196 | {
197 | angle01=rotationAngle01*i;
198 | rotate([0,0,angle01])
199 | translate([servoTyreRadius-0.5,0,-1])
200 | cube([1.5,1,servoWheelWidth+2]);
201 |
202 | }
203 | }
204 |
205 |
206 | module openWheelTrack()
207 | {
208 | difference()
209 | {
210 | cylinder(r=openWheelInternalTrackRadius+servoWheelsTyreThickness,h=servoWheelWidth,$fn=128);
211 |
212 | translate([0,0,-1])
213 | cylinder(r=openWheelInternalTrackRadius,h=servoWheelWidth*2,$fn=128);
214 |
215 | rotationAngle01=360/openWheelTyreInteralBumpsCount;
216 | for(i = [0 : 1 : openWheelTyreInteralBumpsCount])
217 | {
218 | angle01=rotationAngle01*i+rotationAngle01/2;
219 | rotate([0,0,angle01])
220 | translate([openWheelInternalTrackRadius,0,-1])
221 | cylinder(r=openWheelRimRidgesRadius/2,h=servoWheelWidth+2,$fn=10);
222 |
223 | }
224 | }
225 |
226 | rotationAngle01=360/openWheelTyreInteralBumpsCount;
227 | for(i = [0 : 1 : openWheelTyreInteralBumpsCount])
228 | {
229 | angle01=rotationAngle01*i;
230 | rotate([0,0,angle01])
231 | translate([openWheelInternalTrackRadius,0,0])
232 | cylinder(r=openWheelRimRidgesRadius/2,h=servoWheelWidth,$fn=10);
233 |
234 | }
235 | /*
236 | difference()
237 | {
238 | translate([0,0,-1])
239 | cylinder(r=servoTyreRadius,h=1,$fn=128);
240 | translate([0,0,-2])
241 | cylinder(r=servoTyreRadius-servoWheelsTyreThickness-2,h=servoWheelWidth*2,$fn=128);
242 | }
243 |
244 | difference()
245 | {
246 | translate([0,0,servoWheelWidth])
247 | cylinder(r=servoTyreRadius,h=1,$fn=128);
248 | translate([0,0,-1])
249 | cylinder(r=servoTyreRadius-servoWheelsTyreThickness-2,h=servoWheelWidth*2,$fn=128);
250 | }
251 | */
252 | /*
253 | gripBars=81;
254 | rotationAngle01=360/gripBars;
255 | for(i = [0 : 1 : gripBars])
256 | {
257 | angle01=rotationAngle01*i;
258 | rotate([0,0,angle01])
259 | translate([servoTyreRadius-0.5,0,-1])
260 | cube([1.5,1,servoWheelWidth+2]);
261 |
262 | }*/
263 | }
264 |
265 |
266 |
267 | //openWheelTrack();
268 |
269 | openWheel();
270 | //servoWheelTyre();
271 |
272 |
273 |
274 |
275 |
276 |
--------------------------------------------------------------------------------
/openWheel2.scad:
--------------------------------------------------------------------------------
1 |
2 |
3 | openWheelRimLipOn=1;
4 | openWheelRimLipThickness=1;
5 | openWheelRimLipLengthAdjustment=1;
6 |
7 |
8 | servoWheelsTyreThickness=2;
9 |
10 | trackSprocketWidthAdjustment=1;
11 |
12 | servoWheelWidth=5+openWheelRimLipThickness*2*openWheelRimLipOn+trackSprocketWidthAdjustment*openWheelRimLipOn;
13 |
14 | openWheelRimThickness=2.5;
15 | servoWheelCentralHubRadius=20/2;
16 | servoWheelCentralHubLip=1;
17 | servoWheelCentralHubHoleRadius=7/2;
18 | servoWheelRimBarsThickness=2;
19 | servoWheelRimBarsWidth=4;
20 |
21 | servoWheelFixHolesDistFromCenter=8.5;
22 | servoWheelFixHolesRadius=2/2;
23 |
24 | openWheelsArmsCount01=6;
25 |
26 |
27 |
28 |
29 | openWheelRimBumps=1;
30 | openWheelRimBumpsRadius=openWheelRimThickness;
31 | openWheelRimBumpsCount=27;
32 |
33 |
34 | openWheelRimRidges=1;
35 | openWheelRimRidgesCount=openWheelRimBumpsCount;
36 | openWheelRimRidgesRadius=openWheelRimThickness;
37 |
38 |
39 | openWheelRimBumpsCount=27;
40 | openWheelRimPerimeter=openWheelRimBumpsCount*2*openWheelRimBumpsRadius;
41 |
42 | /*servoWheelsRadius=35-servoWheelsTyreThickness;
43 | //openWheelRimPerimeter=3.14159*servoWheelsRadius*2;
44 | wheelRadius1=(openWheelRimPerimeter/3.14159)/2;
45 | echo (wheelRadius1);
46 |
47 | servoWheelRimBarsLength=servoWheelsRadius-servoWheelCentralHubRadius-openWheelRimThickness;*/
48 | /*
49 |
50 | servoTyreRadius=servoWheelsRadius*97/100;
51 |
52 |
53 | openWheelTyreInteralBumpsCount=openWheelRimBumpsCount+32;
54 | openWheelTyreInternalPerimeter=openWheelTyreInteralBumpsCount*2*openWheelRimBumpsRadius;
55 |
56 | //openWheelInternalTrackRadius=20;
57 | openWheelInternalTrackRadius=(openWheelTyreInternalPerimeter/3.14159)/2;
58 |
59 |
60 | module openWheelTyre()
61 | {
62 | difference()
63 | {
64 | cylinder(r=servoTyreRadius,h=servoWheelWidth,$fn=128);
65 |
66 | translate([0,0,-1])
67 | cylinder(r=servoTyreRadius-servoWheelsTyreThickness,h=servoWheelWidth*2,$fn=128);
68 | }
69 |
70 | difference()
71 | {
72 | translate([0,0,-1])
73 | cylinder(r=servoTyreRadius,h=1,$fn=128);
74 | translate([0,0,-2])
75 | cylinder(r=servoTyreRadius-servoWheelsTyreThickness-2,h=servoWheelWidth*2,$fn=128);
76 | }
77 |
78 | difference()
79 | {
80 | translate([0,0,servoWheelWidth])
81 | cylinder(r=servoTyreRadius,h=1,$fn=128);
82 | translate([0,0,-1])
83 | cylinder(r=servoTyreRadius-servoWheelsTyreThickness-2,h=servoWheelWidth*2,$fn=128);
84 | }
85 |
86 | gripBars=81;
87 | rotationAngle01=360/gripBars;
88 | for(i = [0 : 1 : gripBars])
89 | {
90 | angle01=rotationAngle01*i;
91 | rotate([0,0,angle01])
92 | translate([servoTyreRadius-0.5,0,-1])
93 | cube([1.5,1,servoWheelWidth+2]);
94 |
95 | }
96 | }
97 |
98 |
99 | module openWheelTrack()
100 | {
101 | difference()
102 | {
103 | cylinder(r=openWheelInternalTrackRadius+servoWheelsTyreThickness,h=servoWheelWidth,$fn=128);
104 |
105 | translate([0,0,-1])
106 | cylinder(r=openWheelInternalTrackRadius,h=servoWheelWidth*2,$fn=128);
107 |
108 | rotationAngle01=360/openWheelTyreInteralBumpsCount;
109 | for(i = [0 : 1 : openWheelTyreInteralBumpsCount])
110 | {
111 | angle01=rotationAngle01*i+rotationAngle01/2;
112 | rotate([0,0,angle01])
113 | translate([openWheelInternalTrackRadius,0,-1])
114 | cylinder(r=openWheelRimRidgesRadius/2,h=servoWheelWidth+2,$fn=10);
115 |
116 | }
117 | }
118 |
119 | rotationAngle01=360/openWheelTyreInteralBumpsCount;
120 | for(i = [0 : 1 : openWheelTyreInteralBumpsCount])
121 | {
122 | angle01=rotationAngle01*i;
123 | rotate([0,0,angle01])
124 | translate([openWheelInternalTrackRadius,0,0])
125 | cylinder(r=openWheelRimRidgesRadius/2,h=servoWheelWidth,$fn=10);
126 |
127 | }
128 | }
129 | */
130 |
131 |
132 | //openWheelTrack();
133 |
134 | //openWheel();
135 | //servoWheelTyre();
136 |
137 |
138 |
139 |
140 |
141 | /**
142 | * This module describes the central hub of a wheel.
143 | * It is a cylinder whith a set radius and thickness,
144 | * and a hole in the middle. The level of curve can
145 | * be set with the parameter curveLevel : the higher
146 | * it is, the more segments it will have, and thus
147 | * the smoother, but the longer to compile.
148 | * @param hubRadius the radius of the cylinder
149 | * @param hubThickness the thickness of the cylinder
150 | * @param hubCentralHoleRadius : the radius of the central hole
151 | * @param curveLevel is the amount of segments used for the cylinder ($fn parameter)
152 | */
153 | module wheelCentralHubNoHoles(hubRadius,hubThickness,hubCentralHoleRadius=5.6/2,curveLevel=64,axleHeadRadius=9/2,axleHeadHeight=4)
154 | {
155 | difference()
156 | {
157 | cylinder(r=hubRadius,h=hubThickness,$fn=curveLevel);
158 | translate([0,0,-hubThickness])
159 | cylinder(r=hubCentralHoleRadius,h=hubThickness*3,$fn=64);
160 |
161 | translate([0,0,hubThickness-axleHeadHeight])
162 | cylinder(r=axleHeadRadius,h=hubThickness*3,$fn=64);
163 | }
164 | }
165 |
166 |
167 | /**
168 | * This modules creates cylinders used for fixation holes in the hub.
169 | * the holes radius can be defined, as well as the cut depth.
170 | * If cutDepthThickness is set to 0, trough holes will be created.
171 | * Otherwise, holes of the corresponding depth will be created.
172 | * NOTE : you can set a negative value for cutDepthThickness to create
173 | * the non traversing holes on the other side of the hub.
174 | * @param holesCount the number of cylinders (used for holes) to create
175 | * @param holesRadius the radius of the holes to create
176 | * @param holesDist the distance of the center of the holes from the center of the hub
177 | * @param hubThickness the thickness of the hub
178 | * @param angleShift if set to non zero, it will shift the rotation of the holes of this value;
179 | * i.e. if set to 30, holes will start after a 30° rotation.
180 | * cutDepthThickness : how deep the holes must be cut. if set to 0, it will be trhough holes.
181 | * positive values cut the specified depth from the top, negative from the bottom
182 | * @param screwsCurveLevel is the amount of segments used for the cylinders ($fn parameter)
183 | */
184 | module wheelCentralHubFixationHoles(holesCount=4,holesRadius=defaultScrewRadius,
185 | holesDist,hubThickness,angleShift=0,cutDepthThickness=0,screwsCurveLevel=16,axleHeadRadius=9/2,axleHeadHeight=4)
186 | {
187 | rotAngle=360/(holesCount);
188 | for(i = [0 : 1 : holesCount-1])
189 | {
190 |
191 | //echo (rotAngle*i+angleShift);
192 | rotate([0,0,rotAngle*i+angleShift-90])
193 | if(cutDepthThickness==0)
194 | {
195 | translate([0,holesDist,-hubThickness])
196 | cylinder(r=holesRadius,h=hubThickness*3,$fn=16);
197 | }
198 | else if(cutDepthThickness>0)
199 | {
200 | cutDecal=hubThickness-cutDepthThickness;
201 | translate([0,holesDist,cutDecal])
202 | cylinder(r=holesRadius,h=cutDepthThickness*2,$fn=16);
203 | }
204 | else
205 | {
206 | cutDecal=-cutDepthThickness;
207 | translate([0,holesDist,-cutDecal])
208 | cylinder(r=holesRadius,h=-cutDepthThickness*2,$fn=16);
209 | }
210 | }
211 | }
212 |
213 | /**
214 | * This modules create a wheel central hub, as a cylinder with a central hole and multiple surrouding holes.
215 | * the central hole is to be used for a central axle, but can be set to 0 if not necessary.
216 | * the surrounding holes are used for fixation screws, and can also be set to 0 if needed.
217 | * @param hubRadius the radius of the hub
218 | * @param hubThickness the thickness of the hub
219 | * @param hubCentralHoleRadius : the radius of the central hole
220 | * @param curveLevel is the amount of segments used for the hub ($fn parameter)
221 | * @param holesCount the number of peripheral holes to create
222 | * @param holesRadius the radius of the peripheral holes to create
223 | * @param holesDist the distance of the center of the holes from the center of the hub
224 | * @param angleShift if set to non zero, it will shift the rotation of the holes of this value;
225 | * i.e. if set to 30, holes will start after a 30° rotation.
226 | * cutDepthThickness : how deep the holes must be cut. if set to 0, it will be trhough holes.
227 | * positive values cut the specified depth from the top, negative from the bottom
228 | * @param screwsCurveLevel is the amount of segments used for the cylinders ($fn parameter)
229 | * @param screwsHeadRadius the radius of the screws heads
230 | * @param screwsHeadDepth how deep we cut to countersunk the screws heads
231 | */
232 | module wheelCentralHubWithFixations(hubRadius, hubThickness, hubCentralHoleRadius=4/2,
233 | curveLevel=64, holesCount=4, holesRadius=defaultScrewRadius, holesDist, angleShift=0,
234 | cutDepthThickness=0, screwsHeadRadius=defaultScrewRadius*2, screwsHeadDepth=3, screwsCurveLevel=16,axleHeadRadius=9/2,axleHeadHeight=4)
235 | {
236 | difference()
237 | {
238 | wheelCentralHubNoHoles(hubRadius,hubThickness,hubCentralHoleRadius,curveLevel,axleHeadRadius,axleHeadHeight);
239 |
240 | wheelCentralHubFixationHoles(holesCount,holesRadius,holesDist,
241 | hubThickness,angleShift,cutDepthThickness,screwsCurveLevel);
242 | wheelCentralHubFixationHoles(holesCount,screwsHeadRadius,holesDist,
243 | hubThickness,angleShift,screwsHeadDepth,screwsCurveLevel);
244 | }
245 | }
246 |
247 | /**
248 | * Creates a simple ring, with a defined thickness, height, and radius.
249 | * @param ringInnerRadius the internal radius of the ring
250 | * @param ringThickness the thickness of the ring -> external radius =ringThickness+ringInnerRadius
251 | * @param ringHeight the height of the ring
252 | * @param ringcurve the facets count for the ring. More = smoother but more rendering time
253 | */
254 | module ring(ringInnerRadius,ringThickness,ringHeight,ringcurve=128)
255 | {
256 | difference()
257 | {
258 | cylinder(r=ringInnerRadius+ringThickness,h=ringHeight,$fn=ringcurve);
259 | translate([0,0,-1])
260 | cylinder(r=ringInnerRadius,h=ringHeight+2,$fn=ringcurve);
261 | }
262 | }
263 |
264 | module openWheelBasicRimBar(hubRadius,hubThickness,rimBarWidth=4,rimBarLength)
265 | {
266 | rimBarsPadding=2;
267 | basicRimBarThickness=2;
268 | translate([hubRadius-rimBarsPadding/2,-rimBarWidth/2,0])
269 | cube([rimBarLength+rimBarsPadding,rimBarWidth,basicRimBarThickness]);
270 |
271 | translate([hubRadius-rimBarsPadding/2,-1/2,0])
272 | cube([rimBarLength+rimBarsPadding,1,hubThickness]);
273 | }
274 |
275 |
276 | module basicWheel(hubRadius, hubThickness, hubCentralHoleRadius=4/2,
277 | curveLevel=64, holesCount=4, holesRadius=defaultScrewRadius, holesDist, angleShift=0,
278 | cutDepthThickness=0, screwsHeadRadius=defaultScrewRadius*2, screwsHeadDepth=3,
279 | screwsCurveLevel=16,rimBarsCount=5,rimbarsAngleShift=0,rimbarsWidth=4,wheelExternalRadius,
280 | wheelRimThickness=2,lipsThickness=1,lipsOverHang=1,cogsCount=openWheelRimBumpsCount,axleHeadRadius=9/2,axleHeadHeight=4)
281 | {
282 | rimBarsLength=wheelExternalRadius-wheelRimThickness-hubRadius;
283 |
284 | wheelCentralHubWithFixations(hubRadius,hubThickness,hubCentralHoleRadius,
285 | curveLevel,holesCount,holesRadius,holesDist,angleShift,cutDepthThickness,
286 | screwsHeadRadius,screwsHeadDepth,screwsCurveLevel,axleHeadRadius,axleHeadHeight);
287 |
288 | rotAngle=360/(rimBarsCount);
289 | for(i = [0 : 1 : rimBarsCount-1])
290 | {
291 | rotate([0,0,rotAngle*i+rimbarsAngleShift])
292 | openWheelBasicRimBar(hubRadius,hubThickness,rimbarsWidth,rimBarLength=rimBarsLength);
293 | }
294 |
295 | bumpsCurveLevel=rimbumpsCurveLevel;
296 |
297 | //rim
298 | difference()
299 | {
300 | ring(ringInnerRadius=wheelExternalRadius-wheelRimThickness,ringThickness=wheelRimThickness,
301 | ringHeight=hubThickness,ringcurve=128);
302 |
303 | rotationAngle01=360/cogsCount;
304 | for(i = [0 : 1 : cogsCount])
305 | {
306 | angle01=rotationAngle01*i;
307 | rotate([0,0,angle01])
308 | translate([wheelExternalRadius,0,-1])
309 | cylinder(r=openWheelRimRidgesRadius/2,h=hubThickness*2,$fn=bumpsCurveLevel);
310 |
311 | }
312 | }
313 | ring(ringInnerRadius=wheelExternalRadius-wheelRimThickness,ringThickness=2+lipsOverHang,
314 | ringHeight=lipsThickness,ringcurve=128);
315 |
316 | translate([0,0,hubThickness-lipsThickness])
317 | ring(ringInnerRadius=wheelExternalRadius-wheelRimThickness,ringThickness=2+lipsOverHang,ringHeight=lipsThickness,ringcurve=128);
318 |
319 | if(openWheelRimBumps==1)
320 | {
321 | rotationAngle01=360/cogsCount;
322 | for(i = [0 : 1 : cogsCount])
323 | {
324 | angle01=rotationAngle01*i+rotationAngle01/2;
325 | rotate([0,0,angle01])
326 | translate([wheelExternalRadius,0,0])
327 | cylinder(r=openWheelRimBumpsRadius/2,h=hubThickness,$fn=bumpsCurveLevel);
328 | }
329 | }
330 |
331 | }
332 |
333 |
334 |
335 | /*
336 | wheelHubWithBars(hubRadius=wheel1HubRadius,hubThickness=wheel1HubThickness,hubCentralHoleRadius=4/2,
337 | curveLevel=64,holesCount=5,holesRadius=defaultScrewRadius,holesDist=8,
338 | angleShift=0,cutDepthThickness=0,screwsHeadRadius=defaultScrewRadius*2,
339 | screwsHeadDepth=3,screwsCurveLevel=16,rimBarsCount=5,rimbarsAngleShift=0,
340 | rimBarsLength=20);
341 |
342 | ring(ringInnerRadius=wheel1HubRadius+wheel1RimBarsLength,ringThickness=2,
343 | ringHeight=wheel1HubThickness,ringcurve=128);
344 | */
345 |
346 | /*module basicWheel(hubRadius=wheel1HubRadius,hubThickness=wheel1HubThickness,hubCentralHoleRadius=4/2,
347 | curveLevel=64,holesCount=5,holesRadius=defaultScrewRadius,holesDist=8,
348 | angleShift=0,cutDepthThickness=0,screwsHeadRadius=defaultScrewRadius*2,
349 | screwsHeadDepth=3,screwsCurveLevel=16,rimBarsCount=5,rimbarsAngleShift=0,
350 | rimBarsLength=20)
351 | {
352 | wheelHubWithBars(hubRadius,hubThickness,hubCentralHoleRadius,
353 | curveLevel,holesCount,holesRadius=defaultScrewRadius,holesDist=8,
354 | angleShift=0,cutDepthThickness=0,screwsHeadRadius=defaultScrewRadius*2,
355 | screwsHeadDepth=3,screwsCurveLevel=16,rimBarsCount=5,rimbarsAngleShift=0,
356 | rimBarsLength=20);
357 |
358 | ring(ringInnerRadius=wheel1HubRadius+wheel1RimBarsLength,ringThickness=2,
359 | ringHeight=wheel1HubThickness,ringcurve=128);
360 |
361 |
362 | }*/
363 |
364 | //the main propulsion wheel that will move the track (or tyres)
365 | rIanWheelRimBumpsCount=27;
366 | rIanWheelRimPerimeter=rIanWheelRimBumpsCount*2*openWheelRimBumpsRadius;
367 |
368 | //servoWheelsRadius=35-servoWheelsTyreThickness;
369 | //openWheelRimPerimeter=3.14159*servoWheelsRadius*2;
370 | rIanWheelRadius1=(rIanWheelRimPerimeter/3.14159)/2;
371 | echo (rIanWheelRadius1);
372 | rIanWheelTotalRadius=rIanWheelRadius1+openWheelRimBumpsRadius;
373 |
374 |
375 | rIanWrIanWheel1CentralHoleAxleHeadRadius=9.7/2; //8.5/2 in reality
376 | rIanWheel1CentralHoleAxleHeadThickness=4; //3.5 in reality
377 | defaultScrewRadius=3.1/2;
378 | rIanWheel1HubRadius=12;
379 | rIanWheel1HubThickness=14+rIanWheel1CentralHoleAxleHeadThickness;
380 | rIanWheelLipsThickness=1;
381 | rIanWheel1InternalPathWidth=rIanWheel1HubThickness-rIanWheelLipsThickness*2-1;
382 |
383 | //wheel1RimBarsLength=20;
384 | centralHole1Radius=5.7/2;
385 |
386 | //the radius of the screw part of the wheels axles
387 | centralAxleScrewRadius=3.95/2;
388 | //this is the gearing that will move the wheel
389 | gearing1CogsCount=20;
390 | gearing1Perimeter=gearing1CogsCount*2*openWheelRimBumpsRadius;
391 | gearing1Thickness=9.5;
392 | gearing1Radius=(gearing1Perimeter/3.14159)/2;
393 | rIanGearing1Radius=gearing1Radius+openWheelRimBumpsRadius;
394 |
395 | rimbumpsCurveLevel=16;
396 |
397 |
398 |
399 |
400 |
401 |
402 | module r_ian_wheel1()
403 | {
404 | basicWheel(hubRadius=rIanWheel1HubRadius,hubThickness=rIanWheel1HubThickness,hubCentralHoleRadius=centralHole1Radius,
405 | curveLevel=64,holesCount=4,holesRadius=defaultScrewRadius,holesDist=8,
406 | angleShift=180,cutDepthThickness=0,screwsHeadRadius=defaultScrewRadius*2,
407 | screwsHeadDepth=3,screwsCurveLevel=16,rimBarsCount=8,rimbarsAngleShift=360/16,rimbarsWidth=4,
408 | wheelExternalRadius=rIanWheelRadius1,wheelRimThickness=2.5,lipsThickness=rIanWheelLipsThickness,
409 | lipsOverHang=openWheelRimBumpsRadius/2,axleHeadRadius=rIanWrIanWheel1CentralHoleAxleHeadRadius,
410 | axleHeadHeight=rIanWheel1CentralHoleAxleHeadThickness);
411 |
412 | }
413 |
414 | module r_ian_gearing1()
415 | {
416 | difference()
417 | {
418 | basicWheel(hubRadius=rIanWheel1HubRadius,hubThickness=gearing1Thickness,hubCentralHoleRadius=centralHole1Radius,
419 | curveLevel=64,holesCount=4,holesRadius=2/2,holesDist=8.5,
420 | angleShift=180,cutDepthThickness=0,screwsHeadRadius=defaultScrewRadius*2,
421 | screwsHeadDepth=3,screwsCurveLevel=16,rimBarsCount=8,rimbarsAngleShift=360/16,rimbarsWidth=4,
422 | wheelExternalRadius=gearing1Radius,wheelRimThickness=2.5,lipsThickness=0,
423 | lipsOverHang=openWheelRimBumpsRadius/2,cogsCount=gearing1CogsCount,axleHeadRadius=0,axleHeadHeight=0);
424 |
425 | wheelCentralHubFixationHoles(holesCount=4,holesRadius=defaultScrewRadius,
426 | holesDist=8,hubThickness=gearing1Thickness,angleShift=45,cutDepthThickness=0,screwsCurveLevel=16);
427 | }
428 | }
429 | gearingPadding=0.2;
430 |
431 |
432 | gearingRotationAngle=30;
433 |
434 |
435 | gearing1ToWheel1AxleDist=(gearing1Radius*2+gearingPadding);//direct, straight line distance between both axles centers
436 | gearing1ToWheel1AxleDistY=cos(gearingRotationAngle)*gearing1ToWheel1AxleDist; //distance on Y axis (projection)
437 | gearing1ToWheel1AxleDistZ=sin(gearingRotationAngle)*gearing1ToWheel1AxleDist; //distance on Z axis (projection)
438 |
439 |
440 | //max value for printing on printrbot simple = 29
441 | frontBackAxleDistanceInCogs=16;
442 | frontBackAxleStretchingDistance=5;
443 | distanceFrontBackWheelsAxles=frontBackAxleDistanceInCogs*openWheelRimBumpsRadius*2+frontBackAxleStretchingDistance;
444 |
445 | trackLength=frontBackAxleDistanceInCogs*2+rIanWheelRimBumpsCount;
446 |
447 |
448 | fitechFS90RServoFix1DistFromAxle=9;
449 | fitechFS90RServoFix2DistFromAxle=19.5;
450 | fitechFS90RServoHeight=12.2;
451 |
452 | fixationBlockX=10;
453 | fixationBlockY=distanceFrontBackWheelsAxles+10*2;
454 | fixationBlockZ=10;
455 |
456 | fixationSupportWheelSPacingDiscRadius=5;
457 | fixationSupportWheelSPacingDiscThickness=2;
458 |
459 |
460 | motor1FixScrew1DistFromWheelAxle=8;
461 | motor1FixScrewsDist=10;
462 | motor1FixScrewsCount=5;
463 |
464 | fixationBlockEndScrewsXEdgeDistance=4;
465 | fixationBlockEdgeDecal=10;
466 |
467 | module servoSupport(servoBodyLength,servoBodyHeight,servoDepth,servoEarsWidth,
468 | servoScrewsRadius,shoeThickness,leftHoleDist,rightHoleDist,
469 | servoShaftDistX,servoShaftDistY)
470 | {
471 | servoFixEarsThickness=2;
472 | translate([0,leftHoleDist,0])
473 | cube([servoDepth,servoBodyLength+servoEarsWidth*2,shoeThickness]);
474 |
475 |
476 | cube([servoDepth,leftHoleDist,servoFixEarsThickness]);
477 | translate([0,servoBodyLength+leftHoleDist+servoEarsWidth*2,0])
478 | cube([servoDepth,leftHoleDist,servoFixEarsThickness]);
479 |
480 | //left pillar
481 | translate([0,servoBodyLength+leftHoleDist+servoEarsWidth*2-servoEarsWidth,shoeThickness])
482 | difference()
483 | {
484 | cube([servoDepth,servoEarsWidth,servoBodyHeight]);
485 | translate([-1,servoEarsWidth/2,servoBodyHeight/2])
486 | rotate([0,90,0])
487 | cylinder(r=servoScrewsRadius,h=servoBodyHeight*2,$fn=8);
488 | }
489 |
490 |
491 | translate([0,leftHoleDist,shoeThickness])
492 | difference()
493 | {
494 | cube([servoDepth,servoEarsWidth,servoBodyHeight]);
495 | translate([-1,servoEarsWidth/2,servoBodyHeight/2])
496 | rotate([0,90,0])
497 | cylinder(r=servoScrewsRadius,h=servoBodyHeight*2,$fn=8);
498 | }
499 |
500 |
501 | }
502 | servoDepth1=8;
503 | servoBodyHeight1=12;
504 | servoEarsWidth1=5;
505 |
506 | difference()
507 | {
508 | translate([-servoDepth1-fixationSupportWheelSPacingDiscThickness-2,gearing1ToWheel1AxleDistY-6-12-servoEarsWidth1,fixationBlockZ/2])
509 | servoSupport(servoBodyLength=23,servoBodyHeight=12,servoDepth=servoDepth1,servoEarsWidth=5,
510 | servoScrewsRadius=2/2,shoeThickness=gearing1ToWheel1AxleDistZ-servoBodyHeight1,leftHoleDist=12,rightHoleDist=10,
511 | servoShaftDistX=8,servoShaftDistY=6);
512 | for(i = [0 : 5 : motor1FixScrewsCount])
513 | {
514 | translate([-fixationSupportWheelSPacingDiscThickness-fixationBlockX/2,motor1FixScrew1DistFromWheelAxle+motor1FixScrewsDist*i,-fixationBlockZ])
515 | cylinder(r=centralAxleScrewRadius,h=fixationBlockX*5);
516 | }
517 |
518 |
519 | }
520 | //rotate([0,-90,0])
521 | difference()
522 | {
523 | union()
524 | {
525 | translate([-fixationBlockX-fixationSupportWheelSPacingDiscThickness,-fixationBlockEdgeDecal,-fixationBlockZ/2])
526 | cube([fixationBlockX,fixationBlockY,fixationBlockZ]);
527 |
528 | translate([-fixationSupportWheelSPacingDiscThickness,0,0])
529 | rotate([0,90,0])
530 | cylinder(r=fixationSupportWheelSPacingDiscRadius,h=fixationSupportWheelSPacingDiscThickness);
531 |
532 | translate([-fixationSupportWheelSPacingDiscThickness,distanceFrontBackWheelsAxles,0])
533 | rotate([0,90,0])
534 | cylinder(r=fixationSupportWheelSPacingDiscRadius,h=fixationSupportWheelSPacingDiscThickness);
535 |
536 | }
537 |
538 | translate([-fixationBlockX*2,0,0])
539 | rotate([0,90,0])
540 | cylinder(r=centralAxleScrewRadius,h=fixationBlockX*5);
541 |
542 | translate([-fixationBlockX*2,0,0])
543 | rotate([0,90,0])
544 | cylinder(r=centralAxleScrewRadius,h=fixationBlockX*5);
545 |
546 |
547 | /*translate([-fixationSupportWheelSPacingDiscThickness-fixationBlockX/2,motor1FixScrew1DistFromWheelAxle,-fixationBlockZ])
548 | cylinder(r=centralAxleScrewRadius,h=fixationBlockX*5);
549 | */
550 | translate([-fixationSupportWheelSPacingDiscThickness-fixationBlockX/2,-fixationBlockEdgeDecal+fixationBlockEndScrewsXEdgeDistance,-fixationBlockZ])
551 | cylinder(r=centralAxleScrewRadius,h=fixationBlockX*5);
552 |
553 | translate([-fixationSupportWheelSPacingDiscThickness-fixationBlockX/2,fixationBlockY-fixationBlockEdgeDecal-fixationBlockEndScrewsXEdgeDistance,-fixationBlockZ])
554 | cylinder(r=centralAxleScrewRadius,h=fixationBlockX*5);
555 |
556 | for(i = [0 : 1 : motor1FixScrewsCount])
557 | {
558 | translate([-fixationSupportWheelSPacingDiscThickness-fixationBlockX/2,motor1FixScrew1DistFromWheelAxle+motor1FixScrewsDist*i,-fixationBlockZ])
559 | cylinder(r=centralAxleScrewRadius,h=fixationBlockX*5);
560 | }
561 |
562 |
563 | translate([-fixationBlockX*2,distanceFrontBackWheelsAxles,0])
564 | rotate([0,90,0])
565 | cylinder(r=centralAxleScrewRadius,h=fixationBlockX*5);
566 | }
567 |
568 |
569 |
570 | //free wheel
571 | translate([gearing1Thickness,distanceFrontBackWheelsAxles,0])
572 | rotate([0,90,0])
573 | r_ian_wheel1();
574 | //free wheel gearing
575 | translate([0,distanceFrontBackWheelsAxles,0])
576 | rotate([0,90,0])
577 | r_ian_gearing1();
578 |
579 | //motor gear drive
580 | rotate(gearingRotationAngle,v=[1,0,0])
581 | translate([0,gearing1Radius*2+gearingPadding,0])
582 | rotate([360/(gearing1CogsCount*2)+gearingRotationAngle,0,0])
583 | rotate([0,90,0])
584 | r_ian_gearing1();
585 |
586 | //propulsive wheel gearing
587 | rotate([0,90,0])
588 | r_ian_gearing1();
589 |
590 | //propulsive wheel
591 | translate([gearing1Thickness,0,0])
592 | rotate([0,90,0])
593 | r_ian_wheel1();
594 |
595 |
596 |
597 |
598 |
599 |
600 |
601 | module openWheelTrack(trackWidth,trackCogsCount,trackThickness,externalBumpsCount=0,externalBumpsThickness=1)
602 | {
603 |
604 | trackIntPerimeter=trackCogsCount*2*openWheelRimBumpsRadius;
605 | trackIntRadius1=(trackIntPerimeter/3.14159)/2;
606 | //echo (trackIntRadius1);
607 | difference()
608 | {
609 | cylinder(r=trackIntRadius1+trackThickness,h=trackWidth,$fn=128);
610 |
611 | translate([0,0,-1])
612 | cylinder(r=trackIntRadius1,h=trackWidth*2,$fn=128);
613 |
614 | rotationAngle01=360/trackCogsCount;
615 | for(i = [0 : 1 : trackCogsCount])
616 | {
617 | angle01=rotationAngle01*i+rotationAngle01/2;
618 | rotate([0,0,angle01])
619 | translate([trackIntRadius1,0,-1])
620 | cylinder(r=openWheelRimRidgesRadius/2+0.25,h=trackWidth+2,$fn=10);
621 |
622 | }
623 | }
624 |
625 |
626 | rotationAngle01=360/trackCogsCount;
627 | for(i = [0 : 1 : trackCogsCount])
628 | {
629 | angle01=rotationAngle01*i;
630 | rotate([0,0,angle01])
631 | translate([trackIntRadius1,0,0])
632 | cylinder(r=openWheelRimRidgesRadius/2-0.25,h=trackWidth,$fn=10);
633 |
634 | }
635 |
636 |
637 | if(externalBumpsCount>0)
638 | {
639 | rotationAngle01=360/externalBumpsCount;
640 | for(i = [0 : 1 : externalBumpsCount])
641 | {
642 | angle01=rotationAngle01*i;
643 | rotate([0,0,angle01])
644 | translate([trackIntRadius1+trackThickness,0,0])
645 | cylinder(r=externalBumpsThickness/2,h=trackWidth,$fn=6);
646 |
647 | }
648 | }
649 |
650 | }
651 |
652 |
653 | module openWheelTyre(tyreWidth,wheelCogsCount,tyreThickness,externalBumpsCount=0,externalBumpsThickness=1)
654 | {
655 |
656 | tyreIntPerimeter=wheelCogsCount*2*openWheelRimBumpsRadius;
657 | tyreIntRadius1=(tyreIntPerimeter/3.14159)/2;
658 | //echo (trackIntRadius1);
659 | difference()
660 | {
661 | cylinder(r=tyreIntRadius1+tyreThickness,h=tyreWidth,$fn=128);
662 |
663 | translate([0,0,-1])
664 | cylinder(r=tyreIntRadius1,h=tyreWidth*2,$fn=128);
665 |
666 | rotationAngle01=360/wheelCogsCount;
667 | for(i = [0 : 1 : wheelCogsCount])
668 | {
669 | angle01=rotationAngle01*i+rotationAngle01/2;
670 | rotate([0,0,angle01])
671 | translate([tyreIntRadius1,0,-1])
672 | cylinder(r=openWheelRimRidgesRadius/2+0.25,h=tyreWidth+2,$fn=10);
673 |
674 | }
675 | }
676 |
677 |
678 | rotationAngle01=360/wheelCogsCount;
679 | for(i = [0 : 1 : wheelCogsCount])
680 | {
681 | angle01=rotationAngle01*i;
682 | rotate([0,0,angle01])
683 | translate([tyreIntRadius1,0,0])
684 | cylinder(r=openWheelRimRidgesRadius/2-0.25,h=tyreWidth,$fn=10);
685 |
686 | }
687 |
688 |
689 | if(externalBumpsCount>0)
690 | {
691 | rotationAngle01=360/externalBumpsCount;
692 | for(i = [0 : 1 : externalBumpsCount])
693 | {
694 | angle01=rotationAngle01*i;
695 | rotate([0,0,angle01])
696 | translate([tyreIntRadius1+tyreThickness,0,0])
697 | cylinder(r=externalBumpsThickness/2,h=tyreWidth,$fn=6);
698 |
699 | }
700 | }
701 |
702 | }
703 |
704 | //openWheelTyre(rIanWheel1InternalPathWidth,rIanWheelRimBumpsCount,2.5,externalBumpsCount=90,externalBumpsThickness=1);
705 |
706 |
707 | //openWheelTrack(rIanWheel1InternalPathWidth,trackLength,2.25,externalBumpsCount=150);
708 |
709 |
710 | /*
711 | translate([-fixationBlockX,gearing1ToWheel1AxleDistY,0])
712 | cube([fixationBlockX,fixationBlockY,gearing1ToWheel1AxleDistZ]);
713 | */
714 |
--------------------------------------------------------------------------------
/openWheel2_basic_fixationSupport16.stl:
--------------------------------------------------------------------------------
1 | solid OpenSCAD_Model
2 | facet normal 0 0 -1
3 | outer loop
4 | vertex 1.20022 1.50502 -12
5 | vertex 1.925 80 -12
6 | vertex 1.925 0 -12
7 | endloop
8 | endfacet
9 | facet normal 0 0 -1
10 | outer loop
11 | vertex 1.20022 1.50502 -12
12 | vertex 1.20022 78.495 -12
13 | vertex 1.925 80 -12
14 | endloop
15 | endfacet
16 | facet normal 0 0 -1
17 | outer loop
18 | vertex -0.428352 1.87674 -12
19 | vertex 1.20022 78.495 -12
20 | vertex 1.20022 1.50502 -12
21 | endloop
22 | endfacet
23 | facet normal 0 0 -1
24 | outer loop
25 | vertex -0.428352 1.87674 -12
26 | vertex -0.428352 78.1233 -12
27 | vertex 1.20022 78.495 -12
28 | endloop
29 | endfacet
30 | facet normal 0 0 -1
31 | outer loop
32 | vertex -1.73436 0.835226 -12
33 | vertex -0.428352 78.1233 -12
34 | vertex -0.428352 1.87674 -12
35 | endloop
36 | endfacet
37 | facet normal -0 0 -1
38 | outer loop
39 | vertex -0.428352 78.1233 -12
40 | vertex -1.73436 0.835226 -12
41 | vertex -1.73436 79.1648 -12
42 | endloop
43 | endfacet
44 | facet normal 0 0 -1
45 | outer loop
46 | vertex 5 -10 -12
47 | vertex 1.925 0 -12
48 | vertex 5 90 -12
49 | endloop
50 | endfacet
51 | facet normal 0 0 -1
52 | outer loop
53 | vertex 5 -10 -12
54 | vertex 1.20022 -1.50502 -12
55 | vertex 1.925 0 -12
56 | endloop
57 | endfacet
58 | facet normal 0 0 -1
59 | outer loop
60 | vertex 5 -10 -12
61 | vertex -0.428352 -1.87674 -12
62 | vertex 1.20022 -1.50502 -12
63 | endloop
64 | endfacet
65 | facet normal 0 0 -1
66 | outer loop
67 | vertex -5 -10 -12
68 | vertex -0.428352 -1.87674 -12
69 | vertex 5 -10 -12
70 | endloop
71 | endfacet
72 | facet normal 0 0 -1
73 | outer loop
74 | vertex -5 -10 -12
75 | vertex -1.73436 0.835226 -12
76 | vertex -1.73436 -0.835226 -12
77 | endloop
78 | endfacet
79 | facet normal -0 0 -1
80 | outer loop
81 | vertex -1.73436 0.835226 -12
82 | vertex -5 -10 -12
83 | vertex -1.73436 79.1648 -12
84 | endloop
85 | endfacet
86 | facet normal 0 0 -1
87 | outer loop
88 | vertex -5 90 -12
89 | vertex -1.73436 79.1648 -12
90 | vertex -5 -10 -12
91 | endloop
92 | endfacet
93 | facet normal -0 0 -1
94 | outer loop
95 | vertex -0.428352 -1.87674 -12
96 | vertex -5 -10 -12
97 | vertex -1.73436 -0.835226 -12
98 | endloop
99 | endfacet
100 | facet normal 0 0 -1
101 | outer loop
102 | vertex 1.925 80 -12
103 | vertex 5 90 -12
104 | vertex 1.925 0 -12
105 | endloop
106 | endfacet
107 | facet normal 0 0 -1
108 | outer loop
109 | vertex 1.20022 81.505 -12
110 | vertex 5 90 -12
111 | vertex 1.925 80 -12
112 | endloop
113 | endfacet
114 | facet normal 0 0 -1
115 | outer loop
116 | vertex -0.428352 81.8767 -12
117 | vertex 5 90 -12
118 | vertex 1.20022 81.505 -12
119 | endloop
120 | endfacet
121 | facet normal 0 0 -1
122 | outer loop
123 | vertex -5 90 -12
124 | vertex -0.428352 81.8767 -12
125 | vertex -1.73436 80.8352 -12
126 | endloop
127 | endfacet
128 | facet normal 0 0 -1
129 | outer loop
130 | vertex -0.428352 81.8767 -12
131 | vertex -5 90 -12
132 | vertex 5 90 -12
133 | endloop
134 | endfacet
135 | facet normal 0 0 -1
136 | outer loop
137 | vertex -1.73436 79.1648 -12
138 | vertex -5 90 -12
139 | vertex -1.73436 80.8352 -12
140 | endloop
141 | endfacet
142 | facet normal -1 0 0
143 | outer loop
144 | vertex -5 90 -12
145 | vertex -5 80 -2
146 | vertex -5 90 -2
147 | endloop
148 | endfacet
149 | facet normal -1 0 0
150 | outer loop
151 | vertex -5 90 -12
152 | vertex -5 0 -2
153 | vertex -5 80 -2
154 | endloop
155 | endfacet
156 | facet normal -1 0 0
157 | outer loop
158 | vertex -5 -10 -12
159 | vertex -5 0 -2
160 | vertex -5 90 -12
161 | endloop
162 | endfacet
163 | facet normal -1 -0 0
164 | outer loop
165 | vertex -5 0 -2
166 | vertex -5 -10 -12
167 | vertex -5 -10 -2
168 | endloop
169 | endfacet
170 | facet normal 0 0 1
171 | outer loop
172 | vertex -1.91342 75.3806 -2
173 | vertex -4.44089e-016 5 -2
174 | vertex -4.44089e-016 75 -2
175 | endloop
176 | endfacet
177 | facet normal 0 0 1
178 | outer loop
179 | vertex -1.91342 75.3806 -2
180 | vertex -1.91342 4.6194 -2
181 | vertex -4.44089e-016 5 -2
182 | endloop
183 | endfacet
184 | facet normal 0 0 1
185 | outer loop
186 | vertex -3.53553 76.4645 -2
187 | vertex -1.91342 4.6194 -2
188 | vertex -1.91342 75.3806 -2
189 | endloop
190 | endfacet
191 | facet normal 0 0 1
192 | outer loop
193 | vertex -3.53553 76.4645 -2
194 | vertex -3.53553 3.53553 -2
195 | vertex -1.91342 4.6194 -2
196 | endloop
197 | endfacet
198 | facet normal 0 0 1
199 | outer loop
200 | vertex -4.6194 78.0866 -2
201 | vertex -3.53553 3.53553 -2
202 | vertex -3.53553 76.4645 -2
203 | endloop
204 | endfacet
205 | facet normal 0 0 1
206 | outer loop
207 | vertex -4.6194 78.0866 -2
208 | vertex -4.6194 1.91342 -2
209 | vertex -3.53553 3.53553 -2
210 | endloop
211 | endfacet
212 | facet normal 0 0 1
213 | outer loop
214 | vertex -5 80 -2
215 | vertex -4.6194 1.91342 -2
216 | vertex -4.6194 78.0866 -2
217 | endloop
218 | endfacet
219 | facet normal 0 0 1
220 | outer loop
221 | vertex -4.6194 1.91342 -2
222 | vertex -5 80 -2
223 | vertex -5 0 -2
224 | endloop
225 | endfacet
226 | facet normal 0 0 1
227 | outer loop
228 | vertex -4.44089e-016 75 -2
229 | vertex 1.925 80 -2
230 | vertex 1.20022 78.495 -2
231 | endloop
232 | endfacet
233 | facet normal 0 0 1
234 | outer loop
235 | vertex 1.925 80 -2
236 | vertex -4.44089e-016 75 -2
237 | vertex 1.925 0 -2
238 | endloop
239 | endfacet
240 | facet normal 0 0 1
241 | outer loop
242 | vertex -4.44089e-016 75 -2
243 | vertex 1.20022 78.495 -2
244 | vertex -4.44089e-016 78.221 -2
245 | endloop
246 | endfacet
247 | facet normal -0 0 1
248 | outer loop
249 | vertex -4.44089e-016 5 -2
250 | vertex 1.925 0 -2
251 | vertex -4.44089e-016 75 -2
252 | endloop
253 | endfacet
254 | facet normal 0 0 1
255 | outer loop
256 | vertex 1.925 0 -2
257 | vertex -4.44089e-016 5 -2
258 | vertex 1.20022 1.50502 -2
259 | endloop
260 | endfacet
261 | facet normal 0 0 1
262 | outer loop
263 | vertex 1.20022 1.50502 -2
264 | vertex -4.44089e-016 5 -2
265 | vertex -4.44089e-016 1.77897 -2
266 | endloop
267 | endfacet
268 | facet normal 0 0 1
269 | outer loop
270 | vertex 5 90 -2
271 | vertex 1.925 80 -2
272 | vertex 5 -10 -2
273 | endloop
274 | endfacet
275 | facet normal 0 0 1
276 | outer loop
277 | vertex 5 90 -2
278 | vertex 1.20022 81.505 -2
279 | vertex 1.925 80 -2
280 | endloop
281 | endfacet
282 | facet normal 0 0 1
283 | outer loop
284 | vertex 5 90 -2
285 | vertex -4.44089e-016 85 -2
286 | vertex 1.20022 81.505 -2
287 | endloop
288 | endfacet
289 | facet normal -0 0 1
290 | outer loop
291 | vertex -5 90 -2
292 | vertex -4.44089e-016 85 -2
293 | vertex 5 90 -2
294 | endloop
295 | endfacet
296 | facet normal 0 0 1
297 | outer loop
298 | vertex -4.44089e-016 85 -2
299 | vertex -5 90 -2
300 | vertex -1.91342 84.6194 -2
301 | endloop
302 | endfacet
303 | facet normal 0 0 1
304 | outer loop
305 | vertex -1.91342 84.6194 -2
306 | vertex -5 90 -2
307 | vertex -3.53553 83.5355 -2
308 | endloop
309 | endfacet
310 | facet normal 0 0 1
311 | outer loop
312 | vertex -5 90 -2
313 | vertex -4.6194 81.9134 -2
314 | vertex -3.53553 83.5355 -2
315 | endloop
316 | endfacet
317 | facet normal 0 0 1
318 | outer loop
319 | vertex -4.6194 81.9134 -2
320 | vertex -5 90 -2
321 | vertex -5 80 -2
322 | endloop
323 | endfacet
324 | facet normal -0 0 1
325 | outer loop
326 | vertex 1.925 0 -2
327 | vertex 5 -10 -2
328 | vertex 1.925 80 -2
329 | endloop
330 | endfacet
331 | facet normal -0 0 1
332 | outer loop
333 | vertex 1.20022 -1.50502 -2
334 | vertex 5 -10 -2
335 | vertex 1.925 0 -2
336 | endloop
337 | endfacet
338 | facet normal 0 0 1
339 | outer loop
340 | vertex -4.44089e-016 -5 -2
341 | vertex 1.20022 -1.50502 -2
342 | vertex -4.44089e-016 -1.77897 -2
343 | endloop
344 | endfacet
345 | facet normal 0 0 1
346 | outer loop
347 | vertex 1.20022 -1.50502 -2
348 | vertex -4.44089e-016 -5 -2
349 | vertex 5 -10 -2
350 | endloop
351 | endfacet
352 | facet normal 0 0 1
353 | outer loop
354 | vertex -5 -10 -2
355 | vertex -4.44089e-016 -5 -2
356 | vertex -1.91342 -4.6194 -2
357 | endloop
358 | endfacet
359 | facet normal 0 0 1
360 | outer loop
361 | vertex -5 -10 -2
362 | vertex -1.91342 -4.6194 -2
363 | vertex -3.53553 -3.53553 -2
364 | endloop
365 | endfacet
366 | facet normal 0 0 1
367 | outer loop
368 | vertex -4.44089e-016 -5 -2
369 | vertex -5 -10 -2
370 | vertex 5 -10 -2
371 | endloop
372 | endfacet
373 | facet normal 0 0 1
374 | outer loop
375 | vertex -4.6194 -1.91342 -2
376 | vertex -5 -10 -2
377 | vertex -3.53553 -3.53553 -2
378 | endloop
379 | endfacet
380 | facet normal 0 0 1
381 | outer loop
382 | vertex -5 -10 -2
383 | vertex -4.6194 -1.91342 -2
384 | vertex -5 0 -2
385 | endloop
386 | endfacet
387 | facet normal 0 0 1
388 | outer loop
389 | vertex 1.20022 81.505 -2
390 | vertex -4.44089e-016 85 -2
391 | vertex -4.44089e-016 81.779 -2
392 | endloop
393 | endfacet
394 | facet normal 0 1 -0
395 | outer loop
396 | vertex 5 90 -12
397 | vertex -5 90 -2
398 | vertex 5 90 -2
399 | endloop
400 | endfacet
401 | facet normal 0 1 0
402 | outer loop
403 | vertex -5 90 -2
404 | vertex 5 90 -12
405 | vertex -5 90 -12
406 | endloop
407 | endfacet
408 | facet normal 1 -0 0
409 | outer loop
410 | vertex 5 -10 -2
411 | vertex 5 90 -12
412 | vertex 5 90 -2
413 | endloop
414 | endfacet
415 | facet normal 1 0 0
416 | outer loop
417 | vertex 5 90 -12
418 | vertex 5 -10 -2
419 | vertex 5 -10 -12
420 | endloop
421 | endfacet
422 | facet normal 0 -1 0
423 | outer loop
424 | vertex -5 -10 -12
425 | vertex 5 -10 -2
426 | vertex -5 -10 -2
427 | endloop
428 | endfacet
429 | facet normal 0 -1 -0
430 | outer loop
431 | vertex 5 -10 -2
432 | vertex -5 -10 -12
433 | vertex 5 -10 -12
434 | endloop
435 | endfacet
436 | facet normal 0.980785 0.195091 0
437 | outer loop
438 | vertex 5 0 -1.11022e-015
439 | vertex 4.6194 1.91342 -2
440 | vertex 4.6194 1.91342 -1.02571e-015
441 | endloop
442 | endfacet
443 | facet normal 0.980785 0.195091 0
444 | outer loop
445 | vertex 4.6194 1.91342 -2
446 | vertex 5 0 -1.11022e-015
447 | vertex 5 0 -2
448 | endloop
449 | endfacet
450 | facet normal -0.980785 0.195091 0
451 | outer loop
452 | vertex -5 0 -2
453 | vertex -4.6194 1.91342 1.02571e-015
454 | vertex -4.6194 1.91342 -2
455 | endloop
456 | endfacet
457 | facet normal -0.980785 0.195091 0
458 | outer loop
459 | vertex -4.6194 1.91342 1.02571e-015
460 | vertex -5 0 -2
461 | vertex -5 0 1.11022e-015
462 | endloop
463 | endfacet
464 | facet normal 3.72965e-007 2.49207e-007 -1
465 | outer loop
466 | vertex 4.6194 1.91342 -2
467 | vertex -4.44089e-016 5 -2
468 | vertex 3.53553 3.53553 -2
469 | endloop
470 | endfacet
471 | facet normal 0.83147 -0.55557 0
472 | outer loop
473 | vertex 3.53553 -3.53553 -7.85046e-016
474 | vertex 4.6194 -1.91342 -2
475 | vertex 4.6194 -1.91342 -1.02571e-015
476 | endloop
477 | endfacet
478 | facet normal 0.83147 -0.55557 0
479 | outer loop
480 | vertex 4.6194 -1.91342 -2
481 | vertex 3.53553 -3.53553 -7.85046e-016
482 | vertex 3.53553 -3.53553 -2
483 | endloop
484 | endfacet
485 | facet normal 0.195091 0.980785 -0
486 | outer loop
487 | vertex 1.91342 4.6194 -2
488 | vertex 0 5 0
489 | vertex 1.91342 4.6194 -4.24864e-016
490 | endloop
491 | endfacet
492 | facet normal 0.195091 0.980785 -4.33188e-017
493 | outer loop
494 | vertex 0 5 0
495 | vertex 1.91342 4.6194 -2
496 | vertex -4.44089e-016 5 -2
497 | endloop
498 | endfacet
499 | facet normal 0.83147 0.55557 0
500 | outer loop
501 | vertex 4.6194 1.91342 -1.02571e-015
502 | vertex 3.53553 3.53553 -2
503 | vertex 3.53553 3.53553 -7.85046e-016
504 | endloop
505 | endfacet
506 | facet normal 0.83147 0.55557 0
507 | outer loop
508 | vertex 3.53553 3.53553 -2
509 | vertex 4.6194 1.91342 -1.02571e-015
510 | vertex 4.6194 1.91342 -2
511 | endloop
512 | endfacet
513 | facet normal -0.195091 -0.980785 0
514 | outer loop
515 | vertex -1.91342 -4.6194 -2
516 | vertex 0 -5 0
517 | vertex -1.91342 -4.6194 4.24864e-016
518 | endloop
519 | endfacet
520 | facet normal -0.195091 -0.980785 4.33188e-017
521 | outer loop
522 | vertex 0 -5 0
523 | vertex -1.91342 -4.6194 -2
524 | vertex -4.44089e-016 -5 -2
525 | endloop
526 | endfacet
527 | facet normal 0.195091 -0.980785 0
528 | outer loop
529 | vertex 0 -5 0
530 | vertex 1.91342 -4.6194 -2
531 | vertex 1.91342 -4.6194 -4.24864e-016
532 | endloop
533 | endfacet
534 | facet normal 0.195091 -0.980785 -5.69082e-017
535 | outer loop
536 | vertex 1.91342 -4.6194 -2
537 | vertex 0 -5 0
538 | vertex -4.44089e-016 -5 -2
539 | endloop
540 | endfacet
541 | facet normal 0.55557 0.83147 -0
542 | outer loop
543 | vertex 3.53553 3.53553 -2
544 | vertex 1.91342 4.6194 -4.24864e-016
545 | vertex 3.53553 3.53553 -7.85046e-016
546 | endloop
547 | endfacet
548 | facet normal 0.55557 0.83147 0
549 | outer loop
550 | vertex 1.91342 4.6194 -4.24864e-016
551 | vertex 3.53553 3.53553 -2
552 | vertex 1.91342 4.6194 -2
553 | endloop
554 | endfacet
555 | facet normal 7.09683e-007 1.06212e-006 -1
556 | outer loop
557 | vertex 3.53553 3.53553 -2
558 | vertex -4.44089e-016 5 -2
559 | vertex 1.91342 4.6194 -2
560 | endloop
561 | endfacet
562 | facet normal -0.195091 0.980785 4.33188e-017
563 | outer loop
564 | vertex -4.44089e-016 5 -2
565 | vertex -1.91342 4.6194 4.24864e-016
566 | vertex 0 5 0
567 | endloop
568 | endfacet
569 | facet normal -0.195091 0.980785 0
570 | outer loop
571 | vertex -1.91342 4.6194 4.24864e-016
572 | vertex -4.44089e-016 5 -2
573 | vertex -1.91342 4.6194 -2
574 | endloop
575 | endfacet
576 | facet normal -0.55557 0.83147 0
577 | outer loop
578 | vertex -1.91342 4.6194 -2
579 | vertex -3.53553 3.53553 7.85046e-016
580 | vertex -1.91342 4.6194 4.24864e-016
581 | endloop
582 | endfacet
583 | facet normal -0.55557 0.83147 0
584 | outer loop
585 | vertex -3.53553 3.53553 7.85046e-016
586 | vertex -1.91342 4.6194 -2
587 | vertex -3.53553 3.53553 -2
588 | endloop
589 | endfacet
590 | facet normal 1.93836e-007 -1.41391e-008 -1
591 | outer loop
592 | vertex 5 0 -2
593 | vertex 1.20022 -1.50502 -2
594 | vertex 1.925 0 -2
595 | endloop
596 | endfacet
597 | facet normal 1.86597e-007 4.13783e-009 -1
598 | outer loop
599 | vertex -4.44089e-016 -5 -2
600 | vertex 1.20022 -1.50502 -2
601 | vertex 5 0 -2
602 | endloop
603 | endfacet
604 | facet normal 1.98646e-007 0 -1
605 | outer loop
606 | vertex 1.20022 -1.50502 -2
607 | vertex -4.44089e-016 -5 -2
608 | vertex -4.44089e-016 -1.77897 -2
609 | endloop
610 | endfacet
611 | facet normal 1.93836e-007 1.41391e-008 -1
612 | outer loop
613 | vertex 1.20022 1.50502 -2
614 | vertex 5 0 -2
615 | vertex 1.925 0 -2
616 | endloop
617 | endfacet
618 | facet normal 1.86597e-007 -4.13783e-009 -1
619 | outer loop
620 | vertex 1.20022 1.50502 -2
621 | vertex -4.44089e-016 5 -2
622 | vertex 5 0 -2
623 | endloop
624 | endfacet
625 | facet normal 1.98646e-007 0 -1
626 | outer loop
627 | vertex -4.44089e-016 5 -2
628 | vertex 1.20022 1.50502 -2
629 | vertex -4.44089e-016 1.77897 -2
630 | endloop
631 | endfacet
632 | facet normal 2.38095e-007 4.73601e-008 -1
633 | outer loop
634 | vertex 5 0 -2
635 | vertex -4.44089e-016 5 -2
636 | vertex 4.6194 1.91342 -2
637 | endloop
638 | endfacet
639 | facet normal -0.980785 -0.195091 0
640 | outer loop
641 | vertex -4.6194 -1.91342 -2
642 | vertex -5 0 1.11022e-015
643 | vertex -5 0 -2
644 | endloop
645 | endfacet
646 | facet normal -0.980785 -0.195091 0
647 | outer loop
648 | vertex -5 0 1.11022e-015
649 | vertex -4.6194 -1.91342 -2
650 | vertex -4.6194 -1.91342 1.02571e-015
651 | endloop
652 | endfacet
653 | facet normal -0.55557 -0.83147 0
654 | outer loop
655 | vertex -3.53553 -3.53553 -2
656 | vertex -1.91342 -4.6194 4.24864e-016
657 | vertex -3.53553 -3.53553 7.85046e-016
658 | endloop
659 | endfacet
660 | facet normal -0.55557 -0.83147 -0
661 | outer loop
662 | vertex -1.91342 -4.6194 4.24864e-016
663 | vertex -3.53553 -3.53553 -2
664 | vertex -1.91342 -4.6194 -2
665 | endloop
666 | endfacet
667 | facet normal -0.83147 -0.55557 0
668 | outer loop
669 | vertex -3.53553 -3.53553 -2
670 | vertex -4.6194 -1.91342 1.02571e-015
671 | vertex -4.6194 -1.91342 -2
672 | endloop
673 | endfacet
674 | facet normal -0.83147 -0.55557 0
675 | outer loop
676 | vertex -4.6194 -1.91342 1.02571e-015
677 | vertex -3.53553 -3.53553 -2
678 | vertex -3.53553 -3.53553 7.85046e-016
679 | endloop
680 | endfacet
681 | facet normal -0.83147 0.55557 0
682 | outer loop
683 | vertex -4.6194 1.91342 -2
684 | vertex -3.53553 3.53553 7.85046e-016
685 | vertex -3.53553 3.53553 -2
686 | endloop
687 | endfacet
688 | facet normal -0.83147 0.55557 0
689 | outer loop
690 | vertex -3.53553 3.53553 7.85046e-016
691 | vertex -4.6194 1.91342 -2
692 | vertex -4.6194 1.91342 1.02571e-015
693 | endloop
694 | endfacet
695 | facet normal 3.72965e-007 -2.49207e-007 -1
696 | outer loop
697 | vertex 3.53553 -3.53553 -2
698 | vertex -4.44089e-016 -5 -2
699 | vertex 4.6194 -1.91342 -2
700 | endloop
701 | endfacet
702 | facet normal 2.38095e-007 -4.73601e-008 -1
703 | outer loop
704 | vertex 4.6194 -1.91342 -2
705 | vertex -4.44089e-016 -5 -2
706 | vertex 5 0 -2
707 | endloop
708 | endfacet
709 | facet normal 7.09683e-007 -1.06212e-006 -1
710 | outer loop
711 | vertex 1.91342 -4.6194 -2
712 | vertex -4.44089e-016 -5 -2
713 | vertex 3.53553 -3.53553 -2
714 | endloop
715 | endfacet
716 | facet normal 0.55557 -0.83147 0
717 | outer loop
718 | vertex 1.91342 -4.6194 -2
719 | vertex 3.53553 -3.53553 -7.85046e-016
720 | vertex 1.91342 -4.6194 -4.24864e-016
721 | endloop
722 | endfacet
723 | facet normal 0.55557 -0.83147 0
724 | outer loop
725 | vertex 3.53553 -3.53553 -7.85046e-016
726 | vertex 1.91342 -4.6194 -2
727 | vertex 3.53553 -3.53553 -2
728 | endloop
729 | endfacet
730 | facet normal 0.980785 -0.195091 0
731 | outer loop
732 | vertex 4.6194 -1.91342 -1.02571e-015
733 | vertex 5 0 -2
734 | vertex 5 0 -1.11022e-015
735 | endloop
736 | endfacet
737 | facet normal 0.980785 -0.195091 0
738 | outer loop
739 | vertex 5 0 -2
740 | vertex 4.6194 -1.91342 -1.02571e-015
741 | vertex 4.6194 -1.91342 -2
742 | endloop
743 | endfacet
744 | facet normal 2.22045e-016 0 1
745 | outer loop
746 | vertex 1.925 0 -4.27436e-016
747 | vertex 5 0 -1.11022e-015
748 | vertex 4.6194 1.91342 -1.02571e-015
749 | endloop
750 | endfacet
751 | facet normal 2.22045e-016 0 1
752 | outer loop
753 | vertex 1.20022 1.50502 -2.66502e-016
754 | vertex 4.6194 1.91342 -1.02571e-015
755 | vertex 3.53553 3.53553 -7.85046e-016
756 | endloop
757 | endfacet
758 | facet normal 2.22045e-016 0 1
759 | outer loop
760 | vertex 5 0 -1.11022e-015
761 | vertex 1.925 0 -4.27436e-016
762 | vertex 4.6194 -1.91342 -1.02571e-015
763 | endloop
764 | endfacet
765 | facet normal 2.22045e-016 0 1
766 | outer loop
767 | vertex 1.20022 -1.50502 -2.66502e-016
768 | vertex 4.6194 -1.91342 -1.02571e-015
769 | vertex 1.925 0 -4.27436e-016
770 | endloop
771 | endfacet
772 | facet normal 2.22045e-016 0 1
773 | outer loop
774 | vertex 1.20022 1.50502 -2.66502e-016
775 | vertex 3.53553 3.53553 -7.85046e-016
776 | vertex 1.91342 4.6194 -4.24864e-016
777 | endloop
778 | endfacet
779 | facet normal 2.22045e-016 0 1
780 | outer loop
781 | vertex 4.6194 1.91342 -1.02571e-015
782 | vertex 1.20022 1.50502 -2.66502e-016
783 | vertex 1.925 0 -4.27436e-016
784 | endloop
785 | endfacet
786 | facet normal 2.22045e-016 0 1
787 | outer loop
788 | vertex -0.428352 1.87674 9.51133e-017
789 | vertex 1.91342 4.6194 -4.24864e-016
790 | vertex 0 5 0
791 | endloop
792 | endfacet
793 | facet normal 2.22045e-016 0 1
794 | outer loop
795 | vertex 1.91342 4.6194 -4.24864e-016
796 | vertex -0.428352 1.87674 9.51133e-017
797 | vertex 1.20022 1.50502 -2.66502e-016
798 | endloop
799 | endfacet
800 | facet normal 2.22045e-016 0 1
801 | outer loop
802 | vertex -1.91342 4.6194 4.24864e-016
803 | vertex -0.428352 1.87674 9.51133e-017
804 | vertex 0 5 0
805 | endloop
806 | endfacet
807 | facet normal 2.22045e-016 0 1
808 | outer loop
809 | vertex -0.428352 1.87674 9.51133e-017
810 | vertex -3.53553 3.53553 7.85046e-016
811 | vertex -1.73436 0.835226 3.85106e-016
812 | endloop
813 | endfacet
814 | facet normal 2.22045e-016 0 1
815 | outer loop
816 | vertex -3.53553 3.53553 7.85046e-016
817 | vertex -0.428352 1.87674 9.51133e-017
818 | vertex -1.91342 4.6194 4.24864e-016
819 | endloop
820 | endfacet
821 | facet normal 2.22045e-016 0 1
822 | outer loop
823 | vertex 4.6194 -1.91342 -1.02571e-015
824 | vertex 1.20022 -1.50502 -2.66502e-016
825 | vertex 3.53553 -3.53553 -7.85046e-016
826 | endloop
827 | endfacet
828 | facet normal 2.22045e-016 0 1
829 | outer loop
830 | vertex 3.53553 -3.53553 -7.85046e-016
831 | vertex 1.20022 -1.50502 -2.66502e-016
832 | vertex 1.91342 -4.6194 -4.24864e-016
833 | endloop
834 | endfacet
835 | facet normal 2.22045e-016 0 1
836 | outer loop
837 | vertex -0.428352 -1.87674 9.51133e-017
838 | vertex 1.91342 -4.6194 -4.24864e-016
839 | vertex 1.20022 -1.50502 -2.66502e-016
840 | endloop
841 | endfacet
842 | facet normal 2.22045e-016 0 1
843 | outer loop
844 | vertex 1.91342 -4.6194 -4.24864e-016
845 | vertex -0.428352 -1.87674 9.51133e-017
846 | vertex 0 -5 0
847 | endloop
848 | endfacet
849 | facet normal 2.22045e-016 0 1
850 | outer loop
851 | vertex -3.53553 -3.53553 7.85046e-016
852 | vertex -0.428352 -1.87674 9.51133e-017
853 | vertex -1.73436 -0.835226 3.85106e-016
854 | endloop
855 | endfacet
856 | facet normal 2.22045e-016 0 1
857 | outer loop
858 | vertex -0.428352 -1.87674 9.51133e-017
859 | vertex -1.91342 -4.6194 4.24864e-016
860 | vertex 0 -5 0
861 | endloop
862 | endfacet
863 | facet normal 2.22045e-016 0 1
864 | outer loop
865 | vertex -4.6194 1.91342 1.02571e-015
866 | vertex -1.73436 0.835226 3.85106e-016
867 | vertex -3.53553 3.53553 7.85046e-016
868 | endloop
869 | endfacet
870 | facet normal 2.22045e-016 0 1
871 | outer loop
872 | vertex -5 0 1.11022e-015
873 | vertex -1.73436 0.835226 3.85106e-016
874 | vertex -4.6194 1.91342 1.02571e-015
875 | endloop
876 | endfacet
877 | facet normal 2.22045e-016 0 1
878 | outer loop
879 | vertex -0.428352 -1.87674 9.51133e-017
880 | vertex -3.53553 -3.53553 7.85046e-016
881 | vertex -1.91342 -4.6194 4.24864e-016
882 | endloop
883 | endfacet
884 | facet normal 2.22045e-016 0 1
885 | outer loop
886 | vertex -1.73436 0.835226 3.85106e-016
887 | vertex -5 0 1.11022e-015
888 | vertex -1.73436 -0.835226 3.85106e-016
889 | endloop
890 | endfacet
891 | facet normal 2.22045e-016 0 1
892 | outer loop
893 | vertex -1.73436 -0.835226 3.85106e-016
894 | vertex -4.6194 -1.91342 1.02571e-015
895 | vertex -3.53553 -3.53553 7.85046e-016
896 | endloop
897 | endfacet
898 | facet normal 2.22045e-016 0 1
899 | outer loop
900 | vertex -1.73436 -0.835226 3.85106e-016
901 | vertex -5 0 1.11022e-015
902 | vertex -4.6194 -1.91342 1.02571e-015
903 | endloop
904 | endfacet
905 | facet normal 0.195089 -0.980786 0
906 | outer loop
907 | vertex 0 75 0
908 | vertex 1.91342 75.3806 -2
909 | vertex 1.91342 75.3806 -4.24864e-016
910 | endloop
911 | endfacet
912 | facet normal 0.195089 -0.980786 -5.69082e-017
913 | outer loop
914 | vertex 1.91342 75.3806 -2
915 | vertex 0 75 0
916 | vertex -4.44089e-016 75 -2
917 | endloop
918 | endfacet
919 | facet normal 0.980785 0.195091 0
920 | outer loop
921 | vertex 5 80 -1.11022e-015
922 | vertex 4.6194 81.9134 -2
923 | vertex 4.6194 81.9134 -1.02571e-015
924 | endloop
925 | endfacet
926 | facet normal 0.980785 0.195091 0
927 | outer loop
928 | vertex 4.6194 81.9134 -2
929 | vertex 5 80 -1.11022e-015
930 | vertex 5 80 -2
931 | endloop
932 | endfacet
933 | facet normal -0.980785 -0.19509 0
934 | outer loop
935 | vertex -4.6194 78.0866 -2
936 | vertex -5 80 1.11022e-015
937 | vertex -5 80 -2
938 | endloop
939 | endfacet
940 | facet normal -0.980785 -0.19509 0
941 | outer loop
942 | vertex -5 80 1.11022e-015
943 | vertex -4.6194 78.0866 -2
944 | vertex -4.6194 78.0866 1.02571e-015
945 | endloop
946 | endfacet
947 | facet normal 2.38095e-007 -4.736e-008 -1
948 | outer loop
949 | vertex 4.6194 78.0866 -2
950 | vertex -4.44089e-016 75 -2
951 | vertex 5 80 -2
952 | endloop
953 | endfacet
954 | facet normal -0.195089 0.980786 4.33185e-017
955 | outer loop
956 | vertex -4.44089e-016 85 -2
957 | vertex -1.91342 84.6194 4.24864e-016
958 | vertex 0 85 0
959 | endloop
960 | endfacet
961 | facet normal -0.195089 0.980786 0
962 | outer loop
963 | vertex -1.91342 84.6194 4.24864e-016
964 | vertex -4.44089e-016 85 -2
965 | vertex -1.91342 84.6194 -2
966 | endloop
967 | endfacet
968 | facet normal 3.72964e-007 2.49205e-007 -1
969 | outer loop
970 | vertex 4.6194 81.9134 -2
971 | vertex -4.44089e-016 85 -2
972 | vertex 3.53553 83.5355 -2
973 | endloop
974 | endfacet
975 | facet normal -0.83147 -0.55557 0
976 | outer loop
977 | vertex -3.53553 76.4645 -2
978 | vertex -4.6194 78.0866 1.02571e-015
979 | vertex -4.6194 78.0866 -2
980 | endloop
981 | endfacet
982 | facet normal -0.83147 -0.55557 0
983 | outer loop
984 | vertex -4.6194 78.0866 1.02571e-015
985 | vertex -3.53553 76.4645 -2
986 | vertex -3.53553 76.4645 7.85046e-016
987 | endloop
988 | endfacet
989 | facet normal 0.83147 -0.55557 0
990 | outer loop
991 | vertex 3.53553 76.4645 -7.85046e-016
992 | vertex 4.6194 78.0866 -2
993 | vertex 4.6194 78.0866 -1.02571e-015
994 | endloop
995 | endfacet
996 | facet normal 0.83147 -0.55557 0
997 | outer loop
998 | vertex 4.6194 78.0866 -2
999 | vertex 3.53553 76.4645 -7.85046e-016
1000 | vertex 3.53553 76.4645 -2
1001 | endloop
1002 | endfacet
1003 | facet normal 0.55557 -0.83147 0
1004 | outer loop
1005 | vertex 1.91342 75.3806 -2
1006 | vertex 3.53553 76.4645 -7.85046e-016
1007 | vertex 1.91342 75.3806 -4.24864e-016
1008 | endloop
1009 | endfacet
1010 | facet normal 0.55557 -0.83147 0
1011 | outer loop
1012 | vertex 3.53553 76.4645 -7.85046e-016
1013 | vertex 1.91342 75.3806 -2
1014 | vertex 3.53553 76.4645 -2
1015 | endloop
1016 | endfacet
1017 | facet normal -0.195089 -0.980786 0
1018 | outer loop
1019 | vertex -1.91342 75.3806 -2
1020 | vertex 0 75 0
1021 | vertex -1.91342 75.3806 4.24864e-016
1022 | endloop
1023 | endfacet
1024 | facet normal -0.195089 -0.980786 4.33185e-017
1025 | outer loop
1026 | vertex 0 75 0
1027 | vertex -1.91342 75.3806 -2
1028 | vertex -4.44089e-016 75 -2
1029 | endloop
1030 | endfacet
1031 | facet normal 0.831471 0.555568 0
1032 | outer loop
1033 | vertex 4.6194 81.9134 -1.02571e-015
1034 | vertex 3.53553 83.5355 -2
1035 | vertex 3.53553 83.5355 -7.85046e-016
1036 | endloop
1037 | endfacet
1038 | facet normal 0.831471 0.555568 0
1039 | outer loop
1040 | vertex 3.53553 83.5355 -2
1041 | vertex 4.6194 81.9134 -1.02571e-015
1042 | vertex 4.6194 81.9134 -2
1043 | endloop
1044 | endfacet
1045 | facet normal -0.55557 0.83147 0
1046 | outer loop
1047 | vertex -1.91342 84.6194 -2
1048 | vertex -3.53553 83.5355 7.85046e-016
1049 | vertex -1.91342 84.6194 4.24864e-016
1050 | endloop
1051 | endfacet
1052 | facet normal -0.55557 0.83147 0
1053 | outer loop
1054 | vertex -3.53553 83.5355 7.85046e-016
1055 | vertex -1.91342 84.6194 -2
1056 | vertex -3.53553 83.5355 -2
1057 | endloop
1058 | endfacet
1059 | facet normal -0.831471 0.555568 0
1060 | outer loop
1061 | vertex -4.6194 81.9134 -2
1062 | vertex -3.53553 83.5355 7.85046e-016
1063 | vertex -3.53553 83.5355 -2
1064 | endloop
1065 | endfacet
1066 | facet normal -0.831471 0.555568 0
1067 | outer loop
1068 | vertex -3.53553 83.5355 7.85046e-016
1069 | vertex -4.6194 81.9134 -2
1070 | vertex -4.6194 81.9134 1.02571e-015
1071 | endloop
1072 | endfacet
1073 | facet normal 3.72964e-007 -2.49207e-007 -1
1074 | outer loop
1075 | vertex 3.53553 76.4645 -2
1076 | vertex -4.44089e-016 75 -2
1077 | vertex 4.6194 78.0866 -2
1078 | endloop
1079 | endfacet
1080 | facet normal 2.38095e-007 4.73602e-008 -1
1081 | outer loop
1082 | vertex 5 80 -2
1083 | vertex -4.44089e-016 85 -2
1084 | vertex 4.6194 81.9134 -2
1085 | endloop
1086 | endfacet
1087 | facet normal 7.09681e-007 -1.06211e-006 -1
1088 | outer loop
1089 | vertex 1.91342 75.3806 -2
1090 | vertex -4.44089e-016 75 -2
1091 | vertex 3.53553 76.4645 -2
1092 | endloop
1093 | endfacet
1094 | facet normal -0.980785 0.195091 0
1095 | outer loop
1096 | vertex -5 80 -2
1097 | vertex -4.6194 81.9134 1.02571e-015
1098 | vertex -4.6194 81.9134 -2
1099 | endloop
1100 | endfacet
1101 | facet normal -0.980785 0.195091 0
1102 | outer loop
1103 | vertex -4.6194 81.9134 1.02571e-015
1104 | vertex -5 80 -2
1105 | vertex -5 80 1.11022e-015
1106 | endloop
1107 | endfacet
1108 | facet normal 1.93836e-007 -1.41391e-008 -1
1109 | outer loop
1110 | vertex 5 80 -2
1111 | vertex 1.20022 78.495 -2
1112 | vertex 1.925 80 -2
1113 | endloop
1114 | endfacet
1115 | facet normal 1.86597e-007 4.13783e-009 -1
1116 | outer loop
1117 | vertex -4.44089e-016 75 -2
1118 | vertex 1.20022 78.495 -2
1119 | vertex 5 80 -2
1120 | endloop
1121 | endfacet
1122 | facet normal 1.98646e-007 0 -1
1123 | outer loop
1124 | vertex 1.20022 78.495 -2
1125 | vertex -4.44089e-016 75 -2
1126 | vertex -4.44089e-016 78.221 -2
1127 | endloop
1128 | endfacet
1129 | facet normal 1.93836e-007 1.41391e-008 -1
1130 | outer loop
1131 | vertex 1.20022 81.505 -2
1132 | vertex 5 80 -2
1133 | vertex 1.925 80 -2
1134 | endloop
1135 | endfacet
1136 | facet normal 1.86597e-007 -4.13783e-009 -1
1137 | outer loop
1138 | vertex 1.20022 81.505 -2
1139 | vertex -4.44089e-016 85 -2
1140 | vertex 5 80 -2
1141 | endloop
1142 | endfacet
1143 | facet normal 1.98646e-007 0 -1
1144 | outer loop
1145 | vertex -4.44089e-016 85 -2
1146 | vertex 1.20022 81.505 -2
1147 | vertex -4.44089e-016 81.779 -2
1148 | endloop
1149 | endfacet
1150 | facet normal -0.55557 -0.83147 0
1151 | outer loop
1152 | vertex -3.53553 76.4645 -2
1153 | vertex -1.91342 75.3806 4.24864e-016
1154 | vertex -3.53553 76.4645 7.85046e-016
1155 | endloop
1156 | endfacet
1157 | facet normal -0.55557 -0.83147 -0
1158 | outer loop
1159 | vertex -1.91342 75.3806 4.24864e-016
1160 | vertex -3.53553 76.4645 -2
1161 | vertex -1.91342 75.3806 -2
1162 | endloop
1163 | endfacet
1164 | facet normal 2.22045e-016 0 1
1165 | outer loop
1166 | vertex 1.925 80 -4.27436e-016
1167 | vertex 5 80 -1.11022e-015
1168 | vertex 4.6194 81.9134 -1.02571e-015
1169 | endloop
1170 | endfacet
1171 | facet normal 2.22045e-016 0 1
1172 | outer loop
1173 | vertex 1.20022 81.505 -2.66502e-016
1174 | vertex 4.6194 81.9134 -1.02571e-015
1175 | vertex 3.53553 83.5355 -7.85046e-016
1176 | endloop
1177 | endfacet
1178 | facet normal 2.22045e-016 0 1
1179 | outer loop
1180 | vertex 5 80 -1.11022e-015
1181 | vertex 1.925 80 -4.27436e-016
1182 | vertex 4.6194 78.0866 -1.02571e-015
1183 | endloop
1184 | endfacet
1185 | facet normal 2.22045e-016 0 1
1186 | outer loop
1187 | vertex 1.20022 78.495 -2.66502e-016
1188 | vertex 4.6194 78.0866 -1.02571e-015
1189 | vertex 1.925 80 -4.27436e-016
1190 | endloop
1191 | endfacet
1192 | facet normal 2.22045e-016 0 1
1193 | outer loop
1194 | vertex 1.20022 81.505 -2.66502e-016
1195 | vertex 3.53553 83.5355 -7.85046e-016
1196 | vertex 1.91342 84.6194 -4.24864e-016
1197 | endloop
1198 | endfacet
1199 | facet normal 2.22045e-016 0 1
1200 | outer loop
1201 | vertex 4.6194 81.9134 -1.02571e-015
1202 | vertex 1.20022 81.505 -2.66502e-016
1203 | vertex 1.925 80 -4.27436e-016
1204 | endloop
1205 | endfacet
1206 | facet normal 2.22045e-016 0 1
1207 | outer loop
1208 | vertex -0.428352 81.8767 9.51133e-017
1209 | vertex 1.91342 84.6194 -4.24864e-016
1210 | vertex 0 85 0
1211 | endloop
1212 | endfacet
1213 | facet normal 2.22045e-016 0 1
1214 | outer loop
1215 | vertex 1.91342 84.6194 -4.24864e-016
1216 | vertex -0.428352 81.8767 9.51133e-017
1217 | vertex 1.20022 81.505 -2.66502e-016
1218 | endloop
1219 | endfacet
1220 | facet normal 2.22045e-016 0 1
1221 | outer loop
1222 | vertex -1.91342 84.6194 4.24864e-016
1223 | vertex -0.428352 81.8767 9.51133e-017
1224 | vertex 0 85 0
1225 | endloop
1226 | endfacet
1227 | facet normal 2.22045e-016 0 1
1228 | outer loop
1229 | vertex -0.428352 81.8767 9.51133e-017
1230 | vertex -3.53553 83.5355 7.85046e-016
1231 | vertex -1.73436 80.8352 3.85106e-016
1232 | endloop
1233 | endfacet
1234 | facet normal 2.22045e-016 0 1
1235 | outer loop
1236 | vertex -3.53553 83.5355 7.85046e-016
1237 | vertex -0.428352 81.8767 9.51133e-017
1238 | vertex -1.91342 84.6194 4.24864e-016
1239 | endloop
1240 | endfacet
1241 | facet normal 2.22045e-016 0 1
1242 | outer loop
1243 | vertex 4.6194 78.0866 -1.02571e-015
1244 | vertex 1.20022 78.495 -2.66502e-016
1245 | vertex 3.53553 76.4645 -7.85046e-016
1246 | endloop
1247 | endfacet
1248 | facet normal 2.22045e-016 0 1
1249 | outer loop
1250 | vertex 3.53553 76.4645 -7.85046e-016
1251 | vertex 1.20022 78.495 -2.66502e-016
1252 | vertex 1.91342 75.3806 -4.24864e-016
1253 | endloop
1254 | endfacet
1255 | facet normal 2.22045e-016 0 1
1256 | outer loop
1257 | vertex -0.428352 78.1233 9.51133e-017
1258 | vertex 1.91342 75.3806 -4.24864e-016
1259 | vertex 1.20022 78.495 -2.66502e-016
1260 | endloop
1261 | endfacet
1262 | facet normal 2.22045e-016 0 1
1263 | outer loop
1264 | vertex 1.91342 75.3806 -4.24864e-016
1265 | vertex -0.428352 78.1233 9.51133e-017
1266 | vertex 0 75 0
1267 | endloop
1268 | endfacet
1269 | facet normal 2.22045e-016 0 1
1270 | outer loop
1271 | vertex -3.53553 76.4645 7.85046e-016
1272 | vertex -0.428352 78.1233 9.51133e-017
1273 | vertex -1.73436 79.1648 3.85106e-016
1274 | endloop
1275 | endfacet
1276 | facet normal 2.22045e-016 0 1
1277 | outer loop
1278 | vertex -0.428352 78.1233 9.51133e-017
1279 | vertex -1.91342 75.3806 4.24864e-016
1280 | vertex 0 75 0
1281 | endloop
1282 | endfacet
1283 | facet normal 2.22045e-016 0 1
1284 | outer loop
1285 | vertex -4.6194 81.9134 1.02571e-015
1286 | vertex -1.73436 80.8352 3.85106e-016
1287 | vertex -3.53553 83.5355 7.85046e-016
1288 | endloop
1289 | endfacet
1290 | facet normal 2.22045e-016 0 1
1291 | outer loop
1292 | vertex -5 80 1.11022e-015
1293 | vertex -1.73436 80.8352 3.85106e-016
1294 | vertex -4.6194 81.9134 1.02571e-015
1295 | endloop
1296 | endfacet
1297 | facet normal 2.22045e-016 0 1
1298 | outer loop
1299 | vertex -0.428352 78.1233 9.51133e-017
1300 | vertex -3.53553 76.4645 7.85046e-016
1301 | vertex -1.91342 75.3806 4.24864e-016
1302 | endloop
1303 | endfacet
1304 | facet normal 2.22045e-016 0 1
1305 | outer loop
1306 | vertex -1.73436 80.8352 3.85106e-016
1307 | vertex -5 80 1.11022e-015
1308 | vertex -1.73436 79.1648 3.85106e-016
1309 | endloop
1310 | endfacet
1311 | facet normal 2.22045e-016 0 1
1312 | outer loop
1313 | vertex -1.73436 79.1648 3.85106e-016
1314 | vertex -4.6194 78.0866 1.02571e-015
1315 | vertex -3.53553 76.4645 7.85046e-016
1316 | endloop
1317 | endfacet
1318 | facet normal 2.22045e-016 0 1
1319 | outer loop
1320 | vertex -1.73436 79.1648 3.85106e-016
1321 | vertex -5 80 1.11022e-015
1322 | vertex -4.6194 78.0866 1.02571e-015
1323 | endloop
1324 | endfacet
1325 | facet normal 0.55557 0.83147 -0
1326 | outer loop
1327 | vertex 3.53553 83.5355 -2
1328 | vertex 1.91342 84.6194 -4.24864e-016
1329 | vertex 3.53553 83.5355 -7.85046e-016
1330 | endloop
1331 | endfacet
1332 | facet normal 0.55557 0.83147 0
1333 | outer loop
1334 | vertex 1.91342 84.6194 -4.24864e-016
1335 | vertex 3.53553 83.5355 -2
1336 | vertex 1.91342 84.6194 -2
1337 | endloop
1338 | endfacet
1339 | facet normal 7.09681e-007 1.06211e-006 -1
1340 | outer loop
1341 | vertex 3.53553 83.5355 -2
1342 | vertex -4.44089e-016 85 -2
1343 | vertex 1.91342 84.6194 -2
1344 | endloop
1345 | endfacet
1346 | facet normal 0.195089 0.980786 -0
1347 | outer loop
1348 | vertex 1.91342 84.6194 -2
1349 | vertex 0 85 0
1350 | vertex 1.91342 84.6194 -4.24864e-016
1351 | endloop
1352 | endfacet
1353 | facet normal 0.195089 0.980786 -4.33185e-017
1354 | outer loop
1355 | vertex 0 85 0
1356 | vertex 1.91342 84.6194 -2
1357 | vertex -4.44089e-016 85 -2
1358 | endloop
1359 | endfacet
1360 | facet normal 0.980785 -0.19509 0
1361 | outer loop
1362 | vertex 4.6194 78.0866 -1.02571e-015
1363 | vertex 5 80 -2
1364 | vertex 5 80 -1.11022e-015
1365 | endloop
1366 | endfacet
1367 | facet normal 0.980785 -0.19509 0
1368 | outer loop
1369 | vertex 5 80 -2
1370 | vertex 4.6194 78.0866 -1.02571e-015
1371 | vertex 4.6194 78.0866 -2
1372 | endloop
1373 | endfacet
1374 | facet normal -0.900969 -0.433884 0
1375 | outer loop
1376 | vertex 1.925 0 -12
1377 | vertex 1.20022 1.50502 -2
1378 | vertex 1.20022 1.50502 -12
1379 | endloop
1380 | endfacet
1381 | facet normal -0.900969 -0.433884 0
1382 | outer loop
1383 | vertex 1.20022 1.50502 -2
1384 | vertex 1.925 0 -12
1385 | vertex 1.925 0 -2
1386 | endloop
1387 | endfacet
1388 | facet normal -0.900969 -0.433884 0
1389 | outer loop
1390 | vertex 1.925 0 -2
1391 | vertex 1.20022 1.50502 -2.66502e-016
1392 | vertex 1.20022 1.50502 -2
1393 | endloop
1394 | endfacet
1395 | facet normal -0.900969 -0.433884 0
1396 | outer loop
1397 | vertex 1.20022 1.50502 -2.66502e-016
1398 | vertex 1.925 0 -2
1399 | vertex 1.925 0 -4.27436e-016
1400 | endloop
1401 | endfacet
1402 | facet normal 1 -0 0
1403 | outer loop
1404 | vertex -1.73436 -0.835226 3.85106e-016
1405 | vertex -1.73436 0.835226 -12
1406 | vertex -1.73436 0.835226 3.85106e-016
1407 | endloop
1408 | endfacet
1409 | facet normal 1 0 0
1410 | outer loop
1411 | vertex -1.73436 0.835226 -12
1412 | vertex -1.73436 -0.835226 3.85106e-016
1413 | vertex -1.73436 -0.835226 -12
1414 | endloop
1415 | endfacet
1416 | facet normal 0.62349 -0.781832 0
1417 | outer loop
1418 | vertex -1.73436 0.835226 -12
1419 | vertex -0.428352 1.87674 9.51133e-017
1420 | vertex -1.73436 0.835226 3.85106e-016
1421 | endloop
1422 | endfacet
1423 | facet normal 0.62349 -0.781832 0
1424 | outer loop
1425 | vertex -0.428352 1.87674 9.51133e-017
1426 | vertex -1.73436 0.835226 -12
1427 | vertex -0.428352 1.87674 -12
1428 | endloop
1429 | endfacet
1430 | facet normal -0.222521 -0.974928 2.45013e-008
1431 | outer loop
1432 | vertex -4.44089e-016 1.77897 -2
1433 | vertex 1.20022 1.50502 -2.66502e-016
1434 | vertex -0.428352 1.87674 9.51133e-017
1435 | endloop
1436 | endfacet
1437 | facet normal -0.222521 -0.974928 -0
1438 | outer loop
1439 | vertex 1.20022 1.50502 -2.66502e-016
1440 | vertex -4.44089e-016 1.77897 -2
1441 | vertex 1.20022 1.50502 -2
1442 | endloop
1443 | endfacet
1444 | facet normal -0.222521 -0.974928 0
1445 | outer loop
1446 | vertex -0.428352 1.87674 -12
1447 | vertex -4.44089e-016 1.77897 -2
1448 | vertex -0.428352 1.87674 9.51133e-017
1449 | endloop
1450 | endfacet
1451 | facet normal -0.222521 -0.974928 -4.90025e-009
1452 | outer loop
1453 | vertex 1.20022 1.50502 -12
1454 | vertex -4.44089e-016 1.77897 -2
1455 | vertex -0.428352 1.87674 -12
1456 | endloop
1457 | endfacet
1458 | facet normal -0.222521 -0.974928 0
1459 | outer loop
1460 | vertex -4.44089e-016 1.77897 -2
1461 | vertex 1.20022 1.50502 -12
1462 | vertex 1.20022 1.50502 -2
1463 | endloop
1464 | endfacet
1465 | facet normal -0.900969 0.433884 0
1466 | outer loop
1467 | vertex 1.20022 -1.50502 -12
1468 | vertex 1.925 0 -2
1469 | vertex 1.925 0 -12
1470 | endloop
1471 | endfacet
1472 | facet normal -0.900969 0.433884 0
1473 | outer loop
1474 | vertex 1.925 0 -2
1475 | vertex 1.20022 -1.50502 -12
1476 | vertex 1.20022 -1.50502 -2
1477 | endloop
1478 | endfacet
1479 | facet normal -0.900969 0.433884 0
1480 | outer loop
1481 | vertex 1.20022 -1.50502 -2
1482 | vertex 1.925 0 -4.27436e-016
1483 | vertex 1.925 0 -2
1484 | endloop
1485 | endfacet
1486 | facet normal -0.900969 0.433884 0
1487 | outer loop
1488 | vertex 1.925 0 -4.27436e-016
1489 | vertex 1.20022 -1.50502 -2
1490 | vertex 1.20022 -1.50502 -2.66502e-016
1491 | endloop
1492 | endfacet
1493 | facet normal -0.222521 0.974928 0
1494 | outer loop
1495 | vertex 1.20022 -1.50502 -2
1496 | vertex 1.20022 -1.50502 -12
1497 | vertex -4.44089e-016 -1.77897 -2
1498 | endloop
1499 | endfacet
1500 | facet normal -0.222521 0.974928 0
1501 | outer loop
1502 | vertex -4.44089e-016 -1.77897 -2
1503 | vertex 1.20022 -1.50502 -2.66502e-016
1504 | vertex 1.20022 -1.50502 -2
1505 | endloop
1506 | endfacet
1507 | facet normal -0.222521 0.974928 2.45013e-008
1508 | outer loop
1509 | vertex 1.20022 -1.50502 -2.66502e-016
1510 | vertex -4.44089e-016 -1.77897 -2
1511 | vertex -0.428352 -1.87674 9.51133e-017
1512 | endloop
1513 | endfacet
1514 | facet normal -0.222521 0.974928 -4.90025e-009
1515 | outer loop
1516 | vertex -0.428352 -1.87674 -12
1517 | vertex -4.44089e-016 -1.77897 -2
1518 | vertex 1.20022 -1.50502 -12
1519 | endloop
1520 | endfacet
1521 | facet normal -0.222521 0.974928 0
1522 | outer loop
1523 | vertex -4.44089e-016 -1.77897 -2
1524 | vertex -0.428352 -1.87674 -12
1525 | vertex -0.428352 -1.87674 9.51133e-017
1526 | endloop
1527 | endfacet
1528 | facet normal 0.62349 0.781832 -0
1529 | outer loop
1530 | vertex -0.428352 -1.87674 -12
1531 | vertex -1.73436 -0.835226 3.85106e-016
1532 | vertex -0.428352 -1.87674 9.51133e-017
1533 | endloop
1534 | endfacet
1535 | facet normal 0.62349 0.781832 0
1536 | outer loop
1537 | vertex -1.73436 -0.835226 3.85106e-016
1538 | vertex -0.428352 -1.87674 -12
1539 | vertex -1.73436 -0.835226 -12
1540 | endloop
1541 | endfacet
1542 | facet normal -0.900969 -0.433883 0
1543 | outer loop
1544 | vertex 1.925 80 -12
1545 | vertex 1.20022 81.505 -2
1546 | vertex 1.20022 81.505 -12
1547 | endloop
1548 | endfacet
1549 | facet normal -0.900969 -0.433883 0
1550 | outer loop
1551 | vertex 1.20022 81.505 -2
1552 | vertex 1.925 80 -12
1553 | vertex 1.925 80 -2
1554 | endloop
1555 | endfacet
1556 | facet normal -0.900969 -0.433883 0
1557 | outer loop
1558 | vertex 1.925 80 -2
1559 | vertex 1.20022 81.505 -2.66502e-016
1560 | vertex 1.20022 81.505 -2
1561 | endloop
1562 | endfacet
1563 | facet normal -0.900969 -0.433883 0
1564 | outer loop
1565 | vertex 1.20022 81.505 -2.66502e-016
1566 | vertex 1.925 80 -2
1567 | vertex 1.925 80 -4.27436e-016
1568 | endloop
1569 | endfacet
1570 | facet normal 1 -0 0
1571 | outer loop
1572 | vertex -1.73436 79.1648 3.85106e-016
1573 | vertex -1.73436 80.8352 -12
1574 | vertex -1.73436 80.8352 3.85106e-016
1575 | endloop
1576 | endfacet
1577 | facet normal 1 0 0
1578 | outer loop
1579 | vertex -1.73436 80.8352 -12
1580 | vertex -1.73436 79.1648 3.85106e-016
1581 | vertex -1.73436 79.1648 -12
1582 | endloop
1583 | endfacet
1584 | facet normal 0.62349 -0.781831 0
1585 | outer loop
1586 | vertex -1.73436 80.8352 -12
1587 | vertex -0.428352 81.8767 9.51133e-017
1588 | vertex -1.73436 80.8352 3.85106e-016
1589 | endloop
1590 | endfacet
1591 | facet normal 0.62349 -0.781831 0
1592 | outer loop
1593 | vertex -0.428352 81.8767 9.51133e-017
1594 | vertex -1.73436 80.8352 -12
1595 | vertex -0.428352 81.8767 -12
1596 | endloop
1597 | endfacet
1598 | facet normal -0.222522 -0.974928 8.3199e-007
1599 | outer loop
1600 | vertex -4.44089e-016 81.779 -2
1601 | vertex 1.20022 81.505 -2.66502e-016
1602 | vertex -0.428352 81.8767 9.51133e-017
1603 | endloop
1604 | endfacet
1605 | facet normal -0.22252 -0.974928 -0
1606 | outer loop
1607 | vertex 1.20022 81.505 -2.66502e-016
1608 | vertex -4.44089e-016 81.779 -2
1609 | vertex 1.20022 81.505 -2
1610 | endloop
1611 | endfacet
1612 | facet normal -0.222525 -0.974927 0
1613 | outer loop
1614 | vertex -0.428352 81.8767 -12
1615 | vertex -4.44089e-016 81.779 -2
1616 | vertex -0.428352 81.8767 9.51133e-017
1617 | endloop
1618 | endfacet
1619 | facet normal -0.222522 -0.974928 -1.66398e-007
1620 | outer loop
1621 | vertex 1.20022 81.505 -12
1622 | vertex -4.44089e-016 81.779 -2
1623 | vertex -0.428352 81.8767 -12
1624 | endloop
1625 | endfacet
1626 | facet normal -0.22252 -0.974928 0
1627 | outer loop
1628 | vertex -4.44089e-016 81.779 -2
1629 | vertex 1.20022 81.505 -12
1630 | vertex 1.20022 81.505 -2
1631 | endloop
1632 | endfacet
1633 | facet normal -0.900969 0.433883 0
1634 | outer loop
1635 | vertex 1.20022 78.495 -12
1636 | vertex 1.925 80 -2
1637 | vertex 1.925 80 -12
1638 | endloop
1639 | endfacet
1640 | facet normal -0.900969 0.433883 0
1641 | outer loop
1642 | vertex 1.925 80 -2
1643 | vertex 1.20022 78.495 -12
1644 | vertex 1.20022 78.495 -2
1645 | endloop
1646 | endfacet
1647 | facet normal -0.900969 0.433883 0
1648 | outer loop
1649 | vertex 1.20022 78.495 -2
1650 | vertex 1.925 80 -4.27436e-016
1651 | vertex 1.925 80 -2
1652 | endloop
1653 | endfacet
1654 | facet normal -0.900969 0.433883 0
1655 | outer loop
1656 | vertex 1.925 80 -4.27436e-016
1657 | vertex 1.20022 78.495 -2
1658 | vertex 1.20022 78.495 -2.66502e-016
1659 | endloop
1660 | endfacet
1661 | facet normal 0.62349 0.781831 -0
1662 | outer loop
1663 | vertex -0.428352 78.1233 -12
1664 | vertex -1.73436 79.1648 3.85106e-016
1665 | vertex -0.428352 78.1233 9.51133e-017
1666 | endloop
1667 | endfacet
1668 | facet normal 0.62349 0.781831 0
1669 | outer loop
1670 | vertex -1.73436 79.1648 3.85106e-016
1671 | vertex -0.428352 78.1233 -12
1672 | vertex -1.73436 79.1648 -12
1673 | endloop
1674 | endfacet
1675 | facet normal -0.22252 0.974928 0
1676 | outer loop
1677 | vertex 1.20022 78.495 -2
1678 | vertex 1.20022 78.495 -12
1679 | vertex -4.44089e-016 78.221 -2
1680 | endloop
1681 | endfacet
1682 | facet normal -0.22252 0.974928 0
1683 | outer loop
1684 | vertex -4.44089e-016 78.221 -2
1685 | vertex 1.20022 78.495 -2.66502e-016
1686 | vertex 1.20022 78.495 -2
1687 | endloop
1688 | endfacet
1689 | facet normal -0.222522 0.974928 8.3199e-007
1690 | outer loop
1691 | vertex 1.20022 78.495 -2.66502e-016
1692 | vertex -4.44089e-016 78.221 -2
1693 | vertex -0.428352 78.1233 9.51133e-017
1694 | endloop
1695 | endfacet
1696 | facet normal -0.222522 0.974928 -1.66398e-007
1697 | outer loop
1698 | vertex -0.428352 78.1233 -12
1699 | vertex -4.44089e-016 78.221 -2
1700 | vertex 1.20022 78.495 -12
1701 | endloop
1702 | endfacet
1703 | facet normal -0.222525 0.974927 0
1704 | outer loop
1705 | vertex -4.44089e-016 78.221 -2
1706 | vertex -0.428352 78.1233 -12
1707 | vertex -0.428352 78.1233 9.51133e-017
1708 | endloop
1709 | endfacet
1710 | endsolid OpenSCAD_Model
1711 |
--------------------------------------------------------------------------------
/openWheel3.scad:
--------------------------------------------------------------------------------
1 |
2 |
3 | openWheelRimLipOn=1;
4 | openWheelRimLipThickness=1;
5 | openWheelRimLipLengthAdjustment=1;
6 |
7 |
8 | servoWheelsTyreThickness=2;
9 |
10 | trackSprocketWidthAdjustment=1;
11 |
12 | servoWheelWidth=5+openWheelRimLipThickness*2*openWheelRimLipOn+trackSprocketWidthAdjustment*openWheelRimLipOn;
13 |
14 | openWheelRimThickness=2.5;
15 | servoWheelCentralHubRadius=20/2;
16 | servoWheelCentralHubLip=1;
17 | servoWheelCentralHubHoleRadius=7/2;
18 | servoWheelRimBarsThickness=2;
19 | servoWheelRimBarsWidth=4;
20 |
21 | servoWheelFixHolesDistFromCenter=8.5;
22 | servoWheelFixHolesRadius=2/2;
23 |
24 | openWheelsArmsCount01=6;
25 |
26 |
27 |
28 |
29 | openWheelRimBumps=1;
30 | openWheelRimBumpsRadius=openWheelRimThickness;
31 | openWheelRimBumpsCount=27;
32 |
33 |
34 | openWheelRimRidges=1;
35 | openWheelRimRidgesCount=openWheelRimBumpsCount;
36 | openWheelRimRidgesRadius=openWheelRimThickness;
37 |
38 |
39 | openWheelRimBumpsCount=27;
40 | openWheelRimPerimeter=openWheelRimBumpsCount*2*openWheelRimBumpsRadius;
41 |
42 | /*servoWheelsRadius=35-servoWheelsTyreThickness;
43 | //openWheelRimPerimeter=3.14159*servoWheelsRadius*2;
44 | wheelRadius1=(openWheelRimPerimeter/3.14159)/2;
45 | echo (wheelRadius1);
46 |
47 | servoWheelRimBarsLength=servoWheelsRadius-servoWheelCentralHubRadius-openWheelRimThickness;*/
48 | /*
49 |
50 | servoTyreRadius=servoWheelsRadius*97/100;
51 |
52 |
53 | openWheelTyreInteralBumpsCount=openWheelRimBumpsCount+32;
54 | openWheelTyreInternalPerimeter=openWheelTyreInteralBumpsCount*2*openWheelRimBumpsRadius;
55 |
56 | //openWheelInternalTrackRadius=20;
57 | openWheelInternalTrackRadius=(openWheelTyreInternalPerimeter/3.14159)/2;
58 |
59 |
60 | module openWheelTyre()
61 | {
62 | difference()
63 | {
64 | cylinder(r=servoTyreRadius,h=servoWheelWidth,$fn=128);
65 |
66 | translate([0,0,-1])
67 | cylinder(r=servoTyreRadius-servoWheelsTyreThickness,h=servoWheelWidth*2,$fn=128);
68 | }
69 |
70 | difference()
71 | {
72 | translate([0,0,-1])
73 | cylinder(r=servoTyreRadius,h=1,$fn=128);
74 | translate([0,0,-2])
75 | cylinder(r=servoTyreRadius-servoWheelsTyreThickness-2,h=servoWheelWidth*2,$fn=128);
76 | }
77 |
78 | difference()
79 | {
80 | translate([0,0,servoWheelWidth])
81 | cylinder(r=servoTyreRadius,h=1,$fn=128);
82 | translate([0,0,-1])
83 | cylinder(r=servoTyreRadius-servoWheelsTyreThickness-2,h=servoWheelWidth*2,$fn=128);
84 | }
85 |
86 | gripBars=81;
87 | rotationAngle01=360/gripBars;
88 | for(i = [0 : 1 : gripBars])
89 | {
90 | angle01=rotationAngle01*i;
91 | rotate([0,0,angle01])
92 | translate([servoTyreRadius-0.5,0,-1])
93 | cube([1.5,1,servoWheelWidth+2]);
94 |
95 | }
96 | }
97 |
98 |
99 | module openWheelTrack()
100 | {
101 | difference()
102 | {
103 | cylinder(r=openWheelInternalTrackRadius+servoWheelsTyreThickness,h=servoWheelWidth,$fn=128);
104 |
105 | translate([0,0,-1])
106 | cylinder(r=openWheelInternalTrackRadius,h=servoWheelWidth*2,$fn=128);
107 |
108 | rotationAngle01=360/openWheelTyreInteralBumpsCount;
109 | for(i = [0 : 1 : openWheelTyreInteralBumpsCount])
110 | {
111 | angle01=rotationAngle01*i+rotationAngle01/2;
112 | rotate([0,0,angle01])
113 | translate([openWheelInternalTrackRadius,0,-1])
114 | cylinder(r=openWheelRimRidgesRadius/2,h=servoWheelWidth+2,$fn=10);
115 |
116 | }
117 | }
118 |
119 | rotationAngle01=360/openWheelTyreInteralBumpsCount;
120 | for(i = [0 : 1 : openWheelTyreInteralBumpsCount])
121 | {
122 | angle01=rotationAngle01*i;
123 | rotate([0,0,angle01])
124 | translate([openWheelInternalTrackRadius,0,0])
125 | cylinder(r=openWheelRimRidgesRadius/2,h=servoWheelWidth,$fn=10);
126 |
127 | }
128 | }
129 | */
130 |
131 |
132 | //openWheelTrack();
133 |
134 | //openWheel();
135 | //servoWheelTyre();
136 |
137 |
138 |
139 |
140 |
141 | /**
142 | * This module describes the central hub of a wheel.
143 | * It is a cylinder whith a set radius and thickness,
144 | * and a hole in the middle. The level of curve can
145 | * be set with the parameter curveLevel : the higher
146 | * it is, the more segments it will have, and thus
147 | * the smoother, but the longer to compile.
148 | * @param hubRadius the radius of the cylinder
149 | * @param hubThickness the thickness of the cylinder
150 | * @param hubCentralHoleRadius : the radius of the central hole
151 | * @param curveLevel is the amount of segments used for the cylinder ($fn parameter)
152 | */
153 | module wheelCentralHubNoHoles(hubRadius,hubThickness,hubCentralHoleRadius=5.6/2,curveLevel=64,axleHeadRadius=9/2,axleHeadHeight=4)
154 | {
155 | difference()
156 | {
157 | cylinder(r=hubRadius,h=hubThickness,$fn=curveLevel);
158 | translate([0,0,-hubThickness])
159 | cylinder(r=hubCentralHoleRadius,h=hubThickness*3,$fn=64);
160 |
161 | translate([0,0,hubThickness-axleHeadHeight])
162 | cylinder(r=axleHeadRadius,h=hubThickness*3,$fn=64);
163 | }
164 | }
165 |
166 |
167 | /**
168 | * This modules creates cylinders used for fixation holes in the hub.
169 | * the holes radius can be defined, as well as the cut depth.
170 | * If cutDepthThickness is set to 0, trough holes will be created.
171 | * Otherwise, holes of the corresponding depth will be created.
172 | * NOTE : you can set a negative value for cutDepthThickness to create
173 | * the non traversing holes on the other side of the hub.
174 | * @param holesCount the number of cylinders (used for holes) to create
175 | * @param holesRadius the radius of the holes to create
176 | * @param holesDist the distance of the center of the holes from the center of the hub
177 | * @param hubThickness the thickness of the hub
178 | * @param angleShift if set to non zero, it will shift the rotation of the holes of this value;
179 | * i.e. if set to 30, holes will start after a 30° rotation.
180 | * cutDepthThickness : how deep the holes must be cut. if set to 0, it will be trhough holes.
181 | * positive values cut the specified depth from the top, negative from the bottom
182 | * @param screwsCurveLevel is the amount of segments used for the cylinders ($fn parameter)
183 | */
184 | module wheelCentralHubFixationHoles(holesCount=4,holesRadius=defaultScrewRadius,
185 | holesDist,hubThickness,angleShift=0,cutDepthThickness=0,screwsCurveLevel=16,axleHeadRadius=9/2,axleHeadHeight=4)
186 | {
187 | rotAngle=360/(holesCount);
188 | for(i = [0 : 1 : holesCount-1])
189 | {
190 |
191 | //echo (rotAngle*i+angleShift);
192 | rotate([0,0,rotAngle*i+angleShift-90])
193 | if(cutDepthThickness==0)
194 | {
195 | translate([0,holesDist,-hubThickness])
196 | cylinder(r=holesRadius,h=hubThickness*3,$fn=16);
197 | }
198 | else if(cutDepthThickness>0)
199 | {
200 | cutDecal=hubThickness-cutDepthThickness;
201 | translate([0,holesDist,cutDecal])
202 | cylinder(r=holesRadius,h=cutDepthThickness*2,$fn=16);
203 | }
204 | else
205 | {
206 | cutDecal=-cutDepthThickness;
207 | translate([0,holesDist,-cutDecal])
208 | cylinder(r=holesRadius,h=-cutDepthThickness*2,$fn=16);
209 | }
210 | }
211 | }
212 |
213 | /**
214 | * This modules create a wheel central hub, as a cylinder with a central hole and multiple surrouding holes.
215 | * the central hole is to be used for a central axle, but can be set to 0 if not necessary.
216 | * the surrounding holes are used for fixation screws, and can also be set to 0 if needed.
217 | * @param hubRadius the radius of the hub
218 | * @param hubThickness the thickness of the hub
219 | * @param hubCentralHoleRadius : the radius of the central hole
220 | * @param curveLevel is the amount of segments used for the hub ($fn parameter)
221 | * @param holesCount the number of peripheral holes to create
222 | * @param holesRadius the radius of the peripheral holes to create
223 | * @param holesDist the distance of the center of the holes from the center of the hub
224 | * @param angleShift if set to non zero, it will shift the rotation of the holes of this value;
225 | * i.e. if set to 30, holes will start after a 30° rotation.
226 | * cutDepthThickness : how deep the holes must be cut. if set to 0, it will be trhough holes.
227 | * positive values cut the specified depth from the top, negative from the bottom
228 | * @param screwsCurveLevel is the amount of segments used for the cylinders ($fn parameter)
229 | * @param screwsHeadRadius the radius of the screws heads
230 | * @param screwsHeadDepth how deep we cut to countersunk the screws heads
231 | */
232 | module wheelCentralHubWithFixations(hubRadius, hubThickness, hubCentralHoleRadius=4/2,
233 | curveLevel=64, holesCount=4, holesRadius=defaultScrewRadius, holesDist, angleShift=0,
234 | cutDepthThickness=0, screwsHeadRadius=defaultScrewRadius*2, screwsHeadDepth=3, screwsCurveLevel=16,axleHeadRadius=9/2,axleHeadHeight=4)
235 | {
236 | difference()
237 | {
238 | wheelCentralHubNoHoles(hubRadius,hubThickness,hubCentralHoleRadius,curveLevel,axleHeadRadius,axleHeadHeight);
239 |
240 | wheelCentralHubFixationHoles(holesCount,holesRadius,holesDist,
241 | hubThickness,angleShift,cutDepthThickness,screwsCurveLevel);
242 | wheelCentralHubFixationHoles(holesCount,screwsHeadRadius,holesDist,
243 | hubThickness,angleShift,screwsHeadDepth,screwsCurveLevel);
244 | }
245 | }
246 |
247 | /**
248 | * Creates a simple ring, with a defined thickness, height, and radius.
249 | * @param ringInnerRadius the internal radius of the ring
250 | * @param ringThickness the thickness of the ring -> external radius =ringThickness+ringInnerRadius
251 | * @param ringHeight the height of the ring
252 | * @param ringcurve the facets count for the ring. More = smoother but more rendering time
253 | */
254 | module ring(ringInnerRadius,ringThickness,ringHeight,ringcurve=128)
255 | {
256 | difference()
257 | {
258 | cylinder(r=ringInnerRadius+ringThickness,h=ringHeight,$fn=ringcurve);
259 | translate([0,0,-1])
260 | cylinder(r=ringInnerRadius,h=ringHeight+2,$fn=ringcurve);
261 | }
262 | }
263 |
264 | module openWheelBasicRimBar(hubRadius,hubThickness,rimBarWidth=4,rimBarLength)
265 | {
266 | rimBarsPadding=2;
267 | basicRimBarThickness=2;
268 | translate([hubRadius-rimBarsPadding/2,-rimBarWidth/2,0])
269 | cube([rimBarLength+rimBarsPadding,rimBarWidth,basicRimBarThickness]);
270 |
271 | translate([hubRadius-rimBarsPadding/2,-1/2,0])
272 | cube([rimBarLength+rimBarsPadding,1,hubThickness]);
273 | }
274 |
275 |
276 | module basicWheel(hubRadius, hubThickness, hubCentralHoleRadius=4/2,
277 | curveLevel=64, holesCount=4, holesRadius=defaultScrewRadius, holesDist, angleShift=0,
278 | cutDepthThickness=0, screwsHeadRadius=defaultScrewRadius*2, screwsHeadDepth=3,
279 | screwsCurveLevel=16,rimBarsCount=5,rimbarsAngleShift=0,rimbarsWidth=4,wheelExternalRadius,
280 | wheelRimThickness=2,lipsThickness=1,lipsOverHang=1,cogsCount=openWheelRimBumpsCount,axleHeadRadius=9/2,axleHeadHeight=4)
281 | {
282 | rimBarsLength=wheelExternalRadius-wheelRimThickness-hubRadius;
283 |
284 | wheelCentralHubWithFixations(hubRadius,hubThickness,hubCentralHoleRadius,
285 | curveLevel,holesCount,holesRadius,holesDist,angleShift,cutDepthThickness,
286 | screwsHeadRadius,screwsHeadDepth,screwsCurveLevel,axleHeadRadius,axleHeadHeight);
287 |
288 | rotAngle=360/(rimBarsCount);
289 | for(i = [0 : 1 : rimBarsCount-1])
290 | {
291 | rotate([0,0,rotAngle*i+rimbarsAngleShift])
292 | openWheelBasicRimBar(hubRadius,hubThickness,rimbarsWidth,rimBarLength=rimBarsLength);
293 | }
294 |
295 | bumpsCurveLevel=rimbumpsCurveLevel;
296 |
297 | //rim
298 | difference()
299 | {
300 | ring(ringInnerRadius=wheelExternalRadius-wheelRimThickness,ringThickness=wheelRimThickness,
301 | ringHeight=hubThickness,ringcurve=128);
302 |
303 | rotationAngle01=360/cogsCount;
304 | for(i = [0 : 1 : cogsCount])
305 | {
306 | angle01=rotationAngle01*i;
307 | rotate([0,0,angle01])
308 | translate([wheelExternalRadius,0,-1])
309 | cylinder(r=openWheelRimRidgesRadius/2,h=hubThickness*2,$fn=bumpsCurveLevel);
310 |
311 | }
312 | }
313 | ring(ringInnerRadius=wheelExternalRadius-wheelRimThickness,ringThickness=2+lipsOverHang,
314 | ringHeight=lipsThickness,ringcurve=128);
315 |
316 | translate([0,0,hubThickness-lipsThickness])
317 | ring(ringInnerRadius=wheelExternalRadius-wheelRimThickness,ringThickness=2+lipsOverHang,ringHeight=lipsThickness,ringcurve=128);
318 |
319 | if(openWheelRimBumps==1)
320 | {
321 | rotationAngle01=360/cogsCount;
322 | for(i = [0 : 1 : cogsCount])
323 | {
324 | angle01=rotationAngle01*i+rotationAngle01/2;
325 | rotate([0,0,angle01])
326 | translate([wheelExternalRadius,0,0])
327 | cylinder(r=openWheelRimBumpsRadius/2,h=hubThickness,$fn=bumpsCurveLevel);
328 | }
329 | }
330 |
331 | }
332 |
333 |
334 |
335 | /*
336 | wheelHubWithBars(hubRadius=wheel1HubRadius,hubThickness=wheel1HubThickness,hubCentralHoleRadius=4/2,
337 | curveLevel=64,holesCount=5,holesRadius=defaultScrewRadius,holesDist=8,
338 | angleShift=0,cutDepthThickness=0,screwsHeadRadius=defaultScrewRadius*2,
339 | screwsHeadDepth=3,screwsCurveLevel=16,rimBarsCount=5,rimbarsAngleShift=0,
340 | rimBarsLength=20);
341 |
342 | ring(ringInnerRadius=wheel1HubRadius+wheel1RimBarsLength,ringThickness=2,
343 | ringHeight=wheel1HubThickness,ringcurve=128);
344 | */
345 |
346 | /*module basicWheel(hubRadius=wheel1HubRadius,hubThickness=wheel1HubThickness,hubCentralHoleRadius=4/2,
347 | curveLevel=64,holesCount=5,holesRadius=defaultScrewRadius,holesDist=8,
348 | angleShift=0,cutDepthThickness=0,screwsHeadRadius=defaultScrewRadius*2,
349 | screwsHeadDepth=3,screwsCurveLevel=16,rimBarsCount=5,rimbarsAngleShift=0,
350 | rimBarsLength=20)
351 | {
352 | wheelHubWithBars(hubRadius,hubThickness,hubCentralHoleRadius,
353 | curveLevel,holesCount,holesRadius=defaultScrewRadius,holesDist=8,
354 | angleShift=0,cutDepthThickness=0,screwsHeadRadius=defaultScrewRadius*2,
355 | screwsHeadDepth=3,screwsCurveLevel=16,rimBarsCount=5,rimbarsAngleShift=0,
356 | rimBarsLength=20);
357 |
358 | ring(ringInnerRadius=wheel1HubRadius+wheel1RimBarsLength,ringThickness=2,
359 | ringHeight=wheel1HubThickness,ringcurve=128);
360 |
361 |
362 | }*/
363 |
364 | //the main propulsion wheel that will move the track (or tyres)
365 | rIanWheelRimBumpsCount=27;
366 | rIanWheelRimPerimeter=rIanWheelRimBumpsCount*2*openWheelRimBumpsRadius;
367 |
368 | //servoWheelsRadius=35-servoWheelsTyreThickness;
369 | //openWheelRimPerimeter=3.14159*servoWheelsRadius*2;
370 | rIanWheelRadius1=(rIanWheelRimPerimeter/3.14159)/2;
371 | echo (rIanWheelRadius1);
372 | rIanWheelTotalRadius=rIanWheelRadius1+openWheelRimBumpsRadius;
373 |
374 |
375 | rIanWrIanWheel1CentralHoleAxleHeadRadius=9.7/2; //8.5/2 in reality
376 | rIanWheel1CentralHoleAxleHeadThickness=4; //3.5 in reality
377 | defaultScrewRadius=3.1/2;
378 | rIanWheel1HubRadius=12;
379 | rIanWheel1HubThickness=14+rIanWheel1CentralHoleAxleHeadThickness;
380 | rIanWheelLipsThickness=1;
381 | rIanWheel1InternalPathWidth=rIanWheel1HubThickness-rIanWheelLipsThickness*2-1;
382 |
383 | //wheel1RimBarsLength=20;
384 | centralHole1Radius=5.7/2;
385 |
386 | //the radius of the screw part of the wheels axles
387 | centralAxleScrewRadius=3.95/2;
388 | //this is the gearing that will move the wheel
389 | gearing1CogsCount=20;
390 | gearing1Perimeter=gearing1CogsCount*2*openWheelRimBumpsRadius;
391 | gearing1Thickness=8;
392 | gearing1Radius=(gearing1Perimeter/3.14159)/2;
393 | rIanGearing1Radius=gearing1Radius+openWheelRimBumpsRadius;
394 |
395 | rimbumpsCurveLevel=16;
396 |
397 |
398 |
399 |
400 |
401 |
402 | module r_ian_wheel1()
403 | {
404 | basicWheel(hubRadius=rIanWheel1HubRadius,hubThickness=rIanWheel1HubThickness,hubCentralHoleRadius=centralHole1Radius,
405 | curveLevel=64,holesCount=4,holesRadius=defaultScrewRadius,holesDist=8,
406 | angleShift=180,cutDepthThickness=0,screwsHeadRadius=defaultScrewRadius*2,
407 | screwsHeadDepth=3,screwsCurveLevel=16,rimBarsCount=8,rimbarsAngleShift=360/16,rimbarsWidth=4,
408 | wheelExternalRadius=rIanWheelRadius1,wheelRimThickness=2.5,lipsThickness=rIanWheelLipsThickness,
409 | lipsOverHang=openWheelRimBumpsRadius/2,axleHeadRadius=rIanWrIanWheel1CentralHoleAxleHeadRadius,
410 | axleHeadHeight=rIanWheel1CentralHoleAxleHeadThickness);
411 |
412 | }
413 |
414 | module r_ian_gearing1()
415 | {
416 | difference()
417 | {
418 | basicWheel(hubRadius=rIanWheel1HubRadius,hubThickness=gearing1Thickness,hubCentralHoleRadius=centralHole1Radius,
419 | curveLevel=64,holesCount=4,holesRadius=2/2,holesDist=8.5,
420 | angleShift=180,cutDepthThickness=0,screwsHeadRadius=defaultScrewRadius*2,
421 | screwsHeadDepth=3,screwsCurveLevel=16,rimBarsCount=8,rimbarsAngleShift=360/16,rimbarsWidth=4,
422 | wheelExternalRadius=gearing1Radius,wheelRimThickness=2.5,lipsThickness=0,
423 | lipsOverHang=openWheelRimBumpsRadius/2,cogsCount=gearing1CogsCount,axleHeadRadius=0,axleHeadHeight=0);
424 |
425 | wheelCentralHubFixationHoles(holesCount=4,holesRadius=defaultScrewRadius,
426 | holesDist=8,hubThickness=gearing1Thickness,angleShift=45,cutDepthThickness=0,screwsCurveLevel=16);
427 | }
428 | }
429 | gearingPadding=0.2;
430 |
431 |
432 | gearingRotationAngle=30;
433 |
434 |
435 | gearing1ToWheel1AxleDist=(gearing1Radius*2+gearingPadding);//direct, straight line distance between both axles centers
436 | gearing1ToWheel1AxleDistY=cos(gearingRotationAngle)*gearing1ToWheel1AxleDist; //distance on Y axis (projection)
437 | gearing1ToWheel1AxleDistZ=sin(gearingRotationAngle)*gearing1ToWheel1AxleDist; //distance on Z axis (projection)
438 |
439 |
440 | //max value for printing on printrbot simple = 29
441 | frontBackAxleDistanceInCogs=16;
442 | frontBackAxleStretchingDistance=5;
443 | distanceFrontBackWheelsAxles=frontBackAxleDistanceInCogs*openWheelRimBumpsRadius*2+frontBackAxleStretchingDistance;
444 |
445 | trackLength=frontBackAxleDistanceInCogs*2+rIanWheelRimBumpsCount;
446 |
447 |
448 | fitechFS90RServoFix1DistFromAxle=9;
449 | fitechFS90RServoFix2DistFromAxle=19.5;
450 | fitechFS90RServoHeight=12.2;
451 |
452 | fixationBlockX=10;
453 | fixationBlockY=distanceFrontBackWheelsAxles+10*2;
454 | fixationBlockZ=10;
455 |
456 | fixationSupportWheelSPacingDiscRadius=5;
457 | fixationSupportWheelSPacingDiscThickness=2;
458 |
459 |
460 | motor1FixScrew1DistFromWheelAxle=8;
461 | motor1FixScrewsDist=10;
462 | motor1FixScrewsCount=5;
463 |
464 | fixationBlockEndScrewsXEdgeDistance=4;
465 | fixationBlockEdgeDecal=10;
466 |
467 | module servoSupport(servoBodyLength,servoBodyHeight,servoDepth,servoEarsWidth,
468 | servoScrewsRadius,shoeThickness,leftHoleDist,rightHoleDist,
469 | servoShaftDistX,servoShaftDistY)
470 | {
471 | servoFixEarsThickness=2;
472 | translate([0,leftHoleDist,0])
473 | cube([servoDepth,servoBodyLength+servoEarsWidth*2,shoeThickness]);
474 |
475 |
476 | cube([servoDepth,leftHoleDist,servoFixEarsThickness]);
477 | translate([0,servoBodyLength+leftHoleDist+servoEarsWidth*2,0])
478 | cube([servoDepth,leftHoleDist,servoFixEarsThickness]);
479 |
480 | //left pillar
481 | translate([0,servoBodyLength+leftHoleDist+servoEarsWidth*2-servoEarsWidth,shoeThickness])
482 | difference()
483 | {
484 | cube([servoDepth,servoEarsWidth,servoBodyHeight]);
485 | translate([-1,servoEarsWidth/2,servoBodyHeight/2])
486 | rotate([0,90,0])
487 | cylinder(r=servoScrewsRadius,h=servoBodyHeight*2,$fn=8);
488 | }
489 |
490 |
491 | translate([0,leftHoleDist,shoeThickness])
492 | difference()
493 | {
494 | cube([servoDepth,servoEarsWidth,servoBodyHeight]);
495 | translate([-1,servoEarsWidth/2,servoBodyHeight/2])
496 | rotate([0,90,0])
497 | cylinder(r=servoScrewsRadius,h=servoBodyHeight*2,$fn=8);
498 | }
499 |
500 |
501 | }
502 | servoDepth1=8;
503 | servoBodyHeight1=12;
504 | servoEarsWidth1=5;
505 |
506 | difference()
507 | {
508 | translate([-servoDepth1-fixationSupportWheelSPacingDiscThickness-2,gearing1ToWheel1AxleDistY-6-12-servoEarsWidth1,fixationBlockZ/2])
509 | servoSupport(servoBodyLength=23,servoBodyHeight=12,servoDepth=servoDepth1,servoEarsWidth=5,
510 | servoScrewsRadius=2/2,shoeThickness=gearing1ToWheel1AxleDistZ-servoBodyHeight1/2-fixationBlockX/2,leftHoleDist=12,rightHoleDist=10,
511 | servoShaftDistX=8,servoShaftDistY=6);
512 | for(i = [0 : 5 : motor1FixScrewsCount])
513 | {
514 | translate([-fixationSupportWheelSPacingDiscThickness-fixationBlockX/2,motor1FixScrew1DistFromWheelAxle+motor1FixScrewsDist*i,-fixationBlockZ])
515 | cylinder(r=centralAxleScrewRadius,h=fixationBlockX*5);
516 | }
517 | }
518 |
519 |
520 | //r_ian_gearing1();
521 |
522 |
523 | //rotate([0,-90,0])
524 | difference()
525 | {
526 | union()
527 | {
528 | translate([-fixationBlockX-fixationSupportWheelSPacingDiscThickness,-fixationBlockEdgeDecal,-fixationBlockZ/2])
529 | cube([fixationBlockX,fixationBlockY,fixationBlockZ]);
530 |
531 | translate([-fixationSupportWheelSPacingDiscThickness,0,0])
532 | rotate([0,90,0])
533 | cylinder(r=fixationSupportWheelSPacingDiscRadius,h=fixationSupportWheelSPacingDiscThickness);
534 |
535 | translate([-fixationSupportWheelSPacingDiscThickness,distanceFrontBackWheelsAxles,0])
536 | rotate([0,90,0])
537 | cylinder(r=fixationSupportWheelSPacingDiscRadius,h=fixationSupportWheelSPacingDiscThickness);
538 |
539 | }
540 |
541 | translate([-fixationBlockX*2,0,0])
542 | rotate([0,90,0])
543 | cylinder(r=centralAxleScrewRadius,h=fixationBlockX*5);
544 |
545 | translate([-fixationBlockX*2,0,0])
546 | rotate([0,90,0])
547 | cylinder(r=centralAxleScrewRadius,h=fixationBlockX*5);
548 |
549 |
550 |
551 | translate([-fixationSupportWheelSPacingDiscThickness-fixationBlockX/2,-fixationBlockEdgeDecal+fixationBlockEndScrewsXEdgeDistance,-fixationBlockZ])
552 | cylinder(r=centralAxleScrewRadius,h=fixationBlockX*5);
553 |
554 | translate([-fixationSupportWheelSPacingDiscThickness-fixationBlockX/2,fixationBlockY-fixationBlockEdgeDecal-fixationBlockEndScrewsXEdgeDistance,-fixationBlockZ])
555 | cylinder(r=centralAxleScrewRadius,h=fixationBlockX*5);
556 |
557 | for(i = [0 : 1 : motor1FixScrewsCount])
558 | {
559 | translate([-fixationSupportWheelSPacingDiscThickness-fixationBlockX/2,motor1FixScrew1DistFromWheelAxle+motor1FixScrewsDist*i,-fixationBlockZ])
560 | cylinder(r=centralAxleScrewRadius,h=fixationBlockX*5);
561 | }
562 |
563 |
564 | translate([-fixationBlockX*2,distanceFrontBackWheelsAxles,0])
565 | rotate([0,90,0])
566 | cylinder(r=centralAxleScrewRadius,h=fixationBlockX*5);
567 | }
568 |
569 |
570 |
571 | //free wheel
572 | translate([gearing1Thickness,distanceFrontBackWheelsAxles,0])
573 | rotate([0,90,0])
574 | r_ian_wheel1();
575 | //free wheel gearing
576 | translate([0,distanceFrontBackWheelsAxles,0])
577 | rotate([0,90,0])
578 | r_ian_gearing1();
579 |
580 | //motor gear drive
581 | rotate(gearingRotationAngle,v=[1,0,0])
582 | translate([0,gearing1Radius*2+gearingPadding,0])
583 | rotate([360/(gearing1CogsCount*2)+gearingRotationAngle,0,0])
584 | rotate([0,90,0])
585 | r_ian_gearing1();
586 |
587 | //propulsive wheel gearing
588 | rotate([0,90,0])
589 | r_ian_gearing1();
590 |
591 | //propulsive wheel
592 | translate([gearing1Thickness,0,0])
593 | rotate([0,90,0])
594 | r_ian_wheel1();
595 |
596 |
597 |
598 |
599 |
600 |
601 |
602 | module openWheelTrack(trackWidth,trackCogsCount,trackThickness,externalBumpsCount=0,externalBumpsThickness=1)
603 | {
604 |
605 | trackIntPerimeter=trackCogsCount*2*openWheelRimBumpsRadius;
606 | trackIntRadius1=(trackIntPerimeter/3.14159)/2;
607 | //echo (trackIntRadius1);
608 | difference()
609 | {
610 | cylinder(r=trackIntRadius1+trackThickness,h=trackWidth,$fn=128);
611 |
612 | translate([0,0,-1])
613 | cylinder(r=trackIntRadius1,h=trackWidth*2,$fn=128);
614 |
615 | rotationAngle01=360/trackCogsCount;
616 | for(i = [0 : 1 : trackCogsCount])
617 | {
618 | angle01=rotationAngle01*i+rotationAngle01/2;
619 | rotate([0,0,angle01])
620 | translate([trackIntRadius1,0,-1])
621 | cylinder(r=openWheelRimRidgesRadius/2+0.25,h=trackWidth+2,$fn=10);
622 |
623 | }
624 | }
625 |
626 |
627 | rotationAngle01=360/trackCogsCount;
628 | for(i = [0 : 1 : trackCogsCount])
629 | {
630 | angle01=rotationAngle01*i;
631 | rotate([0,0,angle01])
632 | translate([trackIntRadius1,0,0])
633 | cylinder(r=openWheelRimRidgesRadius/2-0.25,h=trackWidth,$fn=10);
634 |
635 | }
636 |
637 |
638 | if(externalBumpsCount>0)
639 | {
640 | rotationAngle01=360/externalBumpsCount;
641 | for(i = [0 : 1 : externalBumpsCount])
642 | {
643 | angle01=rotationAngle01*i;
644 | rotate([0,0,angle01])
645 | translate([trackIntRadius1+trackThickness,0,0])
646 | cylinder(r=externalBumpsThickness/2,h=trackWidth,$fn=6);
647 |
648 | }
649 | }
650 |
651 | }
652 |
653 |
654 | module openWheelTyre(tyreWidth,wheelCogsCount,tyreThickness,externalBumpsCount=0,externalBumpsThickness=1)
655 | {
656 |
657 | tyreIntPerimeter=wheelCogsCount*2*openWheelRimBumpsRadius;
658 | tyreIntRadius1=(tyreIntPerimeter/3.14159)/2;
659 | //echo (trackIntRadius1);
660 | difference()
661 | {
662 | cylinder(r=tyreIntRadius1+tyreThickness,h=tyreWidth,$fn=128);
663 |
664 | translate([0,0,-1])
665 | cylinder(r=tyreIntRadius1,h=tyreWidth*2,$fn=128);
666 |
667 | rotationAngle01=360/wheelCogsCount;
668 | for(i = [0 : 1 : wheelCogsCount])
669 | {
670 | angle01=rotationAngle01*i+rotationAngle01/2;
671 | rotate([0,0,angle01])
672 | translate([tyreIntRadius1,0,-1])
673 | cylinder(r=openWheelRimRidgesRadius/2+0.25,h=tyreWidth+2,$fn=10);
674 |
675 | }
676 | }
677 |
678 |
679 | rotationAngle01=360/wheelCogsCount;
680 | for(i = [0 : 1 : wheelCogsCount])
681 | {
682 | angle01=rotationAngle01*i;
683 | rotate([0,0,angle01])
684 | translate([tyreIntRadius1,0,0])
685 | cylinder(r=openWheelRimRidgesRadius/2-0.25,h=tyreWidth,$fn=10);
686 |
687 | }
688 |
689 |
690 | if(externalBumpsCount>0)
691 | {
692 | rotationAngle01=360/externalBumpsCount;
693 | for(i = [0 : 1 : externalBumpsCount])
694 | {
695 | angle01=rotationAngle01*i;
696 | rotate([0,0,angle01])
697 | translate([tyreIntRadius1+tyreThickness,0,0])
698 | cylinder(r=externalBumpsThickness/2,h=tyreWidth,$fn=6);
699 |
700 | }
701 | }
702 |
703 | }
704 |
705 | //openWheelTyre(rIanWheel1InternalPathWidth,rIanWheelRimBumpsCount,2.5,externalBumpsCount=90,externalBumpsThickness=1);
706 |
707 |
708 | //openWheelTrack(rIanWheel1InternalPathWidth,trackLength,2.25,externalBumpsCount=150);
709 |
710 |
711 | /*
712 | translate([-fixationBlockX,gearing1ToWheel1AxleDistY,0])
713 | cube([fixationBlockX,fixationBlockY,gearing1ToWheel1AxleDistZ]);
714 | */
715 |
--------------------------------------------------------------------------------
/openWheel3_servo_support.stl:
--------------------------------------------------------------------------------
1 | solid OpenSCAD_Model
2 | facet normal -0.900969 -0.433884 0
3 | outer loop
4 | vertex -5.025 8 5
5 | vertex -5.76861 9.54412 7
6 | vertex -5.76861 9.54412 5
7 | endloop
8 | endfacet
9 | facet normal -0.900969 -0.433884 0
10 | outer loop
11 | vertex -5.76861 9.54412 7
12 | vertex -5.025 8 5
13 | vertex -5.025 8 7
14 | endloop
15 | endfacet
16 | facet normal 1 -0 0
17 | outer loop
18 | vertex -8.77941 7.14308 7
19 | vertex -8.77941 8.85692 5
20 | vertex -8.77941 8.85692 7
21 | endloop
22 | endfacet
23 | facet normal 1 0 0
24 | outer loop
25 | vertex -8.77941 8.85692 5
26 | vertex -8.77941 7.14308 7
27 | vertex -8.77941 7.14308 5
28 | endloop
29 | endfacet
30 | facet normal 0.623489 -0.781832 0
31 | outer loop
32 | vertex -8.77941 8.85692 5
33 | vertex -7.43948 9.92548 7
34 | vertex -8.77941 8.85692 7
35 | endloop
36 | endfacet
37 | facet normal 0.623489 -0.781832 0
38 | outer loop
39 | vertex -7.43948 9.92548 7
40 | vertex -8.77941 8.85692 5
41 | vertex -7.43948 9.92548 5
42 | endloop
43 | endfacet
44 | facet normal -0.222521 -0.974928 0
45 | outer loop
46 | vertex -7.43948 9.92548 5
47 | vertex -5.76861 9.54412 7
48 | vertex -7.43948 9.92548 7
49 | endloop
50 | endfacet
51 | facet normal -0.222521 -0.974928 -0
52 | outer loop
53 | vertex -5.76861 9.54412 7
54 | vertex -7.43948 9.92548 5
55 | vertex -5.76861 9.54412 5
56 | endloop
57 | endfacet
58 | facet normal -0.900969 0.433884 0
59 | outer loop
60 | vertex -5.76861 6.45588 5
61 | vertex -5.025 8 7
62 | vertex -5.025 8 5
63 | endloop
64 | endfacet
65 | facet normal -0.900969 0.433884 0
66 | outer loop
67 | vertex -5.025 8 7
68 | vertex -5.76861 6.45588 5
69 | vertex -5.76861 6.45588 7
70 | endloop
71 | endfacet
72 | facet normal 0.623489 0.781832 -0
73 | outer loop
74 | vertex -7.43948 6.07452 5
75 | vertex -8.77941 7.14308 7
76 | vertex -7.43948 6.07452 7
77 | endloop
78 | endfacet
79 | facet normal 0.623489 0.781832 0
80 | outer loop
81 | vertex -8.77941 7.14308 7
82 | vertex -7.43948 6.07452 5
83 | vertex -8.77941 7.14308 5
84 | endloop
85 | endfacet
86 | facet normal -0.222521 0.974928 0
87 | outer loop
88 | vertex -5.76861 6.45588 5
89 | vertex -7.43948 6.07452 7
90 | vertex -5.76861 6.45588 7
91 | endloop
92 | endfacet
93 | facet normal -0.222521 0.974928 0
94 | outer loop
95 | vertex -7.43948 6.07452 7
96 | vertex -5.76861 6.45588 5
97 | vertex -7.43948 6.07452 5
98 | endloop
99 | endfacet
100 | facet normal -0.900969 -0.433884 0
101 | outer loop
102 | vertex -5.025 58 5
103 | vertex -5.76861 59.5441 7
104 | vertex -5.76861 59.5441 5
105 | endloop
106 | endfacet
107 | facet normal -0.900969 -0.433884 0
108 | outer loop
109 | vertex -5.76861 59.5441 7
110 | vertex -5.025 58 5
111 | vertex -5.025 58 7
112 | endloop
113 | endfacet
114 | facet normal 1 -0 0
115 | outer loop
116 | vertex -8.77941 57.1431 7
117 | vertex -8.77941 58.8569 5
118 | vertex -8.77941 58.8569 7
119 | endloop
120 | endfacet
121 | facet normal 1 0 0
122 | outer loop
123 | vertex -8.77941 58.8569 5
124 | vertex -8.77941 57.1431 7
125 | vertex -8.77941 57.1431 5
126 | endloop
127 | endfacet
128 | facet normal 0.623491 -0.781831 0
129 | outer loop
130 | vertex -8.77941 58.8569 5
131 | vertex -7.43948 59.9255 7
132 | vertex -8.77941 58.8569 7
133 | endloop
134 | endfacet
135 | facet normal 0.623491 -0.781831 0
136 | outer loop
137 | vertex -7.43948 59.9255 7
138 | vertex -8.77941 58.8569 5
139 | vertex -7.43948 59.9255 5
140 | endloop
141 | endfacet
142 | facet normal -0.222522 -0.974928 0
143 | outer loop
144 | vertex -7.43948 59.9255 5
145 | vertex -5.76861 59.5441 7
146 | vertex -7.43948 59.9255 7
147 | endloop
148 | endfacet
149 | facet normal -0.222522 -0.974928 -0
150 | outer loop
151 | vertex -5.76861 59.5441 7
152 | vertex -7.43948 59.9255 5
153 | vertex -5.76861 59.5441 5
154 | endloop
155 | endfacet
156 | facet normal -0.900969 0.433884 0
157 | outer loop
158 | vertex -5.76861 56.4559 5
159 | vertex -5.025 58 7
160 | vertex -5.025 58 5
161 | endloop
162 | endfacet
163 | facet normal -0.900969 0.433884 0
164 | outer loop
165 | vertex -5.025 58 7
166 | vertex -5.76861 56.4559 5
167 | vertex -5.76861 56.4559 7
168 | endloop
169 | endfacet
170 | facet normal 0.623489 0.781832 -0
171 | outer loop
172 | vertex -7.43948 56.0745 5
173 | vertex -8.77941 57.1431 7
174 | vertex -7.43948 56.0745 7
175 | endloop
176 | endfacet
177 | facet normal 0.623489 0.781832 0
178 | outer loop
179 | vertex -8.77941 57.1431 7
180 | vertex -7.43948 56.0745 5
181 | vertex -8.77941 57.1431 5
182 | endloop
183 | endfacet
184 | facet normal -0.222522 0.974928 0
185 | outer loop
186 | vertex -5.76861 56.4559 5
187 | vertex -7.43948 56.0745 7
188 | vertex -5.76861 56.4559 7
189 | endloop
190 | endfacet
191 | facet normal -0.222522 0.974928 0
192 | outer loop
193 | vertex -7.43948 56.0745 7
194 | vertex -5.76861 56.4559 5
195 | vertex -7.43948 56.0745 5
196 | endloop
197 | endfacet
198 | facet normal -1 0 0
199 | outer loop
200 | vertex -12 49.7397 10.0155
201 | vertex -12 48.2397 16.0155
202 | vertex -12 49.7397 22.0155
203 | endloop
204 | endfacet
205 | facet normal -1 0 0
206 | outer loop
207 | vertex -12 49.7397 10.0155
208 | vertex -12 47.9468 15.3084
209 | vertex -12 48.2397 16.0155
210 | endloop
211 | endfacet
212 | facet normal -1 0 0
213 | outer loop
214 | vertex -12 49.7397 10.0155
215 | vertex -12 47.2397 15.0155
216 | vertex -12 47.9468 15.3084
217 | endloop
218 | endfacet
219 | facet normal -1 0 0
220 | outer loop
221 | vertex -12 44.7397 10.0155
222 | vertex -12 47.2397 15.0155
223 | vertex -12 49.7397 10.0155
224 | endloop
225 | endfacet
226 | facet normal -1 -0 0
227 | outer loop
228 | vertex -12 46.5326 15.3084
229 | vertex -12 44.7397 10.0155
230 | vertex -12 46.2397 16.0155
231 | endloop
232 | endfacet
233 | facet normal -1 -0 0
234 | outer loop
235 | vertex -12 47.2397 15.0155
236 | vertex -12 44.7397 10.0155
237 | vertex -12 46.5326 15.3084
238 | endloop
239 | endfacet
240 | facet normal -1 0 0
241 | outer loop
242 | vertex -12 47.9468 16.7226
243 | vertex -12 49.7397 22.0155
244 | vertex -12 48.2397 16.0155
245 | endloop
246 | endfacet
247 | facet normal -1 0 0
248 | outer loop
249 | vertex -12 47.2397 17.0155
250 | vertex -12 49.7397 22.0155
251 | vertex -12 47.9468 16.7226
252 | endloop
253 | endfacet
254 | facet normal -1 0 0
255 | outer loop
256 | vertex -12 44.7397 22.0155
257 | vertex -12 47.2397 17.0155
258 | vertex -12 46.5326 16.7226
259 | endloop
260 | endfacet
261 | facet normal -1 0 0
262 | outer loop
263 | vertex -12 47.2397 17.0155
264 | vertex -12 44.7397 22.0155
265 | vertex -12 49.7397 22.0155
266 | endloop
267 | endfacet
268 | facet normal -1 0 0
269 | outer loop
270 | vertex -12 46.2397 16.0155
271 | vertex -12 44.7397 22.0155
272 | vertex -12 46.5326 16.7226
273 | endloop
274 | endfacet
275 | facet normal -1 0 0
276 | outer loop
277 | vertex -12 44.7397 22.0155
278 | vertex -12 46.2397 16.0155
279 | vertex -12 44.7397 10.0155
280 | endloop
281 | endfacet
282 | facet normal -0 0 1
283 | outer loop
284 | vertex -12 49.7397 22.0155
285 | vertex -4 44.7397 22.0155
286 | vertex -4 49.7397 22.0155
287 | endloop
288 | endfacet
289 | facet normal 0 0 1
290 | outer loop
291 | vertex -4 44.7397 22.0155
292 | vertex -12 49.7397 22.0155
293 | vertex -12 44.7397 22.0155
294 | endloop
295 | endfacet
296 | facet normal 1 0 0
297 | outer loop
298 | vertex -4 49.7397 22.0155
299 | vertex -4 48.2397 16.0155
300 | vertex -4 49.7397 10.0155
301 | endloop
302 | endfacet
303 | facet normal 1 0 0
304 | outer loop
305 | vertex -4 49.7397 22.0155
306 | vertex -4 47.9468 16.7226
307 | vertex -4 48.2397 16.0155
308 | endloop
309 | endfacet
310 | facet normal 1 0 0
311 | outer loop
312 | vertex -4 49.7397 22.0155
313 | vertex -4 47.2397 17.0155
314 | vertex -4 47.9468 16.7226
315 | endloop
316 | endfacet
317 | facet normal 1 -0 0
318 | outer loop
319 | vertex -4 44.7397 22.0155
320 | vertex -4 47.2397 17.0155
321 | vertex -4 49.7397 22.0155
322 | endloop
323 | endfacet
324 | facet normal 1 0 0
325 | outer loop
326 | vertex -4 46.5326 16.7226
327 | vertex -4 44.7397 22.0155
328 | vertex -4 46.2397 16.0155
329 | endloop
330 | endfacet
331 | facet normal 1 0 0
332 | outer loop
333 | vertex -4 47.2397 17.0155
334 | vertex -4 44.7397 22.0155
335 | vertex -4 46.5326 16.7226
336 | endloop
337 | endfacet
338 | facet normal 1 -0 0
339 | outer loop
340 | vertex -4 47.9468 15.3084
341 | vertex -4 49.7397 10.0155
342 | vertex -4 48.2397 16.0155
343 | endloop
344 | endfacet
345 | facet normal 1 -0 0
346 | outer loop
347 | vertex -4 47.2397 15.0155
348 | vertex -4 49.7397 10.0155
349 | vertex -4 47.9468 15.3084
350 | endloop
351 | endfacet
352 | facet normal 1 0 0
353 | outer loop
354 | vertex -4 44.7397 10.0155
355 | vertex -4 47.2397 15.0155
356 | vertex -4 46.5326 15.3084
357 | endloop
358 | endfacet
359 | facet normal 1 0 0
360 | outer loop
361 | vertex -4 47.2397 15.0155
362 | vertex -4 44.7397 10.0155
363 | vertex -4 49.7397 10.0155
364 | endloop
365 | endfacet
366 | facet normal 1 0 0
367 | outer loop
368 | vertex -4 46.2397 16.0155
369 | vertex -4 44.7397 10.0155
370 | vertex -4 46.5326 15.3084
371 | endloop
372 | endfacet
373 | facet normal 1 0 0
374 | outer loop
375 | vertex -4 44.7397 10.0155
376 | vertex -4 46.2397 16.0155
377 | vertex -4 44.7397 22.0155
378 | endloop
379 | endfacet
380 | facet normal 0 1 -0
381 | outer loop
382 | vertex -4 49.7397 10.0155
383 | vertex -12 49.7397 22.0155
384 | vertex -4 49.7397 22.0155
385 | endloop
386 | endfacet
387 | facet normal 0 1 0
388 | outer loop
389 | vertex -12 49.7397 22.0155
390 | vertex -4 49.7397 10.0155
391 | vertex -12 49.7397 10.0155
392 | endloop
393 | endfacet
394 | facet normal 0 0 -1
395 | outer loop
396 | vertex -12 44.7397 10.0155
397 | vertex -4 49.7397 10.0155
398 | vertex -4 44.7397 10.0155
399 | endloop
400 | endfacet
401 | facet normal -0 0 -1
402 | outer loop
403 | vertex -4 49.7397 10.0155
404 | vertex -12 44.7397 10.0155
405 | vertex -12 49.7397 10.0155
406 | endloop
407 | endfacet
408 | facet normal 0 -1 0
409 | outer loop
410 | vertex -12 44.7397 10.0155
411 | vertex -4 44.7397 22.0155
412 | vertex -12 44.7397 22.0155
413 | endloop
414 | endfacet
415 | facet normal 0 -1 -0
416 | outer loop
417 | vertex -4 44.7397 22.0155
418 | vertex -12 44.7397 10.0155
419 | vertex -4 44.7397 10.0155
420 | endloop
421 | endfacet
422 | facet normal 0 -0.382682 0.92388
423 | outer loop
424 | vertex -12 47.9468 15.3084
425 | vertex -4 47.2397 15.0155
426 | vertex -4 47.9468 15.3084
427 | endloop
428 | endfacet
429 | facet normal 0 -0.382682 0.92388
430 | outer loop
431 | vertex -4 47.2397 15.0155
432 | vertex -12 47.9468 15.3084
433 | vertex -12 47.2397 15.0155
434 | endloop
435 | endfacet
436 | facet normal 0 -0.382684 -0.923879
437 | outer loop
438 | vertex -12 47.2397 17.0155
439 | vertex -4 47.9468 16.7226
440 | vertex -4 47.2397 17.0155
441 | endloop
442 | endfacet
443 | facet normal -0 -0.382684 -0.923879
444 | outer loop
445 | vertex -4 47.9468 16.7226
446 | vertex -12 47.2397 17.0155
447 | vertex -12 47.9468 16.7226
448 | endloop
449 | endfacet
450 | facet normal 0 -0.92388 0.382682
451 | outer loop
452 | vertex -12 47.9468 15.3084
453 | vertex -4 48.2397 16.0155
454 | vertex -12 48.2397 16.0155
455 | endloop
456 | endfacet
457 | facet normal 0 -0.92388 0.382682
458 | outer loop
459 | vertex -4 48.2397 16.0155
460 | vertex -12 47.9468 15.3084
461 | vertex -4 47.9468 15.3084
462 | endloop
463 | endfacet
464 | facet normal -0 0.382682 0.92388
465 | outer loop
466 | vertex -12 47.2397 15.0155
467 | vertex -4 46.5326 15.3084
468 | vertex -4 47.2397 15.0155
469 | endloop
470 | endfacet
471 | facet normal 0 0.382682 0.92388
472 | outer loop
473 | vertex -4 46.5326 15.3084
474 | vertex -12 47.2397 15.0155
475 | vertex -12 46.5326 15.3084
476 | endloop
477 | endfacet
478 | facet normal 0 -0.92388 -0.382683
479 | outer loop
480 | vertex -12 48.2397 16.0155
481 | vertex -4 47.9468 16.7226
482 | vertex -12 47.9468 16.7226
483 | endloop
484 | endfacet
485 | facet normal 0 -0.92388 -0.382683
486 | outer loop
487 | vertex -4 47.9468 16.7226
488 | vertex -12 48.2397 16.0155
489 | vertex -4 48.2397 16.0155
490 | endloop
491 | endfacet
492 | facet normal 0 0.382684 -0.923879
493 | outer loop
494 | vertex -12 46.5326 16.7226
495 | vertex -4 47.2397 17.0155
496 | vertex -4 46.5326 16.7226
497 | endloop
498 | endfacet
499 | facet normal 0 0.382684 -0.923879
500 | outer loop
501 | vertex -4 47.2397 17.0155
502 | vertex -12 46.5326 16.7226
503 | vertex -12 47.2397 17.0155
504 | endloop
505 | endfacet
506 | facet normal 0 0.92388 0.382682
507 | outer loop
508 | vertex -4 46.5326 15.3084
509 | vertex -12 46.2397 16.0155
510 | vertex -4 46.2397 16.0155
511 | endloop
512 | endfacet
513 | facet normal 0 0.92388 0.382682
514 | outer loop
515 | vertex -12 46.2397 16.0155
516 | vertex -4 46.5326 15.3084
517 | vertex -12 46.5326 15.3084
518 | endloop
519 | endfacet
520 | facet normal 0 0.92388 -0.382683
521 | outer loop
522 | vertex -4 46.2397 16.0155
523 | vertex -12 46.5326 16.7226
524 | vertex -4 46.5326 16.7226
525 | endloop
526 | endfacet
527 | facet normal 0 0.92388 -0.382683
528 | outer loop
529 | vertex -12 46.5326 16.7226
530 | vertex -4 46.2397 16.0155
531 | vertex -12 46.2397 16.0155
532 | endloop
533 | endfacet
534 | facet normal -1 0 0
535 | outer loop
536 | vertex -12 21.7397 10.0155
537 | vertex -12 20.2397 16.0155
538 | vertex -12 21.7397 22.0155
539 | endloop
540 | endfacet
541 | facet normal -1 0 0
542 | outer loop
543 | vertex -12 21.7397 10.0155
544 | vertex -12 19.9468 15.3084
545 | vertex -12 20.2397 16.0155
546 | endloop
547 | endfacet
548 | facet normal -1 0 0
549 | outer loop
550 | vertex -12 21.7397 10.0155
551 | vertex -12 19.2397 15.0155
552 | vertex -12 19.9468 15.3084
553 | endloop
554 | endfacet
555 | facet normal -1 0 0
556 | outer loop
557 | vertex -12 16.7397 10.0155
558 | vertex -12 19.2397 15.0155
559 | vertex -12 21.7397 10.0155
560 | endloop
561 | endfacet
562 | facet normal -1 -0 0
563 | outer loop
564 | vertex -12 18.5326 15.3084
565 | vertex -12 16.7397 10.0155
566 | vertex -12 18.2397 16.0155
567 | endloop
568 | endfacet
569 | facet normal -1 -0 0
570 | outer loop
571 | vertex -12 19.2397 15.0155
572 | vertex -12 16.7397 10.0155
573 | vertex -12 18.5326 15.3084
574 | endloop
575 | endfacet
576 | facet normal -1 0 0
577 | outer loop
578 | vertex -12 19.9468 16.7226
579 | vertex -12 21.7397 22.0155
580 | vertex -12 20.2397 16.0155
581 | endloop
582 | endfacet
583 | facet normal -1 0 0
584 | outer loop
585 | vertex -12 19.2397 17.0155
586 | vertex -12 21.7397 22.0155
587 | vertex -12 19.9468 16.7226
588 | endloop
589 | endfacet
590 | facet normal -1 0 0
591 | outer loop
592 | vertex -12 16.7397 22.0155
593 | vertex -12 19.2397 17.0155
594 | vertex -12 18.5326 16.7226
595 | endloop
596 | endfacet
597 | facet normal -1 0 0
598 | outer loop
599 | vertex -12 19.2397 17.0155
600 | vertex -12 16.7397 22.0155
601 | vertex -12 21.7397 22.0155
602 | endloop
603 | endfacet
604 | facet normal -1 0 0
605 | outer loop
606 | vertex -12 18.2397 16.0155
607 | vertex -12 16.7397 22.0155
608 | vertex -12 18.5326 16.7226
609 | endloop
610 | endfacet
611 | facet normal -1 0 0
612 | outer loop
613 | vertex -12 16.7397 22.0155
614 | vertex -12 18.2397 16.0155
615 | vertex -12 16.7397 10.0155
616 | endloop
617 | endfacet
618 | facet normal -0 0 1
619 | outer loop
620 | vertex -12 21.7397 22.0155
621 | vertex -4 16.7397 22.0155
622 | vertex -4 21.7397 22.0155
623 | endloop
624 | endfacet
625 | facet normal 0 0 1
626 | outer loop
627 | vertex -4 16.7397 22.0155
628 | vertex -12 21.7397 22.0155
629 | vertex -12 16.7397 22.0155
630 | endloop
631 | endfacet
632 | facet normal 1 0 0
633 | outer loop
634 | vertex -4 21.7397 22.0155
635 | vertex -4 20.2397 16.0155
636 | vertex -4 21.7397 10.0155
637 | endloop
638 | endfacet
639 | facet normal 1 0 0
640 | outer loop
641 | vertex -4 21.7397 22.0155
642 | vertex -4 19.9468 16.7226
643 | vertex -4 20.2397 16.0155
644 | endloop
645 | endfacet
646 | facet normal 1 0 0
647 | outer loop
648 | vertex -4 21.7397 22.0155
649 | vertex -4 19.2397 17.0155
650 | vertex -4 19.9468 16.7226
651 | endloop
652 | endfacet
653 | facet normal 1 -0 0
654 | outer loop
655 | vertex -4 16.7397 22.0155
656 | vertex -4 19.2397 17.0155
657 | vertex -4 21.7397 22.0155
658 | endloop
659 | endfacet
660 | facet normal 1 0 0
661 | outer loop
662 | vertex -4 18.5326 16.7226
663 | vertex -4 16.7397 22.0155
664 | vertex -4 18.2397 16.0155
665 | endloop
666 | endfacet
667 | facet normal 1 0 0
668 | outer loop
669 | vertex -4 19.2397 17.0155
670 | vertex -4 16.7397 22.0155
671 | vertex -4 18.5326 16.7226
672 | endloop
673 | endfacet
674 | facet normal 1 -0 0
675 | outer loop
676 | vertex -4 19.9468 15.3084
677 | vertex -4 21.7397 10.0155
678 | vertex -4 20.2397 16.0155
679 | endloop
680 | endfacet
681 | facet normal 1 -0 0
682 | outer loop
683 | vertex -4 19.2397 15.0155
684 | vertex -4 21.7397 10.0155
685 | vertex -4 19.9468 15.3084
686 | endloop
687 | endfacet
688 | facet normal 1 0 0
689 | outer loop
690 | vertex -4 16.7397 10.0155
691 | vertex -4 19.2397 15.0155
692 | vertex -4 18.5326 15.3084
693 | endloop
694 | endfacet
695 | facet normal 1 0 0
696 | outer loop
697 | vertex -4 19.2397 15.0155
698 | vertex -4 16.7397 10.0155
699 | vertex -4 21.7397 10.0155
700 | endloop
701 | endfacet
702 | facet normal 1 0 0
703 | outer loop
704 | vertex -4 18.2397 16.0155
705 | vertex -4 16.7397 10.0155
706 | vertex -4 18.5326 15.3084
707 | endloop
708 | endfacet
709 | facet normal 1 0 0
710 | outer loop
711 | vertex -4 16.7397 10.0155
712 | vertex -4 18.2397 16.0155
713 | vertex -4 16.7397 22.0155
714 | endloop
715 | endfacet
716 | facet normal 0 1 -0
717 | outer loop
718 | vertex -4 21.7397 10.0155
719 | vertex -12 21.7397 22.0155
720 | vertex -4 21.7397 22.0155
721 | endloop
722 | endfacet
723 | facet normal 0 1 0
724 | outer loop
725 | vertex -12 21.7397 22.0155
726 | vertex -4 21.7397 10.0155
727 | vertex -12 21.7397 10.0155
728 | endloop
729 | endfacet
730 | facet normal 0 0 -1
731 | outer loop
732 | vertex -12 16.7397 10.0155
733 | vertex -4 21.7397 10.0155
734 | vertex -4 16.7397 10.0155
735 | endloop
736 | endfacet
737 | facet normal -0 0 -1
738 | outer loop
739 | vertex -4 21.7397 10.0155
740 | vertex -12 16.7397 10.0155
741 | vertex -12 21.7397 10.0155
742 | endloop
743 | endfacet
744 | facet normal 0 -1 0
745 | outer loop
746 | vertex -12 16.7397 10.0155
747 | vertex -4 16.7397 22.0155
748 | vertex -12 16.7397 22.0155
749 | endloop
750 | endfacet
751 | facet normal 0 -1 -0
752 | outer loop
753 | vertex -4 16.7397 22.0155
754 | vertex -12 16.7397 10.0155
755 | vertex -4 16.7397 10.0155
756 | endloop
757 | endfacet
758 | facet normal 0 -0.382683 0.92388
759 | outer loop
760 | vertex -12 19.9468 15.3084
761 | vertex -4 19.2397 15.0155
762 | vertex -4 19.9468 15.3084
763 | endloop
764 | endfacet
765 | facet normal 0 -0.382683 0.92388
766 | outer loop
767 | vertex -4 19.2397 15.0155
768 | vertex -12 19.9468 15.3084
769 | vertex -12 19.2397 15.0155
770 | endloop
771 | endfacet
772 | facet normal 0 -0.382685 -0.923879
773 | outer loop
774 | vertex -12 19.2397 17.0155
775 | vertex -4 19.9468 16.7226
776 | vertex -4 19.2397 17.0155
777 | endloop
778 | endfacet
779 | facet normal -0 -0.382685 -0.923879
780 | outer loop
781 | vertex -4 19.9468 16.7226
782 | vertex -12 19.2397 17.0155
783 | vertex -12 19.9468 16.7226
784 | endloop
785 | endfacet
786 | facet normal 0 -0.923879 0.382684
787 | outer loop
788 | vertex -12 19.9468 15.3084
789 | vertex -4 20.2397 16.0155
790 | vertex -12 20.2397 16.0155
791 | endloop
792 | endfacet
793 | facet normal 0 -0.923879 0.382684
794 | outer loop
795 | vertex -4 20.2397 16.0155
796 | vertex -12 19.9468 15.3084
797 | vertex -4 19.9468 15.3084
798 | endloop
799 | endfacet
800 | facet normal -0 0.382682 0.92388
801 | outer loop
802 | vertex -12 19.2397 15.0155
803 | vertex -4 18.5326 15.3084
804 | vertex -4 19.2397 15.0155
805 | endloop
806 | endfacet
807 | facet normal 0 0.382682 0.92388
808 | outer loop
809 | vertex -4 18.5326 15.3084
810 | vertex -12 19.2397 15.0155
811 | vertex -12 18.5326 15.3084
812 | endloop
813 | endfacet
814 | facet normal 0 -0.923879 -0.382685
815 | outer loop
816 | vertex -12 20.2397 16.0155
817 | vertex -4 19.9468 16.7226
818 | vertex -12 19.9468 16.7226
819 | endloop
820 | endfacet
821 | facet normal 0 -0.923879 -0.382685
822 | outer loop
823 | vertex -4 19.9468 16.7226
824 | vertex -12 20.2397 16.0155
825 | vertex -4 20.2397 16.0155
826 | endloop
827 | endfacet
828 | facet normal 0 0.382684 -0.923879
829 | outer loop
830 | vertex -12 18.5326 16.7226
831 | vertex -4 19.2397 17.0155
832 | vertex -4 18.5326 16.7226
833 | endloop
834 | endfacet
835 | facet normal 0 0.382684 -0.923879
836 | outer loop
837 | vertex -4 19.2397 17.0155
838 | vertex -12 18.5326 16.7226
839 | vertex -12 19.2397 17.0155
840 | endloop
841 | endfacet
842 | facet normal 0 0.92388 0.382682
843 | outer loop
844 | vertex -4 18.5326 15.3084
845 | vertex -12 18.2397 16.0155
846 | vertex -4 18.2397 16.0155
847 | endloop
848 | endfacet
849 | facet normal 0 0.92388 0.382682
850 | outer loop
851 | vertex -12 18.2397 16.0155
852 | vertex -4 18.5326 15.3084
853 | vertex -12 18.5326 15.3084
854 | endloop
855 | endfacet
856 | facet normal 0 0.92388 -0.382683
857 | outer loop
858 | vertex -4 18.2397 16.0155
859 | vertex -12 18.5326 16.7226
860 | vertex -4 18.5326 16.7226
861 | endloop
862 | endfacet
863 | facet normal 0 0.92388 -0.382683
864 | outer loop
865 | vertex -12 18.5326 16.7226
866 | vertex -4 18.2397 16.0155
867 | vertex -12 18.2397 16.0155
868 | endloop
869 | endfacet
870 | facet normal -1 0 0
871 | outer loop
872 | vertex -12 61.7397 5
873 | vertex -12 49.7397 7
874 | vertex -12 61.7397 7
875 | endloop
876 | endfacet
877 | facet normal -1 0 0
878 | outer loop
879 | vertex -12 49.7397 7
880 | vertex -12 16.7397 7
881 | vertex -12 49.7397 10.0155
882 | endloop
883 | endfacet
884 | facet normal -1 0 0
885 | outer loop
886 | vertex -12 61.7397 5
887 | vertex -12 16.7397 7
888 | vertex -12 49.7397 7
889 | endloop
890 | endfacet
891 | facet normal -1 0 0
892 | outer loop
893 | vertex -12 4.73967 5
894 | vertex -12 16.7397 7
895 | vertex -12 61.7397 5
896 | endloop
897 | endfacet
898 | facet normal -1 -0 0
899 | outer loop
900 | vertex -12 16.7397 7
901 | vertex -12 4.73967 5
902 | vertex -12 4.73967 7
903 | endloop
904 | endfacet
905 | facet normal -1 -0 0
906 | outer loop
907 | vertex -12 49.7397 10.0155
908 | vertex -12 16.7397 7
909 | vertex -12 16.7397 10.0155
910 | endloop
911 | endfacet
912 | facet normal -0 0 1
913 | outer loop
914 | vertex -12 49.7397 10.0155
915 | vertex -4 16.7397 10.0155
916 | vertex -4 49.7397 10.0155
917 | endloop
918 | endfacet
919 | facet normal 0 0 1
920 | outer loop
921 | vertex -4 16.7397 10.0155
922 | vertex -12 49.7397 10.0155
923 | vertex -12 16.7397 10.0155
924 | endloop
925 | endfacet
926 | facet normal 1 0 0
927 | outer loop
928 | vertex -4 49.7397 10.0155
929 | vertex -4 16.7397 10.0155
930 | vertex -4 49.7397 7
931 | endloop
932 | endfacet
933 | facet normal 1 -0 0
934 | outer loop
935 | vertex -4 49.7397 7
936 | vertex -4 61.7397 5
937 | vertex -4 61.7397 7
938 | endloop
939 | endfacet
940 | facet normal 1 0 0
941 | outer loop
942 | vertex -4 16.7397 7
943 | vertex -4 49.7397 7
944 | vertex -4 16.7397 10.0155
945 | endloop
946 | endfacet
947 | facet normal 1 0 0
948 | outer loop
949 | vertex -4 49.7397 7
950 | vertex -4 16.7397 7
951 | vertex -4 61.7397 5
952 | endloop
953 | endfacet
954 | facet normal 1 0 0
955 | outer loop
956 | vertex -4 4.73967 5
957 | vertex -4 16.7397 7
958 | vertex -4 4.73967 7
959 | endloop
960 | endfacet
961 | facet normal 1 0 0
962 | outer loop
963 | vertex -4 16.7397 7
964 | vertex -4 4.73967 5
965 | vertex -4 61.7397 5
966 | endloop
967 | endfacet
968 | facet normal 0 0 -1
969 | outer loop
970 | vertex -5.76861 9.54412 5
971 | vertex -5.025 58 5
972 | vertex -5.025 8 5
973 | endloop
974 | endfacet
975 | facet normal 0 0 -1
976 | outer loop
977 | vertex -5.76861 9.54412 5
978 | vertex -5.76861 56.4559 5
979 | vertex -5.025 58 5
980 | endloop
981 | endfacet
982 | facet normal 0 0 -1
983 | outer loop
984 | vertex -7.43948 9.92548 5
985 | vertex -5.76861 56.4559 5
986 | vertex -5.76861 9.54412 5
987 | endloop
988 | endfacet
989 | facet normal 0 0 -1
990 | outer loop
991 | vertex -7.43948 9.92548 5
992 | vertex -7.43948 56.0745 5
993 | vertex -5.76861 56.4559 5
994 | endloop
995 | endfacet
996 | facet normal 0 0 -1
997 | outer loop
998 | vertex -8.77941 8.85692 5
999 | vertex -7.43948 56.0745 5
1000 | vertex -7.43948 9.92548 5
1001 | endloop
1002 | endfacet
1003 | facet normal -0 0 -1
1004 | outer loop
1005 | vertex -7.43948 56.0745 5
1006 | vertex -8.77941 8.85692 5
1007 | vertex -8.77941 57.1431 5
1008 | endloop
1009 | endfacet
1010 | facet normal 0 0 -1
1011 | outer loop
1012 | vertex -5.025 58 5
1013 | vertex -4 4.73967 5
1014 | vertex -5.025 8 5
1015 | endloop
1016 | endfacet
1017 | facet normal 0 0 -1
1018 | outer loop
1019 | vertex -4 4.73967 5
1020 | vertex -5.76861 6.45588 5
1021 | vertex -5.025 8 5
1022 | endloop
1023 | endfacet
1024 | facet normal 0 0 -1
1025 | outer loop
1026 | vertex -4 4.73967 5
1027 | vertex -7.43948 6.07452 5
1028 | vertex -5.76861 6.45588 5
1029 | endloop
1030 | endfacet
1031 | facet normal 0 0 -1
1032 | outer loop
1033 | vertex -12 4.73967 5
1034 | vertex -8.77941 8.85692 5
1035 | vertex -8.77941 7.14308 5
1036 | endloop
1037 | endfacet
1038 | facet normal -0 0 -1
1039 | outer loop
1040 | vertex -8.77941 8.85692 5
1041 | vertex -12 4.73967 5
1042 | vertex -8.77941 57.1431 5
1043 | endloop
1044 | endfacet
1045 | facet normal 0 0 -1
1046 | outer loop
1047 | vertex -12 61.7397 5
1048 | vertex -8.77941 57.1431 5
1049 | vertex -12 4.73967 5
1050 | endloop
1051 | endfacet
1052 | facet normal -0 0 -1
1053 | outer loop
1054 | vertex -7.43948 6.07452 5
1055 | vertex -12 4.73967 5
1056 | vertex -8.77941 7.14308 5
1057 | endloop
1058 | endfacet
1059 | facet normal 0 0 -1
1060 | outer loop
1061 | vertex -12 4.73967 5
1062 | vertex -7.43948 6.07452 5
1063 | vertex -4 4.73967 5
1064 | endloop
1065 | endfacet
1066 | facet normal 0 0 -1
1067 | outer loop
1068 | vertex -4 4.73967 5
1069 | vertex -5.025 58 5
1070 | vertex -4 61.7397 5
1071 | endloop
1072 | endfacet
1073 | facet normal 0 0 -1
1074 | outer loop
1075 | vertex -5.76861 59.5441 5
1076 | vertex -4 61.7397 5
1077 | vertex -5.025 58 5
1078 | endloop
1079 | endfacet
1080 | facet normal 0 0 -1
1081 | outer loop
1082 | vertex -7.43948 59.9255 5
1083 | vertex -4 61.7397 5
1084 | vertex -5.76861 59.5441 5
1085 | endloop
1086 | endfacet
1087 | facet normal 0 0 -1
1088 | outer loop
1089 | vertex -7.43948 59.9255 5
1090 | vertex -12 61.7397 5
1091 | vertex -4 61.7397 5
1092 | endloop
1093 | endfacet
1094 | facet normal 0 0 -1
1095 | outer loop
1096 | vertex -8.77941 58.8569 5
1097 | vertex -12 61.7397 5
1098 | vertex -7.43948 59.9255 5
1099 | endloop
1100 | endfacet
1101 | facet normal 0 0 -1
1102 | outer loop
1103 | vertex -8.77941 57.1431 5
1104 | vertex -12 61.7397 5
1105 | vertex -8.77941 58.8569 5
1106 | endloop
1107 | endfacet
1108 | facet normal 0 -1 0
1109 | outer loop
1110 | vertex -12 16.7397 7
1111 | vertex -4 16.7397 10.0155
1112 | vertex -12 16.7397 10.0155
1113 | endloop
1114 | endfacet
1115 | facet normal 0 -1 -0
1116 | outer loop
1117 | vertex -4 16.7397 10.0155
1118 | vertex -12 16.7397 7
1119 | vertex -4 16.7397 7
1120 | endloop
1121 | endfacet
1122 | facet normal 0 1 -0
1123 | outer loop
1124 | vertex -4 49.7397 7
1125 | vertex -12 49.7397 10.0155
1126 | vertex -4 49.7397 10.0155
1127 | endloop
1128 | endfacet
1129 | facet normal 0 1 0
1130 | outer loop
1131 | vertex -12 49.7397 10.0155
1132 | vertex -4 49.7397 7
1133 | vertex -12 49.7397 7
1134 | endloop
1135 | endfacet
1136 | facet normal 0 0 1
1137 | outer loop
1138 | vertex -4 16.7397 7
1139 | vertex -5.025 8 7
1140 | vertex -4 4.73967 7
1141 | endloop
1142 | endfacet
1143 | facet normal 0 0 1
1144 | outer loop
1145 | vertex -4 16.7397 7
1146 | vertex -5.76861 9.54412 7
1147 | vertex -5.025 8 7
1148 | endloop
1149 | endfacet
1150 | facet normal 0 0 1
1151 | outer loop
1152 | vertex -4 16.7397 7
1153 | vertex -7.43948 9.92548 7
1154 | vertex -5.76861 9.54412 7
1155 | endloop
1156 | endfacet
1157 | facet normal -0 0 1
1158 | outer loop
1159 | vertex -12 16.7397 7
1160 | vertex -7.43948 9.92548 7
1161 | vertex -4 16.7397 7
1162 | endloop
1163 | endfacet
1164 | facet normal 0 0 1
1165 | outer loop
1166 | vertex -12 4.73967 7
1167 | vertex -8.77941 8.85692 7
1168 | vertex -12 16.7397 7
1169 | endloop
1170 | endfacet
1171 | facet normal 0 0 1
1172 | outer loop
1173 | vertex -7.43948 9.92548 7
1174 | vertex -12 16.7397 7
1175 | vertex -8.77941 8.85692 7
1176 | endloop
1177 | endfacet
1178 | facet normal -0 0 1
1179 | outer loop
1180 | vertex -5.76861 6.45588 7
1181 | vertex -4 4.73967 7
1182 | vertex -5.025 8 7
1183 | endloop
1184 | endfacet
1185 | facet normal -0 0 1
1186 | outer loop
1187 | vertex -7.43948 6.07452 7
1188 | vertex -4 4.73967 7
1189 | vertex -5.76861 6.45588 7
1190 | endloop
1191 | endfacet
1192 | facet normal 0 0 1
1193 | outer loop
1194 | vertex -7.43948 6.07452 7
1195 | vertex -12 4.73967 7
1196 | vertex -4 4.73967 7
1197 | endloop
1198 | endfacet
1199 | facet normal 0 0 1
1200 | outer loop
1201 | vertex -8.77941 7.14308 7
1202 | vertex -12 4.73967 7
1203 | vertex -7.43948 6.07452 7
1204 | endloop
1205 | endfacet
1206 | facet normal 0 0 1
1207 | outer loop
1208 | vertex -8.77941 8.85692 7
1209 | vertex -12 4.73967 7
1210 | vertex -8.77941 7.14308 7
1211 | endloop
1212 | endfacet
1213 | facet normal 0 -1 0
1214 | outer loop
1215 | vertex -12 4.73967 5
1216 | vertex -4 4.73967 7
1217 | vertex -12 4.73967 7
1218 | endloop
1219 | endfacet
1220 | facet normal 0 -1 -0
1221 | outer loop
1222 | vertex -4 4.73967 7
1223 | vertex -12 4.73967 5
1224 | vertex -4 4.73967 5
1225 | endloop
1226 | endfacet
1227 | facet normal 0 0 1
1228 | outer loop
1229 | vertex -4 61.7397 7
1230 | vertex -5.025 58 7
1231 | vertex -4 49.7397 7
1232 | endloop
1233 | endfacet
1234 | facet normal 0 0 1
1235 | outer loop
1236 | vertex -4 61.7397 7
1237 | vertex -5.76861 59.5441 7
1238 | vertex -5.025 58 7
1239 | endloop
1240 | endfacet
1241 | facet normal 0 0 1
1242 | outer loop
1243 | vertex -4 61.7397 7
1244 | vertex -7.43948 59.9255 7
1245 | vertex -5.76861 59.5441 7
1246 | endloop
1247 | endfacet
1248 | facet normal 0 0 1
1249 | outer loop
1250 | vertex -8.77941 58.8569 7
1251 | vertex -12 61.7397 7
1252 | vertex -8.77941 57.1431 7
1253 | endloop
1254 | endfacet
1255 | facet normal 0 0 1
1256 | outer loop
1257 | vertex -7.43948 59.9255 7
1258 | vertex -12 61.7397 7
1259 | vertex -8.77941 58.8569 7
1260 | endloop
1261 | endfacet
1262 | facet normal -0 0 1
1263 | outer loop
1264 | vertex -12 61.7397 7
1265 | vertex -7.43948 59.9255 7
1266 | vertex -4 61.7397 7
1267 | endloop
1268 | endfacet
1269 | facet normal -0 0 1
1270 | outer loop
1271 | vertex -5.76861 56.4559 7
1272 | vertex -4 49.7397 7
1273 | vertex -5.025 58 7
1274 | endloop
1275 | endfacet
1276 | facet normal -0 0 1
1277 | outer loop
1278 | vertex -7.43948 56.0745 7
1279 | vertex -4 49.7397 7
1280 | vertex -5.76861 56.4559 7
1281 | endloop
1282 | endfacet
1283 | facet normal 0 0 1
1284 | outer loop
1285 | vertex -12 49.7397 7
1286 | vertex -7.43948 56.0745 7
1287 | vertex -8.77941 57.1431 7
1288 | endloop
1289 | endfacet
1290 | facet normal 0 0 1
1291 | outer loop
1292 | vertex -12 49.7397 7
1293 | vertex -8.77941 57.1431 7
1294 | vertex -12 61.7397 7
1295 | endloop
1296 | endfacet
1297 | facet normal 0 0 1
1298 | outer loop
1299 | vertex -7.43948 56.0745 7
1300 | vertex -12 49.7397 7
1301 | vertex -4 49.7397 7
1302 | endloop
1303 | endfacet
1304 | facet normal 0 1 -0
1305 | outer loop
1306 | vertex -4 61.7397 5
1307 | vertex -12 61.7397 7
1308 | vertex -4 61.7397 7
1309 | endloop
1310 | endfacet
1311 | facet normal 0 1 0
1312 | outer loop
1313 | vertex -12 61.7397 7
1314 | vertex -4 61.7397 5
1315 | vertex -12 61.7397 5
1316 | endloop
1317 | endfacet
1318 | endsolid OpenSCAD_Model
1319 |
--------------------------------------------------------------------------------