3D printing models
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Reworking the XTEInk stand weight bay after getting the weights in hand

The first pass sized the pocket for 19x12x3.2mm weights (from generic
reference material) but the weights I actually have are 20x17x4mm — way
chunkier. Tried squeezing the larger pocket into the existing wedge
first and punched through the body on the back, so this swap adds a
small 10mm plinth under the stand and routes the pocket up through it
into the body.

Along the way I hit a silly scope bug where the pocket difference() only
applied to the plinth, so even though I thought we had 18mm of depth
we were really only cutting the 10mm of plinth — hence two layers of
weights fitting instead of four. Pocket cut now wraps the union of
stand + plinth, rib unions back in at the end.

One heads-up: the watch holder still prints at its original height on
the build plate, so it's now 10mm low relative to the mounting spot on
the stand. Prop it on something or print a riser when gluing them.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

+95 -32
+29 -11
xteink-x4-stand-weighted/README.md
··· 1 1 # XTEInk X4 Desk Stand — Weighted Remix 2 2 3 3 Remix of [XTEInk X4 Desk Stand + Watch Holder][source] by 9toia on 4 - MakerWorld. The original model is unchanged in shape — this version adds a 5 - rectangular pocket to the underside of the main stand. Four layers of 6 - 1/4 oz stick-on tire weights (sixteen weights total, ~4 oz / 113 g) stack 7 - flat inside and stay hidden when the stand sits on the desk. The added 8 - mass keeps the stand planted when the ereader leans into the lip. 4 + MakerWorld. The original stand geometry is left untouched — the whole 5 + stand is lifted 10 mm and a thin rectangular plinth is added underneath. 6 + The weight pocket opens from the bottom of the plinth and reaches back 7 + up into the original wedge body, giving enough depth for four layers of 8 + weights while keeping the extra height modest. Sixteen 1/4 oz stick-on 9 + tire weights (20 × 17 × 4 mm each; ~4 oz / 113 g total) stack as a 2×2 10 + grid across four layers and stay hidden when the stand sits on the desk. 11 + The added mass keeps the stand planted when the ereader leans into the 12 + lip. 9 13 10 14 [source]: https://makerworld.com/en/models/2252188-xteink-x4-desk-stand-watch-holder 11 15 12 - ## Pocket dimensions 16 + ## Dimensions 13 17 14 - - 25 mm × 45 mm × 15 mm deep 15 - - Offset 10 mm toward the back of the stand (away from the ereader lip), 16 - which also puts the extra mass where it counters the forward lean. 17 - - Ceiling chamfered 1.5 mm so the bridge prints cleanly. 18 + - Plinth: 10 mm tall, footprint 75.156 × 65.938 mm (matching the stand's 19 + bottom face exactly). The stand's rounded bottom edge flares outward 20 + naturally above the plinth, so the join reads as part of the stand's 21 + own shape rather than a stacked seam. 22 + - Pocket: 40 × 42 × 18 mm deep, opening from the bottom of the plinth 23 + and continuing 8 mm up into the stand body. Offset 7 mm toward the 24 + back to stay clear of the ereader slot lip that sits on the X-positive 25 + side of the wedge interior. 26 + - Central rib (3 mm along the long axis) splits the pocket into two 27 + ~18 mm cells so the top-layer bridge span is short and predictable. 28 + - Ceiling chamfered 1.5 mm where the bridge closes. 29 + 30 + ## Watch holder 31 + 32 + The watch holder prints unchanged at its original height on the build 33 + plate, so the mounting spot on the stand is now 10 mm higher than in 34 + the original design. When gluing the two parts together, either prop 35 + the watch holder up on something ~10 mm tall or print a matching riser. 18 36 19 37 ## Building 20 38 ··· 30 48 31 49 ## Files 32 50 33 - - `xteink-x4-stand-weighted.scad` — OpenSCAD remix (cuts the pocket). 51 + - `xteink-x4-stand-weighted.scad` — OpenSCAD remix (lifts stand, builds plinth, cuts pocket). 34 52 - `xteink-x4-stand-weighted.3mf` — built output, watch holder preserved. 35 53 - `xteink-x4-stand-weighted.png` — thumbnail. 36 54 - `stand.stl`, `stand_weighted.stl` — intermediate meshes (generated).
xteink-x4-stand-weighted/xteink-x4-stand-weighted.3mf

This is a binary file and will not be displayed.

xteink-x4-stand-weighted/xteink-x4-stand-weighted.png

This is a binary file and will not be displayed.

+66 -21
xteink-x4-stand-weighted/xteink-x4-stand-weighted.scad
··· 1 - // XTEInk X4 Stand remix — weight bay for 4× 1/4oz stick-on tire weights. 1 + // XTEInk X4 Stand remix — weight bay for 1/4 oz stick-on tire weights. 2 + // 3 + // A short plinth is added under the stand so the weight pocket has a clean 4 + // floor; the pocket itself still reaches up into the original wedge body 5 + // for the top few layers. Plinth footprint is pulled directly from the 6 + // stand's own bottom silhouette so the join is seamless. 2 7 // 3 - // Pocket is cut into the bottom face of the main stand, tucked toward the 4 - // back (away from the ereader lip). Four layers of 1/4oz weights stack flat 5 - // inside, hidden from view once the stand sits on the desk. 8 + // Sized for 20 x 17 x 4 mm weights: a 2x2 grid of four weights fits per 9 + // layer, split across a central rib so each half is an easy ~18 mm bridge. 10 + // Four layers deep = sixteen weights (~4 oz / 113 g) total. 6 11 7 12 $fn = 48; 8 13 9 - // === dimensions ============================================================= 10 - // Stand local frame: bottom at z = -33.4, ereader lip at X-positive, back at 11 - // X-negative. Wedge apex at X=0 runs along Y. 14 + // === stand ================================================================== 15 + stand_bottom_z = -33.4; 12 16 13 - bottom_z = -33.4; 17 + // === plinth ================================================================= 18 + // Just enough extra height to host the weight bay without squeezing the 19 + // pocket too tight against the stand's internal features. 20 + plinth_height = 10; 14 21 15 - pocket_w_x = 25; // width across the wedge (bridging span) 16 - pocket_w_y = 45; // length along the ridge 17 - pocket_depth = 15; // 4 layers (~13mm) + play 18 - pocket_cx = -10; // shifted toward the back (X-negative) 22 + // Plinth footprint matches the stand's flat bottom face exactly 23 + // (measured from the source mesh: 8 vertices at z = -33.4 form a 24 + // 75.156 x 65.938 mm rectangle with a ~0.34 mm corner chamfer). Matching 25 + // the bottom face means the stand's rounded bottom edge flares outward 26 + // naturally from the plinth top without any visible step — the rounding 27 + // reads as part of the stand's shape, not a seam. 28 + plinth_w_x = 75.156; 29 + plinth_w_y = 65.938; 30 + plinth_corner = 0.5; 31 + 32 + // === pocket ================================================================= 33 + // Extends `plinth_height` mm through the plinth and the remainder up into 34 + // the original stand body. Stays clear of the X-positive ereader slot lip 35 + // (which occupies X ~14..24 inside the wedge). 36 + pocket_depth = 18; // 4 layers x 4 mm + chamfer clearance 37 + pocket_w_x = 40; // 2x (17 mm weight width) + rib + slop 38 + pocket_w_y = 42; // 2x (20 mm weight length) + slop 39 + pocket_cx = -7; // tucked toward the back, away from the lip 19 40 pocket_cy = 0; 20 41 21 - corner_r = 2; // interior corner radius 22 - chamfer = 1.5; // ceiling chamfer for easier bridging 42 + corner_r = 2; 43 + chamfer = 1.5; 44 + 45 + // Central rib along Y (at the pocket's own center X) splits the 40 mm 46 + // span into two ~18 mm cells so the ceiling bridges cleanly. 47 + rib_w = 3; 23 48 24 49 // === build ================================================================== 25 - difference() { 26 - import("stand.stl", convexity = 10); 50 + pocket_floor_z = stand_bottom_z; 51 + stand_lift = plinth_height; 52 + 53 + union() { 54 + // Stand (lifted) + plinth, with the pocket cut from the combined solid 55 + // so it can reach up through the plinth and into the stand body. 56 + difference() { 57 + union() { 58 + translate([0, 0, stand_lift]) 59 + import("stand.stl", convexity = 10); 60 + 61 + translate([0, 0, stand_bottom_z]) 62 + linear_extrude(height = plinth_height + 0.01) 63 + rounded_rect(plinth_w_x, plinth_w_y, plinth_corner); 64 + } 65 + 66 + translate([pocket_cx, pocket_cy, pocket_floor_z - 0.05]) 67 + pocket(pocket_w_x, pocket_w_y, pocket_depth + 0.05, 68 + corner_r, chamfer); 69 + } 27 70 28 - translate([pocket_cx, pocket_cy, bottom_z - 0.05]) 29 - pocket(pocket_w_x, pocket_w_y, pocket_depth + 0.05, corner_r, chamfer); 71 + // Rib overlaps the Y-end pocket walls (+1 mm) and the roof 72 + // (+1 mm of height) so it merges into the surrounding manifold. 73 + translate([pocket_cx, pocket_cy, pocket_floor_z]) 74 + linear_extrude(height = pocket_depth + 1) 75 + square([rib_w, pocket_w_y + 1], center = true); 30 76 } 31 77 78 + // === modules ================================================================ 32 79 module pocket(w, l, d, r, c) { 33 80 union() { 34 - // main rectangular body (rounded corners) 35 81 linear_extrude(height = d - c) 36 82 rounded_rect(w, l, r); 37 83 38 - // chamfered ceiling: shrinks as it approaches the top of the pocket, 39 - // giving the printer a smaller effective bridge span at the very top. 84 + // Chamfered ceiling: bridge converges to a smaller span at the top. 40 85 translate([0, 0, d - c]) 41 86 hull() { 42 87 linear_extrude(height = 0.01)