Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
f67aa3d3b0
|
|||
| 41776c7f87 | |||
| f3eb7858a7 | |||
| 4357cb940d | |||
| d54c3fa1ce | |||
| 332f8c58fe | |||
| 444e25866d | |||
| ae6433cf38 | |||
| db656c08d3 |
51
README.md
51
README.md
@@ -2,23 +2,52 @@ Drybox-NG an Unoriginal Drybox Implemented in OpenSCAD
|
|||||||
|
|
||||||
Openscad Code by sjc (Stephen Carpenter)
|
Openscad Code by sjc (Stephen Carpenter)
|
||||||
|
|
||||||
Magnet.svg by [Solar Icons](https://www.figma.com/community/file/1166831539721848736?ref=svgrepo.com) in CC Attribution License
|
|
||||||
|
|
||||||
Finalized and printing parts.
|
# Background
|
||||||
Snaps could be better.
|
|
||||||
|
|
||||||
TODO:
|
I really liked some of the Drybox options I found, especially the
|
||||||
|
[Unoriginal Prusa Drybox](https://www.printables.com/model/551828-unoriginal-prusa-drybox)
|
||||||
|
but I stock different sized heat set inserts and I don't use normal CAD.
|
||||||
|
So I set about to rebuild it in OpenSCAD; my way.
|
||||||
|
|
||||||
|
Version 1.0 fell off its mount.
|
||||||
|
V2.0 has feet that hook onto the mount, Magnets for hinged lid and
|
||||||
|
doors, and a buffer mount for the rear.
|
||||||
|
Version 3.0 goes together without glue so parts are replacable.
|
||||||
|
|
||||||
|
Silica cup mounts have inserts spaced to mount a 1x3 Gridfinity base.
|
||||||
|
Cup and base generated from gridfinity_extended. (see Other Sources)
|
||||||
|
|
||||||
|
# Building
|
||||||
|
|
||||||
|
Insert models use my
|
||||||
|
[Inserts Library](https://sancus.carpanet.net/sjc/inserts)
|
||||||
|
|
||||||
|
Box parts rely on [BOSL](https://github.com/revarbat/BOSL)
|
||||||
|
|
||||||
|
Modify parameters as you like, the default will give a pretty decent
|
||||||
|
aproximation of the original that it is based on which will mount on
|
||||||
|
similar stands. Change dimensions and you are on your own. Not all
|
||||||
|
parameters have been well tested. Good Luck.
|
||||||
|
|
||||||
|
Parts snap together solidly, shove a small piece of filament in the
|
||||||
|
tiny holes in between them.
|
||||||
|
|
||||||
|
## TODO
|
||||||
- Cleanup
|
- Cleanup
|
||||||
- Handles
|
- Need lid magnet
|
||||||
- Hold-up door?
|
|
||||||
|
|
||||||
Done:
|
Lid has features that block access to magnets. Also, handle too large.
|
||||||
|
Need to bridge gap!
|
||||||
|
|
||||||
|
## Done
|
||||||
- Hinge cut for door fit
|
- Hinge cut for door fit
|
||||||
- Removed inserts behind door
|
- Removed inserts behind door
|
||||||
- Removed window/floor inserts from corners
|
- Removed window/floor inserts from corners
|
||||||
- inset offset to edge
|
- inset offset to edge
|
||||||
- Need Mount for Buffer
|
- Need Mount for Buffer
|
||||||
|
- Door Handle
|
||||||
|
- ALL THE MAGNETS!
|
||||||
|
|
||||||
|
|
||||||
V1:
|
V1:
|
||||||
@@ -27,3 +56,9 @@ Top Corners 13hr 126g
|
|||||||
Top Corners 13hr 126g
|
Top Corners 13hr 126g
|
||||||
Back Bottom Edge (pcm) 12h 136 g
|
Back Bottom Edge (pcm) 12h 136 g
|
||||||
|
|
||||||
|
# Other Sources
|
||||||
|
|
||||||
|
Magnet.svg by [Solar Icons](https://www.figma.com/community/file/1166831539721848736?ref=svgrepo.com) in CC Attribution License
|
||||||
|
|
||||||
|
Silica Cup and Gridfinity base generated from
|
||||||
|
[gridfinity_extended](https://github.com/ostat/gridfinity_extended_openscad)
|
||||||
|
|||||||
68
box.scad
68
box.scad
@@ -10,7 +10,7 @@ include <fdmouse.scad>
|
|||||||
|
|
||||||
/* [Part] */
|
/* [Part] */
|
||||||
|
|
||||||
PART = ""; // [ all_corners, corner_top_rear, corner_top_front_l, corner_top_front_r, corner_bottom, edge_back_bottom_a, edge_back_bottom_b, edge_back_bottom_c, edge_back_bottom_d, edge_front_bottom, edge_side_top, edge_side_foot_left, edge_side_foot_right, edge_top_front, edge_top_back, edge_test, full_box, joiner_top, joiner_bottom, joiner_slop, profile, side_edge, rbfoot, hinge, new_joiner, rear_mount, grid_mount ]
|
PART = ""; // [ all_corners, corner_top_rear, corner_top_front_l, corner_top_front_r, corner_bottom, edge_back_bottom_a, edge_back_bottom_b, edge_back_bottom_c, edge_back_bottom_d, edge_front_bottom, edge_side_top, edge_side_front, edge_side_foot_left, edge_side_foot_right, edge_top_front, edge_top_back, edge_test, full_box, joiner_top, joiner_bottom, joiner_slop, profile, side_edge, rbfoot, hinge, new_joiner, rear_mount, grid_mount, handle ]
|
||||||
|
|
||||||
/* [Profile Dimensions] */
|
/* [Profile Dimensions] */
|
||||||
|
|
||||||
@@ -29,8 +29,8 @@ FLOOR_THICK = 5;
|
|||||||
|
|
||||||
//JOINER_H = 26;
|
//JOINER_H = 26;
|
||||||
//JOINER_W = 10;
|
//JOINER_W = 10;
|
||||||
JOINER_H = 10;
|
JOINER_H = 14;
|
||||||
JOINER_W = 8;
|
JOINER_W = 10;
|
||||||
JOINER_SLOP = .1;
|
JOINER_SLOP = .1;
|
||||||
|
|
||||||
RB_MOUNT_INSET=17;
|
RB_MOUNT_INSET=17;
|
||||||
@@ -88,7 +88,7 @@ module profile(ps=PROFILE_SIZE, wl=WIN_LIP, wt=WIN_THICK, wtr=WIN_TRIM, fl=FLOOR
|
|||||||
polygon(points = gon, convexity=conv);
|
polygon(points = gon, convexity=conv);
|
||||||
}
|
}
|
||||||
|
|
||||||
module rb_foot(fw=RB_MOUNT_WIDTH, rl=RB_MOUNT_LEN+5, rh=RB_MOUNT_OUT_H, fl=10) {
|
module rb_foot(fw=RB_MOUNT_WIDTH, rl=RB_MOUNT_LEN+5, rh=RB_MOUNT_OUT_H, li=false, fl=10) {
|
||||||
difference() {
|
difference() {
|
||||||
union() {
|
union() {
|
||||||
translate([-(fl+rl/2),0]) {
|
translate([-(fl+rl/2),0]) {
|
||||||
@@ -111,8 +111,11 @@ module rb_foot(fw=RB_MOUNT_WIDTH, rl=RB_MOUNT_LEN+5, rh=RB_MOUNT_OUT_H, fl=10) {
|
|||||||
cyl(r=4.5, h=fw, align=V_TOP);
|
cyl(r=4.5, h=fw, align=V_TOP);
|
||||||
right(20)cyl(r=4.5, h=fw, align=V_TOP);
|
right(20)cyl(r=4.5, h=fw, align=V_TOP);
|
||||||
}
|
}
|
||||||
|
if (li == true) {
|
||||||
up(4) right(fl+rl/2) back(rh + 6) xrot(180)yrot(90)m3s_clear(bl=12,bz=-12, sh=0, drop=true, $die=true);
|
up(4) right(fl+rl/2) back(rh + 6) xrot(180)yrot(90)m3s_clear(bl=12,bz=-12, sh=0, drop=true, $die=true);
|
||||||
}
|
}
|
||||||
|
up(fw/2-.5)xspread(l=2+rl+rh/2, n=2) #back(23)cuboid([3,20,3]);
|
||||||
|
}
|
||||||
back=5;
|
back=5;
|
||||||
bmax = back + (fw-1);
|
bmax = back + (fw-1);
|
||||||
|
|
||||||
@@ -129,24 +132,25 @@ module hinge_mount(bz=WIN_THICK, inv=false, bl=10) {
|
|||||||
zrot(-90)xrot(90)right(5) {
|
zrot(-90)xrot(90)right(5) {
|
||||||
up(3+2) cyl(d1=7, d2=9,h=7, align=V_TOP);
|
up(3+2) cyl(d1=7, d2=9,h=7, align=V_TOP);
|
||||||
//thread_insertM3(bl=bl,bz=-(bl-3), $die=true);
|
//thread_insertM3(bl=bl,bz=-(bl-3), $die=true);
|
||||||
m3s_clear(bl=bl,bz=-(bl-3), sh=inv ? .2 : 0, $die=true);
|
m3s_clear(bl=bl,bz=-(bl-3), sh=inv ? .23 : 0, $die=true);
|
||||||
//%thread_insertM3(bl=10,bz=-7);
|
//%thread_insertM3(bl=10,bz=-7);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
zrot(-90)xrot(90)left(5) {
|
zrot(-90)xrot(90)left(5) {
|
||||||
up(3+2) cyl(d1=7, d2=9,h=7, align=V_TOP);
|
up(3+2) cyl(d1=7, d2=9,h=7, align=V_TOP);
|
||||||
//thread_insertM3(bl=bl,bz=-(bl-3), $die=true);
|
//thread_insertM3(bl=bl,bz=-(bl-3), $die=true);
|
||||||
m3s_clear(bl=bl,bz=-(bl-3), sh=inv ? .2 : 0, $die=true);
|
m3s_clear(bl=bl,bz=-(bl-3), sh=inv ? .23 : 0, $die=true);
|
||||||
//%thread_insertM3(bl=10,bz=-7);
|
//%thread_insertM3(bl=10,bz=-7);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module hinge(theta=90, show=true) {
|
module hinge(theta=90, mx=1.8, my=5, mz=20, show=true) {
|
||||||
x=7;
|
x=7;
|
||||||
py=20;
|
py=20;
|
||||||
d = .4 / sqrt(2);
|
d = .4 / sqrt(2);
|
||||||
difference() {
|
difference() {
|
||||||
left(x/2)cuboid([x,20+2*d,50], fillet=2, edges=EDGES_X_ALL);
|
left(x/2)cuboid([x,20+2*d,50], fillet=2, edges=EDGES_X_ALL);
|
||||||
|
zspread(n=2, l=(-1+py+mz/2)) back(5)left(x-.4-mx/2) cuboid([mx, my, mz+2]);
|
||||||
hinge_mount($die=true);
|
hinge_mount($die=true);
|
||||||
}
|
}
|
||||||
left(5+d)back(py/2 + 5+2*d)zrot(theta){
|
left(5+d)back(py/2 + 5+2*d)zrot(theta){
|
||||||
@@ -155,19 +159,21 @@ module hinge(theta=90, show=true) {
|
|||||||
right(5.3)fwd(9/4)cuboid([x,2*d+1+9/2,6], align=V_LEFT, chamfer=1, edges=EDGES_Y_RT+EDGE_BK_RT);
|
right(5.3)fwd(9/4)cuboid([x,2*d+1+9/2,6], align=V_LEFT, chamfer=1, edges=EDGES_Y_RT+EDGE_BK_RT);
|
||||||
}
|
}
|
||||||
cyl(r=2, h=42);
|
cyl(r=2, h=42);
|
||||||
zspread(n=3, l=25 ) difference() {
|
zspread(n=3, l=25 ) {difference() {
|
||||||
union() {
|
union() {
|
||||||
cyl(d=9, h=6, chamfer=.8);
|
cyl(d=9, h=6, chamfer=.8);
|
||||||
right(5+d)back(9/4)cuboid([x,2+9/2,6], align=V_LEFT, chamfer=1, edges=EDGES_Y_RT+EDGE_FR_RT);
|
right(5+d)back(9/4)cuboid([x,2+9/2,6], align=V_LEFT, chamfer=1, edges=EDGES_Y_RT+EDGE_FR_RT);
|
||||||
}
|
}
|
||||||
cyl(r=2.2, h=6.2);
|
cyl(r=2.2, h=6.2);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
difference() {
|
difference() {
|
||||||
left((x)/2-(5+d))back(15+5)cuboid([x,30+2*d,50], fillet=2, edges=EDGES_X_ALL);
|
left((x)/2-(5+d))back(15+5)cuboid([x,30+2*d,50], fillet=2, edges=EDGES_X_ALL);
|
||||||
right(5)back(20+6)zrot(180) {
|
right(5)back(20+6)zrot(180) {
|
||||||
hinge_mount(bl=9, $die=true);
|
hinge_mount(bl=9, $die=true);
|
||||||
if (show) %hinge_mount(bl=9,$die=false);
|
if (show) %hinge_mount(bl=9,$die=false);
|
||||||
}
|
}
|
||||||
|
zspread(n=2, l=(-1+py+mz/2)) back(10)right(.4-mx/2) cuboid([mx, my, mz+2]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -193,11 +199,25 @@ module rearMount(md=141.333, theta=90, show=true) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module handle(d=15, l=110) {
|
||||||
|
w=1.2;
|
||||||
|
up((d+10)/2) {
|
||||||
|
cyl(d=d, h=l+1, orient=ORIENT_X);
|
||||||
|
xspread(n=2, l=l) difference() {
|
||||||
|
hull() {
|
||||||
|
cyl(d=d+10, h=8, orient=ORIENT_X, fillet=1);
|
||||||
|
down((d+10-6)/2)fwd(10)cyl(d=6, h=8, orient=ORIENT_X, fillet=1);
|
||||||
|
}
|
||||||
|
down((d+10)/2)xrot(180)m3s_clear(bl=12, bz=-12);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
module box_edge(ps=PROFILE_SIZE, l=10, orient=ORIENT_Z, jh = JOINER_H,jw = JOINER_W, slop=JOINER_SLOP, jb=5, jup = false, jdown=false, flx=false, ft=FLOOR_THICK, wl=WIN_LIP, ioff=0, wx=true, wt=WIN_THICK, wtr = WIN_TRIM, hm=false, hc=false, ht=0, hs=false, tubepass=false, tn = 2, ix=true, iy=true, rbfoot=false, rbleft=false, cm=false, gm=false, my=false, align=V_CENTER) {
|
module box_edge(ps=PROFILE_SIZE, l=10, orient=ORIENT_Z, jh = JOINER_H,jw = JOINER_W, slop=JOINER_SLOP, jb=5, jup = false, jdown=false, flx=false, ft=FLOOR_THICK, wl=WIN_LIP, ioff=0, wx=true, wt=WIN_THICK, wtr = WIN_TRIM, hm=false, hc=false, ht=0, hs=false, tubepass=false, tn = 2, ix=true, iy=true, rbfoot=false, rbleft=false, cm=false, gm=false, my=false, align=V_CENTER) {
|
||||||
jzoff = l/2-jw/2;
|
jzoff = l/2-jw/2;
|
||||||
inner_off = ps/2 + wt;
|
inner_off = ps/2 + wt;
|
||||||
jdiff = (ps-wt)/2 - jh;
|
jdiff = (ps-wt)/2 - jh;
|
||||||
joiner_off = inner_off - 1 - (jh+jdiff/2)/sqrt(2)/2;//- (ps-.14)/(2*sqrt(2)) + jw/2; //- (jw)/sqrt(2);
|
joiner_off = inner_off - (jh+jdiff/2)/sqrt(2)/2;//- (ps-.14)/(2*sqrt(2)) + jw/2; //- (jw)/sqrt(2);
|
||||||
psoff = ps/2 - wl - wt;
|
psoff = ps/2 - wl - wt;
|
||||||
face_off = ((ps+psoff)/4);
|
face_off = ((ps+psoff)/4);
|
||||||
orient_and_align([ps,ps,l], orient=orient, align=align, orig_orient=ORIENT_Z) left(ps/2) fwd(ps/2) {
|
orient_and_align([ps,ps,l], orient=orient, align=align, orig_orient=ORIENT_Z) left(ps/2) fwd(ps/2) {
|
||||||
@@ -252,8 +272,13 @@ module box_edge(ps=PROFILE_SIZE, l=10, orient=ORIENT_Z, jh = JOINER_H,jw = JOINE
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
difference() {
|
||||||
|
union() {
|
||||||
if (jup) up(l/2)back(joiner_off)right(joiner_off)zrot(-45)new_joiner(slop=slop, orient=ORIENT_Y, align=V_CENTER);
|
if (jup) up(l/2)back(joiner_off)right(joiner_off)zrot(-45)new_joiner(slop=slop, orient=ORIENT_Y, align=V_CENTER);
|
||||||
if (jdown) down(l/2)back(joiner_off)right(joiner_off)zrot(-45)yrot(180)new_joiner(slop=slop, orient=ORIENT_Y, align=V_CENTER);
|
if (jdown) down(l/2)back(joiner_off)right(joiner_off)zrot(-45)yrot(180)new_joiner(slop=slop, orient=ORIENT_Y, align=V_CENTER);
|
||||||
|
}
|
||||||
|
back(wl+6)right(ps-wl/2-.01)cuboid([wl,wl,l+10]);
|
||||||
|
}
|
||||||
if (rbfoot) right(ps/2+psoff-2)zrot(180) {
|
if (rbfoot) right(ps/2+psoff-2)zrot(180) {
|
||||||
if (rbleft) { yrot(90) rb_foot(); } else { yrot(-90) zflip() rb_foot(); }
|
if (rbleft) { yrot(90) rb_foot(); } else { yrot(-90) zflip() rb_foot(); }
|
||||||
}
|
}
|
||||||
@@ -319,8 +344,8 @@ module new_joiner(spacing=0, slop=JOINER_SLOP, align=V_FRONT, jh=JOINER_H, jw=JO
|
|||||||
spread = jw + spacing;
|
spread = jw + spacing;
|
||||||
color(cl)
|
color(cl)
|
||||||
orient_and_align([2*jw+spacing,0,jh], orig_align=V_FRONT, align=align, orient=orient) {
|
orient_and_align([2*jw+spacing,0,jh], orig_align=V_FRONT, align=align, orient=orient) {
|
||||||
left(spread/2) half_joiner(slop=slop, h=jh, w=jw, l=l, screwsize=$preview ? undef : undef);
|
left(spread/2) half_joiner(slop=slop, h=jh, w=jw, l=l, screwsize=$preview ? undef : 2);
|
||||||
right(spread/2) half_joiner2(h=jh, w=jw, l=l, screwsize=$preview ? undef : undef);
|
right(spread/2) half_joiner2(h=jh, w=jw, l=l, screwsize=$preview ? undef : 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
module new_joiner2(spacing=0, slop=JOINER_SLOP, align=V_FRONT, jh=JOINER_H, jw=JOINER_W, l=4, orient=ORIENT_Z, cl=undef) {
|
module new_joiner2(spacing=0, slop=JOINER_SLOP, align=V_FRONT, jh=JOINER_H, jw=JOINER_W, l=4, orient=ORIENT_Z, cl=undef) {
|
||||||
@@ -337,6 +362,7 @@ module new_joiner_clear(spacing=0, slop=JOINER_SLOP, align=V_FRONT, jh=JOINER_H,
|
|||||||
orient_and_align([2*jw+spacing,0,jh], orig_align=V_FRONT, align=align, orient=orient) {
|
orient_and_align([2*jw+spacing,0,jh], orig_align=V_FRONT, align=align, orient=orient) {
|
||||||
left(spread/2) half_joiner_clear(h=jh, w=jw);
|
left(spread/2) half_joiner_clear(h=jh, w=jw);
|
||||||
right(spread/2) half_joiner_clear(h=jh, w=jw);
|
right(spread/2) half_joiner_clear(h=jh, w=jw);
|
||||||
|
cyl(d=2, h=50, orient=ORIENT_X);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -430,6 +456,15 @@ if (PART == "edge_side_top") {
|
|||||||
}
|
}
|
||||||
up((wt+wl)/sqrt(2))yrot(45)box_edge(l=ly, rbfoot=false, flx=false, wx=true, jup=true, jdown=true, cm=false, orient=ORIENT_Y);
|
up((wt+wl)/sqrt(2))yrot(45)box_edge(l=ly, rbfoot=false, flx=false, wx=true, jup=true, jdown=true, cm=false, orient=ORIENT_Y);
|
||||||
}
|
}
|
||||||
|
if (PART == "edge_side_front") {
|
||||||
|
if (Print_Ears) {
|
||||||
|
left(coff/2-2*psoff) back(ly/2)zrot(315)ear(thick=.2, dis=-2);
|
||||||
|
right(coff/2-2*psoff) back(ly/2)zrot(225)ear(thick=.2, dis=-2);
|
||||||
|
left(coff/2-2*psoff) fwd(ly/2)zrot(45)ear(thick=.2, dis=-2);
|
||||||
|
right(coff/2-2*psoff) fwd(ly/2)zrot(135)ear(thick=.2, dis=-2);
|
||||||
|
}
|
||||||
|
up((wt+wl)/sqrt(2))yrot(45)box_edge(l=ly, rbfoot=false, flx=false, wx=true, iy=false, my=true, jup=true, jdown=true, cm=false, orient=ORIENT_Y);
|
||||||
|
}
|
||||||
if (PART == "edge_top_front") {
|
if (PART == "edge_top_front") {
|
||||||
//r = $t *90 - 45;
|
//r = $t *90 - 45;
|
||||||
r=-45;
|
r=-45;
|
||||||
@@ -522,13 +557,18 @@ if (PART == "edge_test")
|
|||||||
|
|
||||||
if (PART == "hinge") {
|
if (PART == "hinge") {
|
||||||
r = $t *90;
|
r = $t *90;
|
||||||
hinge(theta=r);
|
// r = 135; // max
|
||||||
|
yrot(90)hinge(theta=r);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (PART == "rear_mount") {
|
if (PART == "rear_mount") {
|
||||||
up(7) yrot(-90) rearMount();
|
up(7) yrot(-90) rearMount();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (PART == "handle") {
|
||||||
|
handle();
|
||||||
|
}
|
||||||
|
|
||||||
if (PART == "new_joiner") {
|
if (PART == "new_joiner") {
|
||||||
new_joiner();
|
new_joiner();
|
||||||
//#new_joiner_clear();
|
//#new_joiner_clear();
|
||||||
@@ -538,13 +578,13 @@ if (PART == "new_joiner") {
|
|||||||
if (PART == "grid_mount") {
|
if (PART == "grid_mount") {
|
||||||
difference() {
|
difference() {
|
||||||
union() {
|
union() {
|
||||||
fwd(19.799/2)cuboid([48,6+19.799,2], fillet=1, align=V_TOP);
|
fwd(19.799/2-1)cuboid([48,3+19.799,4], fillet=1, align=V_TOP);
|
||||||
up(1)fwd(3.4+19.799)xrot(-45) cuboid([10+84,6,25], fillet=1, align=V_TOP+V_BACK);
|
up(1)fwd(3.4+19.799)xrot(-45) cuboid([10+84,6,25], fillet=1, align=V_TOP+V_BACK);
|
||||||
}
|
}
|
||||||
|
|
||||||
cuboid([200,200,10], align=V_BOTTOM);
|
cuboid([200,200,10], align=V_BOTTOM);
|
||||||
xspread(n=2, l=42) cyl(d=3.3, h=50);
|
xspread(n=2, l=42) cyl(d=3.3, h=50);
|
||||||
xrot(45)up(17.2)xspread(n=2, l=84)m3s_clear(bl=10,bz=-9, sh=0, drop=false, $die=true);
|
xrot(45)back(5)up(17.2)xspread(n=2, l=84)m3s_clear(bl=10,bz=-9, sh=0, drop=false, $die=true);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user