Updates
91092
tir_sportif/22lr_risers/CE3V3SE_risers.gcode
Normal file
BIN
tir_sportif/22lr_risers/images/20181005_230941.jpg
Normal file
|
After Width: | Height: | Size: 3.9 MiB |
BIN
tir_sportif/22lr_risers/images/ammo_risers_a.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
tir_sportif/22lr_risers/images/ammo_risers_b.png
Normal file
|
After Width: | Height: | Size: 81 KiB |
BIN
tir_sportif/22lr_risers/images/riser_cci.png
Normal file
|
After Width: | Height: | Size: 63 KiB |
BIN
tir_sportif/22lr_risers/images/riser_federal.png
Normal file
|
After Width: | Height: | Size: 67 KiB |
BIN
tir_sportif/22lr_risers/images/riser_solo.png
Normal file
|
After Width: | Height: | Size: 510 KiB |
90
tir_sportif/22lr_risers/scad/ammo_risers.scad
Normal file
@@ -0,0 +1,90 @@
|
||||
$fn=60;
|
||||
|
||||
include <BOSL2/std.scad>
|
||||
|
||||
module bullets() {
|
||||
for(x=[1:1:5]) {
|
||||
for(y=[1:1:5]) {
|
||||
translate([-38.5+x*14,-21+y*7,31.4]) {
|
||||
rotate([180,0,0]) {
|
||||
translate([0,0,12.7]) zcyl(l=25.4, d=5.72, rounding=2.81);
|
||||
translate([0,0,7.785]) zcyl(l=15.57, d=5.74);
|
||||
translate([0,0,.545]) zcyl(l=1.09, d=7.06, rounding=.545);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for(x=[1:1:5]) {
|
||||
for(y=[1:1:5]) {
|
||||
translate([-45.5+x*14,-21+y*7,36.4]) {
|
||||
rotate([180,0,0]) {
|
||||
translate([0,0,12.7]) zcyl(l=25.4, d=5.72, rounding=2.81);
|
||||
translate([0,0,7.785]) zcyl(l=15.57, d=5.74);
|
||||
translate([0,0,.545]) zcyl(l=1.09, d=7.06, rounding=.545);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module cci_holder() {
|
||||
color("grey", alpha=1) {
|
||||
difference() {
|
||||
translate([0,0,21]) cuboid([70,37,4]);
|
||||
translate([-38.5,-21,22]) {
|
||||
for(i=[1:1:5]) {
|
||||
for(j=[1:1:10]) {
|
||||
translate([j*7,i*7,0]) zcyl(l=10, d=5.8);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module federal_holder() {
|
||||
color("grey", alpha=1) {
|
||||
difference() {
|
||||
translate([0,0,11]) cuboid([73,40,22]);
|
||||
translate([0,0,8]) cuboid([70,50,20], rounding=3);
|
||||
translate([-38.5,-21,22]) {
|
||||
for(i=[1:1:5]) {
|
||||
for(j=[1:1:10]) {
|
||||
translate([j*7,i*7,0]) zcyl(l=10, d=5.8);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bullets();
|
||||
|
||||
translate([0,50,0]) {
|
||||
cci_holder();
|
||||
|
||||
// cci riser
|
||||
color("orange", alpha=1) {
|
||||
translate([0,0,11.5]) {
|
||||
difference() {
|
||||
cuboid([80,46,23],rounding=1);
|
||||
translate([0,0,11]) cuboid([73,40,7]);
|
||||
translate([0,0,-2]) cuboid([71,36,20],rounding=0);
|
||||
translate([0,0,11]) ycyl(l=46, d=20, rounding=-1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
federal_holder();
|
||||
|
||||
// federal riser
|
||||
color("blue", alpha=1) {
|
||||
translate([0,0,-2]) cuboid([84,48,4], rounding=4, edges=[FWD+RIGHT,FWD+LEFT,BACK+RIGHT,BACK+LEFT]);
|
||||
translate([0,0,3]) cuboid([70,35,6], rounding=1, edges=[FWD+RIGHT,FWD+LEFT,BACK+RIGHT,BACK+LEFT]);
|
||||
translate([-32,0,5.5]) cuboid([6,35,11], rounding=1);
|
||||
translate([-18,0,5.5]) cuboid([6,35,11], rounding=1);
|
||||
translate([-4,0,5.5]) cuboid([6,35,11], rounding=1);
|
||||
translate([10,0,5.5]) cuboid([6,35,11], rounding=1);
|
||||
translate([24,0,5.5]) cuboid([6,35,11], rounding=1);
|
||||
}
|
||||
BIN
tir_sportif/22lr_risers/stl/riser_cci.stl
Normal file
BIN
tir_sportif/22lr_risers/stl/riser_federal.stl
Normal file
BIN
tir_sportif/22lr_risers/stl/riser_solo.stl
Normal file
BIN
tir_sportif/22lr_risers/stl/riser_stairs_v1.stl
Normal file
BIN
tir_sportif/22lr_risers/stl/riser_stairs_v2.stl
Normal file
661
tir_sportif/dioptre/LICENSE.md
Normal file
@@ -0,0 +1,661 @@
|
||||
GNU AFFERO GENERAL PUBLIC LICENSE
|
||||
Version 3, 19 November 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU Affero General Public License is a free, copyleft license for
|
||||
software and other kinds of works, specifically designed to ensure
|
||||
cooperation with the community in the case of network server software.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
our General Public Licenses are intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
Developers that use our General Public Licenses protect your rights
|
||||
with two steps: (1) assert copyright on the software, and (2) offer
|
||||
you this License which gives you legal permission to copy, distribute
|
||||
and/or modify the software.
|
||||
|
||||
A secondary benefit of defending all users' freedom is that
|
||||
improvements made in alternate versions of the program, if they
|
||||
receive widespread use, become available for other developers to
|
||||
incorporate. Many developers of free software are heartened and
|
||||
encouraged by the resulting cooperation. However, in the case of
|
||||
software used on network servers, this result may fail to come about.
|
||||
The GNU General Public License permits making a modified version and
|
||||
letting the public access it on a server without ever releasing its
|
||||
source code to the public.
|
||||
|
||||
The GNU Affero General Public License is designed specifically to
|
||||
ensure that, in such cases, the modified source code becomes available
|
||||
to the community. It requires the operator of a network server to
|
||||
provide the source code of the modified version running there to the
|
||||
users of that server. Therefore, public use of a modified version, on
|
||||
a publicly accessible server, gives the public access to the source
|
||||
code of the modified version.
|
||||
|
||||
An older license, called the Affero General Public License and
|
||||
published by Affero, was designed to accomplish similar goals. This is
|
||||
a different license, not a version of the Affero GPL, but Affero has
|
||||
released a new version of the Affero GPL which permits relicensing under
|
||||
this license.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU Affero General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Remote Network Interaction; Use with the GNU General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, if you modify the
|
||||
Program, your modified version must prominently offer all users
|
||||
interacting with it remotely through a computer network (if your version
|
||||
supports such interaction) an opportunity to receive the Corresponding
|
||||
Source of your version by providing access to the Corresponding Source
|
||||
from a network server at no charge, through some standard or customary
|
||||
means of facilitating copying of software. This Corresponding Source
|
||||
shall include the Corresponding Source for any work covered by version 3
|
||||
of the GNU General Public License that is incorporated pursuant to the
|
||||
following paragraph.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the work with which it is combined will remain governed by version
|
||||
3 of the GNU General Public License.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU Affero General Public License from time to time. Such new versions
|
||||
will be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU Affero General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU Affero General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU Affero General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If your software can interact with users remotely through a computer
|
||||
network, you should also make sure that it provides a way for users to
|
||||
get its source. For example, if your program is a web application, its
|
||||
interface could display a "Source" link that leads users to an archive
|
||||
of the code. There are many ways you could offer source, and different
|
||||
solutions will be better for different programs; see section 13 for the
|
||||
specific requirements.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU AGPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
47
tir_sportif/dioptre/README.md
Normal file
@@ -0,0 +1,47 @@
|
||||
### Dioptre pédagogique
|
||||
|
||||

|
||||
|
||||
| Élément | Vue | Fichier |
|
||||
| --- | --- | --- |
|
||||
| Boîtier |  | [enclosure.stl](stl/enclosure.stl) |
|
||||
| Platine / Écrous |  | [plate.stl](stl/plate.stl) |
|
||||
| Support (cible) |  | [holder.stl](stl/holder.stl) |
|
||||
| Bouton de réglage |  | [knob.stl](stl/knob.stl) |
|
||||
| Vis gauche |  | [screws.stl](stl/screws.stl) |
|
||||
| Oeilleton |  | [sight.stl](stl/sight.stl) |
|
||||
| Support (cible) |  | [holder.stl](stl/holder.stl) |
|
||||
|
||||
#### OpenSCAD Libraries
|
||||
- [Threads](https://github.com/rcolyer/threads-scad)
|
||||
- [BOSL2](https://github.com/BelfrySCAD/BOSL2)
|
||||
- [BOLTS](https://github.com/boltsparts/BOLTS_archive.git)
|
||||
|
||||
#### Cura Print settings (Ender 3 V3 SE / PETG_alt)
|
||||
- Layer Height : 0,2 mm
|
||||
- Initial Layer Height : 0,2 mm
|
||||
- Line Width : 0,4 mm
|
||||
- Wall Thickness : 1,6 mm
|
||||
- Top/Bottom Thickness : 2 mm
|
||||
- Infill Density : 20%
|
||||
- Infill Pattern : Grid (Gyroid ?)
|
||||
- Printing temperature : 250°C
|
||||
- Build Plate temperature : 80°C
|
||||
- Print Speed : 60 mm/s
|
||||
- Enable Retraction (Yes)
|
||||
- Retraction Distance : 3,5 mm
|
||||
- Retraction Speed : 40 mm/s
|
||||
- Combing Mode : Not in Skin
|
||||
- Enable Print Cooling (Yes)
|
||||
- Fan Speed : 50%
|
||||
- Support (None)
|
||||
|
||||
#### Links
|
||||
- [OpenSCAD](https://openscad.org/index.html)
|
||||
- [UltiMaker Cura](https://ultimaker.com/software/ultimaker-cura/)
|
||||
- [OctoPrint](https://octoprint.org)
|
||||
|
||||
#### Hardware
|
||||
- Compression Springs : 9,5x16mm (x3)
|
||||
- Cup head Bolts : M4x16 (x2)
|
||||
- Nuts : M4 (x2)
|
||||
34613
tir_sportif/dioptre/gcode/CE3V3SE_ball.gcode
Normal file
107613
tir_sportif/dioptre/gcode/CE3V3SE_bolts.gcode
Normal file
153774
tir_sportif/dioptre/gcode/CE3V3SE_box.gcode
Normal file
193334
tir_sportif/dioptre/gcode/CE3V3SE_plate.gcode
Normal file
12203
tir_sportif/dioptre/gcode/CE3V3SE_rings.gcode
Normal file
178969
tir_sportif/dioptre/gcode/CE3V3SE_screws.gcode
Normal file
111776
tir_sportif/dioptre/gcode/CE3V3SE_sight.gcode
Normal file
29
tir_sportif/dioptre/gcode/README.md
Normal file
@@ -0,0 +1,29 @@
|
||||
### gCode files
|
||||
|
||||
Sent to [OctoPrint](https://octoprint.org) with the setting below :
|
||||
|
||||
#### Cura Print settings (Ender 3 V3 SE / PETG_alt)
|
||||
- Layer Height : 0,2 mm
|
||||
- Initial Layer Height : 0,2 mm
|
||||
- Line Width : 0,4 mm
|
||||
- Wall Thickness : 1,6 mm
|
||||
- Top/Bottom Thickness : 2 mm
|
||||
- Infill Density : 20%
|
||||
- Infill Pattern : Grid (Gyroid ?)
|
||||
- Printing temperature : 250°C
|
||||
- Build Plate temperature : 80°C
|
||||
- Print Speed : 60 mm/s
|
||||
- Enable Retraction (Yes)
|
||||
- Retraction Distance : 3,5 mm
|
||||
- Retraction Speed : 40 mm/s
|
||||
- Combing Mode : Not in Skin
|
||||
- Enable Print Cooling (Yes)
|
||||
- Fan Speed : 50%
|
||||
- Support (None)
|
||||
|
||||
#### Estimates
|
||||
| Infill | Weight | Length | Cost |
|
||||
| --- | --- | --- | --- |
|
||||
| 20% | 240g | 73,56 m | 4€32 |
|
||||
| 30% | 255g | 83,34 m | 4€58 |
|
||||
| 50% | 284g | 90,08 m | 5€12 |
|
||||
BIN
tir_sportif/dioptre/images/dioptre.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
tir_sportif/dioptre/images/dioptre_300x196.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
tir_sportif/dioptre/images/enclosure.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
tir_sportif/dioptre/images/enclosure_300x196.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
tir_sportif/dioptre/images/holder.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
tir_sportif/dioptre/images/holder_300x196.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
tir_sportif/dioptre/images/knob.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
tir_sportif/dioptre/images/knob_300x196.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
tir_sportif/dioptre/images/plate.png
Normal file
|
After Width: | Height: | Size: 62 KiB |
BIN
tir_sportif/dioptre/images/plate_300x196.png
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
tir_sportif/dioptre/images/screws.png
Normal file
|
After Width: | Height: | Size: 56 KiB |
BIN
tir_sportif/dioptre/images/screws_300x196.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
tir_sportif/dioptre/images/sight.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
tir_sportif/dioptre/images/sight_300x196.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
3
tir_sportif/dioptre/scad/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
### OpenSCAD files
|
||||
|
||||
Edit with [OpenSCAD](https://openscad.org/index.html).
|
||||
52
tir_sportif/dioptre/scad/ballJoint.scad
Normal file
@@ -0,0 +1,52 @@
|
||||
// Ball joint in SCAD by Erik de Bruijn
|
||||
// Based on a design by Makerblock ( http://makerblock.com/2010/03/blender-help/ )
|
||||
size=10; // size of the ball joint
|
||||
joint_spacing =0.5; // some space between them?
|
||||
joint_thickness = 2; // thickness of the arms
|
||||
joint_arms = 5; // how many arms do you want?
|
||||
arm_width = 10; // actually: how much is removed from the arms Larger values will remove more
|
||||
|
||||
//render settings
|
||||
$fs=0.8; // def 1, 0.2 is high res
|
||||
$fa=4;//def 12, 3 is very nice
|
||||
|
||||
//print();
|
||||
demo(); // turn on animation, FPS 15, steps 200
|
||||
|
||||
module demo()
|
||||
{
|
||||
ball();
|
||||
rotate([sin($t*720)*28,cos($t*360*4)*28,cos($t*360*2)*20]) joint();
|
||||
|
||||
}
|
||||
module print()
|
||||
{
|
||||
translate([size*2+10,0,0]) ball();
|
||||
rotate([0,180,0]) joint();
|
||||
}
|
||||
|
||||
module ball()
|
||||
{
|
||||
sphere(r=size);
|
||||
translate([0,0,-size]) cylinder(r1=8,r2=6,h=3);
|
||||
translate([0,0,-size-3]) cylinder(r=8,h=3);
|
||||
}
|
||||
|
||||
|
||||
|
||||
module joint()
|
||||
{
|
||||
difference()
|
||||
{
|
||||
sphere(r=size+joint_spacing+joint_thickness);
|
||||
sphere(r=size+joint_spacing);
|
||||
translate([0,0,-size-3]) cube([size+joint_spacing+joint_thickness+25,size+joint_spacing+joint_thickness+25,18],center=true);
|
||||
for(i=[0:joint_arms])
|
||||
{
|
||||
rotate([0,0,360/joint_arms*i]) translate([-arm_width/2,0, -size/2-4])
|
||||
cube([arm_width,size+joint_spacing+joint_thickness+20,size+6]);
|
||||
}
|
||||
}
|
||||
translate([0,0,size-2]) cylinder(r2=8,r1=8,h=5);
|
||||
|
||||
}
|
||||
38
tir_sportif/dioptre/scad/blades.scad
Normal file
@@ -0,0 +1,38 @@
|
||||
$fn=60;
|
||||
|
||||
include<threads.scad>
|
||||
include <BOSL2/std.scad>
|
||||
include <BOSL2/shapes2d.scad>
|
||||
include <boltsos_0.4.1/BOLTS.scad>
|
||||
|
||||
// Lames horizontales
|
||||
color("green") {
|
||||
// Haut
|
||||
rotate([0,90,0]) translate([-10,0,2.5]) {
|
||||
translate([0,0,22.5]) {
|
||||
mirror([0,1,0]) RodEnd(20, 32, thread_len=32, thread_diam=16, thread_pitch=4);
|
||||
translate([0,-2.5,0]) cuboid([20,105,5], rounding=1);
|
||||
}
|
||||
translate([0,-50,0]) {
|
||||
rotate([90,0,0]) tube(od=20, wall=5.5, h=5, rounding=1);
|
||||
}
|
||||
translate([0,-52.5,7.5]) rotate([-90,0,0]) cuboid([20,35,5], rounding=1);
|
||||
}
|
||||
// Bas
|
||||
union() {
|
||||
translate([80,0,5]) {
|
||||
cuboid([20,80,10], rounding=1);
|
||||
translate([0,15,5]) tube(od=11, wall=1, h=5);
|
||||
translate([0,-15,5]) tube(od=11, wall=1, h=5);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Lames verticales
|
||||
color("pink") {
|
||||
// Droite
|
||||
translate([-20,0,10]) rotate([0,90,0]) {
|
||||
mirror([0,1,0]) RodEnd(20, 30, thread_len=31, thread_diam=16, thread_pitch=4);
|
||||
cuboid([20,22,5], rounding=1);
|
||||
}
|
||||
}
|
||||
116
tir_sportif/dioptre/scad/blades_grp.scad
Normal file
@@ -0,0 +1,116 @@
|
||||
$fn=60;
|
||||
|
||||
include<threads.scad>
|
||||
include <BOSL2/std.scad>
|
||||
include <BOSL2/shapes2d.scad>
|
||||
include <boltsos_0.4.1/BOLTS.scad>
|
||||
|
||||
module bolt() {
|
||||
difference() {
|
||||
union() {
|
||||
cuboid([26,21,10], rounding=1);
|
||||
translate([-10,0,0]) cuboid([6,66,10], rounding=1);
|
||||
}
|
||||
translate([-2.5,0,0]) zcyl(l=10, d=15);
|
||||
}
|
||||
translate([-2.5,0,-5]) mirror([0,1,0]) RodEnd(15, 20, thread_len=20, thread_diam=12, thread_pitch=4);
|
||||
}
|
||||
|
||||
module blade() {
|
||||
difference () {
|
||||
translate([-7.5,0,0]) cuboid([26,8,66], rounding=1);
|
||||
translate([0,3.5,0]) cuboid([6,5,70], rounding=1);
|
||||
}
|
||||
translate([-7,-4,20]) ycyl(l=3, d=8, rounding=1);
|
||||
translate([-7,-4,-20]) ycyl(l=3, d=8, rounding=1);
|
||||
}
|
||||
|
||||
module screw() {
|
||||
cylinder(h=15, d=12, $fn=6);
|
||||
translate([0,0,15]) mirror([0,1,0]) RodStart(20, 3, thread_len=40, thread_diam=12, thread_pitch=4);
|
||||
}
|
||||
|
||||
* bolt();
|
||||
* blade();
|
||||
* screw();
|
||||
|
||||
// Screws
|
||||
color("blue") {
|
||||
translate([-5,94,0]) rotate([90,0,0]) screw();
|
||||
translate([-5,0,94]) rotate([180,0,0]) screw();
|
||||
}
|
||||
|
||||
// Horizontal blades
|
||||
color("green") {
|
||||
// Right
|
||||
translate([-2.5,65,0]) rotate([90,0,0]) bolt();
|
||||
// Left
|
||||
translate([5,-62,0]) blade();
|
||||
translate([-14,0,30]) cuboid([3,129,6], rounding=1);
|
||||
translate([-14,0,-30]) cuboid([3,129,6], rounding=1);
|
||||
}
|
||||
|
||||
// Vertictal blades
|
||||
color("pink") {
|
||||
// Top
|
||||
translate([-2.5,0,65]) rotate([0,180,180]) bolt();
|
||||
// Bottom
|
||||
translate([5,0,-62]) rotate([90,0,0]) blade();
|
||||
translate([-9.5,30.5,4]) cuboid([4,5,132], rounding=1);
|
||||
translate([-9.5,-30.5,4]) cuboid([4,5,132], rounding=1);
|
||||
}
|
||||
|
||||
// Springs
|
||||
* color("orange", alpha=.5) {
|
||||
translate([5,-76,20]) ycyl(l=8, d=9);
|
||||
translate([5,-76,-20]) ycyl(l=8, d=9);
|
||||
translate([5,20,-72]) zcyl(l=16, d=9);
|
||||
translate([5,-20,-72]) zcyl(l=16, d=9);
|
||||
}
|
||||
|
||||
// Target
|
||||
color("grey", alpha=1) {
|
||||
translate([3,0,0]) {
|
||||
difference() {
|
||||
cuboid([1,90,90]);
|
||||
translate([0,40,40]) xcyl(l=3, d=4);
|
||||
translate([0,40,-40]) xcyl(l=3, d=4);
|
||||
translate([0,-40,-40]) xcyl(l=3, d=4);
|
||||
translate([0,-40,40]) xcyl(l=3, d=4);
|
||||
}
|
||||
}
|
||||
}
|
||||
color("red", alpha=0.5) translate([4,0,0]) xcyl(l=1, d=80);
|
||||
|
||||
// Box
|
||||
color("white", alpha=.5) {
|
||||
difference() {
|
||||
translate([-6,0,0]) cuboid([33,166,166], rounding=1);
|
||||
translate([-2,0,0]) cuboid([29,160,160], rounding=1);
|
||||
translate([-5,81,0]) ycyl(l=6, d=13);
|
||||
translate([-5,0,81]) zcyl(l=6, d=13);
|
||||
}
|
||||
// Corners
|
||||
translate([-2,0,0]) {
|
||||
translate([-6,58,58]) cuboid([22,47,47], rounding=1);
|
||||
translate([-6,-58,58]) cuboid([22,47,47], rounding=1);
|
||||
translate([-6,58,-58]) cuboid([22,47,47], rounding=1);
|
||||
translate([-6,-58,-58]) cuboid([22,47,47], rounding=1);
|
||||
}
|
||||
// Pins
|
||||
translate([3,40,40]) xcyl(l=3, d=3, rounding=1);
|
||||
translate([3,40,-40]) xcyl(l=3, d=3, rounding=1);
|
||||
translate([3,-40,-40]) xcyl(l=3, d=3, rounding=1);
|
||||
translate([3,-40,40]) xcyl(l=3, d=3, rounding=1);
|
||||
}
|
||||
|
||||
// Grp Plate
|
||||
* color("cyan", alpha=.3) translate([5.5,0,0]) cuboid([4,120,120], rounding=1);
|
||||
|
||||
// Cover
|
||||
* color("white", alpha=0.5) {
|
||||
translate([15,0,0]) difference() {
|
||||
cuboid([3,166,166], rounding=1);
|
||||
xcyl(l=5, d=80);
|
||||
}
|
||||
}
|
||||
53
tir_sportif/dioptre/scad/blades_v2.scad
Normal file
@@ -0,0 +1,53 @@
|
||||
$fn=60;
|
||||
|
||||
include<threads.scad>
|
||||
include <BOSL2/std.scad>
|
||||
include <BOSL2/shapes2d.scad>
|
||||
include <boltsos_0.4.1/BOLTS.scad>
|
||||
|
||||
module bolt() {
|
||||
difference() {
|
||||
union() {
|
||||
cuboid([26,21,10], rounding=1);
|
||||
translate([-10,0,0]) cuboid([6,66,10], rounding=1);
|
||||
}
|
||||
translate([-2.5,0,0]) zcyl(l=10, d=15);
|
||||
}
|
||||
translate([-2.5,0,-5]) mirror([0,1,0]) RodEnd(15, 20, thread_len=20, thread_diam=12, thread_pitch=4);
|
||||
}
|
||||
|
||||
module blade() {
|
||||
difference () {
|
||||
translate([-7.5,0,0]) cuboid([26,8,66], rounding=1);
|
||||
translate([0,3.5,0]) cuboid([6,5,70], rounding=1);
|
||||
}
|
||||
translate([-7,-4,20]) ycyl(l=3, d=8, rounding=1);
|
||||
translate([-7,-4,-20]) ycyl(l=3, d=8, rounding=1);
|
||||
}
|
||||
|
||||
* bolt();
|
||||
* blade();
|
||||
|
||||
// Horizontal blades
|
||||
color("green") {
|
||||
translate([-50,0,15]) rotate([0,-90,0]) {
|
||||
// Right
|
||||
translate([-2.5,65,0]) rotate([90,0,0]) bolt();
|
||||
// Left
|
||||
translate([5,-62,0]) blade();
|
||||
translate([-14,0,30]) cuboid([3,129,6], rounding=1);
|
||||
translate([-14,0,-30]) cuboid([3,129,6], rounding=1);
|
||||
}
|
||||
}
|
||||
|
||||
// Vertictal blades
|
||||
color("pink") {
|
||||
translate([50,0,15]) rotate([-90,-90,0]) {
|
||||
// Top
|
||||
translate([-2.5,0,65]) rotate([0,180,180]) bolt();
|
||||
// Bottom
|
||||
translate([5,0,-62]) rotate([90,0,0]) blade();
|
||||
translate([-9.5,30.5,4]) cuboid([4,5,132], rounding=1);
|
||||
translate([-9.5,-30.5,4]) cuboid([4,5,132], rounding=1);
|
||||
}
|
||||
}
|
||||
29
tir_sportif/dioptre/scad/cover.scad
Normal file
@@ -0,0 +1,29 @@
|
||||
$fn=60;
|
||||
|
||||
include<threads.scad>
|
||||
include <BOSL2/std.scad>
|
||||
include <BOSL2/shapes2d.scad>
|
||||
include <boltsos_0.4.1/BOLTS.scad>
|
||||
|
||||
// Cover
|
||||
/* translate([0,0,-44.5]) {*/
|
||||
difference() {
|
||||
cuboid([50,160,7], rounding=5, edges=[TOP,FRONT+RIGHT,FRONT+LEFT,BACK+RIGHT,BACK+LEFT]);
|
||||
translate([0,60,3.5]) {
|
||||
zcyl(l=10, r=2.25);
|
||||
translate([0,0,-5]) zcyl(l=4, r=3.3);
|
||||
}
|
||||
translate([0,-60,3.5]) {
|
||||
zcyl(l=10, r=2.25);
|
||||
translate([0,0,-5]) zcyl(l=4, r=3.3);
|
||||
}
|
||||
}
|
||||
translate([0,15,4]) {
|
||||
zcyl(l=2, r=5.5);
|
||||
tube(od=11, wall=1, h=5);
|
||||
}
|
||||
translate([0,-15,4]) {
|
||||
zcyl(l=2, r=5.5);
|
||||
tube(od=11, wall=1, h=5);
|
||||
}
|
||||
/*}*/
|
||||
131
tir_sportif/dioptre/scad/dioptre.scad
Normal file
@@ -0,0 +1,131 @@
|
||||
$fn=60;
|
||||
|
||||
include<threads.scad>
|
||||
include <BOSL2/std.scad>
|
||||
include <BOSL2/shapes2d.scad>
|
||||
include <boltsos_0.4.1/BOLTS.scad>
|
||||
|
||||
// Sight
|
||||
color("grey", alpha=1) {
|
||||
// Base
|
||||
difference() {
|
||||
translate([0,-5,0]) cuboid([20,50,40], rounding=2);
|
||||
xcyl(l=20, d=12.5);
|
||||
}
|
||||
translate([0,-30 ,0]) rotate([-90,0,0]) tube(od=15, wall=3, h=7, chamfer=0.5);
|
||||
// Eye
|
||||
translate([2.5,0,0]) {
|
||||
rotate([0,90,0]) {
|
||||
tube(od=12, wall=3, h=22, chamfer=0.5);
|
||||
translate([0,0,14.5]) tube(h=10, or1=6, or2=20, wall=3, chamfer=0.5);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Screws
|
||||
// Top
|
||||
translate ([0,0,83.5]) rotate([0,180,0]) {
|
||||
cylinder(h=15, d=14, $fn=6);
|
||||
translate([0,0,15]) mirror([0,1,0]) RodStart(20, 3, thread_len=30, thread_diam=15, thread_pitch=4);
|
||||
}
|
||||
|
||||
// Right
|
||||
translate ([0,83.5,0]) rotate([90,0,0]) {
|
||||
cylinder(h=15, d=14, $fn=6);
|
||||
translate([0,0,15]) mirror([0,1,0]) RodStart(20, 3, thread_len=30, thread_diam=15, thread_pitch=4);
|
||||
}
|
||||
|
||||
// Horizontal blades
|
||||
color("green") {
|
||||
// Haut
|
||||
translate([0,0,22.5]) {
|
||||
mirror([0,1,0]) RodEnd(20, 30, thread_len=31, thread_diam=16, thread_pitch=4);
|
||||
translate([0,-2.5,0]) cuboid([20,105,5], rounding=1);
|
||||
}
|
||||
translate([0,-50,0]) {
|
||||
rotate([90,0,0]) tube(od=20, wall=5.5, h=5, rounding=1);
|
||||
}
|
||||
translate([0,-52.5,7.5]) rotate([-90,0,0]) cuboid([20,35,5], rounding=1);
|
||||
// Bas
|
||||
union() {
|
||||
translate([0,0,-25]) cuboid([20,80,10], rounding=1);
|
||||
translate([0,15,-30]) tube(od=11, wall=1, h=5);
|
||||
}
|
||||
}
|
||||
|
||||
// Vertical blades
|
||||
color("pink") {
|
||||
// Droite
|
||||
rotate([-90,0,0]) {
|
||||
translate([0,0,22.5]) {
|
||||
mirror([0,1,0]) RodEnd(20, 30, thread_len=31, thread_diam=16, thread_pitch=4);
|
||||
cuboid([20,22,5], rounding=1);
|
||||
}
|
||||
}
|
||||
// Gauche
|
||||
* union() {
|
||||
translate([0,-52,0]) ycyl(l=32, d=12, rounding=1);
|
||||
translate([0,-67.5,9.5]) rotate([-90,0,0]) cuboid([20,31,5], rounding=1);
|
||||
}
|
||||
}
|
||||
|
||||
// Springs
|
||||
color("orange", alpha=.5) {
|
||||
translate([0,15,-35]) zcyl(l=9.5, d=9);
|
||||
translate([0,-15,-35]) zcyl(l=9.5, d=9);
|
||||
translate([0,-40,-0]) ycyl(l=20, d=9);
|
||||
}
|
||||
// Enclosure
|
||||
outerWidth=30;
|
||||
outerLength=141;
|
||||
innerWidth=22;
|
||||
innerLength=135;
|
||||
|
||||
color("cyan", alpha=0.5) {
|
||||
translate([0,0,19]) difference() {
|
||||
union() {
|
||||
translate([0,0,10]) prismoid(size1=[outerWidth,outerLength], size2=[outerWidth,25], h=43, rounding=5);
|
||||
translate([0,0,-25]) cuboid([outerWidth,outerLength,70], rounding=5, edges=[FRONT+RIGHT,FRONT+LEFT,BACK+RIGHT,BACK+LEFT]);
|
||||
}
|
||||
translate([0,0,-25]) cuboid([innerWidth,innerLength,70], rounding=1);
|
||||
translate([0,0,10]) prismoid(size1=[innerWidth,innerLength], size2=[innerWidth,30], h=40, rounding=5);
|
||||
translate([0,0,-19]) {
|
||||
xcyl(l=60, d=38);
|
||||
* cuboid([60,35,35], rounding=15);
|
||||
translate([0,70,0]) ycyl(l=20, r=7);
|
||||
translate([0,0,70]) zcyl(l=20, r=7);
|
||||
}
|
||||
}
|
||||
difference() {
|
||||
union() {
|
||||
translate([0,60,-38]) cuboid([30,17,6], rounding=3);
|
||||
translate([0,-60,-38]) cuboid([30,17,6], rounding=3);
|
||||
}
|
||||
translate([0,60,-38.5]) zcyl(l=10, r=2.25);
|
||||
translate([0,60,-37]) rotate([180,0,0]) DIN931("M4");
|
||||
translate([0,-60,-38.5]) zcyl(l=10, r=2.25);
|
||||
translate([0,-60,-37]) rotate([180,0,0]) DIN931("M4");
|
||||
}
|
||||
}
|
||||
// Cover
|
||||
* translate([0,0,-44.5]) {
|
||||
difference() {
|
||||
cuboid([50,160,7], rounding=5, edges=[TOP,FRONT+RIGHT,FRONT+LEFT,BACK+RIGHT,BACK+LEFT]);
|
||||
translate([0,60,3.5]) {
|
||||
zcyl(l=10, r=2.25);
|
||||
translate([0,0,-5]) zcyl(l=4, r=3.3);
|
||||
}
|
||||
translate([0,-60,3.5]) {
|
||||
zcyl(l=10, r=2.25);
|
||||
translate([0,0,-5]) zcyl(l=4, r=3.3);
|
||||
}
|
||||
}
|
||||
translate([0,15,4]) {
|
||||
zcyl(l=2, r=5.5);
|
||||
tube(od=11, wall=1, h=5);
|
||||
}
|
||||
translate([0,-15,4]) {
|
||||
zcyl(l=2, r=5.5);
|
||||
tube(od=11, wall=1, h=5);
|
||||
}
|
||||
}
|
||||
319
tir_sportif/dioptre/scad/dioptre_v2.scad
Normal file
@@ -0,0 +1,319 @@
|
||||
$fn=60;
|
||||
|
||||
// Ball joint
|
||||
size=8; // size of the ball joint
|
||||
joint_spacing =0.75; // some space between them?
|
||||
joint_thickness = 2; // thickness of the arms
|
||||
joint_arms = 4; // how many arms do you want?
|
||||
arm_width = 7; // actually: how much is removed from the arms Larger values will remove more
|
||||
|
||||
// Finger
|
||||
f_len=45;
|
||||
f_dia=5;
|
||||
|
||||
// Render settings
|
||||
$fs=0.8; // def 1, 0.2 is high res
|
||||
$fa=4;//def 12, 3 is very nice
|
||||
|
||||
/*[Torus]*/
|
||||
ShowTorus = false;
|
||||
Torus_Diameter = 9.5; //[.1:.01:400]
|
||||
Torus_Circle_Radius = 7; //[.1:.01:400]
|
||||
Torus_Fragments = 60; //[1:.01:200]
|
||||
Rotate_TorusX = 90; //[0:.01:360]
|
||||
Rotate_TorusY = 0; //[0:.01:360]
|
||||
Rotate_TorusZ = 0; //[0:.01:360]
|
||||
Move_TorusX = 0; //[-400:.01:400]
|
||||
Move_TorusY = 0; //[-400:.01:400]
|
||||
Move_TorusZ = -18; //[-400:.01:400]
|
||||
|
||||
include<ujoint.scad>
|
||||
include<threads.scad>
|
||||
include <BOSL2/std.scad>
|
||||
include <BOSL2/shapes2d.scad>
|
||||
include <BOSL2/gears.scad>
|
||||
include <boltsos_0.4.1/BOLTS.scad>
|
||||
|
||||
module bolt() {
|
||||
difference() {
|
||||
cuboid([20,20,20], rounding=1);
|
||||
zcyl(l=20, d=15);
|
||||
}
|
||||
translate([0,0,-10]) mirror([0,1,0]) RodEnd(15, 20, thread_len=20, thread_diam=12, thread_pitch=4);
|
||||
}
|
||||
|
||||
module ball() {
|
||||
sphere(r=size);
|
||||
/* translate([0,0,-size]) cylinder(r1=f_dia-2,r2=f_dia-4,h=3); */
|
||||
translate([0,0,-f_len/2-3]) /* cylinder(r=8,h=3); */ zcyl(l=f_len, d=f_dia, rounding=2.5);
|
||||
}
|
||||
|
||||
module ball2() {
|
||||
sphere(r=size);
|
||||
/* translate([0,0,-size]) cylinder(r1=f_dia-2,r2=f_dia-4,h=3); */
|
||||
translate([0,0,-f_len/3+3]) /* cylinder(r=8,h=3); */ tube(od=f_dia+3, wall=1, l=f_len/3, rounding=1);
|
||||
}
|
||||
|
||||
module joint() {
|
||||
difference()
|
||||
{
|
||||
sphere(r=size+joint_spacing+joint_thickness);
|
||||
sphere(r=size+joint_spacing);
|
||||
translate([0,0,-size-3]) cube([size+joint_spacing+joint_thickness+25,size+joint_spacing+joint_thickness+25,18],center=true);
|
||||
for(i=[0:joint_arms])
|
||||
{
|
||||
rotate([0,0,360/joint_arms*i]) translate([-arm_width/2,0, -size/2-4])
|
||||
cube([arm_width,size+joint_spacing+joint_thickness+20,size+6]);
|
||||
}
|
||||
}
|
||||
translate([0,0,size-2]) cylinder(r2=8,r1=8,h=5);
|
||||
|
||||
}
|
||||
|
||||
module Torus() {
|
||||
InnerRadius = Torus_Circle_Radius/2;
|
||||
OuterRadius = Torus_Diameter/2-Torus_Circle_Radius/2;
|
||||
rotate(a = [Rotate_TorusX, 0, 0])
|
||||
rotate(a = [0, Rotate_TorusY, 0])
|
||||
rotate(a = [0, 0, Rotate_TorusZ])
|
||||
translate([Move_TorusX, 0, 0])
|
||||
translate([0, Move_TorusY, 0])
|
||||
translate([0, 0, Move_TorusZ])
|
||||
|
||||
if (ShowTorus) {
|
||||
rotate_extrude(convexity = 10, $fn = Torus_Fragments)
|
||||
translate([Torus_Diameter, 0, 0])
|
||||
circle(r = Torus_Circle_Radius, $fn = 144);
|
||||
}
|
||||
else {
|
||||
//
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*[screws]*/
|
||||
color("blue") {
|
||||
translate ([0,14,51]) rotate([0,180,0]) {
|
||||
cylinder(h=15, d=12, $fn=6);
|
||||
translate([0,0,15]) {
|
||||
mirror([0,1,0]) RodStart(20, 3, thread_len=68, thread_diam=11, thread_pitch=4);
|
||||
linear_extrude(5)
|
||||
spur_gear2d(circ_pitch=7, teeth=16, pressure_angle=14);
|
||||
}
|
||||
}
|
||||
translate ([0,52,51]) rotate([0,180,0]) {
|
||||
* cylinder(h=15, d=12, $fn=6);
|
||||
translate([0,0,15]) {
|
||||
mirror([0,1,0]) RodStart(20, 3, thread_len=68, thread_diam=11, thread_pitch=4);
|
||||
linear_extrude(5)
|
||||
rotate([0,0,10]) spur_gear2d(circ_pitch=7, teeth=16, pressure_angle=14);
|
||||
}
|
||||
}
|
||||
}
|
||||
color("red") {
|
||||
translate ([51,-14,0]) rotate([0,-90,0]) {
|
||||
cylinder(h=15, d=12, $fn=6);
|
||||
translate([0,0,15]) {
|
||||
mirror([0,1,0]) RodStart(20, 3, thread_len=68, thread_diam=11, thread_pitch=4);
|
||||
linear_extrude(5)
|
||||
spur_gear2d(circ_pitch=7, teeth=16, pressure_angle=14);
|
||||
}
|
||||
}
|
||||
translate ([36.5,33,0]) rotate([0,-90,0]) {
|
||||
linear_extrude(5)
|
||||
rotate([0,0,8]) spur_gear2d(circ_pitch=7, teeth=24, pressure_angle=14);
|
||||
}
|
||||
translate ([51,80,0]) rotate([0,-90,0]) {
|
||||
* cylinder(h=15, d=12, $fn=6);
|
||||
translate([0,0,15]) {
|
||||
mirror([0,1,0]) RodStart(20, 3, thread_len=68, thread_diam=11, thread_pitch=4);
|
||||
linear_extrude(5)
|
||||
spur_gear2d(circ_pitch=7, teeth=16, pressure_angle=14);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*[rings]*/
|
||||
* color("grey") {
|
||||
translate ([0,15,-34.5]) {
|
||||
tube(od=15, wall=1.8, h=5, rounding=1);
|
||||
}
|
||||
translate ([-34.5,-15,0]) {
|
||||
rotate([0,90,0]) {
|
||||
tube(od=15, wall=1.8, h=5, rounding=1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*[rotule]*/
|
||||
/*[y_axis]*/
|
||||
* color("cyan") {
|
||||
translate([0,14,0]) {
|
||||
bolt();
|
||||
}
|
||||
}
|
||||
/*[x_axis */
|
||||
* color("pink") {
|
||||
translate([0,-14,0]) {
|
||||
rotate([0,90,0]) {
|
||||
bolt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*[plate1]*/
|
||||
translate([0,0,0]) {
|
||||
/* Main */
|
||||
cuboid([45,3,45], rounding=1);
|
||||
translate([21,13,16]) cuboid([3,28,5], rounding=1);
|
||||
translate([-21,13,16]) cuboid([3,28,5], rounding=1);
|
||||
translate([21,13,-16]) cuboid([3,28,5], rounding=1);
|
||||
translate([-21,13,-16]) cuboid([3,28,5], rounding=1);
|
||||
//
|
||||
translate([16,-13,21]) cuboid([5,28,3], rounding=1);
|
||||
translate([-16,-13,21]) cuboid([5,28,3], rounding=1);
|
||||
translate([16,-13,-21]) cuboid([5,28,3], rounding=1);
|
||||
translate([-16,-13,-21]) cuboid([5,28,3], rounding=1);
|
||||
//
|
||||
difference() {
|
||||
cuboid([30,14,30], rounding=1);
|
||||
translate([0,-6,0]) cuboid([21,4,55], rounding=1);
|
||||
translate([0,6,0]) cuboid([55,4,21], rounding=1);
|
||||
}
|
||||
// Front
|
||||
translate([0,-26,0]) cuboid([45,3,45], rounding=1);
|
||||
translate([0,-31,0]) rotate([90,0,0]) tube(od=16, wall=2, h=10, rounding=1);
|
||||
// Sight
|
||||
* translate([0,-33,0]) {
|
||||
rotate([90,0,0]) {
|
||||
tube(od=12, wall=3, h=12, chamfer=0.5);
|
||||
translate([0,0,10.5]) tube(h=10, or1=6, or2=20, wall=3, chamfer=0.5);
|
||||
}
|
||||
}
|
||||
// Back
|
||||
translate([0,26,0]) cuboid([45,3,45], rounding=1);
|
||||
// Joint
|
||||
* translate([0,38,0]) rotate([90,0,0]) joint();
|
||||
}
|
||||
|
||||
/*[plate2]*/
|
||||
translate([0,66,0]) rotate([0,0,180]) {
|
||||
/* Main */
|
||||
cuboid([45,3,45], rounding=1);
|
||||
translate([21,13,16]) cuboid([3,28,5], rounding=1);
|
||||
translate([-21,13,16]) cuboid([3,28,5], rounding=1);
|
||||
translate([21,13,-16]) cuboid([3,28,5], rounding=1);
|
||||
translate([-21,13,-16]) cuboid([3,28,5], rounding=1);
|
||||
//
|
||||
translate([16,-13,21]) cuboid([5,28,3], rounding=1);
|
||||
translate([-16,-13,21]) cuboid([5,28,3], rounding=1);
|
||||
translate([16,-13,-21]) cuboid([5,28,3], rounding=1);
|
||||
translate([-16,-13,-21]) cuboid([5,28,3], rounding=1);
|
||||
//
|
||||
difference() {
|
||||
cuboid([30,14,30], rounding=1);
|
||||
translate([0,-6,0]) cuboid([21,4,55], rounding=1);
|
||||
translate([0,6,0]) cuboid([55,4,21], rounding=1);
|
||||
}
|
||||
// Front
|
||||
translate([0,-26,0]) cuboid([45,3,45], rounding=1);
|
||||
translate([0,-31,0]) rotate([90,0,0]) tube(od=16, wall=2, h=10, rounding=1);
|
||||
// Sight
|
||||
* translate([0,-33,0]) {
|
||||
rotate([90,0,0]) {
|
||||
tube(od=12, wall=3, h=12, chamfer=0.5);
|
||||
translate([0,0,10.5]) tube(h=10, or1=6, or2=20, wall=3, chamfer=0.5);
|
||||
}
|
||||
}
|
||||
// Back
|
||||
translate([0,26,0]) cuboid([45,3,45], rounding=1);
|
||||
// Joint
|
||||
* translate([0,38,0]) rotate([90,0,0]) joint();
|
||||
}
|
||||
|
||||
/*[balls]*/
|
||||
* color("orange") {
|
||||
translate([0,38,0]) {
|
||||
rotate([90,0,0]) ball();
|
||||
}
|
||||
translate([0,98,0]) {
|
||||
rotate([-90,0,0]) ball2();
|
||||
}
|
||||
}
|
||||
|
||||
/*[enclosure]*/
|
||||
color("white", alpha=.5) {
|
||||
difference() {
|
||||
translate([0,15,0]) cuboid([80,100,80], rounding=1);
|
||||
translate([0,15,0]) cuboid([74,110,74], rounding=1);
|
||||
cuboid([60,40,60], rounding=20);
|
||||
translate([0,14,37.5]) {
|
||||
zcyl(l=10, d=14);
|
||||
}
|
||||
translate([37.5,-14,0]) {
|
||||
xcyl(l=10, d=14);
|
||||
}
|
||||
}
|
||||
translate([0,64,0]) {
|
||||
difference() {
|
||||
union() {
|
||||
cuboid([80,3,80], rounding=1);
|
||||
translate([0,39,100]) {
|
||||
cuboid([160,3,160], rounding=1);
|
||||
}
|
||||
}
|
||||
ycyl(l=3, d=f_dia+2, rounding=-1.5);
|
||||
translate([0,39,100]) {
|
||||
cuboid([110,4,110], rounding=1);
|
||||
}
|
||||
}
|
||||
}
|
||||
// Screw guides
|
||||
translate ([-37,-15,0]) {
|
||||
rotate([0,90,0]) {
|
||||
tube(od=17, wall=1, h=4, rounding=1);
|
||||
}
|
||||
}
|
||||
translate ([0,15,-37]) {
|
||||
tube(od=17, wall=1, h=4, rounding=1);
|
||||
}
|
||||
// Back
|
||||
translate([0,114,0]) {
|
||||
cuboid([80,3,80], rounding=1);
|
||||
translate([0,0,100]) {
|
||||
cuboid([160,3,160], rounding=1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*[grp_holder]*/
|
||||
* translate([0,108,0]) {
|
||||
difference() {
|
||||
union() {
|
||||
translate([0,0,16]) {
|
||||
rotate([90,0,0]) {
|
||||
linear_extrude(6, center=true)
|
||||
trapezoid(55, 20, 80, rounding=5);
|
||||
}
|
||||
}
|
||||
translate([0,0,100]) {
|
||||
cuboid([126,6,126], rounding=1);
|
||||
}
|
||||
}
|
||||
translate([0,0,23]) {
|
||||
rotate([90,0,0]) {
|
||||
linear_extrude(6, center=true)
|
||||
trapezoid(27, 30, 60, rounding=5);
|
||||
}
|
||||
}
|
||||
translate([0,-1.5,100]) cuboid([121,5,121]);
|
||||
* translate([0,0,100]) cuboid([116,7,116], rounding=2);
|
||||
ycyl(l=6, d=f_dia+.5, rounding=-3);
|
||||
}
|
||||
/*[plexi]*/
|
||||
color("cyan", alpha=.3) translate([0,-1,100]) cuboid([120,4,120], rounding=1);
|
||||
}
|
||||
/*[ball2]*/
|
||||
* translate([0,98,0]) rotate([-90,0,0]) joint();
|
||||
33
tir_sportif/dioptre/scad/enclosure.scad
Normal file
@@ -0,0 +1,33 @@
|
||||
$fn=60;
|
||||
|
||||
include<threads.scad>
|
||||
include <BOSL2/std.scad>
|
||||
include <BOSL2/shapes2d.scad>
|
||||
include <boltsos_0.4.1/BOLTS.scad>
|
||||
|
||||
// Enclosure
|
||||
color("cyan") {
|
||||
translate([0,0,19]) difference() {
|
||||
union() {
|
||||
translate([0,0,10]) prismoid(size1=[30,141], size2=[20,30], h=43, rounding=5);
|
||||
translate([0,0,-25]) cuboid([30,141,70], rounding=5, edges=[FRONT+RIGHT,FRONT+LEFT,BACK+RIGHT,BACK+LEFT]);
|
||||
}
|
||||
translate([0,0,-25]) cuboid([22,135,70], rounding=1);
|
||||
translate([0,0,10]) prismoid(size1=[22,135], size2=[20,30], h=40, rounding=5);
|
||||
translate([0,0,-19]) {
|
||||
cuboid([60,35,35], rounding=15);
|
||||
translate([0,70,0]) ycyl(l=20, r=7);
|
||||
translate([0,0,70]) zcyl(l=20, r=7);
|
||||
}
|
||||
}
|
||||
difference() {
|
||||
union() {
|
||||
translate([0,60,-38]) cuboid([30,17,6], rounding=3);
|
||||
translate([0,-60,-38]) cuboid([30,17,6], rounding=3);
|
||||
}
|
||||
translate([0,60,-38.5]) zcyl(l=10, r=2.25);
|
||||
translate([0,60,-37]) rotate([180,0,0]) DIN931("M4");
|
||||
translate([0,-60,-38.5]) zcyl(l=10, r=2.25);
|
||||
translate([0,-60,-37]) rotate([180,0,0]) DIN931("M4");
|
||||
}
|
||||
}
|
||||
66
tir_sportif/dioptre/scad/knob.scad
Normal file
@@ -0,0 +1,66 @@
|
||||
//knob parameters
|
||||
KNOB_HEIGHT=10;
|
||||
KNOB_DIAM=30;
|
||||
|
||||
//screw parameters
|
||||
SCREWHEAD_FACETOFACE=11;
|
||||
SCREWHEAD_DEPTH=8;
|
||||
THRU_HOLE_DIAM=0;
|
||||
|
||||
//grippy cutouts parameters
|
||||
NUM_GRIP_CUTOUTS=16;
|
||||
GRIP_CUTOUT_DIAM=4;
|
||||
CUTOUT_RADIUS_ADJ=1;
|
||||
|
||||
module FaceToFaceHex(width,height){
|
||||
cube([width/sqrt(3),width,height],center = true,$fn=64);
|
||||
rotate([0,0,120])cube([width/sqrt(3),width,height],center = true);
|
||||
rotate([0,0,240])cube([width/sqrt(3),width,height],center = true);
|
||||
|
||||
}
|
||||
// a=angle, r=radius of rotation
|
||||
module rotate_on_circle(angle, radius) {
|
||||
dx=radius*sin(angle);
|
||||
dy=radius*cos(angle);
|
||||
translate([dx,dy,0])
|
||||
children();
|
||||
}
|
||||
|
||||
difference(){
|
||||
//Knob
|
||||
union(){
|
||||
translate([0, 0, -(((KNOB_HEIGHT-SCREWHEAD_DEPTH)/2)+0.01)])
|
||||
cylinder(r=KNOB_DIAM/2, h=KNOB_HEIGHT, center=true,$fn=64);
|
||||
translate([0, 0, -(((KNOB_HEIGHT-SCREWHEAD_DEPTH+KNOB_HEIGHT)/2))]) {
|
||||
* cylinder(r=KNOB_DIAM/4, h=KNOB_HEIGHT/2, center=true,$fn=64);
|
||||
}
|
||||
};
|
||||
|
||||
//screw
|
||||
union(){
|
||||
//screwHead
|
||||
FaceToFaceHex(SCREWHEAD_FACETOFACE,SCREWHEAD_DEPTH);
|
||||
//screwHole
|
||||
translate([0, 0, -(((KNOB_HEIGHT+SCREWHEAD_DEPTH)/2)+0.001)])
|
||||
cylinder(r=THRU_HOLE_DIAM/2, h=KNOB_HEIGHT+KNOB_HEIGHT/2+0.001, center=true,$fn=64);
|
||||
};
|
||||
|
||||
//grippyCutouts
|
||||
for(i=[1:NUM_GRIP_CUTOUTS]){
|
||||
rot_angle=(360/NUM_GRIP_CUTOUTS)*i;
|
||||
translate([0,0,-(((KNOB_HEIGHT-SCREWHEAD_DEPTH)/2)+0.01)])
|
||||
rotate_on_circle(rot_angle,(KNOB_DIAM/2)+CUTOUT_RADIUS_ADJ)
|
||||
cylinder(r=GRIP_CUTOUT_DIAM/2,h=KNOB_HEIGHT+0.01,center=true,$fn=64);
|
||||
};
|
||||
|
||||
//top filet
|
||||
translate([0, 0,-(((KNOB_HEIGHT-SCREWHEAD_DEPTH)/2)-0.1)])
|
||||
rotate_extrude()
|
||||
polygon(points = [[KNOB_DIAM,KNOB_HEIGHT], [0,KNOB_HEIGHT+2],[0,KNOB_HEIGHT],[KNOB_DIAM/1.29,0]],$fn=100);
|
||||
//down filet
|
||||
color("pink") {
|
||||
translate([0, 0,-(((KNOB_HEIGHT-SCREWHEAD_DEPTH)/2)+0.1)])
|
||||
rotate_extrude()
|
||||
polygon(points = [[-KNOB_DIAM,-KNOB_HEIGHT], [0,-KNOB_HEIGHT-2],[0,-KNOB_HEIGHT],[-KNOB_DIAM/1.29,0]],$fn=100);
|
||||
}
|
||||
}
|
||||
183
tir_sportif/dioptre/scad/screws.scad
Normal file
@@ -0,0 +1,183 @@
|
||||
$fn=80;
|
||||
|
||||
include <threads.scad>
|
||||
include <BOSL2/std.scad>
|
||||
include <BOSL2/gears.scad>
|
||||
|
||||
sl=75;
|
||||
td=11;
|
||||
tp=4;
|
||||
sw=5;
|
||||
cp=7;
|
||||
te1=12;
|
||||
te2=25;
|
||||
pa=20;
|
||||
|
||||
module l_screw() {
|
||||
mirror([0,1,0]) RodStart(sw*2, sw, thread_len=sl, thread_diam=td, thread_pitch=tp);
|
||||
translate([0,0,sw]) {
|
||||
linear_extrude(sw, center=true)
|
||||
spur_gear2d(circ_pitch=cp, teeth=te1, pressure_angle=pa);
|
||||
}
|
||||
/* translate([0,0,sl+sw]) zcyl(l=sw, d=td+1, rounding=1); */
|
||||
}
|
||||
module l_bolt() {
|
||||
difference() {
|
||||
cuboid([20,20,20], rounding=1);
|
||||
zcyl(l=20, d=15);
|
||||
}
|
||||
translate([0,0,-10]) mirror([0,1,0]) RodEnd(15, 20, thread_len=20, thread_diam=12, thread_pitch=4);
|
||||
}
|
||||
module r_screw() {
|
||||
RodStart(sw*2, sw, thread_len=sl, thread_diam=td, thread_pitch=tp);
|
||||
translate([0,0,sw]) {
|
||||
linear_extrude(sw, center=true)
|
||||
spur_gear2d(circ_pitch=cp, teeth=te1, pressure_angle=pa);
|
||||
}
|
||||
/* translate([0,0,sl+sw]) zcyl(l=sw, d=td+1, rounding=1); */
|
||||
}
|
||||
module r_bolt() {
|
||||
difference() {
|
||||
cuboid([20,20,20], rounding=1);
|
||||
zcyl(l=20, d=15);
|
||||
}
|
||||
translate([0,0,-10]) RodEnd(15, 20, thread_len=20, thread_diam=12, thread_pitch=4);
|
||||
}
|
||||
module plate() {
|
||||
/* Main */
|
||||
cuboid([45,3,45], rounding=1);
|
||||
translate([21,13,16]) cuboid([3,28,5], rounding=1);
|
||||
translate([-21,13,16]) cuboid([3,28,5], rounding=1);
|
||||
translate([21,13,-16]) cuboid([3,28,5], rounding=1);
|
||||
translate([-21,13,-16]) cuboid([3,28,5], rounding=1);
|
||||
//
|
||||
translate([16,-13,21]) cuboid([5,28,3], rounding=1);
|
||||
translate([-16,-13,21]) cuboid([5,28,3], rounding=1);
|
||||
translate([16,-13,-21]) cuboid([5,28,3], rounding=1);
|
||||
translate([-16,-13,-21]) cuboid([5,28,3], rounding=1);
|
||||
//
|
||||
difference() {
|
||||
cuboid([30,14,30], rounding=1);
|
||||
translate([0,-6,0]) cuboid([21,4,55], rounding=1);
|
||||
translate([0,6,0]) cuboid([55,4,21], rounding=1);
|
||||
}
|
||||
// Front
|
||||
translate([0,-26,0]) cuboid([45,3,45], rounding=1);
|
||||
translate([0,-31,0]) rotate([90,0,0]) tube(od=16, wall=2, h=10, rounding=1);
|
||||
// Back
|
||||
translate([0,26,0]) cuboid([45,3,45], rounding=1);
|
||||
}
|
||||
|
||||
/*[screws]*/
|
||||
/*[x_axis]*/
|
||||
color("cyan") {
|
||||
translate([-14,0,0]) l_bolt();
|
||||
translate([14,0,0]) l_bolt();
|
||||
}
|
||||
color("blue") {
|
||||
translate ([-14,0,sl/2+5]) rotate([0,180,14]) {
|
||||
translate([0,0,-10]) cylinder(h=15, d=td+1, $fn=6);
|
||||
l_screw();
|
||||
}
|
||||
translate ([14,0,sl/2+5]) rotate([0,180,0]) l_screw();
|
||||
}
|
||||
/*[y_axis */
|
||||
color("pink") {
|
||||
translate([-42,0,0]) rotate([-90,0,0]) r_bolt();
|
||||
translate([42,0,0]) rotate([-90,0,0]) l_bolt();
|
||||
}
|
||||
|
||||
color("red") {
|
||||
translate ([-42,-sl/2-5,0]) rotate([-90,6,0]) r_screw();
|
||||
|
||||
translate ([0,-sl/2,0]) rotate([90,0,0]) {
|
||||
cylinder(h=15, d=td+1, $fn=6);
|
||||
linear_extrude(sw, center=true)
|
||||
spur_gear2d(circ_pitch=cp, teeth=te2, pressure_angle=pa);
|
||||
}
|
||||
|
||||
translate ([42,-sl/2-5,0]) rotate([-90,-6,0]) l_screw();
|
||||
}
|
||||
/*[plates]*/
|
||||
translate([-28,0,0]) rotate([0,0,-90]) plate();
|
||||
translate([28,0,0]) rotate([0,0,90]) plate();
|
||||
|
||||
/*[enclosure]*/
|
||||
* color("white", alpha=.5) {
|
||||
difference() {
|
||||
cuboid([126,86,86], rounding=1);
|
||||
translate([3,0,0]) cuboid([126,80,80]);
|
||||
translate([0,0,41.5]) cuboid([70,50,5]);
|
||||
translate([0,-41.5,0]) cuboid([114,4,74]);
|
||||
cuboid([140,55,55], rounding=20);
|
||||
translate([-14,0,38.5]) zcyl(l=10, d=td+2);
|
||||
translate([14,0,40]) zcyl(l=4, d=td+1);
|
||||
translate([0,-38.5,0]) ycyl(l=10, d=td+2);
|
||||
translate([-42,-40,0]) ycyl(l=4, d=td+1);
|
||||
translate([42,-40,0]) ycyl(l=4, d=td+1);
|
||||
}
|
||||
color("grey") {
|
||||
translate([0,-33,0]) {
|
||||
ycyl(l=3, d=20);
|
||||
cuboid([10,2,85]);
|
||||
}
|
||||
}
|
||||
translate([-14,0,-38.5]) tube(od=16, wall=1.5, h=5, rounding=1);
|
||||
translate([14,0,-38.5]) tube(od=16, wall=1.5, h=5, rounding=1);
|
||||
rotate([90,0,0]) {
|
||||
translate([-42,0,-38.5]) tube(od=16, wall=1.5, h=5, rounding=1);
|
||||
translate([42,0,-38.5]) tube(od=16, wall=1.5, h=5, rounding=1);
|
||||
}
|
||||
/*[covers]*/
|
||||
// Top
|
||||
translate ([0,0,65]) {
|
||||
difference() {
|
||||
union() {
|
||||
cuboid([76,56,2], rounding=1);
|
||||
translate([0,0,-1.5]) cuboid([70,50,5], rounding=1);
|
||||
}
|
||||
translate([-14,0,-1]) zcyl(l=6, d=td+2);
|
||||
translate([14,0,-3]) zcyl(l=3, d=td+1);
|
||||
}
|
||||
}
|
||||
// Right
|
||||
translate ([0,-65,0]) {
|
||||
difference() {
|
||||
union() {
|
||||
cuboid([126,2,86], rounding=1);
|
||||
translate([0,1.5,0]) cuboid([113,5,73], rounding=1);
|
||||
}
|
||||
translate([0,1,0]) ycyl(l=6, d=td+2);
|
||||
translate([-42,3,0]) ycyl(l=3, d=td+1);
|
||||
translate([42,3,0]) ycyl(l=3, d=td+1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*[grp_holder]*/
|
||||
* translate([68,0,0]) rotate([0,0,-90]) {
|
||||
difference() {
|
||||
union() {
|
||||
translate([0,0,16]) {
|
||||
rotate([90,0,0]) {
|
||||
linear_extrude(6, center=true)
|
||||
trapezoid(55, 20, 80, rounding=5);
|
||||
}
|
||||
}
|
||||
translate([0,0,100]) {
|
||||
cuboid([126,6,126], rounding=1);
|
||||
}
|
||||
}
|
||||
translate([0,0,23]) {
|
||||
rotate([90,0,0]) {
|
||||
linear_extrude(6, center=true)
|
||||
trapezoid(27, 30, 60, rounding=5);
|
||||
}
|
||||
}
|
||||
translate([0,-1.5,100]) cuboid([121,5,121]);
|
||||
* translate([0,0,100]) cuboid([116,7,116], rounding=2);
|
||||
ycyl(l=6, d=10, rounding=-3);
|
||||
}
|
||||
/*[plexi]*/
|
||||
color("cyan", alpha=.3) translate([0,-1,100]) cuboid([120,4,120], rounding=1);
|
||||
}
|
||||
25
tir_sportif/dioptre/scad/sight.scad
Normal file
@@ -0,0 +1,25 @@
|
||||
$fn=60;
|
||||
|
||||
include<threads.scad>
|
||||
include <BOSL2/std.scad>
|
||||
include <BOSL2/shapes2d.scad>
|
||||
include <boltsos_0.4.1/BOLTS.scad>
|
||||
|
||||
// Sight
|
||||
color("grey") {
|
||||
// Base
|
||||
translate([0,0,20]) {
|
||||
rotate ([-90,0,0]) {
|
||||
difference() {
|
||||
translate([0,-5,0]) cuboid([20,50,40], rounding=2);
|
||||
xcyl(l=20, d=12.5);
|
||||
}
|
||||
translate([0,-30 ,0]) rotate([-90,0,0]) tube(od=15, wall=3, h=7, chamfer=0.5);
|
||||
}
|
||||
// Eye
|
||||
translate([0,50,-9]) {
|
||||
tube(od=12, wall=3, h=22, chamfer=0.5);
|
||||
translate([0,0,16]) tube(h=15, or1=6, or2=20, wall=3, chamfer=0.5);
|
||||
}
|
||||
}
|
||||
}
|
||||
32
tir_sportif/dioptre/scad/torus.scad
Normal file
@@ -0,0 +1,32 @@
|
||||
/*[Torus]*/
|
||||
ShowTorus = false;
|
||||
Torus_Diameter = .1; //[.1:.01:400]
|
||||
Torus_Circle_Radius = .1; //[.1:.01:400]
|
||||
Torus_Fragments = 10; //[1:.01:200]
|
||||
Rotate_TorusX = 0; //[0:.01:360]
|
||||
Rotate_TorusY = 0; //[0:.01:360]
|
||||
Rotate_TorusZ = 0; //[0:.01:360]
|
||||
Move_TorusX = 0; //[-400:.01:400]
|
||||
Move_TorusY = 0; //[-400:.01:400]
|
||||
Move_TorusZ = 0; //[-400:.01:400]
|
||||
|
||||
module Torus() {
|
||||
InnerRadius = Torus_Circle_Radius/2;
|
||||
OuterRadius = Torus_Diameter/2-Torus_Circle_Radius/2;
|
||||
rotate(a = [Rotate_TorusX, 0, 0])
|
||||
rotate(a = [0, Rotate_TorusY, 0])
|
||||
rotate(a = [0, 0, Rotate_TorusZ])
|
||||
translate([Move_TorusX, 0, 0])
|
||||
translate([0, Move_TorusY, 0])
|
||||
translate([0, 0, Move_TorusZ])
|
||||
|
||||
if (ShowTorus){
|
||||
rotate_extrude(convexity = 10, $fn = Torus_Fragments)
|
||||
translate([Torus_Diameter, 0, 0])
|
||||
circle(r = Torus_Circle_Radius, $fn = 144);
|
||||
}
|
||||
else {
|
||||
//
|
||||
}}
|
||||
|
||||
// Torus();
|
||||
3
tir_sportif/dioptre/stl/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
### STL files
|
||||
|
||||
Generated with [UltiMaker Cura](https://ultimaker.com/software/ultimaker-cura/) Slicing Software.
|
||||
BIN
tir_sportif/dioptre/stl/ball.stl
Normal file
BIN
tir_sportif/dioptre/stl/blades.stl
Normal file
BIN
tir_sportif/dioptre/stl/blades_v2.stl
Normal file
BIN
tir_sportif/dioptre/stl/bolt.stl
Normal file
BIN
tir_sportif/dioptre/stl/box.stl
Normal file
BIN
tir_sportif/dioptre/stl/cover_front.stl
Normal file
BIN
tir_sportif/dioptre/stl/cover_top.stl
Normal file
BIN
tir_sportif/dioptre/stl/covers.stl
Normal file
BIN
tir_sportif/dioptre/stl/enclosure.stl
Normal file
BIN
tir_sportif/dioptre/stl/grp_holder.stl
Normal file
BIN
tir_sportif/dioptre/stl/knob.stl
Normal file
BIN
tir_sportif/dioptre/stl/plate.stl
Normal file
BIN
tir_sportif/dioptre/stl/ring.stl
Normal file
BIN
tir_sportif/dioptre/stl/screws.stl
Normal file
BIN
tir_sportif/dioptre/stl/sight.stl
Normal file
@@ -0,0 +1,92 @@
|
||||
$fn = 200;
|
||||
|
||||
include <boltsos_0.4.1/BOLTS.scad>
|
||||
|
||||
difference() {
|
||||
union() {
|
||||
cube([39.7, 22, 6]);
|
||||
color("cyan") {
|
||||
rotate([90,0,0]) {
|
||||
translate([0, 0, -11]) {
|
||||
linear_extrude(height = 3, center=true)
|
||||
import("wing.svg");
|
||||
}
|
||||
translate([0, 0, -3.5]) {
|
||||
linear_extrude(height = 7, center=true)
|
||||
import("spacer.svg");
|
||||
}
|
||||
translate([0, 0, -18.5]) {
|
||||
linear_extrude(height = 7, center=true)
|
||||
import("spacer.svg");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
color("blue") {
|
||||
union() {
|
||||
translate([4.8, 4, 0]) {
|
||||
cylinder(h=10, d=4);
|
||||
translate([0,0,10]) {
|
||||
cylinder(h=4, d=5.5);
|
||||
}
|
||||
}
|
||||
translate([37, 4, 0]) {
|
||||
cylinder(h=10, d=4);
|
||||
translate([0,0,10]) {
|
||||
cylinder(h=4, d=5.5);
|
||||
}
|
||||
}
|
||||
translate([4.8, 17.3, 0]) {
|
||||
cylinder(h=10, d=4);
|
||||
translate([0,0,10]) {
|
||||
cylinder(h=4, d=5.5);
|
||||
}
|
||||
}
|
||||
translate([37, 17.3, 0]) {
|
||||
cylinder(h=10, d=4);
|
||||
translate([0,0,10]) {
|
||||
cylinder(h=4, d=5.5);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
* translate([0, 0, 5]) {
|
||||
cube([18, 22, 8]);
|
||||
}
|
||||
* translate([33.15, 0, 5]) {
|
||||
cube([6.6, 22, 8]);
|
||||
}
|
||||
|
||||
color("red") {
|
||||
translate([0, 7.45, 0]) {
|
||||
cube([39.7, 7.1, 4]);
|
||||
}
|
||||
translate([24.5, 7.45, 0]) {
|
||||
cube([12.4, 7.1, 13]);
|
||||
}
|
||||
}
|
||||
|
||||
color("green") {
|
||||
translate([13.5,0,8.5]) {
|
||||
union() {
|
||||
translate([0,20,0]) {
|
||||
rotate([90,90,0]) {
|
||||
ISO4014(key="M3", l=20);
|
||||
}
|
||||
}
|
||||
translate([0,19.5,0]) {
|
||||
rotate([90,90,0]) {
|
||||
ISO4014(key="M3", l=20);
|
||||
}
|
||||
}
|
||||
translate([0,0,0]) {
|
||||
rotate([-90,90,0]) {
|
||||
cylinder(h=3, d=5.5);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
53
tir_sportif/feinwerkbau _lp103/LP103_treadedPlate/spacer.svg
Normal file
@@ -0,0 +1,53 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="39.700001mm"
|
||||
height="14.999906mm"
|
||||
viewBox="0 0 39.700002 14.999906"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
|
||||
sodipodi:docname="spacer.svg"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:zoom="4.8209497"
|
||||
inkscape:cx="74.985225"
|
||||
inkscape:cy="28.313923"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1015"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="36"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer1" />
|
||||
<defs
|
||||
id="defs1" />
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-43.40247,-84.931346)">
|
||||
<path
|
||||
id="path2"
|
||||
style="fill:#ffaaaa;stroke-width:1.14407;stroke-linecap:square"
|
||||
d="m 52.13217,86.931252 c -0.14881,0.473678 -0.229466,2.477509 -0.229444,3.000306 l -0.854211,1.300179 h -0.766878 v 3.700032 h 3.120739 3.500562 5.528861 v -5.000211 h -0.529166 c 2.2e-5,-0.522759 -0.08065,-2.526656 -0.229444,-3.000306 z m 4.770251,2.875249 c 0.897436,-1.24e-4 1.625081,0.727271 1.625224,1.624707 1.43e-4,0.897638 -0.727586,1.625366 -1.625224,1.625223 -0.897436,-1.43e-4 -1.62485,-0.727787 -1.624707,-1.625223 1.43e-4,-0.897234 0.727473,-1.624545 1.624707,-1.624707 z"
|
||||
sodipodi:nodetypes="cccccccccccccsssc" />
|
||||
<path
|
||||
id="rect1"
|
||||
style="fill:#d40000;fill-opacity:0.535346;stroke-width:5.45687;stroke-linecap:round"
|
||||
d="m 45.213778,86.931012 c -1.003352,0 -1.811259,0.807907 -1.811259,1.811259 V 99.931252 H 83.102421 V 88.742271 c 0,-1.003352 -0.807907,-1.811259 -1.811259,-1.811259 H 60.690353 l -0.713652,7.408333 h -5.982064 l -0.877982,-7.408333 z"
|
||||
sodipodi:nodetypes="ssccssccccs" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.3 KiB |
48
tir_sportif/feinwerkbau _lp103/LP103_treadedPlate/wing.svg
Normal file
@@ -0,0 +1,48 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="18.50042mm"
|
||||
height="14.999906mm"
|
||||
viewBox="0 0 18.50042 14.999906"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
|
||||
sodipodi:docname="wing.svg"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:zoom="8.1336326"
|
||||
inkscape:cx="31.781617"
|
||||
inkscape:cy="45.182763"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1015"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="36"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer1" />
|
||||
<defs
|
||||
id="defs1" />
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-43.40247,-84.931346)">
|
||||
<path
|
||||
id="path1"
|
||||
style="fill:#550000;stroke-width:0.17644;stroke-linecap:square"
|
||||
d="m 49.170981,86.938424 h -4.388233 c -0.764585,0 -1.380278,0.615176 -1.380278,1.37976 v 6.613033 h 23.9997 l 6e-4,-8.000028 c 0,0 -4.75287,0.08714 -5.512123,0 -0.455918,-0.05232 -0.88242,-0.238507 -1.079786,-0.344911 -0.630151,-0.508289 -2.122659,-1.65436 -4.343283,-1.654367 -2.220625,-6e-6 -4.821583,1.841767 -7.296597,2.006513 z m 7.731407,2.868077 c 0.05609,-8e-6 0.111771,0.0027 0.166398,0.0083 0.109254,0.01108 0.215008,0.03296 0.316777,0.06459 0.05088,0.01582 0.10074,0.03423 0.149345,0.05478 0.0486,0.02055 0.09606,0.04321 0.14211,0.06821 0.138159,0.07502 0.264364,0.169832 0.374654,0.280087 0.07353,0.0735 0.14002,0.153856 0.198438,0.240295 0.02921,0.04322 0.05611,0.0878 0.08113,0.133842 0.07507,0.138135 0.130801,0.288336 0.163297,0.447001 0.01083,0.05289 0.01925,0.106605 0.02481,0.161231 0.0056,0.05463 0.0083,0.110308 0.0083,0.166398 4.6e-5,0.336614 -0.102266,0.64907 -0.277502,0.908471 v 5.17e-4 c -0.02914,0.04311 -0.0605,0.08451 -0.09354,0.12454 v 5.17e-4 c -0.09931,0.120284 -0.215604,0.22613 -0.345198,0.313676 -0.08647,0.05841 -0.179244,0.108746 -0.276469,0.149862 -0.09723,0.04111 -0.199086,0.07293 -0.304891,0.09457 -0.105805,0.02164 -0.215424,0.03309 -0.327629,0.03307 -0.112179,-2e-5 -0.221852,-0.01141 -0.327628,-0.03307 -0.05289,-0.01083 -0.104667,-0.02447 -0.155546,-0.04031 -0.101759,-0.03167 -0.199366,-0.07294 -0.291456,-0.12299 -0.138134,-0.07507 -0.263882,-0.169796 -0.374137,-0.280086 -0.110151,-0.110187 -0.205095,-0.236131 -0.280086,-0.374138 v -5.16e-4 C 55.39862,92.067305 55.343247,91.91733 55.310787,91.758836 v -5.17e-4 c -0.01078,-0.05273 -0.01926,-0.106262 -0.02481,-0.160713 v -5.17e-4 c -0.0055,-0.05463 -0.0083,-0.109792 -0.0083,-0.165881 1e-5,-0.0559 0.0027,-0.111432 0.0083,-0.165882 v -5.16e-4 c 0.0222,-0.218294 0.08817,-0.423665 0.188103,-0.607715 v -5.17e-4 c 0.125066,-0.230192 0.303792,-0.426586 0.519864,-0.572575 0.08643,-0.05839 0.178772,-0.108748 0.275953,-0.149862 0.194361,-0.08223 0.408211,-0.1276 0.632519,-0.12764 z"
|
||||
sodipodi:nodetypes="zsscccscczsssssssscccccssscssssccccccsccccssscss" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.4 KiB |
BIN
tir_sportif/feinwerkbau _lp103/Luftpistol Modell 103.pdf
Normal file
|
After Width: | Height: | Size: 22 KiB |
48
tir_sportif/feinwerkbau _lp103/trigger/rail.svg
Normal file
@@ -0,0 +1,48 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="8.0000334mm"
|
||||
height="7.9995298mm"
|
||||
viewBox="0 0 8.0000334 7.9995298"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
sodipodi:docname="rail.svg"
|
||||
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:zoom="15.098056"
|
||||
inkscape:cx="15.134399"
|
||||
inkscape:cy="3.874671"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1015"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="36"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer1" />
|
||||
<defs
|
||||
id="defs1" />
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-99.920067,-101.39219)">
|
||||
<path
|
||||
id="rect1"
|
||||
style="fill:#550000;fill-opacity:0.537831;stroke-width:0.606538;stroke-linecap:square"
|
||||
d="m 96.32314,105.39219 c -0.22329,0 -0.403073,0.17978 -0.403073,0.40308 v 1.29811 1.29863 c 0.292803,0.61767 0.205655,0.68044 0.498465,1.29811 v 4.50006 c 0,0.22329 0.17978,0.40307 0.40307,0.40307 h 6.196928 c 0.22329,0 0.40308,-0.17978 0.40308,-0.40307 v -4.50006 c 0.18723,-0.52595 0.11849,-0.56186 0.49849,-1.29811 v -1.29863 -1.29811 c 0,-0.2233 -0.17979,-0.40308 -0.40308,-0.40308 h -2.62695 v 0.87643 c 0.58905,0.35196 0.95497,0.98761 0.95502,1.6738 -1.2e-4,0.90369 -0.7409,1.72822 -1.57502,1.9493 0,0 0,1.37594 0,1.97083 0,0.2991 -0.11067,0.52917 -0.350003,0.52917 -0.239333,0 -0.359182,-0.2215 -0.35,-0.52917 0.0196,-0.65665 0,-1.97083 0,-1.97083 -0.83417,-0.22106 -1.5749,-1.04561 -1.57502,-1.9493 0.001,-0.6849 0.36708,-1.31889 0.95502,-1.67018 v -0.88005 z"
|
||||
sodipodi:nodetypes="sscccsssscccssccccszsccccs" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.2 KiB |
48
tir_sportif/feinwerkbau _lp103/trigger/t_back_v1.svg
Normal file
@@ -0,0 +1,48 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="15mm"
|
||||
height="25.000019mm"
|
||||
viewBox="0 0 15 25.000019"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
|
||||
sodipodi:docname="t_back.svg"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:zoom="4.270375"
|
||||
inkscape:cx="29.154348"
|
||||
inkscape:cy="45.31218"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1015"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="36"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer1" />
|
||||
<defs
|
||||
id="defs1" />
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-85.382902,-92.40149)">
|
||||
<path
|
||||
id="path1-2"
|
||||
style="fill:#0000ff;fill-opacity:0.537831;stroke-width:1.06445;stroke-linecap:square"
|
||||
d="m 85.54526,92.401489 c 0,0 5.054593,2.873458 5.984971,13.567921 0.906274,10.4174 9.108509,12.56001 5.915348,9.11907 -2.810869,-3.02898 -4.408529,-14.40189 2.066854,-18.877432 1.007777,-1.952625 0.819157,-3.279695 0.963177,-3.809559 z"
|
||||
sodipodi:nodetypes="cssccc" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.6 KiB |
48
tir_sportif/feinwerkbau _lp103/trigger/t_back_v2.svg
Normal file
@@ -0,0 +1,48 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="19.999998mm"
|
||||
height="25.000002mm"
|
||||
viewBox="0 0 19.999998 25.000002"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
|
||||
sodipodi:docname="t_back_v2.svg"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:zoom="4.270375"
|
||||
inkscape:cx="29.154348"
|
||||
inkscape:cy="45.31218"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1015"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="36"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer1" />
|
||||
<defs
|
||||
id="defs1" />
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-85.382902,-92.401489)">
|
||||
<path
|
||||
id="path1-2"
|
||||
style="fill:#0000ff;fill-opacity:0.537831;stroke-width:1.03179;stroke-linecap:square"
|
||||
d="m 85.382902,92.401508 c 0,0 2.904703,2.824009 5.504214,15.601592 2.101298,10.32867 11.700354,10.92243 8.991572,7.36264 -2.258117,-2.96753 -5.384275,-14.19147 -0.0127,-18.989154 0.798792,-0.713448 2.515132,-3.419576 2.516962,-3.975097 z"
|
||||
sodipodi:nodetypes="cssscc" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
50
tir_sportif/feinwerkbau _lp103/trigger/t_front_v1.svg
Normal file
@@ -0,0 +1,50 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="15mm"
|
||||
height="25.000021mm"
|
||||
viewBox="0 0 15 25.000021"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
|
||||
sodipodi:docname="t_front_v1.svg"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:zoom="4.270375"
|
||||
inkscape:cx="29.154348"
|
||||
inkscape:cy="45.31218"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1015"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="36"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer1" />
|
||||
<defs
|
||||
id="defs1" />
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-85.382902,-92.401489)">
|
||||
<path
|
||||
id="path1-6"
|
||||
style="fill:#800080;stroke-width:0.899066;stroke-linecap:square"
|
||||
d="m 98.158584,95.348528 c -3.10878,2.357913 -5.588168,6.393512 -5.733222,10.794842 -0.127141,4.44471 2.133562,8.66036 5.139789,11.19728 l 1.929986,-0.047 c -2.334984,-2.65449 -4.185653,-6.498 -4.160077,-10.5308 -0.274077,-0.01 -0.487678,-0.23491 -0.479409,-0.50589 l 2.45e-4,-0.008 c 0.0083,-0.27166 0.236349,-0.48403 0.511436,-0.47563 l 0.0062,1.8e-4 c 0.258535,-4.05267 2.394176,-7.776273 4.937648,-10.245478 z"
|
||||
sodipodi:nodetypes="cccccsssccc"
|
||||
inkscape:transform-center-x="3.6997"
|
||||
inkscape:transform-center-y="10.785704" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.9 KiB |
50
tir_sportif/feinwerkbau _lp103/trigger/t_front_v2.svg
Normal file
@@ -0,0 +1,50 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="20mm"
|
||||
height="25.000021mm"
|
||||
viewBox="0 0 20 25.000021"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
|
||||
sodipodi:docname="t_front_v2.svg"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:zoom="4.270375"
|
||||
inkscape:cx="29.154348"
|
||||
inkscape:cy="45.31218"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1015"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="36"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer1" />
|
||||
<defs
|
||||
id="defs1" />
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-85.382902,-92.401489)">
|
||||
<path
|
||||
id="path1-6-6"
|
||||
style="fill:#800080;stroke-width:0.890436;stroke-linecap:square"
|
||||
d="m 98.000528,95.522725 c -2.492156,2.988512 -3.047242,7.312325 -2.324551,11.696515 0.748178,4.42331 2.708681,8.30742 6.060383,10.18227 l 1.82416,-0.45388 c -2.73705,-2.13285 -4.235284,-5.73537 -4.999421,-9.72981 -0.262183,0.0486 -0.509187,-0.12942 -0.55431,-0.39921 l -0.0013,-0.008 c -0.04524,-0.27046 0.129889,-0.52867 0.392837,-0.57842 l 0.0061,-0.001 c -0.546722,-4.06327 -0.257167,-8.005918 1.676224,-10.985194 z"
|
||||
sodipodi:nodetypes="cccccsssccc"
|
||||
inkscape:transform-center-x="-2.5123822"
|
||||
inkscape:transform-center-y="2.5779798" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.9 KiB |
7
tir_sportif/feinwerkbau _lp103/trigger/tmp.svg
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg width="54.427401008605955mm" height="19.05005687713623mm" viewBox="0 0 54.427401008605955 19.05005687713623" xmlns="http://www.w3.org/2000/svg" version="1.1">
|
||||
<g id="_11___Trigger_Doit32" transform="translate(30.856272,9.507177) scale(1,-1)">
|
||||
<title>b'111 - Trigger_Doit32'</title>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 419 B |
43
tir_sportif/feinwerkbau _lp103/trigger/trigger.scad
Normal file
@@ -0,0 +1,43 @@
|
||||
$fn = 128;
|
||||
|
||||
include <boltsos_0.4.1/BOLTS.scad>
|
||||
|
||||
difference() {
|
||||
linear_extrude(height = 17, center=true)
|
||||
import("rail.svg");
|
||||
translate([0,-1.5,0]) {
|
||||
rotate([0,90,0]) {
|
||||
cylinder(h=8, d=3.2, center=true);
|
||||
translate([0,0,4]) {
|
||||
cylinder(h=3, d=5.5, center=true);
|
||||
}
|
||||
}
|
||||
}
|
||||
translate([-2,-1.5,0]) {
|
||||
rotate([90,60,90]) {
|
||||
ISO4014(key="M3", l=8);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Trigger v1
|
||||
* translate([0,-29,9]) {
|
||||
rotate([0,90,0]) {
|
||||
linear_extrude(height = 3, center=true)
|
||||
import("t_back_v1.svg");
|
||||
linear_extrude(height = 5, center=true)
|
||||
import("t_front_v1.svg");
|
||||
}
|
||||
}
|
||||
|
||||
// Trigger v2
|
||||
translate([0,-29,8.5]) {
|
||||
rotate([0,90,0]) {
|
||||
linear_extrude(height = 4, center=true)
|
||||
import("t_back_v2.svg");
|
||||
linear_extrude(height = 8, center=true)
|
||||
import("t_front_v2.svg");
|
||||
}
|
||||
}
|
||||
BIN
tir_sportif/feinwerkbau _lp103/trigger/trigger_v1.stl
Normal file
BIN
tir_sportif/feinwerkbau _lp103/trigger/trigger_v2.stl
Normal file
167039
tir_sportif/support_cible_électronique/CE3V3SE_QRP05.gcode
Normal file
@@ -0,0 +1,43 @@
|
||||
$fn=60;
|
||||
|
||||
include <BOSL2/std.scad>
|
||||
include <BOSL2/shapes2d.scad>
|
||||
include <boltsos_0.4.1/BOLTS.scad>
|
||||
|
||||
L=43;
|
||||
length= 37;
|
||||
height=7.5;
|
||||
width=41;
|
||||
base=41.5;
|
||||
|
||||
module plate_mount() {
|
||||
rotate([0,0,180]) {
|
||||
cyl(l=6, d=14, rounding=1.5);
|
||||
}
|
||||
}
|
||||
|
||||
module screw_hole() {
|
||||
rotate([0,0,90]) {
|
||||
DIN931("M5");
|
||||
cylinder(h=20,d=5.5);
|
||||
}
|
||||
}
|
||||
|
||||
// Base
|
||||
difference() {
|
||||
union() {
|
||||
color("red") {
|
||||
rotate([90,0,0]) {
|
||||
linear_extrude(width, center=true)
|
||||
trapezoid(height, L, length, rounding=1);
|
||||
}
|
||||
translate([0,0,height-3]) cuboid([length,width,height]);
|
||||
}
|
||||
translate([0,0,height+3]) cuboid([base,84,6], rounding=1.5);
|
||||
translate([0,30,height]) plate_mount();
|
||||
translate([0,-30,height]) plate_mount();
|
||||
}
|
||||
// Mounts
|
||||
translate([0,30,height]) screw_hole();
|
||||
translate([0,-30,height]) screw_hole();
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
$fn=60;
|
||||
|
||||
include <BOSL2/std.scad>
|
||||
include <BOSL2/shapes2d.scad>
|
||||
include <boltsos_0.4.1/BOLTS.scad>
|
||||
include<threads.scad>
|
||||
|
||||
L=43;
|
||||
length= 37;
|
||||
height=8;
|
||||
width=41;
|
||||
base=41.5;
|
||||
|
||||
module bolt() {
|
||||
RodEnd(10, 8, thread_len=8, thread_diam=6.2, thread_pitch=1.25);
|
||||
}
|
||||
|
||||
module plate_mount() {
|
||||
rotate([0,0,180]) {
|
||||
cyl(l=6, d=14, rounding=1.5);
|
||||
}
|
||||
}
|
||||
|
||||
module screw_hole() {
|
||||
rotate([0,0,90]) {
|
||||
DIN931("M5");
|
||||
cylinder(h=20,d=5.5);
|
||||
}
|
||||
}
|
||||
|
||||
// Base
|
||||
difference() {
|
||||
union() {
|
||||
difference() {
|
||||
cuboid([length,width,height]);
|
||||
zcyl(l=height, d=10);
|
||||
}
|
||||
rotate([180,0,0]) translate([0,0,-height/2]) bolt();
|
||||
translate([0,0,height/2+3]) cuboid([base,84,6], rounding=1.5);
|
||||
translate([0,30,height-4]) plate_mount();
|
||||
translate([0,-30,height-4]) plate_mount();
|
||||
}
|
||||
// Mounts
|
||||
translate([0,30,height-4]) screw_hole();
|
||||
translate([0,-30,height-4]) screw_hole();
|
||||
}
|
||||
37
tir_sportif/support_cible_électronique/scad/support_ce.scad
Normal file
@@ -0,0 +1,37 @@
|
||||
$fn = 128;
|
||||
|
||||
difference() {
|
||||
union() {
|
||||
translate([0,0,22]) {
|
||||
rotate([90,0,90]) {
|
||||
linear_extrude(height = 195)
|
||||
import("svg/support_ce_side.svg");
|
||||
}
|
||||
}
|
||||
color("red") {
|
||||
translate([97.5,20,0]) {
|
||||
cylinder(22, d1=40, d2=100);
|
||||
}
|
||||
}
|
||||
}
|
||||
translate([97.5,20,-1]) {
|
||||
linear_extrude(height = 19)
|
||||
import("svg/support_ce_hole.svg");
|
||||
}
|
||||
translate([3.3,2.55,25]) {
|
||||
cube([188.2,34.7,50]);
|
||||
}
|
||||
translate([-1,-80,0]) {
|
||||
cube([200,80,30]);
|
||||
}
|
||||
translate([-1,40,0]) {
|
||||
cube([200,80,30]);
|
||||
}
|
||||
color("blue") {
|
||||
translate([97.5,20,10]) {
|
||||
rotate([90,0,0]) {
|
||||
cylinder(h=50, d=2.8, center=true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
$fn=60;
|
||||
|
||||
include <BOSL2/std.scad>
|
||||
include <BOSL2/shapes2d.scad>
|
||||
include <boltsos_0.4.1/BOLTS.scad>
|
||||
|
||||
base=42;
|
||||
wall=4;
|
||||
top=10;
|
||||
height=25;
|
||||
holder_l=196;
|
||||
|
||||
module screw_hole() {
|
||||
rotate([0,0,90]) {
|
||||
cylinder(h=height, d=5.5, center=true);
|
||||
translate([0,0,-9]) {
|
||||
cylinder(h=4, d1=1, d2=10, center=true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Base
|
||||
difference() {
|
||||
union() {
|
||||
cuboid([base,holder_l,height], rounding=1.5);
|
||||
translate([0,0,10]) prismoid(size1=[base,holder_l], size2=[top,holder_l], xang=[height,90], rounding=1.5);
|
||||
}
|
||||
// Holes
|
||||
translate([0,30,0]) screw_hole();
|
||||
translate([0,-30,0]) screw_hole();
|
||||
// Inside
|
||||
translate([0,0,15]) cube([36,190,height+20], center=true);
|
||||
}
|
||||
translate([18.5,50,5]) scale([.275,1,1]) sphere(d=20);
|
||||
translate([18.5,-50,5]) scale([.275,1,1]) sphere(d=20);
|
||||