second version of lampshades and separate nut

This commit is contained in:
Jan Seidl 2022-04-10 11:16:55 +02:00
parent 8d30f565be
commit 61781aa7eb
No known key found for this signature in database
GPG Key ID: A1625BAB3CAEE1F3
4 changed files with 56 additions and 21 deletions

View File

@ -1,13 +1,27 @@
# lampshades models
My lampshade on the Ikea lamp is similar to [HEKTOGRAM](https://www.ikea.com/cz/cs/p/hektogram-stojaci-cteci-lampa-stribrna-bila-80477710/) was broken. I thought about buying a new light, but I wouldn't say I like the latest version of the lamp, and I'm a happy owner of a 3D printer.
My lampshade on the Ikea lamp is similar to [HEKTOGRAM](https://www.ikea.com/cz/cs/p/hektogram-stojaci-cteci-lampa-stribrna-bila-80477710/) was broken. As a owner of 3D printing I tried to make new lapmshade.
I have two versions of lampshades; both are made in amazing [OpenSCAD](https://openscad.org) and are fully customizable.
The first model which I made is `lampshade_conical.scad`. That was the easier one. But I wanted to have the lampshade more curved, so I did the second model, `lampshade_curved.scad`.
Configuration of the `lampshade_conical` is pretty simple, and the second is more complex - you need to play with `curved_factor` to find a proper design and height.
Configuration of the `lampshade_conical` is pretty simple, and the second is a little bit complex - you need to play with `curved_factor` to find a proper design and height.
And btw. I lost the nut for the lampshade. That is the reason why my models contain nuts. If you don't want nut—comment `nut` line.
And btw. I lost the nut for the lampshade.
My first models contain nuts as part of lampshade, but it wasn't a good design, so I made a separate `./nut.scad` again - fully customizable.
Thanks to decision to separate lampshade and nut (the original set up of the lamp btw.) I'm fully flexible.
I wish you a lot of fun with modeling (and printing).
## how to install dependencies for nut?
I use [threadlib](https://github.com/adrianschlatter/threadlib)
you need to install (download or checkout) to the [OpenSCAD library folder](https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Libraries)
those repositories:
* [threadlib](https://github.com/adrianschlatter/threadlib)
* [scad-utils](https://github.com/openscad/scad-utils)
* [list-compohension](https://github.com/openscad/list-comprehension-demos)
* [thread_profile.scad](https://github.com/MisterHW/IoP-satellite/blob/master/OpenSCAD%20bottle%20threads/thread_profile.scad)

View File

@ -1,7 +1,5 @@
use <threadlib/threadlib.scad>
height = 110;
bottom_d = 70;
bottom_d = 44;
top_d = 170;
facets = 40;
@ -13,6 +11,4 @@ difference() {
cylinder(height, bottom_r, top_r, $fn=facets);
translate([0,0,-0.01])
cylinder(height+0.02, bottom_r-thickness, top_r-thickness, $fn=facets);
}
nut("M42x3", turns=2, Douter=bottom_d);
}

View File

@ -1,28 +1,23 @@
use <threadlib/threadlib.scad>
x = 250;
curved_factor = 79;
thickness = 2;
top_d = 170;
bottom_d = 70;
top_d = 179;
bottom_d = 44;
difference() {
rotate_extrude($fn=100)
rotate_extrude($fn=200)
difference() {
polygon(bowl(top_d,x));
offset(-thickness) polygon(bowl(top_d+thickness,x));
polygon(bowl(top_d/2,curved_factor));
offset(-thickness) polygon(bowl(top_d/2+thickness,curved_factor));
};
cylinder(top_d, bottom_d/2, bottom_d/2);
}
nut("M42x3", turns=2, Douter=bottom_d);
function point(i, R) = [
i,
i*i/R
];
function bowl(height, x_factor) = (
function bowl(height, x) = (
concat(
[ for (i = [0:1:height]) point(i, x) ],
[[0,height*height/x]]

30
nut.scad Normal file
View File

@ -0,0 +1,30 @@
use <threadlib/threadlib.scad>
turns = 2;
bottom_d = 70;
diameter = 42;
len_between_threads = 3;
holder_height = 5;
holder_weight = 5;
holders = 3;
nut_type = str("M",diameter,"x",len_between_threads);
height_of_nut = turns * len_between_threads;
nut(nut_type, turns=turns, Douter=bottom_d);
difference() {
holders();
translate([0,0,height_of_nut-0.01])
cylinder(holder_height+0.02, diameter/2, diameter/2);
}
module holders() {
shift = 180 / holders;
for(angle = [0:shift:360])
translate([0,0,height_of_nut + holder_height/2])
rotate(angle)
cube([holder_height,bottom_d,holder_weight], center=true);
};