FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
threadlib/threadlib.scad at develop · polyfloyd/threadlib · GitHub
polyfloyd
/
threadlib
Public
forked from
adrianschlatter/threadlib
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
threadlib
/
threadlib.scad
Copy path
More file actions
More file actions
Latest commit
History
History
History
80 lines (67 loc) · 2.6 KB
Breadcrumbs
threadlib
/
threadlib.scad
Copy path
File metadata and controls
80 lines (67 loc) · 2.6 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
/*
threadlib
+++++++++
Create threads easily.
:Author: Adrian Schlatter and contributors
:Date: 2023-04-02
:License: 3-Clause BSD. See LICENSE.
*/
function
__THREADLIB_VERSION()
=
0.5
;
use
<
thread_profile.scad
>
include
<
THREAD_TABLE.scad
>
function
thread_specs(designator, table
=
THREAD_TABLE)
=
/*
Returns thread specs of thread-type 'designator' as a vector of
[pitch, Rrotation, Dsupport, section_profile]
*/
//
first lookup designator in table inside a let() statement:
let (specs
=
table[search([designator], table, num_returns_per_match
=
1
,
index_col_num
=
0
)[
0
]][
1
])
//
verify that we found something and return it:
assert(
!
is_undef(specs),
str
(
"Designator: '"
, designator,
"' not found"
)) specs;
module
thread(designator, turns, higbee_arc=20, fn=120, table=THREAD_TABLE)
{
specs
=
thread_specs(designator, table
=
table);
P
=
specs[
0
]; Rrotation
=
specs[
1
]; section_profile
=
specs[
3
];
straight_thread(
section_profile
=
section_profile,
higbee_arc
=
higbee_arc,
r
=
Rrotation,
turns
=
turns,
fn
=
fn,
pitch
=
P);
}
module
bolt(designator, turns, higbee_arc=20, fn=120, table=THREAD_TABLE) {
union
() {
specs
=
thread_specs(
str
(designator,
"-ext"
), table
=
table);
P
=
specs[
0
]; Dsupport
=
specs[
2
];
H
=
(turns
+
1
)
*
P;
thread(
str
(designator,
"-ext"
), turns
=
turns, higbee_arc
=
higbee_arc, fn
=
fn, table
=
table);
translate
([
0
,
0
,
-
P /
2
])
cylinder
(h
=
H, d
=
Dsupport,
$
fn
=
fn);
};
};
module
nut(designator, turns, Douter, higbee_arc=20, fn=120, table=THREAD_TABLE, nut_sides=0) {
nut_sides
=
nut_sides
==
0
? fn : nut_sides;
union
() {
specs
=
thread_specs(
str
(designator,
"-int"
), table
=
table);
P
=
specs[
0
]; Dsupport
=
specs[
2
];
H
=
(turns
+
1
)
*
P;
thread(
str
(designator,
"-int"
), turns
=
turns, higbee_arc
=
higbee_arc, fn
=
fn, table
=
table);
translate
([
0
,
0
,
-
P /
2
])
difference
() {
cylinder
(h
=
H, d
=
Douter,
$
fn
=
nut_sides);
translate
([
0
,
0
,
-
0.1
])
cylinder
(h
=
H
+
0.2
, d
=
Dsupport,
$
fn
=
fn);
};
};
};
module
tap(designator, turns, higbee_arc=20, fn=120, table=THREAD_TABLE) {
difference
() {
specs
=
thread_specs(
str
(designator,
"-int"
), table
=
table);
P
=
specs[
0
]; Dsupport
=
specs[
2
];
H
=
(turns
+
1
)
*
P;
translate
([
0
,
0
,
-
P /
2
]) {
cylinder
(h
=
H, d
=
Dsupport,
$
fn
=
fn);
};
thread(
str
(designator,
"-int"
), turns
=
turns, higbee_arc
=
higbee_arc, fn
=
fn, table
=
table);
};
}
Back
|
FazBrowse Home
|
New Git URL