{"id":12748,"date":"2026-10-16T13:23:47","date_gmt":"2026-10-16T09:23:47","guid":{"rendered":"https:\/\/beegraphy.com\/blog\/?p=12748"},"modified":"2026-10-16T13:23:47","modified_gmt":"2026-10-16T09:23:47","slug":"customizable-3d-printed-lamp","status":"publish","type":"post","link":"https:\/\/beegraphy.com\/blog\/customizable-3d-printed-lamp\/","title":{"rendered":"What Should a Customer Be Allowed to Change? The Hidden Rules Behind a Configurable Lamp"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_75 ez-toc-wrap-left counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-6ad2fd22c89e9\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #757575;color:#757575\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #757575;color:#757575\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-6ad2fd22c89e9\" checked aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/beegraphy.com\/blog\/customizable-3d-printed-lamp\/#Customization_creates_a_new_design_problem\" >Customization creates a new design problem<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/beegraphy.com\/blog\/customizable-3d-printed-lamp\/#The_controls_are_only_the_surface\" >The controls are only the surface<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/beegraphy.com\/blog\/customizable-3d-printed-lamp\/#Every_visible_parameter_needs_invisible_rules\" >Every visible parameter needs invisible rules<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/beegraphy.com\/blog\/customizable-3d-printed-lamp\/#Parametric_systems_preserve_decisions\" >Parametric systems preserve decisions<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/beegraphy.com\/blog\/customizable-3d-printed-lamp\/#The_physical_world_becomes_another_parameter\" >The physical world becomes another parameter<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/beegraphy.com\/blog\/customizable-3d-printed-lamp\/#The_system_itself_needs_to_be_designed\" >The system itself needs to be designed<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/beegraphy.com\/blog\/customizable-3d-printed-lamp\/#Design_work_doesnt_disappear_It_moves\" >Design work doesn&#8217;t disappear. It moves.<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/beegraphy.com\/blog\/customizable-3d-printed-lamp\/#Try_the_customizable_3D_printed_lamp_yourself\" >Try the customizable 3D printed lamp yourself<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/beegraphy.com\/blog\/customizable-3d-printed-lamp\/#Customizable_3D_printed_lamp_FAQ\" >Customizable 3D printed lamp FAQ<\/a><\/li><\/ul><\/nav><\/div>\n<h2 id=\"new-design-problem\"><span class=\"ez-toc-section\" id=\"Customization_creates_a_new_design_problem\"><\/span>Customization creates a new design problem<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>A 3D printer will print any form you give it. It won&#8217;t give you the form.<\/p>\n<p>For a while I&#8217;ve been thinking about starting a product design company, one that experiments with additive manufacturing and sells lamps. The more I looked at 3D printing, the clearer its two real advantages became: it makes <a href=\"https:\/\/en.wikipedia.org\/wiki\/Mass_customization\" target=\"_blank\" rel=\"noopener\">mass customization<\/a> possible, and it lets you play with form in ways a mold never would.<\/p>\n<p>But the printer only solves half of that. If every customer wants a slightly different lamp, someone still has to remodel it in CAD, export it, slice it and print it, then do it all again for the next order. Customization built that way is just a lot of one-off design.<\/p>\n<div id=\"attachment_12758\" style=\"width: 1034px\" class=\"wp-caption aligncenter\"><img fetchpriority=\"high\" decoding=\"async\" aria-describedby=\"caption-attachment-12758\" class=\"wp-image-12758 size-large lazyload\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/custom-order-workflow-vs-parametric-system-1024x328.png\" alt=\"Diagram comparing remodeling every custom order in CAD with one parametric system for every order\" width=\"1024\" height=\"328\" data-sizes=\"auto\" data-srcset=\"https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/custom-order-workflow-vs-parametric-system-1024x328.png 1024w, https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/custom-order-workflow-vs-parametric-system-300x96.png 300w, https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/custom-order-workflow-vs-parametric-system-768x246.png 768w, https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/custom-order-workflow-vs-parametric-system-1536x492.png 1536w, https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/custom-order-workflow-vs-parametric-system-800x256.png 800w, https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/custom-order-workflow-vs-parametric-system-1920x614.png 1920w, https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/custom-order-workflow-vs-parametric-system-20x6.png 20w, https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/custom-order-workflow-vs-parametric-system.png 2000w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><p id=\"caption-attachment-12758\" class=\"wp-caption-text\">Left: how custom orders usually run. Right: the same orders through one system.<\/p><\/div>\n<p>So I set myself a different question. What if the customer could change the lamp themselves, and every change was still a lamp I could print?<\/p>\n<h2 id=\"controls\"><span class=\"ez-toc-section\" id=\"The_controls_are_only_the_surface\"><\/span>The controls are only the surface<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The customizable 3D printed lamp itself is simple. A fluted shade made of vertical ribs sits on a base that holds a puck light. I built it as one graph in <a href=\"https:\/\/beegraphy.com\/\">BeeGraphy<\/a>, but the graph wasn&#8217;t the hard part. The hard part was deciding what someone buying a lamp should be able to change.<\/p>\n<p>I ended up with eight controls on the customizable 3D printed lamp&#8217;s configurator: height, number of ribs, how far the shade bulges, the shape of the bulge, profile resolution, base height, base offset and the light holder&#8217;s diameter. The bulge shape isn&#8217;t even a number. The customer drags points on a sine curve, and the shade&#8217;s silhouette follows it.<\/p>\n<p>That curve gives the customer more control than a number would. Stretch the wave and the shade gets one full, rounded bulge. Shift it and the bulges slide up or down the height. The base sliders are plainer: one sets how thick the base is, the other how far it steps out around the shade.<\/p>\n<p>Profile resolution sounds like a technical setting, the kind you&#8217;d normally hide. But it changes how the lamp looks. The shade&#8217;s profile is interpolated through points sampled from that curve. More points, and the shade hugs the curve tightly. Fewer, and it relaxes into a softer version of it. So what the customer is really choosing is how literally the lamp follows the curve.<\/p>\n<div id=\"attachment_12759\" style=\"width: 1034px\" class=\"wp-caption aligncenter\"><img decoding=\"async\" aria-describedby=\"caption-attachment-12759\" class=\"wp-image-12759 size-large lazyload\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/customizable-3d-printed-lamp-configurations-1024x362.jpg\" alt=\"Four configurations of the customizable 3D printed lamp from the BeeGraphy configurator, labeled A to D\" width=\"1024\" height=\"362\" data-sizes=\"auto\" data-srcset=\"https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/customizable-3d-printed-lamp-configurations-1024x362.jpg 1024w, https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/customizable-3d-printed-lamp-configurations-300x106.jpg 300w, https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/customizable-3d-printed-lamp-configurations-768x271.jpg 768w, https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/customizable-3d-printed-lamp-configurations-1536x543.jpg 1536w, https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/customizable-3d-printed-lamp-configurations-800x283.jpg 800w, https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/customizable-3d-printed-lamp-configurations-1920x679.jpg 1920w, https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/customizable-3d-printed-lamp-configurations-20x7.jpg 20w, https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/customizable-3d-printed-lamp-configurations.jpg 2000w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><p id=\"caption-attachment-12759\" class=\"wp-caption-text\">Four configurations of the customizable 3D printed lamp, taken from the configurator.<\/p><\/div>\n<p>Those eight controls are what the customer sees. None of them would work on their own.<\/p>\n<h2 id=\"invisible-rules\"><span class=\"ez-toc-section\" id=\"Every_visible_parameter_needs_invisible_rules\"><\/span>Every visible parameter needs invisible rules<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Rib count shows this best. My first attempt was the obvious one. Sweep a pipe along the profile curve, then repeat it around the center. It looked bulky, and it left gaps.<\/p>\n<p>The reason is that the profile&#8217;s radius keeps changing up its height. A pipe that&#8217;s the right thickness at the narrow neck is too thin at the widest point, where the ribs drift apart. Size it for the widest point and it&#8217;s too fat everywhere else. And once the rib count is a slider, any fixed thickness is wrong for nearly every setting a customer could pick.<\/p>\n<p>That was the turning point. I could only give the customer the rib count if rib thickness stopped being a separate decision. It had to follow from the lamp&#8217;s shape and the number of ribs.<\/p>\n<p>The rule turned out to be short. At any point on the profile, measure its distance r from the central axis. With N ribs around the circle, neighboring ribs just touch when each rib&#8217;s radius is:<\/p>\n<p style=\"text-align: center; font-size: 1.5em;\"><strong>r<sub>rib<\/sub> = r \u00b7 sin(\u03c0 \/ N)<\/strong><\/p>\n<p>Now the rib swells where the shade bulges and narrows at the neck, and the ribs meet whatever count the customer picks. To sweep a rib whose radius changes along its length, I used BeeGraphy&#8217;s Pipe Variable.<\/p>\n<div id=\"attachment_12760\" style=\"width: 1034px\" class=\"wp-caption aligncenter\"><img decoding=\"async\" aria-describedby=\"caption-attachment-12760\" class=\"wp-image-12760 size-large lazyload\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/parametric-lamp-rib-radius-formula-1024x512.png\" alt=\"Diagram of the touching radius between two neighboring ribs, r rib = r \u00b7 sin(\u03c0 \/ N), and touching vs. overlapping ribs\" width=\"1024\" height=\"512\" data-sizes=\"auto\" data-srcset=\"https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/parametric-lamp-rib-radius-formula-1024x512.png 1024w, https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/parametric-lamp-rib-radius-formula-300x150.png 300w, https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/parametric-lamp-rib-radius-formula-768x384.png 768w, https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/parametric-lamp-rib-radius-formula-1536x768.png 1536w, https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/parametric-lamp-rib-radius-formula-800x400.png 800w, https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/parametric-lamp-rib-radius-formula-1920x960.png 1920w, https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/parametric-lamp-rib-radius-formula-20x10.png 20w, https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/parametric-lamp-rib-radius-formula.png 2000w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><p id=\"caption-attachment-12760\" class=\"wp-caption-text\">Why rib count can be a slider: each rib&#8217;s radius follows from the profile and the count.<\/p><\/div>\n<p>Touching wasn&#8217;t enough, though. Ribs that only touch meet along a thin line, and they don&#8217;t fuse into one solid. They needed to overlap slightly. So the rib radius gets multiplied by an overlap factor, and that factor wasn&#8217;t calculated. I kept nudging it up and checking the model. Below 1.04, thin gaps were still visible between the ribs. At 1.04, a 4% overlap, they fused. The customer never sees that number, but it&#8217;s the reason the rib-count slider can exist at all.<\/p>\n<p>The bulge curve has its own hidden rule. The curve the customer draws only describes shape. The system remaps it into a real radius between a minimum and the max bulge, so dragging a point can never push the shade to a size I haven&#8217;t allowed.<\/p>\n<p>The base works the same way. Its radius is never set directly. It&#8217;s measured from the bottom of the shade, and base offset only adds a margin around it, so whatever shape the customer draws, the base still fits under it. The parts of the base that hold the hardware don&#8217;t move at all: the puck light seat and the cable channel are fixed sizes, because the light and its wire don&#8217;t change when the lamp does.<\/p>\n<p>Almost every value I kept hidden was protecting one I&#8217;d exposed, including the limits on the sliders themselves. One of those limits turned out to be older than the lamp it was protecting.<\/p>\n<div id=\"attachment_12761\" style=\"width: 1034px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-12761\" class=\"wp-image-12761 size-large lazyload\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/lamp-configurator-controls-hidden-rules-1024x583.png\" alt=\"Diagram mapping the lamp configurator's eight controls to the hidden rules that protect them\" width=\"1024\" height=\"583\" data-sizes=\"auto\" data-srcset=\"https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/lamp-configurator-controls-hidden-rules-1024x583.png 1024w, https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/lamp-configurator-controls-hidden-rules-300x171.png 300w, https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/lamp-configurator-controls-hidden-rules-768x437.png 768w, https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/lamp-configurator-controls-hidden-rules-1536x874.png 1536w, https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/lamp-configurator-controls-hidden-rules-800x455.png 800w, https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/lamp-configurator-controls-hidden-rules-1920x1092.png 1920w, https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/lamp-configurator-controls-hidden-rules-20x11.png 20w, https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/lamp-configurator-controls-hidden-rules.png 2000w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><p id=\"caption-attachment-12761\" class=\"wp-caption-text\">Every control on the panel is backed by rules the customer never sees.<\/p><\/div>\n<h2 id=\"preserve-decisions\"><span class=\"ez-toc-section\" id=\"Parametric_systems_preserve_decisions\"><\/span>Parametric systems preserve decisions<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>A parametric model keeps old decisions as rules, and they don&#8217;t announce themselves. My lamp has one.<\/p>\n<p>I first imagined the customizable 3D printed lamp as a single body, with the bulb going in through the top opening of the shade. It was harder to print, harder to assemble, and the light was hard to get at. So I split it. The shade and the base became separate parts. The puck light seats in the base, and a ring at the bottom of the shade drops into a socket cut into the base. The ring&#8217;s size is taken from the shade itself, so it changes with every configuration, and the socket follows it.<\/p>\n<p>The split left something behind. Max bulge can&#8217;t go below 50, a floor I set when the bulb still had to go in from the top. Once the light moved into the base, that reason was gone, but I never went back and updated the limit. It still stops the lamp getting slimmer, for a reason that no longer exists.<\/p>\n<p>That&#8217;s the risk of building a system rather than an object. A one-off model gets thrown away along with its mistakes. A system carries them into every lamp it makes.<\/p>\n<h2 id=\"physical-parameter\"><span class=\"ez-toc-section\" id=\"The_physical_world_becomes_another_parameter\"><\/span>The physical world becomes another parameter<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Not every rule in the system came from the screen. The ring and socket only work with a small gap between them, and that gap can&#8217;t be decided digitally.<\/p>\n<p>I worked it out away from the lamp, on a printed tolerance test card with gaps in 0.05 mm steps. The fit I was after sat between 0.10 and 0.15 mm. On my Bambu Lab A1 with PLA, 0.10 mm worked better, so that&#8217;s the number in the system.<\/p>\n<p>It&#8217;s another hidden value, and the customer doesn&#8217;t need to know it exists. But it&#8217;s the one number in the lamp that came from the printer, and I wouldn&#8217;t assume it carries over to another printer or material.<\/p>\n<p>It does stay adjustable inside the graph, on its own slider running from 0.1 to 0.45, just never on the customer&#8217;s panel. If the printer or the material changes, that&#8217;s the number to retest.<\/p>\n<div id=\"attachment_12762\" style=\"width: 1034px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-12762\" class=\"wp-image-12762 size-large lazyload\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/3d-printing-tolerance-test-card-lamp-base-1024x651.jpg\" alt=\"3D printing tolerance test card with 0.05 mm gap steps, and the printed lamp base with its socket and light seat\" width=\"1024\" height=\"651\" data-sizes=\"auto\" data-srcset=\"https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/3d-printing-tolerance-test-card-lamp-base-1024x651.jpg 1024w, https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/3d-printing-tolerance-test-card-lamp-base-300x191.jpg 300w, https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/3d-printing-tolerance-test-card-lamp-base-768x488.jpg 768w, https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/3d-printing-tolerance-test-card-lamp-base-1536x976.jpg 1536w, https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/3d-printing-tolerance-test-card-lamp-base-800x508.jpg 800w, https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/3d-printing-tolerance-test-card-lamp-base-1920x1220.jpg 1920w, https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/3d-printing-tolerance-test-card-lamp-base-20x14.jpg 20w, https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/3d-printing-tolerance-test-card-lamp-base.jpg 2000w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><p id=\"caption-attachment-12762\" class=\"wp-caption-text\">The fit was settled on a test card before it went into the system.<\/p><\/div>\n<h2 id=\"design-the-system\"><span class=\"ez-toc-section\" id=\"The_system_itself_needs_to_be_designed\"><\/span>The system itself needs to be designed<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The last thing I had to design wasn&#8217;t part of the lamp. At first everything lived in one output. Then the configurator preview got slow. The heavy operations, fusing the shade into one solid and adding the fitting details, were dragging it down.<\/p>\n<p>So I split the system into two outputs from the same definition. The customer gets a lightweight preview that responds quickly. The manufacturing output carries the heavy operations and exports STL files for printing. In the live graph, those manufacturing steps are switched off on purpose: their job is done once a design is exported.<\/p>\n<p>The preview is the same definition with the steps only the printer needs left out. It&#8217;s what the customer configures and downloads, and BeeGraphy lets a manufacturer <a href=\"https:\/\/beegraphy.com\/blog\/design-to-manufacturing-platform\/\">embed it on their own website<\/a>. To show that route, we set it up on a demo manufacturer site.<\/p>\n<p>That&#8217;s the route the customizable 3D printed lamp in these photos took. I exported the shade and base as separate STLs, sliced them in <a href=\"https:\/\/bambulab.com\/en\/download\/studio\" target=\"_blank\" rel=\"noopener\">Bambu Studio<\/a> and printed them in PLA on the A1. The print came out successfully.<\/p>\n<h2 id=\"design-work-moves\"><span class=\"ez-toc-section\" id=\"Design_work_doesnt_disappear_It_moves\"><\/span>Design work doesn&#8217;t disappear. It moves.<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Holder diameter is on the customer&#8217;s panel because I wanted to leave room for someone who&#8217;d rather use a bulb holder than a puck light. But that isn&#8217;t a range. It&#8217;s a choice between two fittings. A slider suggests any diameter means something, when what I had in mind was two options. Offering exactly those two would have said what the control really is. I missed it.<\/p>\n<p>That miss sums up the customizable 3D printed lamp project for me. I wasn&#8217;t reshaping lamps anymore. I was deciding, ahead of time, what a customer could change, what form each change should take, and what must never move.<\/p>\n<p>Looking back, most of those decisions are ones the customer will never see: a formula for rib thickness, a 4% overlap, a 0.10 mm gap, a limit I forgot to retire, an output switched off on purpose.<\/p>\n<p>That takes systematic thinking, and it&#8217;s as much design as the ribs are. The eight controls are the part anyone can see. The decisions behind them are the part worth designing.<\/p>\n<div id=\"attachment_12763\" style=\"width: 1034px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-12763\" class=\"wp-image-12763 size-large lazyload\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/customizable-3d-printed-lamp-ai-visualization-1024x642.jpg\" alt=\"AI-generated visualization of the customizable 3D printed lamp design, lit\" width=\"1024\" height=\"642\" data-sizes=\"auto\" data-srcset=\"https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/customizable-3d-printed-lamp-ai-visualization-1024x642.jpg 1024w, https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/customizable-3d-printed-lamp-ai-visualization-300x188.jpg 300w, https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/customizable-3d-printed-lamp-ai-visualization-768x482.jpg 768w, https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/customizable-3d-printed-lamp-ai-visualization-1536x963.jpg 1536w, https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/customizable-3d-printed-lamp-ai-visualization-800x502.jpg 800w, https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/customizable-3d-printed-lamp-ai-visualization-1920x1204.jpg 1920w, https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/customizable-3d-printed-lamp-ai-visualization-20x14.jpg 20w, https:\/\/beegraphy.com\/blog\/wp-content\/uploads\/2026\/10\/customizable-3d-printed-lamp-ai-visualization.jpg 2000w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><p id=\"caption-attachment-12763\" class=\"wp-caption-text\">AI-generated visualization of the customizable 3D printed lamp. Not a photograph of the print.<\/p><\/div>\n<h2 id=\"try-it\"><span class=\"ez-toc-section\" id=\"Try_the_customizable_3D_printed_lamp_yourself\"><\/span>Try the customizable 3D printed lamp yourself<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The customizable 3D printed lamp configurator below runs on the same system this article describes. Change the controls and watch the ribs and the base follow.<\/p>\n<p><iframe id=\"model-6abcdd8bbe9a1934ef3c3308\" style=\"display: block; width: 100%; max-width: 100%; height: 1000px; border: none; border-radius: 12px;\" title=\"Customizable 3D printed lamp configurator\" src=\"https:\/\/beegraphy.com\/embed\/6abcdd8bbe9a1934ef3c3308\" width=\"1210\" height=\"1000\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<h2 id=\"faq\"><span class=\"ez-toc-section\" id=\"Customizable_3D_printed_lamp_FAQ\"><\/span>Customizable 3D printed lamp FAQ<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><strong>What can a customer change on the customizable 3D printed lamp?<\/strong><\/p>\n<p>The customizable 3D printed lamp has eight controls: height, number of ribs, how far the shade bulges, the shape of the bulge, profile resolution, base height, base offset and the light holder&#8217;s diameter. The bulge shape isn&#8217;t a number. The customer drags points on a sine curve and the silhouette follows it.<\/p>\n<p><strong>How do the ribs of the customizable 3D printed lamp stay fused at any rib count?<\/strong><\/p>\n<p>Each rib&#8217;s radius isn&#8217;t set by hand. It follows r \u00b7 sin(\u03c0 \/ N), where r is the profile&#8217;s distance from the axis and N is the rib count, so neighboring ribs always meet. A 4% overlap on top of that makes them fuse into one solid.<\/p>\n<p><strong>What printer and material was the customizable 3D printed lamp printed on?<\/strong><\/p>\n<p>PLA on a Bambu Lab A1. The shade and base were exported as separate STLs and sliced in Bambu Studio. The ring and socket use a 0.10 mm gap found on a tolerance test card, which is the number to retest on a different printer or material.<\/p>\n<p><strong>Can a manufacturer put this configurator on their own website?<\/strong><\/p>\n<p>Yes. BeeGraphy lets a manufacturer embed the lightweight preview of the customizable 3D printed lamp on their own site, while the manufacturing output from the same definition produces the STL files for printing.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Customization creates a new design problem A 3D printer will print any form you give it. It won&#8217;t give you the form. For a while I&#8217;ve been thinking about starting a product design company, one that experiments with additive manufacturing and sells lamps. The more I looked at 3D printing, the clearer its two real [&hellip;]<\/p>\n","protected":false},"author":25,"featured_media":12757,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[428,427,100,98,187,383,410],"tags":[53,70,514,109,131,511,512,36,513,347,86],"class_list":["post-12748","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-parametric-lighting","category-3d-printing","category-additive-and-subtractive-manufacturing","category-computational-design","category-custom-manufacturing","category-product-configurator","category-scalable-customization","tag-3d-printing","tag-additive-manufacturing","tag-bambu-lab-a1","tag-beegraphy","tag-custom-lighting-solutions","tag-customizable-3d-printed-lamp","tag-mass-customization","tag-parametric-design","tag-parametric-lamp","tag-product-configurator","tag-product-customization"],"_links":{"self":[{"href":"https:\/\/beegraphy.com\/blog\/wp-json\/wp\/v2\/posts\/12748","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/beegraphy.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/beegraphy.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/beegraphy.com\/blog\/wp-json\/wp\/v2\/users\/25"}],"replies":[{"embeddable":true,"href":"https:\/\/beegraphy.com\/blog\/wp-json\/wp\/v2\/comments?post=12748"}],"version-history":[{"count":6,"href":"https:\/\/beegraphy.com\/blog\/wp-json\/wp\/v2\/posts\/12748\/revisions"}],"predecessor-version":[{"id":12778,"href":"https:\/\/beegraphy.com\/blog\/wp-json\/wp\/v2\/posts\/12748\/revisions\/12778"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/beegraphy.com\/blog\/wp-json\/wp\/v2\/media\/12757"}],"wp:attachment":[{"href":"https:\/\/beegraphy.com\/blog\/wp-json\/wp\/v2\/media?parent=12748"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/beegraphy.com\/blog\/wp-json\/wp\/v2\/categories?post=12748"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/beegraphy.com\/blog\/wp-json\/wp\/v2\/tags?post=12748"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}