Category Archives: 3D Printing

SnapShot(26) (Custom)

Solar Wobbler Modification


Somewhere along the line the flower broke off of the solar wobbler that we had lying around the house.  When it broke I shoved it in a drawer thinking that I would modify it into something new someday.  I finally got around to pulling it back out of the drawer and fixing it up.  Below I layout the steps that I took to modify the wobbler.  More of the process can be seen in my Wobbler YouTube Video.  The 3D model of the wobbler I 3D printed is available on Thingiverse (3D Wobbler).

Step 1: Break your solar wobbler (mission accomplished)

SnapShot(1) (Custom)

Step 2: Carefully separate the two halves of the base outer housing.

SnapShot(2) (Custom)

Step 3: Remove the outer housing parts.

SnapShot(3) (Custom)

Step 4: Remove the leaf and flower components and remove the magnet

SnapShot(5) (Custom)

Step 5: Print a new wobbler part.  Use one of mine or design your own. The OpenSCAD files for my wobbler design is available on Thingiverse so you can modify it to make your own design.

SnapShot(6) (Custom)

Step 6: If needed finish the hole in the bottom of the wobbler to the tap drill size for a 1/4-20 screw thread ( #7 drill bit is best but a 7/32 bit would also work).

SnapShot(7) (Custom)

Step 7: Tap the hole in the bottom of the wobbler with a 1/4-20 tap.

SnapShot(12) (Custom)

Step 8: Finish the hole for the shaft (a small nail).  The finished size of the hole should be slightly smaller than the nail to produce a press fit.

SnapShot(9) (Custom)

Step 9: Insert the nail in the finished hole

SnapShot(13) (Custom)

Step 10: Press the nail into the hole using a vice, arbor press or pounding into the hole.

SnapShot(14) (Custom)SnapShot(15) (Custom)

Step 11: Screw in a small piece of threaded rod into the hole in the bottom of the wobbler

SnapShot(19) (Custom)

Step 12: Lock the threaded rod in place with a nut.

SnapShot(21) (Custom)

Step 13: Place the magnet on the bottom of the threaded rod.

SnapShot(22) (Custom) SnapShot(23) (Custom)

Step 14: Install the wobbler and check the clearance between the magnet and coil.  You want the magnet to be close to the coil without any possibility of making contact.  At this point it is a good idea to make sure everything is working properly.  Set the wobble on a table in a strong light.  If the wobble is not working well try flipping the magnet over.  The wobbler will work better with one of the two magnet sides facing the coil because the coil is only energized in one direction not an alternating direction.

SnapShot(24) (Custom)

Step 15: Reassemble the wobbler.  Before assembling mine I panted the housing black with Spray paint.

SnapShot(25) (Custom)

Step 16: Wobble….


My design is very simple and it works but I can only imagine that there are more creative people out there that can come up with far more elaborate designs for these cheap solar toys. Below is another version I made with my logo in place of the HackADay Jolly Wrencher.


OpenSCAD Modules for Automatic Fillets (and Radii)


Fillets in OpenSCAD are not a straight forward endeavor.  There have been many posts about the subject and many proposed solutions including libraries of generic fillet parts to be added to models.  The fillet type that I have been experimenting with uses minkowski sums to achieve the task on a model of any geometry.  Well, theoretically any model anyways.  The use of two minkowski sums in the process makes the procedure unpractical for models of significant complexity because of the time required to produce the result.  I do provide a partial solution to this limitation.  My partial solution is to isolate an area of a larger model for local fillet generation.  At the end of this BLOG post I provide a file containing modules for producing global or local fillets and radii within OpenSCAD.  If you want to know more about the steps taken to generate the fillets continue reading otherwise you can jump to the end to download the SCAD file with the modules.

The following steps are performed automatically by the modules included in the file at the end of this post.  These detailed steps and illustrations are provided for information purposes.

Original sample part: Here is our sample part, the second image shows the sample part with a transparent overlay of the sample part for reference.  The transparent part overlay will be included in the following steps for a visual reference of the original shape.

auto_fillet_step0a (Custom)auto_fillet_step0 (Custom)

STEP 1:  Perform a minkowski sum of the sample part with a sphere (or cylinder if only rounding one axis of the part).  (The image shows a slice of the minkowski sum for illustration purposes.  The full minkowski sum completely encloses the sample part.)

auto_fillet_step1 (Custom)


STEP 2:  Subtract the result from STEP 1 from a very large cube using a difference operation.  The large cube needs to be larger than the object being worked on.  This is analogous to inverting the normals on the model making a negative volume.  (CGAL and OpenSCAD do not support negative volumes so this is a work around)

auto_fillet_step2 (Custom)


STEP 3:  Perform a second Minkowski sum of the results from STEP 2 and the same sphere (or cylinder) used in STEP 1. NOTE: This is the most computationally intense step in the filleting process.

auto_fillet_step3 (Custom)

STEP 4:  Perform a difference operation to subtract the result from STEP 3 from a large cube.  The cube used in this step is slightly smaller than the cube used in STEP 2.  The remaining object has internal fillets with a radius equal to the radius of the sphere (or cylinder) used in the previous steps.  The top picture shows the object with the original shape shown transparent.  The lower image has the transparent original shape removed.

auto_fillet_step4 (Custom)auto_fillet_step5 (Custom)

This procedure works in the generalized 3D case with the size limitations I mentioned earlier. Additionally there is an analogous procedure to produce radii on external corners.  Below are images of a sample three dimensional parts with fillets and radii generated automatically using the module file I provide below.

Base 3D part:


3D part with Fillets (31 minute build time):


3D part with rounds (<1 minute build time):


3D part with fillets and rounds (80 minute build time):


As I mentioned earlier there is a partial solution to the model size limitation of this procedure.  This partial solution involves selecting a specific region of the model to be operated on and removing that region from the model while performing the operations.  After the operations are complete the removed section of the model is inserted back into the larger model via a union command.  This removal and re-installation of the sub-model is incorporated in the modules  provided in the .scad file linked at the end of this BLOG post.  To use the sub-modeling you just need to include a second object (child) in the module call to indicate the region to be operated on.  For example using the SCAD file provided if the module add_fillets is called on an object alone all of the internal corners will be filleted


If you call the add_fillets module and you include a second object only the areas of the first object that intersect the second object will be filleted.  (in the example below the second object is a 10x10x10 cube.


Below are a couple of pictures of our sample object with localized region fillets and radii.  All of the pictures below used a sphere with $fn=20 for the radius generation.  The default in the module file provided is $fn=6 to ensure reasonable run times for the example object.

Local region illustrated by a transparent box:


3D part with local fillets:


3D part with local radii:


3D part with local fillets and radii:


Finally, below is the link to the the .scad file containing the modules for fillets and radii.  The file also contains the simple examples shown in this post.  In addition to generalized fillets and radii the modules can be used to do single axis fillets and radii.  The single axis options (“x”,”y” and “z”) are much faster than the general option (“xzy”) so if you are only looking for a fillet in one axis it is better to use the specific axis you need.  Play with the examples to see how each option works.  The default “fn” value is 6 to keep the render time low.  To get more usable results that number will need to be increased.  (The sample images above used an fn=20).

Get the file here: fillets_and_rounds.scad