Compare commits

..

No commits in common. "stacking" and "main" have entirely different histories.

54 changed files with 86 additions and 631 deletions

3
.gitignore vendored
View File

@ -2,5 +2,4 @@
benchmark
releases
stl/*/*.txt
csg/*
notes/renders.sqlite
csg/*

View File

@ -6,11 +6,10 @@ A free and open-source processing system for 16mm and Super8 film
1. [What's GNAL?](#what)
2. [STL Files](#stls)
3. [Release Notes](#)
4. [Printers](#printers)
5. [Material](#material)
6. [Troubleshooting](#troubleshooting)
7. [Contact](#contact)
3. [Printers](#printers)
4. [Material](#material)
5. [Troubleshooting](#troubleshooting)
6. [Contact](#contact)
---
<a name="what"></a>
@ -35,8 +34,7 @@ There has been a lot of development around 3D printed processing spirals and any
If you find any, please share with the email address at the bottom of this README.
* [Movie Film Spiral Developing Tank by mb_maker on Thingiverse](https://www.thingiverse.com/thing:4715086)
* [New 16mm developing tank by Sam Davisson](https://cinematography.com/index.php?/forums/topic/83456-new-16mm-developing-tank/)
* [16mm Multi-Reel Film Developing Tank by James Harter](https://www.thingiverse.com/thing:4960952)
* [New 16mm developing tank](https://cinematography.com/index.php?/forums/topic/83456-new-16mm-developing-tank/)
## Where's the tank?
@ -44,19 +42,6 @@ Good question!
----
<a name="stls"></a>
## Latest - 3.0.1
#### [All 50ft 3.0.1 STL files in a .zip]()
* [Spiral](stl/50ft_v3/gnal_50ft_spiral.stl)
* [Top](stl/50ft_v3/gnal_50ft_top.stl)
* [Top Spacer](stl/50ft_v3/gnal_50ft_spacer.stl)
* [Bottom Spiral Insert S8](stl/50ft_v3/gnal_50ft_insert_s8.stl)
* [Bottom Spiral Insert 16mm](stl/50ft_v3/gnal_50ft_insert_16.stl)
* [Bottom Spacer 16mm](stl/50ft_v3/gnal_50ft_spacer_16.stl)
* [Spindle Top](stl/50ft_v3/gnal_50ft_spindle_top.stl)
* [Spindle Bottom](stl/50ft_v3/gnal_50ft_spindle_bottom.stl)
## V3 STL Files
![V3 50ft spiral top and bottom](/img/gnal_50ft_v3_spiral_render.jpg)
@ -136,17 +121,6 @@ Good question!
* [Spacer](stl/100ft_v1/gnal_100ft_spacer.stl)
-----
<a name="notes"></a>
## Release Notes
#### v1, v2, v3
* All files were published including the 3 major development versions of the GNAL
* v3 was determined to be the release candidate and is the version in active development
<a name="printers"></a>
## Printers
@ -209,7 +183,7 @@ If your prints are warping, there are a few things to look at:
3. Slicer settings
The first thing to consider when your prints are coming out warped off the print bed is whether or not your **material** is appropriate for this model.
Check the [material](#material) section of this README for more information, but there's a chance if you are using PLA or ABS that large flat prints of this size are warping due to limitations with the material you are using. PETG has proven to warp far less in my own anecdotal experience and is the recommended material for this project.
Check the [material](#material) section of this README for more information, but theres a chance if you are using PLA or ABS that large flat prints of this size are warping due to limitations with the material you are using. PETG has proven to warp far less in my own anecdotal experience and is the recommended material for this project.
The thermal properties of the material you're printing with are what causes warping, so check if your printer is being set to the recommended **temperatures** on both the bed and extruder for the material and printer you are using.
Warping occurs consistently when a section of a part cools too quickly and contracts while the rest of it is still being printed.
@ -249,7 +223,7 @@ Had issues or success printing this? Interested in getting in contact?
MIT License
Copyright (c) 2021 Matt McWilliams
Copyright (c) 2020 Matt McWilliams
Permission is hereby granted, free of charge, to any person obtaining a copy of this hardware, software, and associated documentation files (the "Product"), to deal in the Product without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Product, and to permit persons to whom the Product is furnished to do so, subject to the following conditions:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 89 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 136 KiB

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 144 KiB

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 89 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 136 KiB

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 118 KiB

After

Width:  |  Height:  |  Size: 68 KiB

View File

@ -1,18 +0,0 @@
CREATE TABLE IF NOT EXISTS renders (
time INTEGER PRIMARY KEY,
commit_id TEXT,
source TEXT,
model TEXT,
stl TEXT,
stl_size INTEGER,
facets INTEGER,
volume REAL,
x REAL,
y REAL,
z REAL,
render_time INTEGER,
source_hash TEXT,
stl_hash TEXT,
openscad TEXT,
cpu TEXT
);

View File

@ -1,99 +0,0 @@
/**
* Used to workshop the stacking screw
* */
module stacking_debug () {
translate([0, 0, 72 + 72 + 36]) {
color("blue") gnal_spindle_top();
}
translate([0, 0, 72 + 72]) rotate([0, 180, 0]) intersection () {
gnal_50ft_top();
cylinder(r = 50 / 2, h = 50, center = true);
}
translate([0, 0, 72 + 30]) {
color("blue") rotate([0, 180, 0]) gnal_spindle_bottom();
}
translate([0, 0, 72 + 36]) difference () {
cylinder(r = 50 / 2, h = 16, center = true);
cylinder(r = 22.5 / 2, h = 16 + 1, center = true);
}
translate([0, 0, 36 + 30]) {
color("green") rotate([0, 180, 0]) gnal_stacking_spindle();
}
translate([0, 0, 72]) difference () {
cylinder(r = 50 / 2, h = 16, center = true);
cylinder(r = 22.5 / 2, h = 16 + 1, center = true);
}
translate([0, 0, 30]) {
color("green") rotate([0, 180, 0]) gnal_stacking_spindle();
}
translate([0, 0, 36]) difference () {
cylinder(r = 50 / 2, h = 16, center = true);
cylinder(r = 22.5 / 2, h = 16 + 1, center = true);
}
color("blue") translate([0, 0, 12 + 3]) gnal_spacer_16();
//#1 - bottom spiral
difference () {
cylinder(r = 50 / 2, h = 16, center = true);
cylinder(r = 22.5 / 2, h = 16 + 1, center = true);
translate([0, 0, -8]) spiral_insert_void();
}
color("blue") translate([0, 0, -12]) gnal_spiral_bottom_insert_16();
}
module stacking_debug2 () {
translate([0, 0, 72 + 47]) {
color("blue") gnal_spindle_top();
}
translate([0, 0, 72 + 26]) rotate([0, 180, 0]) intersection () {
gnal_50ft_top();
cylinder(r = 50 / 2, h = 50, center = true);
}
translate([0, 0, 72 - 4]) {
color("blue") rotate([0, 180, 0]) gnal_spindle_bottom();
}
translate([0, 0, 72 + 8]) difference () {
cylinder(r = 50 / 2, h = 16, center = true);
cylinder(r = 22.5 / 2, h = 16 + 1, center = true);
}
translate([0, 0, 36 + 8]) {
color("green") rotate([0, 180, 0]) gnal_stacking_spindle();
}
translate([0, 0, 55.5]) difference () {
cylinder(r = 50 / 2, h = 16, center = true);
cylinder(r = 22.5 / 2, h = 16 + 1, center = true);
}
translate([0, 0, 20]) {
color("green") rotate([0, 180, 0]) gnal_stacking_spindle();
}
translate([0, 0, 32]) difference () {
cylinder(r = 50 / 2, h = 16, center = true);
cylinder(r = 22.5 / 2, h = 16 + 1, center = true);
}
color("blue") translate([0, 0, 12 + 3 + 5]) gnal_spacer_16();
//#1 - bottom spiral
translate([0, 0, 8]) difference () {
cylinder(r = 50 / 2, h = 16, center = true);
cylinder(r = 22.5 / 2, h = 16 + 1, center = true);
translate([0, 0, -8]) spiral_insert_void();
}
color("blue") translate([0, 0, 11]) gnal_spiral_bottom_insert_16();
H = 120;
translate([0, 0, H / 2 - 2]) color("red") cube([1, 50, H], center = true);
}

View File

@ -1,23 +1,17 @@
openscad,cpu,stl,stl_hash,stl_size,source_hash,source_size,facets,volume,render_time,commit
2021.01,AMD Ryzen 7 3700X 8-Core Processor,./stl/50ft_v3/gnal_50ft_spindle_bottom.stl,acb87696d7018c4075fe7a5b805c2b4b9f9461bb00b8cc13f1311a59bcc5911e,3748384,fa01c1fcd2f664dc525042ccdea21ac0a0cb12a28f03260c0426b587a0368c43,8328,74966,4303.875977,264,9d9e5e2
2021.01,AMD Ryzen 7 3700X 8-Core Processor,./stl/50ft_v3/gnal_50ft_spindle_top.stl,b5d22abdd6bfc86aaf7abf03e1bc4f44f32997cd498a859ef72d9791d4c6c809,6918984,fa01c1fcd2f664dc525042ccdea21ac0a0cb12a28f03260c0426b587a0368c43,8328,138378,22225.964844,319,9d9e5e2
2021.01,AMD Ryzen 7 3700X 8-Core Processor,./stl/50ft_v3/gnal_50ft_spindle_single.stl,73456df963eac39ca5fd60cae7098ef85d0555e478e7111c50a0da11233b868e,5963084,fa01c1fcd2f664dc525042ccdea21ac0a0cb12a28f03260c0426b587a0368c43,8328,119260,26349.712891,306,9d9e5e2
2021.01,AMD Ryzen 7 3700X 8-Core Processor,./stl/50ft_v3/gnal_50ft_spindle_stacking.stl,4d80c9798ac9877230e2de70ea5b95f066fe1a294d11d220feae0ef6fec94889,2968184,fa01c1fcd2f664dc525042ccdea21ac0a0cb12a28f03260c0426b587a0368c43,8328,59362,8448.288086,206,9d9e5e2
2021.01,AMD Ryzen 7 3700X 8-Core Processor,./stl/50ft_v3/gnal_50ft_insert_s8.stl,a2dd82c2fe9a9f66ed1b9ef98ab008314eadd50d3f109e7a00e097dd33dd8ced,1361584,fa01c1fcd2f664dc525042ccdea21ac0a0cb12a28f03260c0426b587a0368c43,8328,27230,3286.772461,55,9d9e5e2
2021.01,AMD Ryzen 7 3700X 8-Core Processor,./stl/50ft_v3/gnal_50ft_insert_16.stl,011ce17a4c083d226bb131a92962d831ebf280fb923a32c19e5d39ffa82d2fbb,2071384,fa01c1fcd2f664dc525042ccdea21ac0a0cb12a28f03260c0426b587a0368c43,8328,41426,4355.436523,91,9d9e5e2
2021.01,AMD Ryzen 7 3700X 8-Core Processor,./stl/50ft_v3/gnal_50ft_spacer.stl,f22165803ac56a1bec0b9efbb3615c10256850ea19f6d28cfc16ffb8894e9cd8,286884,fa01c1fcd2f664dc525042ccdea21ac0a0cb12a28f03260c0426b587a0368c43,8328,5736,2888.156250,14,9d9e5e2
2021.01,AMD Ryzen 7 3700X 8-Core Processor,./stl/50ft_v3/gnal_50ft_spacer_16.stl,43b1ea67592d6d68e0c1e2e0c3d73e8414c4771126245a4c85b72ba98409878a,605284,fa01c1fcd2f664dc525042ccdea21ac0a0cb12a28f03260c0426b587a0368c43,8328,12104,3951.205566,52,9d9e5e2
2021.01,AMD Ryzen 7 3700X 8-Core Processor,./stl/50ft_v3/gnal_50ft_insert_single.stl,8e71d04042e1e41bdb88e991871ca63cf97cd2213c719bbedc1d18be4c755eb1,1362184,fa01c1fcd2f664dc525042ccdea21ac0a0cb12a28f03260c0426b587a0368c43,8328,27242,2946.449707,98,9d9e5e2
2021.01,AMD Ryzen 7 3700X 8-Core Processor,./stl/50ft_v3/gnal_50ft_top.stl,570de760a862220ba22e88625196e0ddda74976950889998c327232c7fde3638,1104884,fa01c1fcd2f664dc525042ccdea21ac0a0cb12a28f03260c0426b587a0368c43,8328,22096,57933.875000,109,9d9e5e2
2021.01,AMD Ryzen 7 3700X 8-Core Processor,./stl/50ft_v3/gnal_50ft_spiral.stl,9f0990ad3bcecb3e7eb706e79da5f1e802ecf867198c8cb53c3a3979565b43ae,9493184,fa01c1fcd2f664dc525042ccdea21ac0a0cb12a28f03260c0426b587a0368c43,8328,189862,172539.781250,836,9d9e5e2
2021.01,AMD Ryzen 7 3700X 8-Core Processor,./stl/100ft_v3/gnal_100ft_spindle_bottom.stl,5218e3383e46b13bdeadc2166531c11d2aea4eafb8e4c7346e9a5e6536fc9805,3748384,f6079933217206a4c314ba11d758a35f002be4442ef54928c7f443e9bd4c0fce,10795,74966,4303.873535,270,9d9e5e2
2021.01,AMD Ryzen 7 3700X 8-Core Processor,./stl/100ft_v3/gnal_100ft_spindle_top.stl,8dbd307cf5aaec9099e901909fdc6472dd7e0fc487b890be00443c99790776a7,6982784,f6079933217206a4c314ba11d758a35f002be4442ef54928c7f443e9bd4c0fce,10795,139654,22226.011719,334,9d9e5e2
2021.01,AMD Ryzen 7 3700X 8-Core Processor,./stl/100ft_v3/gnal_100ft_spindle_single.stl,af5245e9b1f4aee95ef73d88fca51e9b2036f71a587f55853742bde7b19e22a3,6026884,f6079933217206a4c314ba11d758a35f002be4442ef54928c7f443e9bd4c0fce,10795,120536,26350.066406,328,9d9e5e2
2021.01,AMD Ryzen 7 3700X 8-Core Processor,./stl/100ft_v3/gnal_100ft_spindle_stacking.stl,1b440745d0c251fb2986f63b15de196a958d5726088a660c4ae0e92da11706a9,2968184,f6079933217206a4c314ba11d758a35f002be4442ef54928c7f443e9bd4c0fce,10795,59362,8448.282227,203,9d9e5e2
2021.01,AMD Ryzen 7 3700X 8-Core Processor,./stl/100ft_v3/gnal_100ft_insert_s8.stl,d53020825b2abadcab80e5a256af23b5ae4faa7c207268c6bcecf742be1d73b4,1361584,f6079933217206a4c314ba11d758a35f002be4442ef54928c7f443e9bd4c0fce,10795,27230,3286.773926,56,9d9e5e2
2021.01,AMD Ryzen 7 3700X 8-Core Processor,./stl/100ft_v3/gnal_100ft_insert_16.stl,3a810cb106d6713a389b2f60139a19733d8d357ee7fc5d1a481b8a75fda40b8e,2071384,f6079933217206a4c314ba11d758a35f002be4442ef54928c7f443e9bd4c0fce,10795,41426,4355.436035,89,9d9e5e2
2021.01,AMD Ryzen 7 3700X 8-Core Processor,./stl/100ft_v3/gnal_100ft_spacer.stl,665cbe1e8ad4ff401939d64b725540fa6ba4d77aee4d265de1b92a8a0a880f6a,286884,f6079933217206a4c314ba11d758a35f002be4442ef54928c7f443e9bd4c0fce,10795,5736,2888.155518,14,9d9e5e2
2021.01,AMD Ryzen 7 3700X 8-Core Processor,./stl/100ft_v3/gnal_100ft_spacer_16.stl,cb1bae331e85d92b9581f7c199b8fee2045b720a89d1a0588ab38df6241f938b,755684,f6079933217206a4c314ba11d758a35f002be4442ef54928c7f443e9bd4c0fce,10795,15112,3951.218750,72,9d9e5e2
2021.01,AMD Ryzen 7 3700X 8-Core Processor,./stl/100ft_v3/gnal_100ft_insert_single.stl,4f68f9cb0d3b042a2e8527389b9a148e674670ddd4579c51e6e4cf60150bd3fa,1362184,f6079933217206a4c314ba11d758a35f002be4442ef54928c7f443e9bd4c0fce,10795,27242,2946.450684,94,9d9e5e2
2021.01,AMD Ryzen 7 3700X 8-Core Processor,./stl/100ft_v3/gnal_100ft_top.stl,f79c78fcd614d9a2ae0a4df293696f443b3a23e46849caaaee3cd81df310a80d,1620084,f6079933217206a4c314ba11d758a35f002be4442ef54928c7f443e9bd4c0fce,10795,32400,102557.703125,187,9d9e5e2
2021.01,AMD Ryzen 7 3700X 8-Core Processor,./stl/100ft_v3/gnal_100ft_spiral.stl,e9c33c69bcc11f1f3273427dc6bab46d1fdd6fe955467402fac880dd0a9d2460,18336384,f6079933217206a4c314ba11d758a35f002be4442ef54928c7f443e9bd4c0fce,10795,366726,327833.812500,4682,9d9e5e2
version,cpu,file,file_hash,file_size,source_hash,source_size,facets,volume,render_time
2020.08.18,Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz,./stl/50ft_v3/gnal_50ft_spindle_bottom.stl,06424e6ddf76a857fc3b9bc5e5346e74c04ce48eabcbb80b94676b3088277ef6,3760384,09f2e406d8a1ba16229d89fcb1aa36e635dcd185811b98e41224cb7bbf72f315,8420,75206,4134.077637,1291
2020.08.18,Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz,./stl/50ft_v3/gnal_50ft_spindle_top.stl,be80982ec5cdad509266021300fcd7519981092e0fcc45f8180b342b10446e8b,6915384,09f2e406d8a1ba16229d89fcb1aa36e635dcd185811b98e41224cb7bbf72f315,8420,138306,22229.814453,1128
2020.08.18,Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz,./stl/50ft_v3/gnal_50ft_spacer.stl,227b24571911a243312d4945dfbe020cf1dedee17b745f37ae6aa5d4ff4dfda6,286884,09f2e406d8a1ba16229d89fcb1aa36e635dcd185811b98e41224cb7bbf72f315,8420,5736,2888.150635,62
2020.08.18,Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz,./stl/50ft_v3/gnal_50ft_top.stl,7bdad60d3f656d2a6f596f91265c9ff646b70980fa21017d4d9dc4039efefc09,1104884,09f2e406d8a1ba16229d89fcb1aa36e635dcd185811b98e41224cb7bbf72f315,8420,22096,57933.800781,585
2020.08.18,Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz,./stl/50ft_v3/gnal_50ft_spiral.stl,f97986b3f90f765e5510b3a10940203e16fc1fe2300ea04e5977c538ac4325d3,9500384,09f2e406d8a1ba16229d89fcb1aa36e635dcd185811b98e41224cb7bbf72f315,8420,190006,171712.140625,1111
2020.08.18,Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz,./stl/50ft_v3/gnal_50ft_insert_s8.stl,8803f73172ec6aa44f70b389210bc55bd7541a9d76924bd3ea056a5615986592,1361584,09f2e406d8a1ba16229d89fcb1aa36e635dcd185811b98e41224cb7bbf72f315,8420,27230,3493.544922,276
2020.08.18,Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz,./stl/50ft_v3/gnal_50ft_insert_16.stl,ed6a80eac3b2c82dc3be22130f1d0fe6e44c37016b27522a95a5f268c23c83be,2071384,09f2e406d8a1ba16229d89fcb1aa36e635dcd185811b98e41224cb7bbf72f315,8420,41426,4665.019531,439
2020.08.18,Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz,./stl/50ft_v3/gnal_50ft_spacer_16.stl,d9b8c412792f6b6d3b9817fc7f8e0f1b431202844374f44800da97caad3b15e8,602084,09f2e406d8a1ba16229d89fcb1aa36e635dcd185811b98e41224cb7bbf72f315,8420,12040,4019.470703,281
2020.08.18,Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz,./stl/100ft_v3/gnal_100ft_spindle_bottom.stl,df189c1345ab5da921857fb837a3814bbfdc9fd9da8eb5bbaf6cf63c2347859e,3760384,a435a7d28947374c724e7618466d7f38d4fb5eb1f5bbaacb9061ef58dab3f8e2,11728,75206,4134.064941,1275
2020.08.18,Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz,./stl/100ft_v3/gnal_100ft_spindle_top.stl,bad92e882e26ee489d7625e65f40c035b6e7c632473f3db6d0b3633eab9d8411,6979184,a435a7d28947374c724e7618466d7f38d4fb5eb1f5bbaacb9061ef58dab3f8e2,11728,139582,22229.773438,1139
2020.08.18,Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz,./stl/100ft_v3/gnal_100ft_spacer.stl,dda2654f9209e8b17515f42cd7602d59b542630469b1f848442665a6ce2b2158,286884,a435a7d28947374c724e7618466d7f38d4fb5eb1f5bbaacb9061ef58dab3f8e2,11728,5736,2888.143555,63
2020.08.18,Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz,./stl/100ft_v3/gnal_100ft_top.stl,bc39a67711877624917866f3ce80e4164c165969f52cf0e34b7e7fb65b0b1565,1620084,a435a7d28947374c724e7618466d7f38d4fb5eb1f5bbaacb9061ef58dab3f8e2,11728,32400,102557.437500,998
2020.08.18,Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz,./stl/100ft_v3/gnal_100ft_spiral.stl,bf12d37e85d88a3d9aeccbf2e0661e9bb8aae7a919dbc9a065c7919b0e0321c3,18364384,a435a7d28947374c724e7618466d7f38d4fb5eb1f5bbaacb9061ef58dab3f8e2,11728,367286,326573.812500,3746
2020.08.18,Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz,./stl/100ft_v3/gnal_100ft_insert_s8.stl,64e954bbe40e104e7a3fc571420ea71841e752c443b2f3bbc54b7a7f316bdc02,1361584,a435a7d28947374c724e7618466d7f38d4fb5eb1f5bbaacb9061ef58dab3f8e2,11728,27230,3493.548340,272
2020.08.18,Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz,./stl/100ft_v3/gnal_100ft_insert_16.stl,3a0474be55afc9fd8217149dddd474530e8259e217d9a861d39f7e933b5da741,2071384,a435a7d28947374c724e7618466d7f38d4fb5eb1f5bbaacb9061ef58dab3f8e2,11728,41426,4664.790527,450
2020.08.18,Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz,./stl/100ft_v3/gnal_100ft_spacer_16.stl,b6272b501d6c4dcd86369c9a9b21b355f941fbaf60abca9f88c43a22ddbc443b,755684,a435a7d28947374c724e7618466d7f38d4fb5eb1f5bbaacb9061ef58dab3f8e2,11728,15112,4019.479248,368

1 openscad version cpu stl file stl_hash file_hash stl_size file_size source_hash source_size facets volume render_time commit
2 2021.01 2020.08.18 AMD Ryzen 7 3700X 8-Core Processor Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz ./stl/50ft_v3/gnal_50ft_spindle_bottom.stl ./stl/50ft_v3/gnal_50ft_spindle_bottom.stl acb87696d7018c4075fe7a5b805c2b4b9f9461bb00b8cc13f1311a59bcc5911e 06424e6ddf76a857fc3b9bc5e5346e74c04ce48eabcbb80b94676b3088277ef6 3748384 3760384 fa01c1fcd2f664dc525042ccdea21ac0a0cb12a28f03260c0426b587a0368c43 09f2e406d8a1ba16229d89fcb1aa36e635dcd185811b98e41224cb7bbf72f315 8328 8420 74966 75206 4303.875977 4134.077637 264 1291 9d9e5e2
3 2021.01 2020.08.18 AMD Ryzen 7 3700X 8-Core Processor Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz ./stl/50ft_v3/gnal_50ft_spindle_top.stl ./stl/50ft_v3/gnal_50ft_spindle_top.stl b5d22abdd6bfc86aaf7abf03e1bc4f44f32997cd498a859ef72d9791d4c6c809 be80982ec5cdad509266021300fcd7519981092e0fcc45f8180b342b10446e8b 6918984 6915384 fa01c1fcd2f664dc525042ccdea21ac0a0cb12a28f03260c0426b587a0368c43 09f2e406d8a1ba16229d89fcb1aa36e635dcd185811b98e41224cb7bbf72f315 8328 8420 138378 138306 22225.964844 22229.814453 319 1128 9d9e5e2
4 2021.01 2020.08.18 AMD Ryzen 7 3700X 8-Core Processor Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz ./stl/50ft_v3/gnal_50ft_spindle_single.stl ./stl/50ft_v3/gnal_50ft_spacer.stl 73456df963eac39ca5fd60cae7098ef85d0555e478e7111c50a0da11233b868e 227b24571911a243312d4945dfbe020cf1dedee17b745f37ae6aa5d4ff4dfda6 5963084 286884 fa01c1fcd2f664dc525042ccdea21ac0a0cb12a28f03260c0426b587a0368c43 09f2e406d8a1ba16229d89fcb1aa36e635dcd185811b98e41224cb7bbf72f315 8328 8420 119260 5736 26349.712891 2888.150635 306 62 9d9e5e2
5 2021.01 2020.08.18 AMD Ryzen 7 3700X 8-Core Processor Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz ./stl/50ft_v3/gnal_50ft_spindle_stacking.stl ./stl/50ft_v3/gnal_50ft_top.stl 4d80c9798ac9877230e2de70ea5b95f066fe1a294d11d220feae0ef6fec94889 7bdad60d3f656d2a6f596f91265c9ff646b70980fa21017d4d9dc4039efefc09 2968184 1104884 fa01c1fcd2f664dc525042ccdea21ac0a0cb12a28f03260c0426b587a0368c43 09f2e406d8a1ba16229d89fcb1aa36e635dcd185811b98e41224cb7bbf72f315 8328 8420 59362 22096 8448.288086 57933.800781 206 585 9d9e5e2
6 2021.01 2020.08.18 AMD Ryzen 7 3700X 8-Core Processor Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz ./stl/50ft_v3/gnal_50ft_insert_s8.stl ./stl/50ft_v3/gnal_50ft_spiral.stl a2dd82c2fe9a9f66ed1b9ef98ab008314eadd50d3f109e7a00e097dd33dd8ced f97986b3f90f765e5510b3a10940203e16fc1fe2300ea04e5977c538ac4325d3 1361584 9500384 fa01c1fcd2f664dc525042ccdea21ac0a0cb12a28f03260c0426b587a0368c43 09f2e406d8a1ba16229d89fcb1aa36e635dcd185811b98e41224cb7bbf72f315 8328 8420 27230 190006 3286.772461 171712.140625 55 1111 9d9e5e2
7 2021.01 2020.08.18 AMD Ryzen 7 3700X 8-Core Processor Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz ./stl/50ft_v3/gnal_50ft_insert_16.stl ./stl/50ft_v3/gnal_50ft_insert_s8.stl 011ce17a4c083d226bb131a92962d831ebf280fb923a32c19e5d39ffa82d2fbb 8803f73172ec6aa44f70b389210bc55bd7541a9d76924bd3ea056a5615986592 2071384 1361584 fa01c1fcd2f664dc525042ccdea21ac0a0cb12a28f03260c0426b587a0368c43 09f2e406d8a1ba16229d89fcb1aa36e635dcd185811b98e41224cb7bbf72f315 8328 8420 41426 27230 4355.436523 3493.544922 91 276 9d9e5e2
8 2021.01 2020.08.18 AMD Ryzen 7 3700X 8-Core Processor Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz ./stl/50ft_v3/gnal_50ft_spacer.stl ./stl/50ft_v3/gnal_50ft_insert_16.stl f22165803ac56a1bec0b9efbb3615c10256850ea19f6d28cfc16ffb8894e9cd8 ed6a80eac3b2c82dc3be22130f1d0fe6e44c37016b27522a95a5f268c23c83be 286884 2071384 fa01c1fcd2f664dc525042ccdea21ac0a0cb12a28f03260c0426b587a0368c43 09f2e406d8a1ba16229d89fcb1aa36e635dcd185811b98e41224cb7bbf72f315 8328 8420 5736 41426 2888.156250 4665.019531 14 439 9d9e5e2
9 2021.01 2020.08.18 AMD Ryzen 7 3700X 8-Core Processor Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz ./stl/50ft_v3/gnal_50ft_spacer_16.stl ./stl/50ft_v3/gnal_50ft_spacer_16.stl 43b1ea67592d6d68e0c1e2e0c3d73e8414c4771126245a4c85b72ba98409878a d9b8c412792f6b6d3b9817fc7f8e0f1b431202844374f44800da97caad3b15e8 605284 602084 fa01c1fcd2f664dc525042ccdea21ac0a0cb12a28f03260c0426b587a0368c43 09f2e406d8a1ba16229d89fcb1aa36e635dcd185811b98e41224cb7bbf72f315 8328 8420 12104 12040 3951.205566 4019.470703 52 281 9d9e5e2
10 2021.01 2020.08.18 AMD Ryzen 7 3700X 8-Core Processor Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz ./stl/50ft_v3/gnal_50ft_insert_single.stl ./stl/100ft_v3/gnal_100ft_spindle_bottom.stl 8e71d04042e1e41bdb88e991871ca63cf97cd2213c719bbedc1d18be4c755eb1 df189c1345ab5da921857fb837a3814bbfdc9fd9da8eb5bbaf6cf63c2347859e 1362184 3760384 fa01c1fcd2f664dc525042ccdea21ac0a0cb12a28f03260c0426b587a0368c43 a435a7d28947374c724e7618466d7f38d4fb5eb1f5bbaacb9061ef58dab3f8e2 8328 11728 27242 75206 2946.449707 4134.064941 98 1275 9d9e5e2
11 2021.01 2020.08.18 AMD Ryzen 7 3700X 8-Core Processor Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz ./stl/50ft_v3/gnal_50ft_top.stl ./stl/100ft_v3/gnal_100ft_spindle_top.stl 570de760a862220ba22e88625196e0ddda74976950889998c327232c7fde3638 bad92e882e26ee489d7625e65f40c035b6e7c632473f3db6d0b3633eab9d8411 1104884 6979184 fa01c1fcd2f664dc525042ccdea21ac0a0cb12a28f03260c0426b587a0368c43 a435a7d28947374c724e7618466d7f38d4fb5eb1f5bbaacb9061ef58dab3f8e2 8328 11728 22096 139582 57933.875000 22229.773438 109 1139 9d9e5e2
12 2021.01 2020.08.18 AMD Ryzen 7 3700X 8-Core Processor Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz ./stl/50ft_v3/gnal_50ft_spiral.stl ./stl/100ft_v3/gnal_100ft_spacer.stl 9f0990ad3bcecb3e7eb706e79da5f1e802ecf867198c8cb53c3a3979565b43ae dda2654f9209e8b17515f42cd7602d59b542630469b1f848442665a6ce2b2158 9493184 286884 fa01c1fcd2f664dc525042ccdea21ac0a0cb12a28f03260c0426b587a0368c43 a435a7d28947374c724e7618466d7f38d4fb5eb1f5bbaacb9061ef58dab3f8e2 8328 11728 189862 5736 172539.781250 2888.143555 836 63 9d9e5e2
13 2021.01 2020.08.18 AMD Ryzen 7 3700X 8-Core Processor Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz ./stl/100ft_v3/gnal_100ft_spindle_bottom.stl ./stl/100ft_v3/gnal_100ft_top.stl 5218e3383e46b13bdeadc2166531c11d2aea4eafb8e4c7346e9a5e6536fc9805 bc39a67711877624917866f3ce80e4164c165969f52cf0e34b7e7fb65b0b1565 3748384 1620084 f6079933217206a4c314ba11d758a35f002be4442ef54928c7f443e9bd4c0fce a435a7d28947374c724e7618466d7f38d4fb5eb1f5bbaacb9061ef58dab3f8e2 10795 11728 74966 32400 4303.873535 102557.437500 270 998 9d9e5e2
14 2021.01 2020.08.18 AMD Ryzen 7 3700X 8-Core Processor Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz ./stl/100ft_v3/gnal_100ft_spindle_top.stl ./stl/100ft_v3/gnal_100ft_spiral.stl 8dbd307cf5aaec9099e901909fdc6472dd7e0fc487b890be00443c99790776a7 bf12d37e85d88a3d9aeccbf2e0661e9bb8aae7a919dbc9a065c7919b0e0321c3 6982784 18364384 f6079933217206a4c314ba11d758a35f002be4442ef54928c7f443e9bd4c0fce a435a7d28947374c724e7618466d7f38d4fb5eb1f5bbaacb9061ef58dab3f8e2 10795 11728 139654 367286 22226.011719 326573.812500 334 3746 9d9e5e2
15 2021.01 2020.08.18 AMD Ryzen 7 3700X 8-Core Processor Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz ./stl/100ft_v3/gnal_100ft_spindle_single.stl ./stl/100ft_v3/gnal_100ft_insert_s8.stl af5245e9b1f4aee95ef73d88fca51e9b2036f71a587f55853742bde7b19e22a3 64e954bbe40e104e7a3fc571420ea71841e752c443b2f3bbc54b7a7f316bdc02 6026884 1361584 f6079933217206a4c314ba11d758a35f002be4442ef54928c7f443e9bd4c0fce a435a7d28947374c724e7618466d7f38d4fb5eb1f5bbaacb9061ef58dab3f8e2 10795 11728 120536 27230 26350.066406 3493.548340 328 272 9d9e5e2
16 2021.01 2020.08.18 AMD Ryzen 7 3700X 8-Core Processor Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz ./stl/100ft_v3/gnal_100ft_spindle_stacking.stl ./stl/100ft_v3/gnal_100ft_insert_16.stl 1b440745d0c251fb2986f63b15de196a958d5726088a660c4ae0e92da11706a9 3a0474be55afc9fd8217149dddd474530e8259e217d9a861d39f7e933b5da741 2968184 2071384 f6079933217206a4c314ba11d758a35f002be4442ef54928c7f443e9bd4c0fce a435a7d28947374c724e7618466d7f38d4fb5eb1f5bbaacb9061ef58dab3f8e2 10795 11728 59362 41426 8448.282227 4664.790527 203 450 9d9e5e2
17 2021.01 2020.08.18 AMD Ryzen 7 3700X 8-Core Processor Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz ./stl/100ft_v3/gnal_100ft_insert_s8.stl ./stl/100ft_v3/gnal_100ft_spacer_16.stl d53020825b2abadcab80e5a256af23b5ae4faa7c207268c6bcecf742be1d73b4 b6272b501d6c4dcd86369c9a9b21b355f941fbaf60abca9f88c43a22ddbc443b 1361584 755684 f6079933217206a4c314ba11d758a35f002be4442ef54928c7f443e9bd4c0fce a435a7d28947374c724e7618466d7f38d4fb5eb1f5bbaacb9061ef58dab3f8e2 10795 11728 27230 15112 3286.773926 4019.479248 56 368 9d9e5e2
2021.01 AMD Ryzen 7 3700X 8-Core Processor ./stl/100ft_v3/gnal_100ft_insert_16.stl 3a810cb106d6713a389b2f60139a19733d8d357ee7fc5d1a481b8a75fda40b8e 2071384 f6079933217206a4c314ba11d758a35f002be4442ef54928c7f443e9bd4c0fce 10795 41426 4355.436035 89 9d9e5e2
2021.01 AMD Ryzen 7 3700X 8-Core Processor ./stl/100ft_v3/gnal_100ft_spacer.stl 665cbe1e8ad4ff401939d64b725540fa6ba4d77aee4d265de1b92a8a0a880f6a 286884 f6079933217206a4c314ba11d758a35f002be4442ef54928c7f443e9bd4c0fce 10795 5736 2888.155518 14 9d9e5e2
2021.01 AMD Ryzen 7 3700X 8-Core Processor ./stl/100ft_v3/gnal_100ft_spacer_16.stl cb1bae331e85d92b9581f7c199b8fee2045b720a89d1a0588ab38df6241f938b 755684 f6079933217206a4c314ba11d758a35f002be4442ef54928c7f443e9bd4c0fce 10795 15112 3951.218750 72 9d9e5e2
2021.01 AMD Ryzen 7 3700X 8-Core Processor ./stl/100ft_v3/gnal_100ft_insert_single.stl 4f68f9cb0d3b042a2e8527389b9a148e674670ddd4579c51e6e4cf60150bd3fa 1362184 f6079933217206a4c314ba11d758a35f002be4442ef54928c7f443e9bd4c0fce 10795 27242 2946.450684 94 9d9e5e2
2021.01 AMD Ryzen 7 3700X 8-Core Processor ./stl/100ft_v3/gnal_100ft_top.stl f79c78fcd614d9a2ae0a4df293696f443b3a23e46849caaaee3cd81df310a80d 1620084 f6079933217206a4c314ba11d758a35f002be4442ef54928c7f443e9bd4c0fce 10795 32400 102557.703125 187 9d9e5e2
2021.01 AMD Ryzen 7 3700X 8-Core Processor ./stl/100ft_v3/gnal_100ft_spiral.stl e9c33c69bcc11f1f3273427dc6bab46d1fdd6fe955467402fac880dd0a9d2460 18336384 f6079933217206a4c314ba11d758a35f002be4442ef54928c7f443e9bd4c0fce 10795 366726 327833.812500 4682 9d9e5e2

View File

@ -3,8 +3,6 @@
include <../libraries/gnal_v3.scad>;
SPOKE_COUNT = 24;
FN = 200;
$fn = FN;
module gnal_100ft_spiral (spiral_count = 60, od = 298.75, quarter = false) {
outer_d = 299;
@ -252,13 +250,11 @@ module gnal_100ft_top () {
}
}
FN = 200;
$fn = FN;
module film_guide (rotations = 60, id = 45.55, spacing = 2.075, bottom = -2) {
spiral(rotations, id, spacing, bottom, $fn);
//reinforce outer spiral
difference () {
spiral_reinforcement(292.9, spacing, -0.1, $fn);
translate([149.125, 9, 0]) cube([5, 20, 10], center = true);
}
}
PART="spiral";
@ -277,20 +273,18 @@ if (PART == "spiral") {
gnal_100ft_top();
} else if (PART == "spacer") {
gnal_spacer();
} else if (PART == "spacer_16") {
gnal_spacer_16();
} else if (PART == "insert_s8") {
gnal_spiral_bottom_insert_s8();
} else if (PART == "insert_16") {
gnal_spiral_bottom_insert_16();
} else if (PART == "insert_single") {
gnal_spiral_bottom_insert_single();
} else if (PART == "spacer_16") {
gnal_spacer_16();
} else if (PART == "spindle_top") {
gnal_spindle_top();
} else if (PART == "spindle_bottom") {
gnal_spindle_bottom();
} else if (PART == "spindle_single") {
gnal_spindle_single();
} else if (PART == "spindle_stacking") {
rotate([0, 180, 0]) gnal_stacking_spindle();
}

View File

@ -3,8 +3,6 @@
include <../libraries/gnal_v3.scad>;
SPOKE_COUNT = 24;
FN = 200;
$fn = FN;
module gnal_50ft_spiral (spiral_count = 40, od = 215.75, quarter = false) {
outer_d = 215;
@ -182,17 +180,14 @@ module gnal_50ft_top () {
}
}
FN = 200;
$fn = FN;
module film_guide (rotations = 40, id = 45.55 - .5, spacing = 2.075, bottom = -2) {
spiral(rotations, id, spacing, bottom, $fn);
//reinforce outer spiral
difference () {
spiral_reinforcement(208.9, spacing, -0.1, $fn);
translate([107.35, 6, 0]) cube([5, 15, 10], center = true);
}
}
PART="spiral";
PART="quarter_a";
if (PART == "spiral") {
gnal_50ft_spiral();
@ -208,22 +203,20 @@ if (PART == "spiral") {
gnal_50ft_top();
} else if (PART == "spacer") {
gnal_spacer();
} else if (PART == "spacer_16") {
gnal_spacer_16();
} else if (PART == "insert_s8") {
gnal_spiral_bottom_insert_s8();
} else if (PART == "insert_16") {
gnal_spiral_bottom_insert_16();
} else if (PART == "insert_single") {
gnal_spiral_bottom_insert_single();
} else if (PART == "spacer_16") {
gnal_spacer_16();
} else if (PART == "spindle_top") {
gnal_spindle_top();
} else if (PART == "spindle_bottom") {
gnal_spindle_bottom();
} else if (PART == "spindle_single") {
gnal_spindle_single();
} else if (PART == "spindle_stacking") {
rotate([0, 180, 0]) gnal_stacking_spindle();
gnal_spindle_top();
} else if (PART == "spiral_test") {
difference () {
gnal_50ft_spiral();
@ -231,13 +224,3 @@ if (PART == "spiral") {
rotate([0, 0, 30]) translate([-125, 0, 0]) cube([250, 250, 100], center = true);
}
}
if (DEBUG) {
echo("WARNING: DEBUG is enabled");
}
/*
echo($vpt);
echo($vpr);
echo($vpd);
*/

View File

@ -17,7 +17,6 @@ include <./Triangles.scad>;
*
*/
DEBUG = false;
FINE = 200;
OD = 10 + .5;
@ -81,39 +80,6 @@ module spiral (rotations = 40, start_d = 48, spacing = 2.075, bottom = -7.1, fn)
path_extrude(exShape=facetProfile, exPath=spiralPath);
}
module spiral_reinforcement ( start_d = 48, spacing = 2.075, bottom = -2, fn) {
rotations = 1;
w = 1;
top_w = .8;
top_offset = (w - top_w);
h = 2.2;
facetProfile = [
[w, -bottom],
[0, -bottom],
[0, 0],
[0, -h],
[w, -h],
[w, 0]
];
end_d = start_d + (spacing * 2 * rotations);
end_r = end_d / 2;
start_r = start_d / 2;
facetSize = calcFacetSize(end_d, fn);
start_fn = round(circ(start_d) / facetSize);
spiralPath = [ for (r = [0 : rotations - 1]) for (i = [0 : round(calcFn(start_d, start_fn, end_d, spacing, r )) - 1 ])
[
X(start_r, spacing, round(calcFn(start_d, start_fn, end_d, spacing, r )), r, i),
Y(start_r, spacing, round(calcFn(start_d, start_fn, end_d, spacing, r )), r, i),
0]
];
path_extrude(exShape=facetProfile, exPath=spiralPath);
}
/**
* Core (center of the reel)
**/
@ -236,8 +202,7 @@ module spiral_insert_void () {
module gnal_spiral_bottom_insert_s8 () {
$fn = 160;
OD = 10.5 + .3;
void_d = 18 - .6;
void_d = 18 - .3;
H = 17;
D2 = INSERT_D;
@ -264,21 +229,14 @@ module gnal_spiral_bottom_insert_s8 () {
}
}
}
translate([0, 0, -LEN / 2]) {
if (DEBUG) {
cylinder(r = OD / 2, h = LEN);
} else {
metric_thread (diameter=OD, pitch=PITCH, thread_size = THREAD, length=LEN);
}
}
translate([0, 0, -LEN / 2]) metric_thread (diameter=OD, pitch=PITCH, thread_size = THREAD, length=LEN);
}
}
module gnal_spiral_bottom_insert_16 () {
$fn = 160;
OD = 10.5 + .3;
void_d = 18 - .6;
void_d = 18 - .3;
H = 17 + 8;
D2 = INSERT_D;
@ -308,13 +266,7 @@ module gnal_spiral_bottom_insert_16 () {
}
}
}
translate([0, 0, -(H / 2) - 2]) {
if (DEBUG) {
cylinder(r = OD / 2, h = LEN + 8);
} else {
metric_thread (diameter=OD, pitch=PITCH, thread_size = THREAD, length=LEN + 8);
}
}
translate([0, 0, -(H / 2) - 2]) metric_thread (diameter=OD, pitch=PITCH, thread_size = THREAD, length=LEN + 8);
translate([0, 0, 8.5]) {
for (i = [0: RIDGES - 1]) {
rotate([0, 0, i * (360 / RIDGES)]) translate([void_d / 2, 0, 0]) cylinder(r = RIDGE_D / 2, h = 8.1, center = true);
@ -331,7 +283,7 @@ module gnal_spiral_bottom_insert_16 () {
**/
module gnal_spiral_bottom_insert_single () {
$fn = 160;
void_d = 18 - .6;
void_d = 18 - .3;
H = 17;
D2 = INSERT_D;
@ -358,13 +310,7 @@ module gnal_spiral_bottom_insert_single () {
}
}
}
translate([0, 0, -LEN / 2]) {
if (DEBUG) {
cylinder(r = SINGLE_THREAD_D / 2, h = LEN);
} else {
metric_thread (diameter=SINGLE_THREAD_D, pitch=PITCH, thread_size = THREAD, length = LEN);
}
}
translate([0, 0, -LEN / 2]) metric_thread (diameter=SINGLE_THREAD_D, pitch=PITCH, thread_size = THREAD, length = LEN);
}
}
@ -405,29 +351,6 @@ module spacer_outer_ridges () {
}
}
}
module gnal_spacer_solid () {
core_d = 29.5;
core_bottom_d = 26.2 + .2;
void_d = 18;
h = 8;
RIDGES = 8;
RIDGE_D = 3;
translate([0, 0, 0]) difference () {
union () {
difference () {
cylinder(r = core_d / 2, h = h, center = true, $fn = 200);
}
translate([0, 0, -.75]) rotate([0, 180, 0]) spacer_outer_ridges();
}
}
}
/**
* This spacer attaches to the top piece when it is used
* for Super8 film.
**/
module gnal_spacer () {
add = 3.25;
core_d = 29.5;
@ -448,21 +371,28 @@ module gnal_spacer () {
translate([0, 0, h - 0.1]) cylinder(r = (core_d + 1) / 2, h = h, center = true, $fn = 200);
//trim bottom
translate([0, 0, -h + 0.9]) cylinder(r = (core_d + 1) / 2, h = h, center = true, $fn = 200);
//finger grips
//translate([0, 24, 0]) rotate([-6, 0, 0]) cylinder(r = 10, h = 6, center = true, $fn = 100);
//translate([0, -24, 0]) rotate([6, 0, 0]) cylinder(r = 10, h = 6, center = true, $fn = 100);
}
}
module gnal_spacer_16 () {
core_d = 29.5;
core_bottom_d = 26.2 + .2;
void_d = 18.3;
void_d = 18;
h = 8;
RIDGES = 8;
RIDGE_D = 3;
difference () {
gnal_spacer_solid();
cylinder(r = void_d / 2, h = h + 1, center = true, $fn = 200);
translate([0, 0, 0]) difference () {
union () {
difference () {
cylinder(r = core_d / 2, h = h, center = true, $fn = 200);
cylinder(r = void_d / 2, h = h + 1, center = true, $fn = 200);
}
translate([0, 0, -.75]) rotate([0, 180, 0]) spacer_outer_ridges();
}
}
translate([0, 0, 0]) {
for (i = [0: RIDGES - 1]) {
@ -475,17 +405,9 @@ module gnal_spacer_16 () {
* Spindles
**/
module gnal_spindle_base ( ) {
module gnal_spindle_bottom_base ( HEX = false) {
D = 8.45 * 2;
H = 20;
union() {
translate([0, 0, -15]) {
cylinder(r = D / 2, h = H, center = true, $fn = FINE);
}
}
}
module gnal_spindle_bottom_base ( HEX = false) {
//for grip
BUMP = 2; //diameter
BUMPS = 6;
@ -494,7 +416,9 @@ module gnal_spindle_bottom_base ( HEX = false) {
TOP_OFFSET = -24.5;
union() {
gnal_spindle_base();
translate([0, 0, -15]) {
cylinder(r = D / 2, h = H, center = true, $fn = FINE);
}
//hex version
if (HEX) {
translate([0, 0, TOP_OFFSET]) {
@ -521,13 +445,7 @@ module outer_screw (LEN) {
THREAD = 1.6;
difference () {
translate([0, 0, -7.1]) {
if (DEBUG) {
cylinder(r = OD / 2, h = LEN);
} else {
metric_thread (diameter=OD, pitch=PITCH, thread_size = THREAD, length=LEN);
}
}
translate([0, 0, -7.1]) metric_thread (diameter=OD, pitch=PITCH, thread_size = THREAD, length=LEN);
//bevel top of screw
translate([0, 0, LEN - 8]) difference() {
cylinder(r = 8, h = 3, center = true, $fn = FINE);
@ -548,18 +466,10 @@ module gnal_spindle_bottom (ALT = false, HEX = false) {
gnal_spindle_bottom_base(HEX);
//inner screw negative
translate([0, 0, -30]) union() {
if (DEBUG) {
cylinder(r = OD / 2, h = IN_LEN);
} else {
metric_thread (diameter=OD, pitch=PITCH, thread_size = THREAD, length = IN_LEN);
translate([0, 0, 0.2]) {
metric_thread (diameter=OD, pitch=PITCH, thread_size = THREAD, length = IN_LEN);
}
translate([0, 0, 0.2]) {
if (DEBUG) {
cylinder(r = OD / 2, h = IN_LEN);
} else {
metric_thread (diameter=OD, pitch=PITCH, thread_size = THREAD, length = IN_LEN);
}
}
}
}
@ -570,6 +480,8 @@ module gnal_spindle_bottom (ALT = false, HEX = false) {
} else {
outer_screw(LEN);
}
//hollow center
cylinder(r = 3.8 / 2, h = 100, center = true, $fn = 60);
}
}
@ -671,11 +583,7 @@ module gnal_spindle_top () {
}
//screw
translate([0, 0, -37.5]) {
if (DEBUG) {
cylinder(r = 13.6 / 2, h = 21);
} else {
metric_thread (diameter=13.6, pitch = PITCH, thread_size = THREAD, length = 21);
}
metric_thread (diameter=13.6, pitch = PITCH, thread_size = THREAD, length = 21);
}
//cylinder plug
translate([0, 0, -37.5 + (21 / 2) - 1]) {
@ -781,47 +689,10 @@ module gnal_spindle_single () {
}
//screw
translate([0, 0, -37.5 - SINGLE_INSERT]) {
if (DEBUG) {
cylinder(r = SINGLE_THREAD_D / 2, h = 21);
} else {
metric_thread (diameter=SINGLE_THREAD_D, pitch = PITCH, thread_size = THREAD, length = 21);
}
metric_thread (diameter=SINGLE_THREAD_D, pitch = PITCH, thread_size = THREAD, length = 21);
}
//cylinder plug
translate([0, 0, -37.5 - SINGLE_INSERT + (21 / 2) - 1]) {
cylinder(r = 10 / 2, h = 21, center = true, $fn = FINE);
}
}
module gnal_stacking_spindle () {
OD = 10.5 + .3;
IN_LEN = 21;
LEN = 17.1;
ALT_LEN = 27.1;
difference () {
union () {
gnal_spindle_base();
translate([0, 0, -23.75]) gnal_spacer_solid();
}
//inner screw negative
translate([0, 0, -30]) union() {
if (DEBUG) {
cylinder(r = OD / 2, h = IN_LEN);
} else {
metric_thread (diameter=OD, pitch=PITCH, thread_size = THREAD, length = IN_LEN);
}
translate([0, 0, 0.2]) {
if (DEBUG) {
cylinder(r = OD / 2, h = IN_LEN);
} else {
metric_thread (diameter=OD, pitch=PITCH, thread_size = THREAD, length = IN_LEN);
}
}
}
}
difference () {
outer_screw(LEN - 2);
}
}

View File

@ -1,117 +0,0 @@
#!/usr/bin/env python
#
# NopSCADlib Copyright Chris Palmer 2018
# nop.head@gmail.com
# hydraraptor.blogspot.com
#
# This file is part of NopSCADlib.
#
# NopSCADlib is free software: you can redistribute it and/or modify it under the terms of the
# GNU General Public License as published by the Free Software Foundation, either version 3 of
# the License, or (at your option) any later version.
#
# NopSCADlib 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 General Public License for more details.
#
# You should have received a copy of the GNU General Public License along with NopSCADlib.
# If not, see <https://www.gnu.org/licenses/>.
#
#
#! OpenSCAD produces randomly ordered STL files. This script re-orders them consistently so that GIT can tell if they have changed or not.
#
# OpenSCAD produces randomly ordered STL files so source control like GIT can't tell if they have changed or not.
# This scrip orders each triangle to start with the lowest vertex first (comparing x, then y, then z)
# It then sorts the triangles to start with the one with the lowest vertices first (comparing first vertex, second, then third)
# This has no effect on the model but makes the STL consistent. I.e. it makes a canonical form.
#
from __future__ import print_function
import sys
def cmz(x):
''' Convert "-0" to "0". '''
return '0' if x == '-0' else x
class Vertex:
def __init__(self, x, y, z):
self.x, self.y, self.z = x, y, z
self.key = (float(x), float(y), float(z))
class Normal:
def __init__(self, dx, dy, dz):
self.dx, self.dy, self.dz = dx, dy, dz
class Facet:
def __init__(self, normal, v1, v2, v3):
self.normal = normal
if v1.key < v2.key:
if v1.key < v3.key:
self.vertices = (v1, v2, v3) #v1 is the smallest
else:
self.vertices = (v3, v1, v2) #v3 is the smallest
else:
if v2.key < v3.key:
self.vertices = (v2, v3, v1) #v2 is the smallest
else:
self.vertices = (v3, v1, v2) #v3 is the smallest
def key(self):
return (self.vertices[0].x, self.vertices[0].y, self.vertices[0].z,
self.vertices[1].x, self.vertices[1].y, self.vertices[1].z,
self.vertices[2].x, self.vertices[2].y, self.vertices[2].z)
class STL:
def __init__(self, fname):
self.facets = []
with open(fname) as f:
words = [cmz(s.strip()) for s in f.read().split()]
if words[0] == 'solid' and words[1] == 'OpenSCAD_Model':
i = 2
while words[i] == 'facet':
norm = Normal(words[i + 2], words[i + 3], words[i + 4])
v1 = Vertex(words[i + 8], words[i + 9], words[i + 10])
v2 = Vertex(words[i + 12], words[i + 13], words[i + 14])
v3 = Vertex(words[i + 16], words[i + 17], words[i + 18])
i += 21
self.facets.append(Facet(norm, v1, v2, v3))
self.facets.sort(key = Facet.key)
else:
print("Not an OpenSCAD ascii STL file")
sys.exit(1)
def write(self, fname):
mins = [float('inf'), float('inf'), float('inf')]
maxs = [float('-inf'), float('-inf'), float('-inf')]
with open(fname,"wt") as f:
print('solid OpenSCAD_Model', file=f)
for facet in self.facets:
print(' facet normal %s %s %s' % (facet.normal.dx, facet.normal.dy, facet.normal.dz), file=f)
print(' outer loop', file=f)
for vertex in facet.vertices:
print(' vertex %s %s %s' % (vertex.x, vertex.y, vertex.z), file=f)
for i in range(3):
ordinate = vertex.key[i]
if ordinate > maxs[i]: maxs[i] = ordinate
if ordinate < mins[i]: mins[i] = ordinate
print(' endloop', file=f)
print(' endfacet', file=f)
print('endsolid OpenSCAD_Model', file=f)
return mins, maxs
def canonicalise(fname):
stl = STL(fname)
return stl.write(fname)
if __name__ == '__main__':
if len(sys.argv) == 2:
canonicalise(sys.argv[1])
else:
print("\nusage:\n\t c14n_stl file - Canonicalise an STL file created by OpenSCAD.")
sys.exit(1)

View File

@ -1,43 +0,0 @@
#!/Applications/FreeCAD.app/Contents/Resources/bin/python
# FROM https://forum.freecadweb.org/viewtopic.php?p=341824&sid=58456759bd632dffcf09baeeb397dcb6#p341824
import sys
import os
if not len(sys.argv) == 3:
print("Usage: %s file.csg file.step" % sys.argv[0])
sys.exit(1)
file_input = sys.argv[1]
file_output = sys.argv[2]
print("Converting %s to %s" % (file_input, file_output))
sys.path.append("/Applications/FreeCAD.app/Contents/Resources/lib")
import FreeCAD
import importCSG
import Part
d = importCSG.open(file_input)
o = []
# Select parent node
for i in d.Objects:
if not i.InList:
o.append(i)
print(len(o))
quit()
# Perform the Fusion
App.activeDocument().addObject("Part::MultiFuse", "Fusion")
App.activeDocument().Fusion.Shapes = o
App.ActiveDocument.recompute()
# Then the Refine
#App.ActiveDocument.addObject('Part::Feature','Refine').Shape=App.ActiveDocument.Fusion.Shape.removeSplitter()
#App.ActiveDocument.recompute()
# Export as STEP
#Part.export([App.ActiveDocument.Refine], file_output)
Part.export([App.ActiveDocument.Fusion.Shape], file_output)

View File

@ -12,8 +12,6 @@ DEPS=(
sqlite3
admesh
openscad
bc
python3
)
for dep in ${DEPS[@]}; do
@ -25,9 +23,7 @@ for dep in ${DEPS[@]}; do
echo "For more information about how to install admesh https://github.com/admesh/admesh"
echo "OR https://www.howtoinstall.me/ubuntu/18-04/admesh/"
fi
if [[ "${dep}" == "openscad" ]]; then
echo "Individual .scad files can be compiled directly without this application"
fi
echo "Individual .scad files can be compiled directly without this script"
exit 1
fi
done

View File

@ -1,8 +1,6 @@
#!/bin/bash
V="v3"
# Commit changes before running this build script
echo "Rendering GNAL ${V}"
bash ./scripts/deps.sh
@ -14,8 +12,7 @@ DIST=./stl
CSG=./csg
IMG=./img
NOTES=./notes/${V}.csv
DB="./notes/renders.sqlite"
STEP=false
STEP=true
LOGGING=true
#"quarter_a" "quarter_b" "quarter_c" "quarter_d"
@ -24,11 +21,9 @@ LOGGING=true
FILES=(
"spindle_bottom"
"spindle_top"
"spindle_single"
"spindle_stacking"
"spindle_single"
"insert_s8"
"insert_16"
"spacer"
"spacer_16"
"insert_single"
"top"
@ -36,21 +31,12 @@ FILES=(
)
SIZES=( "50ft" "100ft" )
mkdir -p "${DIST}"
if [ $STEP = true ]; then
mkdir -p "${CSG}"
mkdir -p "${CSG}/${SIZE}_${V}/"
fi
if [[ ! -f "${DB}" ]]; then
cat "./notes/setup.sql" | sqlite3 "${DB}"
fi
db () {
sqlite3 "${DB}" "${1}"
}
render_part () {
scad="${1}"
SIZE="${2}"
@ -63,9 +49,9 @@ render_part () {
start=`date +%s`
if [[ "${SIZE}" == "100ft" ]]; then
openscad --csglimit=20000000 -o "$stl" -D "PART=\"${FILE}\"" -D "FN=800" -D "DEBUG=false" "${scad}"
openscad --csglimit=2000000 -o "$stl" -D "PART=\"${FILE}\"" -D "FN=800" "${scad}"
else
openscad --csglimit=20000000 -o "$stl" -D "PART=\"${FILE}\"" -D "FN=600" -D "DEBUG=false" "${scad}"
openscad --csglimit=1000000 -o "$stl" -D "PART=\"${FILE}\"" -D "FN=600" "${scad}"
fi
end=`date +%s`
@ -75,16 +61,11 @@ render_part () {
fileSize=`echo $fileSize | xargs`
if ! [ -x "$(command -v admesh)" ]; then
facets="-1"
volume="-1"
X="-1"
Y="-1"
Z="-1"
facets="N/A"
volume="N/A"
else
firstline=`head -n 1 "$stl"`
if [[ $firstline == solid* ]]; then
#order stl file if ascii
python3 scripts/c14n_stl.py "$stl"
#convert from ascii to binary
tmpBinary=`mktemp`
admesh -c -b "$tmpBinary" "$stl"
@ -104,82 +85,25 @@ render_part () {
ao=`admesh -c "$stl"`
facets=`echo "$ao" | grep "Number of facets" | awk '{print $5}'`
volume=`echo "$ao" | grep "Number of parts" | awk '{print $8}'`
minX=`echo "$ao" | grep "Min X" | awk '{print $4}'`
minX=`echo "${minX//,/}"`
maxX=`echo "$ao" | grep "Min X" | awk '{print $8}'`
minY=`echo "$ao" | grep "Min Y" | awk '{print $4}'`
minY=`echo "${minY//,/}"`
maxY=`echo "$ao" | grep "Min Y" | awk '{print $8}'`
minZ=`echo "$ao" | grep "Min Z" | awk '{print $4}'`
minZ=`echo "${minZ//,/}"`
maxZ=`echo "$ao" | grep "Min Z" | awk '{print $8}'`
X=`echo "scale=5;($maxX)-($minX)" | bc`
Y=`echo "scale=5;($maxY)-($minY)" | bc`
Z=`echo "scale=5;($maxZ)-($minZ)" | bc`
fi
hash=`sha256sum "$stl" | awk '{ print $1 }'`
commit=`git rev-parse --short HEAD`
if [ ${LOGGING} = true ]; then
line="${VERSION},${CPU},$stl,$hash,$fileSize,$srchash,$srcsize,$facets,$volume,$runtime,$commit"
line="${VERSION},${CPU},$stl,$hash,$fileSize,$srchash,$srcsize,$facets,$volume,$runtime"
echo "$line" >> $NOTES
echo "$line"
fi
TIME=`date '+%s'`
QUERY="INSERT OR IGNORE INTO renders ( \
time, \
commit_id, \
source, \
model, \
stl, \
stl_size, \
facets, \
volume, \
x, \
y, \
z, \
render_time, \
source_hash, \
stl_hash, \
openscad, \
cpu \
) \
VALUES ( \
$TIME, \
'$commit', \
'$scad', \
'$FILE', \
'$stl', \
$fileSize, \
$facets, \
$volume, \
$X, \
$Y, \
$Z, \
$runtime, \
'$srchash', \
'$hash', \
'$VERSION', \
'$CPU' \
)"
#echo -n "${QUERY}"
db "${QUERY}"
if [ ${STEP} = true ] && [[ "${FILE}" == "spiral" ]]; then
mkdir -p "${CSG}/${SIZE}_${V}/"
start=`date +%s`
if [[ "${SIZE}" == "100ft" ]]; then
openscad --csglimit=20000000 -o "$csg" -D "PART=\"${FILE}\"" -D "FN=800" -D "DEBUG=false" "${scad}"
else
openscad --csglimit=20000000 -o "$csg" -D "PART=\"${FILE}\"" -D "FN=600" -D "DEBUG=false" "${scad}"
fi
end=`date +%s`
runtime=$((end-start))
echo "Compiling CSG took ${runtime}sec"
start=`date +%s`
if [[ "${SIZE}" == "100ft" ]]; then
openscad --csglimit=20000000 -o "$csg" -D "PART=\"${FILE}\"" -D "FN=800" "${scad}"
else
openscad --csglimit=10000000 -o "$csg" -D "PART=\"${FILE}\"" -D "FN=600" "${scad}"
fi
end=`date +%s`
runtime=$((end-start))
echo "Rendering image of ${stl}..."
@ -188,9 +112,9 @@ render_part () {
fullPath=`realpath "${stl}"`
data="import(\"${fullPath}\");"
echo data > "${tmp}.scad"
openscad -o "$png" --csglimit=20000000 --imgsize=2048,2048 --colorscheme=DeepOcean "${tmp}.scad"
openscad -o "$png" --imgsize=2048,2048 --colorscheme=DeepOcean "${tmp}.scad"
else
openscad -o "$png" --csglimit=20000000 --imgsize=2048,2048 --colorscheme=DeepOcean -D "DEBUG=false" -D "PART=\"${FILE}\"" "${scad}"
openscad -o "$png" --imgsize=2048,2048 --colorscheme=DeepOcean -D "PART=\"${FILE}\"" "${scad}"
fi
}
@ -198,9 +122,6 @@ if [[ "${1}" != "" ]]; then
LOGGING=false
SIZE="${1}"
scad="./scad/${SIZE}_${V}/gnal_${SIZE}.scad"
srchash=`sha256sum "${scad}" | awk '{ print $1 }'`
srcsize=`wc -c < "${scad}"`
srcsize=`echo $srcsize | xargs`
mkdir -p "${DIST}/${SIZE}_${V}"
if [[ "${2}" != "" ]]; then
@ -214,7 +135,7 @@ if [[ "${1}" != "" ]]; then
exit 0
fi
echo "openscad,cpu,stl,stl_hash,stl_size,source_hash,source_size,facets,volume,render_time,commit" > $NOTES
echo "version,cpu,file,file_hash,file_size,source_hash,source_size,facets,volume,render_time" > $NOTES
for SIZE in "${SIZES[@]}"
do

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.