Compare commits

...

11 Commits

Author SHA1 Message Date
Dejvino
ebde72fab1 Refactor into specs scads 2021-01-20 12:56:26 +01:00
Dejvino
4d0931df73 Restructure files into src 2021-01-20 09:23:46 +01:00
Dejvino
f17455be4f Improved link strap interoperability 2021-01-19 14:47:16 +01:00
Dejvino
b85aee5fe1 Add closable fixed clip 2021-01-19 11:51:51 +01:00
Dejvino
a7c184e6cb Improved proportions and clearances 2021-01-18 21:04:14 +01:00
Dejvino
f1c4576519 Ratcheting strap clip 2021-01-18 19:03:27 +01:00
Dejvino
61dbc1e75a Improve linked strap parametrization 2021-01-17 22:33:57 +01:00
Dejvino
8b61f86eb6 Add terminal strap link 2021-01-17 17:04:12 +01:00
Dejvino
384480e824 Fixed linked strap parametrization 2021-01-17 16:49:08 +01:00
Dejvino
78e7a2b34a Add linked strap 2021-01-17 16:21:13 +01:00
Dejvino
eddd8f28e7 Deleting STLs 2021-01-15 12:51:31 +01:00
21 changed files with 480 additions and 129951 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,198 +0,0 @@
solid OpenSCAD_Model
facet normal 0 1 -0
outer loop
vertex 20 -29.2 -19.5142
vertex -20 -29.2 -15.8858
vertex 20 -29.2 -15.8858
endloop
endfacet
facet normal 0 1 0
outer loop
vertex -20 -29.2 -15.8858
vertex 20 -29.2 -19.5142
vertex -20 -29.2 -19.5142
endloop
endfacet
facet normal 0 0.707107 0.707107
outer loop
vertex 20 -29.2 -15.8858
vertex -20 -29.7858 -15.3
vertex 20 -29.7858 -15.3
endloop
endfacet
facet normal 0 0.707107 0.707107
outer loop
vertex -20 -29.7858 -15.3
vertex 20 -29.2 -15.8858
vertex -20 -29.2 -15.8858
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -20 -29.7858 -15.3
vertex 20 -32.2142 -15.3
vertex 20 -29.7858 -15.3
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 20 -32.2142 -15.3
vertex -20 -29.7858 -15.3
vertex -20 -32.2142 -15.3
endloop
endfacet
facet normal 0 -0.707107 0.707107
outer loop
vertex -20 -32.8 -15.8858
vertex 20 -32.2142 -15.3
vertex -20 -32.2142 -15.3
endloop
endfacet
facet normal 0 -0.707107 0.707107
outer loop
vertex 20 -32.2142 -15.3
vertex -20 -32.8 -15.8858
vertex 20 -32.8 -15.8858
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex -20 -32.8 -19.5142
vertex 20 -32.8 -15.8858
vertex -20 -32.8 -15.8858
endloop
endfacet
facet normal 0 -1 -0
outer loop
vertex 20 -32.8 -15.8858
vertex -20 -32.8 -19.5142
vertex 20 -32.8 -19.5142
endloop
endfacet
facet normal 0 -0.707107 -0.707107
outer loop
vertex -20 -32.2142 -20.1
vertex 20 -32.8 -19.5142
vertex -20 -32.8 -19.5142
endloop
endfacet
facet normal 0 -0.707107 -0.707107
outer loop
vertex 20 -32.8 -19.5142
vertex -20 -32.2142 -20.1
vertex 20 -32.2142 -20.1
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -20 -32.2142 -20.1
vertex 20 -29.7858 -20.1
vertex 20 -32.2142 -20.1
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex 20 -29.7858 -20.1
vertex -20 -32.2142 -20.1
vertex -20 -29.7858 -20.1
endloop
endfacet
facet normal 0 0.707107 -0.707107
outer loop
vertex 20 -29.7858 -20.1
vertex -20 -29.2 -19.5142
vertex 20 -29.2 -19.5142
endloop
endfacet
facet normal 0 0.707107 -0.707107
outer loop
vertex -20 -29.2 -19.5142
vertex 20 -29.7858 -20.1
vertex -20 -29.7858 -20.1
endloop
endfacet
facet normal 1 0 0
outer loop
vertex 20 -32.8 -15.8858
vertex 20 -29.2 -15.8858
vertex 20 -29.7858 -15.3
endloop
endfacet
facet normal 1 0 0
outer loop
vertex 20 -29.2 -15.8858
vertex 20 -32.8 -15.8858
vertex 20 -29.2 -19.5142
endloop
endfacet
facet normal 1 0 0
outer loop
vertex 20 -32.8 -15.8858
vertex 20 -29.7858 -15.3
vertex 20 -32.2142 -15.3
endloop
endfacet
facet normal 1 0 0
outer loop
vertex 20 -32.8 -19.5142
vertex 20 -29.2 -19.5142
vertex 20 -32.8 -15.8858
endloop
endfacet
facet normal 1 0 0
outer loop
vertex 20 -29.2 -19.5142
vertex 20 -32.8 -19.5142
vertex 20 -29.7858 -20.1
endloop
endfacet
facet normal 1 0 0
outer loop
vertex 20 -29.7858 -20.1
vertex 20 -32.8 -19.5142
vertex 20 -32.2142 -20.1
endloop
endfacet
facet normal -1 0 0
outer loop
vertex -20 -32.8 -19.5142
vertex -20 -29.2 -19.5142
vertex -20 -29.7858 -20.1
endloop
endfacet
facet normal -1 0 0
outer loop
vertex -20 -29.2 -19.5142
vertex -20 -32.8 -19.5142
vertex -20 -29.2 -15.8858
endloop
endfacet
facet normal -1 0 0
outer loop
vertex -20 -32.8 -19.5142
vertex -20 -29.7858 -20.1
vertex -20 -32.2142 -20.1
endloop
endfacet
facet normal -1 0 0
outer loop
vertex -20 -32.8 -15.8858
vertex -20 -29.2 -15.8858
vertex -20 -32.8 -19.5142
endloop
endfacet
facet normal -1 0 0
outer loop
vertex -20 -29.2 -15.8858
vertex -20 -32.8 -15.8858
vertex -20 -29.7858 -15.3
endloop
endfacet
facet normal -1 -0 0
outer loop
vertex -20 -29.7858 -15.3
vertex -20 -32.8 -15.8858
vertex -20 -32.2142 -15.3
endloop
endfacet
endsolid OpenSCAD_Model

File diff suppressed because it is too large Load Diff

View File

@ -1,842 +0,0 @@
solid OpenSCAD_Model
facet normal 0.281677 0.866858 -0.411358
outer loop
vertex -43.2366 -27.5725 -9.991
vertex -45 -26.9995 -9.991
vertex -43.0866 -22.8806 -0.000999451
endloop
endfacet
facet normal 0.195091 0.980785 -0
outer loop
vertex -43.0866 -22.8806 -0.000999451
vertex -45 -22.5 0
vertex -43.0866 -22.8806 0
endloop
endfacet
facet normal 0.195091 0.980785 0
outer loop
vertex -45 -22.5 0
vertex -43.0866 -22.8806 -0.000999451
vertex -45 -22.5 -0.000999451
endloop
endfacet
facet normal 0.831458 -0.555587 0
outer loop
vertex -41.4645 -36.0355 0
vertex -40.3806 -34.4134 -0.000999451
vertex -40.3806 -34.4134 0
endloop
endfacet
facet normal 0.831458 -0.555587 0
outer loop
vertex -40.3806 -34.4134 -0.000999451
vertex -41.4645 -36.0355 0
vertex -41.4645 -36.0355 -0.000999451
endloop
endfacet
facet normal -0.831458 -0.555587 0
outer loop
vertex -78.5355 -36.0355 -0.000999451
vertex -79.6194 -34.4134 0
vertex -79.6194 -34.4134 -0.000999451
endloop
endfacet
facet normal -0.831458 -0.555587 0
outer loop
vertex -79.6194 -34.4134 0
vertex -78.5355 -36.0355 -0.000999451
vertex -78.5355 -36.0355 0
endloop
endfacet
facet normal 0.413355 -0.811201 -0.413631
outer loop
vertex -43.0866 -37.1194 -0.000999451
vertex -45 -33.0005 -9.991
vertex -42.573 -31.7638 -9.991
endloop
endfacet
facet normal -0.842298 -0.429166 -0.326114
outer loop
vertex -76.7634 -32.4275 -9.991
vertex -79.6194 -34.4134 -0.000999451
vertex -78 -30.0005 -9.991
endloop
endfacet
facet normal -0.785232 -0.524698 -0.328791
outer loop
vertex -78.5355 -36.0355 -0.000999451
vertex -79.6194 -34.4134 -0.000999451
vertex -76.7634 -32.4275 -9.991
endloop
endfacet
facet normal -0.516055 -0.772297 -0.370465
outer loop
vertex -76.9134 -37.1194 -0.000999451
vertex -78.5355 -36.0355 -0.000999451
vertex -76.7634 -32.4275 -9.991
endloop
endfacet
facet normal 0.516055 0.772297 -0.370465
outer loop
vertex -41.4645 -23.9645 -0.000999451
vertex -43.2366 -27.5725 -9.991
vertex -43.0866 -22.8806 -0.000999451
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -42.573 -31.7638 -9.991
vertex -42 -29.9995 -9.991
vertex -42 -30.0005 -9.991
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -42.573 -31.7638 -9.991
vertex -43.2366 -27.5725 -9.991
vertex -42 -29.9995 -9.991
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -45 -33.0005 -9.991
vertex -43.2366 -27.5725 -9.991
vertex -42.573 -31.7638 -9.991
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -45 -33.0005 -9.991
vertex -45 -26.9995 -9.991
vertex -43.2366 -27.5725 -9.991
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -75 -33.0005 -9.991
vertex -45 -26.9995 -9.991
vertex -45 -33.0005 -9.991
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -75 -33.0005 -9.991
vertex -75 -26.9995 -9.991
vertex -45 -26.9995 -9.991
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -76.7634 -32.4275 -9.991
vertex -75 -26.9995 -9.991
vertex -75 -33.0005 -9.991
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -76.7634 -32.4275 -9.991
vertex -77.427 -28.2362 -9.991
vertex -75 -26.9995 -9.991
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -78 -30.0005 -9.991
vertex -77.427 -28.2362 -9.991
vertex -76.7634 -32.4275 -9.991
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -77.427 -28.2362 -9.991
vertex -78 -30.0005 -9.991
vertex -78 -29.9995 -9.991
endloop
endfacet
facet normal 0 0.911793 -0.41065
outer loop
vertex -45 -26.9995 -9.991
vertex -75 -26.1028 -8
vertex -45 -26.1028 -8
endloop
endfacet
facet normal 0 0.911793 -0.41065
outer loop
vertex -75 -26.1028 -8
vertex -45 -26.9995 -9.991
vertex -75 -26.9995 -9.991
endloop
endfacet
facet normal 0 0.911776 -0.410687
outer loop
vertex -45 -23.4004 -2
vertex -75 -22.5 -0.000999451
vertex -45 -22.5 -0.000999451
endloop
endfacet
facet normal 0 0.911776 -0.410687
outer loop
vertex -75 -22.5 -0.000999451
vertex -45 -23.4004 -2
vertex -75 -23.4004 -2
endloop
endfacet
facet normal -0.178453 0.897141 -0.404095
outer loop
vertex -75 -23.4004 -2
vertex -76.9134 -22.8806 -0.000999451
vertex -75 -22.5 -0.000999451
endloop
endfacet
facet normal -0.178432 0.897153 -0.404078
outer loop
vertex -75 -26.1028 -8
vertex -76.9134 -22.8806 -0.000999451
vertex -75 -23.4004 -2
endloop
endfacet
facet normal -0.178349 0.897174 -0.404066
outer loop
vertex -76.9134 -22.8806 -0.000999451
vertex -75 -26.1028 -8
vertex -75 -26.9995 -9.991
endloop
endfacet
facet normal 0.785232 0.524698 -0.328791
outer loop
vertex -40.3806 -25.5866 -0.000999451
vertex -43.2366 -27.5725 -9.991
vertex -41.4645 -23.9645 -0.000999451
endloop
endfacet
facet normal 0.178453 0.897141 -0.404095
outer loop
vertex -43.0866 -22.8806 -0.000999451
vertex -45 -23.4004 -2
vertex -45 -22.5 -0.000999451
endloop
endfacet
facet normal 0.178432 0.897153 -0.404078
outer loop
vertex -43.0866 -22.8806 -0.000999451
vertex -45 -26.1028 -8
vertex -45 -23.4004 -2
endloop
endfacet
facet normal 0.178349 0.897174 -0.404066
outer loop
vertex -45 -26.1028 -8
vertex -43.0866 -22.8806 -0.000999451
vertex -45 -26.9995 -9.991
endloop
endfacet
facet normal 0.980785 -0.195091 0
outer loop
vertex -40.3806 -34.4134 0
vertex -40 -32.5 -0.000999451
vertex -40 -32.5 0
endloop
endfacet
facet normal 0.980785 -0.195091 0
outer loop
vertex -40 -32.5 -0.000999451
vertex -40.3806 -34.4134 0
vertex -40.3806 -34.4134 -0.000999451
endloop
endfacet
facet normal 0.512756 -0.767361 -0.385017
outer loop
vertex -41.4645 -36.0355 -0.000999451
vertex -43.0866 -37.1194 -0.000999451
vertex -42.573 -31.7638 -9.991
endloop
endfacet
facet normal 0.831458 0.555587 0
outer loop
vertex -40.3806 -25.5866 0
vertex -41.4645 -23.9645 -0.000999451
vertex -41.4645 -23.9645 0
endloop
endfacet
facet normal 0.831458 0.555587 0
outer loop
vertex -41.4645 -23.9645 -0.000999451
vertex -40.3806 -25.5866 0
vertex -40.3806 -25.5866 -0.000999451
endloop
endfacet
facet normal -0.555587 0.831458 0
outer loop
vertex -76.9134 -22.8806 -0.000999451
vertex -78.5355 -23.9645 0
vertex -76.9134 -22.8806 0
endloop
endfacet
facet normal -0.555587 0.831458 0
outer loop
vertex -78.5355 -23.9645 0
vertex -76.9134 -22.8806 -0.000999451
vertex -78.5355 -23.9645 -0.000999451
endloop
endfacet
facet normal -0.413355 0.811201 -0.413631
outer loop
vertex -75 -26.9995 -9.991
vertex -77.427 -28.2362 -9.991
vertex -76.9134 -22.8806 -0.000999451
endloop
endfacet
facet normal -0.195091 -0.980785 0
outer loop
vertex -76.9134 -37.1194 -0.000999451
vertex -75 -37.5 0
vertex -76.9134 -37.1194 0
endloop
endfacet
facet normal -0.195091 -0.980785 -0
outer loop
vertex -75 -37.5 0
vertex -76.9134 -37.1194 -0.000999451
vertex -75 -37.5 -0.000999451
endloop
endfacet
facet normal 0 1 -0
outer loop
vertex -45 -22.5 -0.000999451
vertex -75 -22.5 0
vertex -45 -22.5 0
endloop
endfacet
facet normal 0 1 0
outer loop
vertex -75 -22.5 0
vertex -45 -22.5 -0.000999451
vertex -75 -22.5 -0.000999451
endloop
endfacet
facet normal -0.980785 0.195091 0
outer loop
vertex -80 -27.5 -0.000999451
vertex -79.6194 -25.5866 0
vertex -79.6194 -25.5866 -0.000999451
endloop
endfacet
facet normal -0.980785 0.195091 0
outer loop
vertex -79.6194 -25.5866 0
vertex -80 -27.5 -0.000999451
vertex -80 -27.5 0
endloop
endfacet
facet normal 0.952575 -0.18948 -0.238114
outer loop
vertex -40.3806 -34.4134 -0.000999451
vertex -42 -30.0005 -9.991
vertex -40 -32.5 -0.000999451
endloop
endfacet
facet normal -1 0 0
outer loop
vertex -80 -32.5 -0.000999451
vertex -80 -27.5 0
vertex -80 -27.5 -0.000999451
endloop
endfacet
facet normal -1 -0 0
outer loop
vertex -80 -27.5 0
vertex -80 -32.5 -0.000999451
vertex -80 -32.5 0
endloop
endfacet
facet normal 0.178453 -0.897141 -0.404095
outer loop
vertex -45 -36.5996 -2
vertex -43.0866 -37.1194 -0.000999451
vertex -45 -37.5 -0.000999451
endloop
endfacet
facet normal 0.178432 -0.897153 -0.404078
outer loop
vertex -45 -33.8972 -8
vertex -43.0866 -37.1194 -0.000999451
vertex -45 -36.5996 -2
endloop
endfacet
facet normal 0.178349 -0.897174 -0.404066
outer loop
vertex -43.0866 -37.1194 -0.000999451
vertex -45 -33.8972 -8
vertex -45 -33.0005 -9.991
endloop
endfacet
facet normal 0.789617 -0.527629 -0.313229
outer loop
vertex -41.4645 -36.0355 -0.000999451
vertex -42.573 -31.7638 -9.991
vertex -40.3806 -34.4134 -0.000999451
endloop
endfacet
facet normal -0.980785 -0.195091 0
outer loop
vertex -79.6194 -34.4134 -0.000999451
vertex -80 -32.5 0
vertex -80 -32.5 -0.000999451
endloop
endfacet
facet normal -0.980785 -0.195091 0
outer loop
vertex -80 -32.5 0
vertex -79.6194 -34.4134 -0.000999451
vertex -79.6194 -34.4134 0
endloop
endfacet
facet normal -0.178453 -0.897141 -0.404095
outer loop
vertex -76.9134 -37.1194 -0.000999451
vertex -75 -36.5996 -2
vertex -75 -37.5 -0.000999451
endloop
endfacet
facet normal -0.178432 -0.897153 -0.404078
outer loop
vertex -76.9134 -37.1194 -0.000999451
vertex -75 -33.8972 -8
vertex -75 -36.5996 -2
endloop
endfacet
facet normal -0.178349 -0.897174 -0.404066
outer loop
vertex -75 -33.8972 -8
vertex -76.9134 -37.1194 -0.000999451
vertex -75 -33.0005 -9.991
endloop
endfacet
facet normal 0 -0.911776 -0.410687
outer loop
vertex -75 -36.5996 -2
vertex -45 -37.5 -0.000999451
vertex -75 -37.5 -0.000999451
endloop
endfacet
facet normal 0 -0.911776 -0.410687
outer loop
vertex -45 -37.5 -0.000999451
vertex -75 -36.5996 -2
vertex -45 -36.5996 -2
endloop
endfacet
facet normal 0 -0.911793 -0.41065
outer loop
vertex -75 -33.0005 -9.991
vertex -45 -33.8972 -8
vertex -75 -33.8972 -8
endloop
endfacet
facet normal 0 -0.911793 -0.41065
outer loop
vertex -45 -33.8972 -8
vertex -75 -33.0005 -9.991
vertex -45 -33.0005 -9.991
endloop
endfacet
facet normal -0.195091 0.980785 0
outer loop
vertex -75 -22.5 -0.000999451
vertex -76.9134 -22.8806 0
vertex -75 -22.5 0
endloop
endfacet
facet normal -0.195091 0.980785 0
outer loop
vertex -76.9134 -22.8806 0
vertex -75 -22.5 -0.000999451
vertex -76.9134 -22.8806 -0.000999451
endloop
endfacet
facet normal -0.512756 0.767361 -0.385017
outer loop
vertex -77.427 -28.2362 -9.991
vertex -78.5355 -23.9645 -0.000999451
vertex -76.9134 -22.8806 -0.000999451
endloop
endfacet
facet normal 0.842298 0.429166 -0.326114
outer loop
vertex -42 -29.9995 -9.991
vertex -43.2366 -27.5725 -9.991
vertex -40.3806 -25.5866 -0.000999451
endloop
endfacet
facet normal -0.913245 0.296767 -0.27913
outer loop
vertex -78 -29.9995 -9.991
vertex -79.6194 -25.5866 -0.000999451
vertex -77.427 -28.2362 -9.991
endloop
endfacet
facet normal 0.555587 0.831458 -0
outer loop
vertex -41.4645 -23.9645 -0.000999451
vertex -43.0866 -22.8806 0
vertex -41.4645 -23.9645 0
endloop
endfacet
facet normal 0.555587 0.831458 0
outer loop
vertex -43.0866 -22.8806 0
vertex -41.4645 -23.9645 -0.000999451
vertex -43.0866 -22.8806 -0.000999451
endloop
endfacet
facet normal -0.952575 -0.18948 -0.238114
outer loop
vertex -79.6194 -34.4134 -0.000999451
vertex -80 -32.5 -0.000999451
vertex -78 -30.0005 -9.991
endloop
endfacet
facet normal -0.952575 0.18948 -0.238114
outer loop
vertex -78 -29.9995 -9.991
vertex -80 -27.5 -0.000999451
vertex -79.6194 -25.5866 -0.000999451
endloop
endfacet
facet normal 0.555587 -0.831458 0
outer loop
vertex -43.0866 -37.1194 -0.000999451
vertex -41.4645 -36.0355 0
vertex -43.0866 -37.1194 0
endloop
endfacet
facet normal 0.555587 -0.831458 0
outer loop
vertex -41.4645 -36.0355 0
vertex -43.0866 -37.1194 -0.000999451
vertex -41.4645 -36.0355 -0.000999451
endloop
endfacet
facet normal 0.195091 -0.980785 0
outer loop
vertex -45 -37.5 -0.000999451
vertex -43.0866 -37.1194 0
vertex -45 -37.5 0
endloop
endfacet
facet normal 0.195091 -0.980785 0
outer loop
vertex -43.0866 -37.1194 0
vertex -45 -37.5 -0.000999451
vertex -43.0866 -37.1194 -0.000999451
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex -75 -37.5 -0.000999451
vertex -45 -37.5 0
vertex -75 -37.5 0
endloop
endfacet
facet normal 0 -1 -0
outer loop
vertex -45 -37.5 0
vertex -75 -37.5 -0.000999451
vertex -45 -37.5 -0.000999451
endloop
endfacet
facet normal -0.281677 -0.866858 -0.411358
outer loop
vertex -75 -33.0005 -9.991
vertex -76.9134 -37.1194 -0.000999451
vertex -76.7634 -32.4275 -9.991
endloop
endfacet
facet normal 0.980785 0.195091 0
outer loop
vertex -40 -27.5 0
vertex -40.3806 -25.5866 -0.000999451
vertex -40.3806 -25.5866 0
endloop
endfacet
facet normal 0.980785 0.195091 0
outer loop
vertex -40.3806 -25.5866 -0.000999451
vertex -40 -27.5 0
vertex -40 -27.5 -0.000999451
endloop
endfacet
facet normal 0.952575 0.18948 -0.238114
outer loop
vertex -40 -27.5 -0.000999451
vertex -42 -29.9995 -9.991
vertex -40.3806 -25.5866 -0.000999451
endloop
endfacet
facet normal 0.913245 -0.296767 -0.27913
outer loop
vertex -40.3806 -34.4134 -0.000999451
vertex -42.573 -31.7638 -9.991
vertex -42 -30.0005 -9.991
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -45 -22.5 0
vertex -40 -27.5 0
vertex -40.3806 -25.5866 0
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -40 -27.5 0
vertex -45 -22.5 0
vertex -40 -32.5 0
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -45 -22.5 0
vertex -40.3806 -25.5866 0
vertex -41.4645 -23.9645 0
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -45 -37.5 0
vertex -40 -32.5 0
vertex -45 -22.5 0
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -45 -22.5 0
vertex -41.4645 -23.9645 0
vertex -43.0866 -22.8806 0
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -40 -32.5 0
vertex -45 -37.5 0
vertex -40.3806 -34.4134 0
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -40.3806 -34.4134 0
vertex -45 -37.5 0
vertex -41.4645 -36.0355 0
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -41.4645 -36.0355 0
vertex -45 -37.5 0
vertex -43.0866 -37.1194 0
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -75 -22.5 0
vertex -45 -37.5 0
vertex -45 -22.5 0
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -75 -22.5 0
vertex -75 -37.5 0
vertex -45 -37.5 0
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -80 -27.5 0
vertex -75 -22.5 0
vertex -76.9134 -22.8806 0
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -75 -22.5 0
vertex -80 -27.5 0
vertex -75 -37.5 0
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -80 -27.5 0
vertex -76.9134 -22.8806 0
vertex -78.5355 -23.9645 0
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -80 -32.5 0
vertex -75 -37.5 0
vertex -80 -27.5 0
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -80 -27.5 0
vertex -78.5355 -23.9645 0
vertex -79.6194 -25.5866 0
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -75 -37.5 0
vertex -80 -32.5 0
vertex -76.9134 -37.1194 0
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -76.9134 -37.1194 0
vertex -80 -32.5 0
vertex -78.5355 -36.0355 0
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -78.5355 -36.0355 0
vertex -80 -32.5 0
vertex -79.6194 -34.4134 0
endloop
endfacet
facet normal -0.555587 -0.831458 0
outer loop
vertex -78.5355 -36.0355 -0.000999451
vertex -76.9134 -37.1194 0
vertex -78.5355 -36.0355 0
endloop
endfacet
facet normal -0.555587 -0.831458 -0
outer loop
vertex -76.9134 -37.1194 0
vertex -78.5355 -36.0355 -0.000999451
vertex -76.9134 -37.1194 -0.000999451
endloop
endfacet
facet normal -0.789617 0.527629 -0.313229
outer loop
vertex -77.427 -28.2362 -9.991
vertex -79.6194 -25.5866 -0.000999451
vertex -78.5355 -23.9645 -0.000999451
endloop
endfacet
facet normal -0.831458 0.555587 0
outer loop
vertex -79.6194 -25.5866 -0.000999451
vertex -78.5355 -23.9645 0
vertex -78.5355 -23.9645 -0.000999451
endloop
endfacet
facet normal -0.831458 0.555587 0
outer loop
vertex -78.5355 -23.9645 0
vertex -79.6194 -25.5866 -0.000999451
vertex -79.6194 -25.5866 0
endloop
endfacet
facet normal 1 -0 0
outer loop
vertex -40 -32.5 0
vertex -40 -27.5 -0.000999451
vertex -40 -27.5 0
endloop
endfacet
facet normal 1 0 0
outer loop
vertex -40 -27.5 -0.000999451
vertex -40 -32.5 0
vertex -40 -32.5 -0.000999451
endloop
endfacet
facet normal 0.980543 0 -0.196305
outer loop
vertex -40 -27.5 -0.000999451
vertex -42 -30.0005 -9.991
vertex -42 -29.9995 -9.991
endloop
endfacet
facet normal 0.980543 0 -0.196305
outer loop
vertex -42 -30.0005 -9.991
vertex -40 -27.5 -0.000999451
vertex -40 -32.5 -0.000999451
endloop
endfacet
facet normal -0.980543 0 -0.196305
outer loop
vertex -78 -30.0005 -9.991
vertex -80 -27.5 -0.000999451
vertex -78 -29.9995 -9.991
endloop
endfacet
facet normal -0.980543 -0 -0.196305
outer loop
vertex -80 -27.5 -0.000999451
vertex -78 -30.0005 -9.991
vertex -80 -32.5 -0.000999451
endloop
endfacet
facet normal -1 0 0
outer loop
vertex -45 -33.8972 -8
vertex -45 -23.4004 -2
vertex -45 -26.1028 -8
endloop
endfacet
facet normal -1 -0 0
outer loop
vertex -45 -23.4004 -2
vertex -45 -33.8972 -8
vertex -45 -36.5996 -2
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -75 -36.5996 -2
vertex -45 -23.4004 -2
vertex -45 -36.5996 -2
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex -45 -23.4004 -2
vertex -75 -36.5996 -2
vertex -75 -23.4004 -2
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -75 -26.1028 -8
vertex -45 -33.8972 -8
vertex -45 -26.1028 -8
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -45 -33.8972 -8
vertex -75 -26.1028 -8
vertex -75 -33.8972 -8
endloop
endfacet
facet normal 1 0 0
outer loop
vertex -75 -23.4004 -2
vertex -75 -33.8972 -8
vertex -75 -26.1028 -8
endloop
endfacet
facet normal 1 0 -0
outer loop
vertex -75 -33.8972 -8
vertex -75 -23.4004 -2
vertex -75 -36.5996 -2
endloop
endfacet
endsolid OpenSCAD_Model

File diff suppressed because it is too large Load Diff

32
src/export.scad Normal file
View File

@ -0,0 +1,32 @@
/*
export=0; // <-- prepend to the main file to activate the export
*/
function is_not_export() = is_undef(export) || export == 0;
function is_export() = !is_not_export();
function is_model_strict(m) = is_export() && export == m;
function is_model(m) = is_not_export() || export == m;
MODEL_DEMO=0;
// Harness
MODEL_HARNESS_LEFT=101;
MODEL_HARNESS_RIGHT=102;
MODEL_HARNESS_BOTTOM=103;
MODEL_HARNESS_BOTTOM_PIP=104;
MODEL_HARNESS_TOP=105;
MODEL_HARNESS_SLIDER_FRONT=106;
MODEL_HARNESS_SLIDER_BACK=107;
MODEL_HARNESS_BUTTONS=108;
// Platform
MODEL_PLATFORM_HARNESS=201;
MODEL_PLATFORM_STRAP=202;
// Strap
MODEL_LINKS=301;
MODEL_CLIP_A=302;
MODEL_CLIP_B=303;
MODEL_CLIP_RATCHETING=304;
MODEL_CLIP_RATCHETING_A=305;
MODEL_CLIP_RATCHETING_B=306;

View File

@ -1,3 +1,5 @@
include <export.scad>
// dependency: https://github.com/revarbat/BOSL // dependency: https://github.com/revarbat/BOSL
include <BOSL/constants.scad> include <BOSL/constants.scad>
use <BOSL/transforms.scad> use <BOSL/transforms.scad>
@ -5,6 +7,10 @@ use <BOSL/shapes.scad>
use <BOSL/masks.scad> use <BOSL/masks.scad>
use <BOSL/sliders.scad> use <BOSL/sliders.scad>
use <specs_phone.scad>
use <specs_harness.scad>
use <specs_platform.scad>
// DEBUG: // DEBUG:
//validation = 1; //validation = 1;
XRAY_POSITIVE=1; XRAY_POSITIVE=1;
@ -12,22 +18,6 @@ XRAY_BACKPLANE=2;
XRAY_BOTTOM=3; XRAY_BOTTOM=3;
//xray = 2; //xray = 2;
// EXPORT:
MODEL_HARNESS_LEFT=1;
MODEL_HARNESS_RIGHT=2;
MODEL_HARNESS_BOTTOM=3;
MODEL_HARNESS_BOTTOM_PIP=4;
MODEL_HARNESS_TOP=5;
MODEL_HARNESS_SLIDER_FRONT=6;
MODEL_HARNESS_SLIDER_BACK=7;
MODEL_HARNESS_BUTTONS=8;
export=0; // [0:8]
function is_not_export() = is_undef(export) || export == 0;
function is_export() = !is_not_export();
function is_model_strict(m) = is_export() && export == m;
function is_model(m) = is_not_export() || export == m;
function get_phone_size() = [161.2, 77.2, 10];
function use_slideout_backplane() = is_model_strict(MODEL_HARNESS_BOTTOM_PIP) || is_model_strict(MODEL_HARNESS_LEFT) || is_model_strict(MODEL_HARNESS_RIGHT); function use_slideout_backplane() = is_model_strict(MODEL_HARNESS_BOTTOM_PIP) || is_model_strict(MODEL_HARNESS_LEFT) || is_model_strict(MODEL_HARNESS_RIGHT);
backplane_pip_slideout=10; backplane_pip_slideout=10;
@ -411,7 +401,7 @@ module phone_harness() {
} }
module model() { module model() {
phone_harness(); up(get_platform_size().z + get_harness_size().z/2) phone_harness();
} }
if (!is_undef(validation)) { if (!is_undef(validation)) {

6
src/main.scad Normal file
View File

@ -0,0 +1,6 @@
export=0;
include <export.scad>
include <harness.scad>
include <platform.scad>
//include <strap.scad>

70
src/platform.scad Normal file
View File

@ -0,0 +1,70 @@
include <export.scad>
// dependency: https://github.com/revarbat/BOSL
include <BOSL/constants.scad>
use <BOSL/transforms.scad>
use <BOSL/shapes.scad>
use <BOSL/masks.scad>
use <BOSL/sliders.scad>
use <specs_platform.scad>
use <specs_strap.scad>
use <strap_common.scad>
// DEBUG:
//validation = 1;
//xray = 1;
// PROP >>
module prop_arm() {
$fn=$preview ? 10 : 30;
arm_size=[200, 55, 40];
color("gray")
down(arm_size.z/2) {
cuboid(arm_size, fillet=16, edges=EDGES_X_ALL);
left(arm_size.x*0.6) scale([1, 1, 0.8]) yrot(90) cylinder(d1=arm_size.y*1.4, d2=arm_size.y*0.95, h=arm_size.x/2);
}
}
module model_prop_arm() {
if (is_not_export()) down(3) prop_arm();
}
// <<<
// Blocks:
module platform(base) {
size=get_platform_size();
top=!base;
up(top?size.z:0)
color(top?"Olive":"YellowGreen")
cube(size, center=true);
module strap_connectors() {
down(size.z/2) {
for (i=[0:3]) {
left((i%2*(-2)+1) * (size.x/2 - get_link_segment_size().y/2))
fwd((round(i/2)%2*(-2)+1) * size.y/2)
down(get_link_segment_size().z/2)
zrot(90 + (round(i/2)%2*180)) link_connector_pin();
}
}
}
if (base) {
strap_connectors();
}
}
// Models:
module model_platform_harness() {
platform(base=false);
}
module model_platform_strap() {
platform(base=true);
}
// Export:
if (is_model(MODEL_PLATFORM_HARNESS)) model_platform_harness();
if (is_model(MODEL_PLATFORM_STRAP)) model_platform_strap();
if (is_model(MODEL_DEMO)) model_prop_arm();

9
src/specs_harness.scad Normal file
View File

@ -0,0 +1,9 @@
use <specs_phone.scad>
// TODO
function get_harness_size() = [
get_phone_size().x + 10,
get_phone_size().y + 10,
get_phone_size().z + 10,
];

2
src/specs_phone.scad Normal file
View File

@ -0,0 +1,2 @@
function get_phone_size() = [161.2, 77.2, 10];

8
src/specs_platform.scad Normal file
View File

@ -0,0 +1,8 @@
use <specs_phone.scad>
function get_platform_size() = [
get_phone_size().x - 5,
get_phone_size().y - 5,
5
];

11
src/specs_strap.scad Normal file
View File

@ -0,0 +1,11 @@
function get_link_segment_size() = [15, 30, 5];
function get_link_pin_diameter() = 2;
function get_link_socket_slack() = [1, 4, 1];
function get_link_joiner_arm_size() = [get_link_segment_size().x - 2, 3, get_link_segment_size().z];
function get_link_socket_size() = [get_link_segment_size().z,
get_link_segment_size().y - get_link_joiner_arm_size().y*2,
get_link_segment_size().z];
function get_link_clip_size() = [get_link_pin_diameter()*5, get_link_segment_size().y - 5, get_link_segment_size().z];
function get_link_socket_roundgap() = 2;

270
src/strap.scad Normal file
View File

@ -0,0 +1,270 @@
links_count=3; // [1..20]
include_terminal=true; // [true,false]
include <export.scad>
use <BOSL/transforms.scad>
use <BOSL/shapes.scad>
include <BOSL/constants.scad>
use <strap_common.scad>
if (is_model_strict(MODEL_LINKS)) {
echo("===============================");
echo(str("Strap length: ", (links_count * get_link_segment_size().x), " mm"));
echo("===============================");
}
assert(get_link_segment_size().x >= 10, "Link segment is too short.");
assert(get_link_segment_size().z >= (get_link_pin_diameter() + get_link_socket_slack().z + 1), "Link segment is too thin.");
module link(terminal=false) {
$fn=$preview?4:20;
module link_joiner() {
gap=get_link_socket_roundgap();
segment_size=get_link_segment_size();
arm_size=get_link_joiner_arm_size();
module pin_to_socket_joiner() {
joiner_size=[segment_size.x-get_link_socket_size().x+get_link_socket_size().x*0.2,
segment_size.y-4,
segment_size.z];
difference() {
right(joiner_size.x/2 + 4.5) cuboid(joiner_size, fillet=1, edges=EDGES_Z_ALL + EDGES_BOTTOM);
right(segment_size.x) scale([1, 2, 1]) pin_socket_area();
}
}
pin_to_socket_joiner();
}
link_connector_pin();
if (terminal) {
right(get_link_segment_size().x + 2) zrot(180) link_connector_pin();
} else {
link_joiner();
right(get_link_segment_size().x) link_connector_socket();
}
}
module link_chain(links_count, include_terminal=true) {
for (i = [0:links_count-1]) {
terminal=(i==links_count-1) && include_terminal;
right(i*get_link_segment_size().x) link(terminal=terminal);
}
}
module clip() {
$fn=$preview?4:20;
socket_size=get_link_socket_size();
clip_size=get_link_clip_size();
pin_diam=get_link_pin_diameter();
slot_slack=get_link_socket_slack();
size=[clip_size.x+socket_size.x, clip_size.y, clip_size.z];
slot_size=[clip_size.x+slot_slack.x, size.y+1, pin_diam+slot_slack.z];
entry_size=[slot_size.x, clip_size.y+1, clip_size.z];
entry_pos=[0, 0, 1.5];
module socket_area() {
$fn=$preview? 10 : 20;
xrot(90) down(size.y/2) cylinder(d=size.z, h=size.y);
}
module socket_cutout() {
$fn=$preview? 10 : 20;
xrot(90) down(slot_size.y/2) cylinder(d=slot_size.z, h=slot_size.y);
}
module cover() {
translate(entry_pos) cube(entry_size, center=true);
}
module joiner(groove) {
slack=groove?0.2:0;
joiner_size=[entry_size.x-6+slack, entry_size.y-6+slack, entry_size.z-3+slack];
joiner_pos=[entry_pos.x, entry_pos.y, entry_pos.z - entry_size.z/2 + joiner_size.z/2];
translate(joiner_pos) cube(joiner_size, center=true);
}
module model() {
difference() {
union() {
right(clip_size.x/2) socket_area();
left(clip_size.x/2) socket_area();
cube(clip_size, center=true);
}
right(clip_size.x/2) socket_cutout();
left(clip_size.x/2) socket_cutout();
}
}
left(socket_size.x/2)
{
if (is_model(MODEL_CLIP_A)) {
difference() {
model();
cover();
}
joiner(groove=false);
}
if (is_model(MODEL_CLIP_B)) {
difference() {
intersection() {
model();
cover();
}
joiner(groove=true);
}
}
}
}
module clip_ratcheting(ratchet_length=28) {
$fn=$preview?4:20;
socket_size=get_link_socket_size();
clip_size=get_link_clip_size();
pin_diam=get_link_pin_diameter();
slot_slack=get_link_socket_slack();
size=[clip_size.x+socket_size.x, clip_size.y, clip_size.z];
slot_size=[clip_size.x+slot_slack.x + 0.2, size.y+1, pin_diam+slot_slack.z];
entry_size=[slot_size.x-5, clip_size.y+1, clip_size.z];
connector_size=[25, 0, 0];
module hookRight() {
right(connector_size.x/2) zrot(180) link_connector_pin();
}
module hookLeft() {
left(connector_size.x/2) link_connector_pin();
}
wall=2;
tooth_size=[4, 3, 3];
module tooth() {
s=[tooth_size.x, tooth_size.z, tooth_size.y];
up(tooth_size.z/2) xrot(-90) right_triangle(s);
}
module teethFwd() {
tooth_count = ratchet_length/tooth_size.x;
fwd((clip_size.y-wall*2)/2)
right(ratchet_length/2) {
for (i=[1:tooth_count]) {
left(i*tooth_size.x) tooth();
}
cap_size=[ratchet_length, tooth_size.y, 1];
up(tooth_size.z/2 + cap_size.z/2) left(cap_size.x/2) back(tooth_size.y/2) {
difference() {
cube(cap_size, center=true);
translate([0.1, 0.1, 0]) back(tooth_size.y/2) right(ratchet_length/2) zrot(180) tooth();
}
}
}
}
module teethBack() {
scale([1, -1, 1]) teethFwd();
}
module ratchetLeft() {
right(ratchet_length/2) {
difference() {
cube([ratchet_length, clip_size.y, clip_size.z], center=true);
up(wall/2) cube([ratchet_length, clip_size.y-wall*2, clip_size.z], center=true);
right(ratchet_length/2+1) {
slideRailGuide(groove=true);
scale([1,-1,1]) slideRailGuide(groove=true);
}
}
teethFwd();
teethBack();
}
}
ratchet_tooth_count=2;
ratchet_wall=2.5;
ratchet_slack=0.3;
rail_slack=0.2;
ratchet_tooth_scale_z=0.8;
module ratchetTeethFront() {
module ratchetButton() {
size=[8,wall*4,4];
up(size.z+1) fwd(wall*2 - ratchet_wall) cuboid(size, fillet=1, edges=EDGES_FRONT);
up(2) back(ratchet_wall/2) cube([size.x, ratchet_wall, tooth_size.z*ratchet_tooth_scale_z + size.z], center=true);
}
fwd((clip_size.y-wall*2)/2 - tooth_size.y - ratchet_slack)
left(ratchet_length) {
for (i=[0:ratchet_tooth_count-1]) {
right(i*tooth_size.x) scale([-1,-1*(1-i/5),ratchet_tooth_scale_z]) tooth();
}
ratchetButton();
}
module ratchetWall() {
up(tooth_size.z/2) left(ratchet_length/2 + wall - wall/2) fwd(clip_size.y/2-wall-tooth_size.y-ratchet_wall/2 - ratchet_slack)
down(wall/2+0.5) cube([ratchet_length + wall, ratchet_wall, tooth_size.z*ratchet_tooth_scale_z], center=true);
}
ratchetWall();
}
module ratchetTeethBack() {
scale([1,-1,1]) ratchetTeethFront();
}
module ratchetRight() {
left(wall) cube([wall*2, clip_size.y + rail_slack*2, clip_size.z], center=true);
ratchetTeethFront();
ratchetTeethBack();
}
module slideRailGuide(groove) {
size=[ratchet_length, wall, wall];
fwd(clip_size.y/2 + rail_slack)
left(size.x/2) scale(groove?1.5:1) cuboid(size, fillet=0.5);
}
module slideRailLeft() {
size=[ratchet_length, clip_size.y/2 - ratchet_wall*2 - wall/2 - ratchet_slack - tooth_size.y, clip_size.z];
right(size.x/2) cube(size, center=true);
}
module slideRailRight() {
size=[ratchet_length + 3, wall*1.5, clip_size.z];
module railFront() {
fwd(clip_size.y/2 + size.y/2 + rail_slack) left(size.x/2)
cuboid(size, fillet=1, edges=EDGES_FRONT);
slideRailGuide(groove=false);
}
module railBack() {
scale([1, -1, 1]) railFront();
}
railFront();
railBack();
}
right(size.x + connector_size.x - 2) {
left(2)
if (is_model(MODEL_CLIP_RATCHETING_A) || is_model(MODEL_CLIP_RATCHETING)) {
left(ratchet_length + wall + 1) {
hookLeft();
left(0.1) {
ratchetLeft();
slideRailLeft();
}
}
}
right(is_model(MODEL_DEMO) ? ratchet_length + 5 : 0)
if (is_model(MODEL_CLIP_RATCHETING_B) || is_model(MODEL_CLIP_RATCHETING)) {
ratchetRight();
hookRight();
slideRailRight();
}
}
}
// === Export ===
if (is_model(MODEL_DEMO)) {
translate([-20, -40, -10]) zrot(-90) {
link_chain(links_count, include_terminal=include_terminal);
right(links_count * get_link_segment_size().x + get_link_clip_size().x) {
clip();
right(get_link_clip_size().x) clip_ratcheting();
}
}
} else {
if (is_model(MODEL_CLIP_A) || is_model(MODEL_CLIP_B)) {
left(get_link_clip_size().x) clip();
}
if (is_model(MODEL_CLIP_RATCHETING) || is_model(MODEL_CLIP_RATCHETING_A) || is_model(MODEL_CLIP_RATCHETING_B)) {
left(get_link_clip_size().x * 2 + 3) clip_ratcheting();
}
if (is_model(MODEL_LINKS)) for (i = [0:links_count-1]) {
terminal=(i==links_count-1) && include_terminal;
right(i*get_link_segment_size().x) link(terminal=terminal);
}
}

65
src/strap_common.scad Normal file
View File

@ -0,0 +1,65 @@
include <export.scad>
use <BOSL/transforms.scad>
use <BOSL/shapes.scad>
include <BOSL/constants.scad>
use <specs_strap.scad>
module pin() {
segment_size=get_link_segment_size();
h=segment_size.y;
d=get_link_pin_diameter();
back(h/2) xrot(90) cylinder(h=h, d=d, $fn=$preview ? 10 : 30);
}
module pin_socket_area() {
segment_size=get_link_segment_size();
h=segment_size.y-get_link_socket_slack().y;
d=segment_size.z;
back(h/2) xrot(90) cylinder(h=h, d=d, $fn=$preview ? 10 : 30);
}
module pin_socket() {
difference() {
pin_socket_area();
scaleup = [
((get_link_pin_diameter() + get_link_socket_slack().x) / get_link_pin_diameter()),
((get_link_pin_diameter() + get_link_socket_slack().y) / get_link_pin_diameter()),
((get_link_pin_diameter() + get_link_socket_slack().z) / get_link_pin_diameter())
];
scale(scaleup) pin();
}
}
module arm() {
segment_size=get_link_segment_size();
arm_size=get_link_joiner_arm_size();
fwd(segment_size.y/2 + arm_size.y/2 - 1) right(arm_size.x/2 - 1) cuboid(arm_size, fillet=1, edges=EDGES_FRONT + EDGES_Y_ALL);
}
module armFront() {
arm();
}
module armBack() {
scale([1, -1, 1]) arm();
}
module armJoiner() {
gap=get_link_socket_roundgap();
arm_size=get_link_joiner_arm_size();
segment_size=get_link_segment_size();
joiner_size=[arm_size.x-get_link_socket_size().x, segment_size.y, segment_size.z];
right(joiner_size.x/2 + get_link_socket_size().x/2 + gap) cuboid(joiner_size, fillet=1, edges=EDGES_Z_ALL + EDGES_BOTTOM);
}
module link_arms() {
armFront();
armBack();
armJoiner();
}
module link_connector_pin() {
pin();
link_arms();
}
module link_connector_socket() {
pin_socket();
}

View File

@ -1,134 +0,0 @@
// dependency: https://github.com/revarbat/BOSL
include <BOSL/constants.scad>
use <BOSL/transforms.scad>
use <BOSL/shapes.scad>
use <BOSL/masks.scad>
use <BOSL/sliders.scad>
// DEBUG:
//validation = 1;
//xray = 1;
// EXPORT:
MODEL_STRAP_PLATFORM_BASE=10;
MODEL_STRAP_PLATFORM_RIB=11;
MODEL_STRAP_PLATFORM_RIB_BRACE=12;
MODEL_STRAP_SECONDARY=13;
export=0; // [0:20]
function is_not_export() = is_undef(export) || export == 0;
function is_export() = !is_not_export();
function is_model_strict(m) = is_export() && export == m;
function is_model(m) = is_not_export() || export == m;
function get_phone_size() = [160, 76.7, 10];
module arm() {
$fn=$preview ? 10 : 30;
arm_size=[200, 55, 40];
color("gray")
down(arm_size.z/2) {
cuboid(arm_size, fillet=16, edges=EDGES_X_ALL);
left(arm_size.x*0.6) scale([1, 1, 0.8]) yrot(90) cylinder(d1=arm_size.y*1.4, d2=arm_size.y*0.95, h=arm_size.x/2);
}
}
module strap_platform() {
base_size=[40, 70, 2];
rib_thickness=5;
rib_height=20;
rib_pos=[base_size.x/2 - rib_thickness, 0, -1.3];
brace_size=[base_size.x, 3.6, 4.8];
brace_pos=[0, base_size.y/2 - 4, -1.3];
module platform_base() {
cutout_size=[(base_size.x-rib_thickness*2 - 2*(base_size.x/2-rib_pos.x)), (base_size.y - 5), 2*base_size.z];
difference() {
down(base_size.z/2) cuboid(base_size, fillet=2, edges=EDGES_Z_ALL);
down(base_size.z/2) cuboid(cutout_size, fillet=2, edges=EDGES_Z_ALL);
model_rib_left(socket=true);
model_rib_right(socket=true);
}
}
module platform_rib(socket=false) {
rib_size=[rib_thickness, base_size.y - 2, rib_height];
difference() {
union() {
difference() {
down(rib_size.z/2) scale(socket ? 1.01 : 1) sparse_strut(h=rib_size.z, l=rib_size.y, thick=rib_size.x, strut=1.2, maxang=40, max_bridge=4);
arm();
}
difference() {
intersection() {
down(rib_size.z/2) cube(rib_size, center=true);
scale(1.07) arm();
}
down(2) scale(1.0) arm();
}
}
fwd(brace_pos.y) platform_rib_brace(socket=true);
back(brace_pos.y) platform_rib_brace(socket=true);
}
}
module platform_rib_brace(socket=false) {
down(rib_height - 1.2 - brace_size.z/2) scale(socket ? 1.02 : 1) cuboid(brace_size, fillet=1, edges=EDGES_X_ALL);
}
module model_rib_left(socket=false) {
left(rib_pos.x) up(rib_pos.z) platform_rib(socket=socket);
}
module model_rib_right(socket=false) {
right(rib_pos.x) up(rib_pos.z) platform_rib(socket=socket);
}
module model_brace_front() {
fwd(brace_pos.y) up(brace_pos.z) platform_rib_brace();
}
module model_brace_back() {
back(brace_pos.y) up(brace_pos.z) platform_rib_brace();
}
if (is_model(MODEL_STRAP_PLATFORM_BASE)) platform_base();
if (is_model(MODEL_STRAP_PLATFORM_RIB)) model_rib_left();
if (is_model(MODEL_STRAP_PLATFORM_RIB_BRACE)) model_brace_front();
if (is_not_export()) {
model_rib_right();
model_brace_back();
}
}
module strap_secondary() {
size=[40, 15, 10];
size_base=[size.x, size.y];
size_top=[size.x * 0.9, size.y * 0.4];
cutout_size=[size.x - 10, size.y*10, size.z - 4];
module anchor() {
difference() {
xrot(180) rounded_prismoid(size1=size_base, size2=size_top, h=size.z, r=5);
down(size.z/2) cube(cutout_size, center=true);
}
}
anchor_pos=[60, 30, 0];
module anchor_front() {
left(anchor_pos.x) fwd(anchor_pos.y) anchor();
}
module anchor_back() {
left(anchor_pos.x) back(anchor_pos.y) anchor();
}
if (is_model(MODEL_STRAP_SECONDARY)) anchor_front();
if (is_not_export()) anchor_back();
}
module model_strap_platform() {
strap_platform();
}
module model_strap_secondary() {
strap_secondary();
}
module model_arm() {
if (is_not_export()) down(3) arm();
}
model_strap_platform();
model_strap_secondary();
model_arm();