Jeff Epler's blog

6 August 2017, 2:26 UTC

poc: Python OCE Composer

poc is a tool in the vein of OpenSCAD for creating 3D models in a high level language with a minimum of boilerplate. It's now live at github, though I don't know how actively I'll deveop or maintain it yet.

Here you can see that the input format is fairly terse, and it has some abilities OpenSCAD doesn't, like selectively filleting certain edges:

with Difference():
    Box((-50,-50,-50), (50,50,50))
    Cylinder((-100,0,0), (100,0,0), 25)
    Cylinder((0,-100,0), (0,100,0), 25)
    Cylinder((0,0,-100), (0,0,100), 25)
Fillet(12, [e for e in Edges() if e.boundingBox().min.z > 0])


1 August 2017, 0:48 UTC

occmodel as Python alternative to openscad

I like openscad a lot, but I'm still on the lookout for alternatives.

Recently I ran across occmodel. Its biggest prerequisite, OpenCASCADE, is packaged in Debian Stretch as "liboce"; the rest are fairly lightweight (though compiled) extensions.

So I gave it a try for a small piece, little extension legs for a dish drainer. I plan to add two leg extensions to the antisinkward legs of the dish drainer, to improve its draining behavior. So one key feature is that the captured leg will end up being at an angle to the counter.

My python program has a few "configurables" near the top, inner and outer diameters, heights, and the distance between the legs. From this, I do some basic operations (difference of two cylinders, rotation of that intermediate solid to represent the required angle, then intersection between it and a large cube that represents the half-space 'above the countertop'. Then, just to show I can do something openscad can't do trivially, I fillet every edge by 1mm.

from __future__ import division
from math import *
from geotools import *
from tostl import occ_to_stl # a little homebrew module
import os


dist = 12*IN
dia = .7*IN
od = dia + .25*IN
elevation = 1*IN
engagement = 1*IN

angle = atan2(elevation, dist)

outer = Solid().createCylinder((0,0,-elevation), (0,0,elevation+engagement),od/2)
inner = Solid().createCylinder((0,0,elevation), (0,0,100),dia/2)
outer.rotate(angle, (1,0,0))
b = Solid().createBox((-100,-100,0), (100,100, 100))
with open("", "wb") as f: occ_to_stl(outer, f)
os.rename("", "drainboots.stl")

(I couldn't get a screenshot that did the part much justice)

What is the gap between here and a real OpenSCAD alternative?

First, I'm not confident of the robustness of liboce; I saw some segfaults and since they were dependent on specific numbers in the geometry I am tempted to assign blame there and not to the occmodel wrapper. (not that OpenSCAD is beyond reproach here)

Second, it needs an integrated environment like OpenSCAD has. Maybe one of the python "notebook" interfaces would be suitable for this.

Third, it needs less boilerplate.

Fourth, it needs broad buy-in by users of sites like thingiverse, because OpenSCAD has massive momentum behind it.


12 July 2017, 14:34 UTC

MP Select Mini: Heated Bed Repair

With some help from Chris and some Things from Thingiverse, my bed wiring is repaired and now runs in a cable chain instead of tightly flexing against a cable tie. Let's hope this version holds up!


6 June 2017, 11:54 UTC

My internet usage would fit on six 33.6kb/s modems on average

.. and only a handful of days in the last year would have come close to saturating a T1 at its nominal 1.544Mb/s. Still, that's a total of around 800GB/year downloaded. Something big would have to change before I could switch to metered cellular data; the upload and download taken together would cost about $1000 a month with my current cellphone provider.


18 May 2017, 0:16 UTC

Monoprice Select 3D Printer Review (part 4)

Now the hardware problems have started in earnest. :(

I estimate I've made between 200 and 300 individual prints, though I stopped tracking at around 200.

The first hardware failure was in the hotend side quick connect fitting for the bowden tube—the tubing itself would pop out midway through a printing job, and that would consistently ruin prints I bought a set of 5 replacements from the internet, and that fixed that.

The second hardware failure is more severe, because to resolve it I'll have to work with wiring: the bed has stopped heating in some Y-positions. I had not made any of the hardware mods that are supposed to improve the durability of these under-table moving wires.

An inspection turned up that one of the large-gage wires is almost totally cut through by the cable tie under the bed, which sure explains the failure to heat.

For now I'll just write off the ability to print in ABS and PETG, and stick to PLA, and wait to see what fails next. If I get suitably motivated, I might try to fix the heated bed. I'm not thrilled with the idea of junking it, because the obvious replacement would be the MPSM v2, but my friend Sam has already had the bed thermistor fail on his v2 after less than two weeks.


3 May 2017, 0:22 UTC

Monoprice Select 3D Printer Review (part 3)

Subtitle: Why didn't anyone tell me to block the print cooling duct?

Subtitle: Now we're printing with ABS!

As you'll recall, my primary complaint about the MPSM has been that it's advertised as printing ABS but never has for me.

I can now credit two easy modifications with making it possible to print ABS:

The first one, which I had done a long time ago, is to insulate the heated build plate. I did this by simply folding a paper towel and placing it just under the build plate. This allows bed temperatures of 75-80C to be reached. (These bed temperatures can't be selected at the preheat screen but can be in the slicer. Weird.)

The second one, which I only recently heard about, is to block the lower exit of the cooling shroud, the one which cools the print. This can be done in the first place with more of your masking / painter's tape. Once you've done that, print an MP Select Mini ABS Flag in ABS. I selected the fully blocked one fwiw.

With it I've printed several things in ABS that I would not have been able to print otherwise, such as the replacement fan shroud which you see in the photo.

I'll keep printing primarily in PLA and PETG, but now I can say I successfully print in ABS as well.

PS Remember to remove the ABS flag before switching to PLA filament!


19 March 2017, 20:16 UTC

Time Reversed Cosmology

One of my favorite authors is Greg Egan, and that's in great part because of how in many stories he starts with known physics, adds a twist, and follows it to its logical conclusion within the story's setting.

A particular idea he's used a few times is the idea that portions of the universe could potentially contain "time-reversed" regions. From our point of view, for instance, a time-reversed star absorbs photons, and if we could observe biological phenomena they would likewise go in reverse. (See e.g., the short story The Hundred Light-Year Diary)

From our point of view, the universe began billions of years ago with the big bang, and as far as I know all present observations are compatible with zero or negative curvature. This apparently gives an infinite amount of time to come in the future, though only a finite portion of that future can support baryonic life like ours.

So what does cosmology look like for the time-reversed universe, and what are their "big problems"? I don't have enough background in basic physics and cosmology to give a really good answer to this question, but here are some things that occur to me:

  • How to reconcile the apparent flatness of the universe with the observed cosmic blue-shift
  • If the universe has an infinite past, and the baryonic era has been going on for at least 1036 years, why are there no other observable civlizations?
  • Were natural laws different in the distant past? Why and when did baryogenesis occur, given that in the present day the creation rate of protons is so small as to be unmeasurable? Ultra-low energy / density physics will presumably be an area of great interest in understanding the origins of the universe.
  • At the same time, high energy physics will be of interest in understanding the fate of the universe. Scientists learn that in the high-energy future, the laws of physics themselves break down ("unify" in our terminology).
  • Some models will predict a "deflation" process that begins when a certain mass/energy density is reached, rapidly collapsing the observable universe and obviously destroying all intelligent life in the process. Unfortunately, the models will be unable to predict the specific energy density.
  • I'm not sure what the time-reversed CMB looks like. A white-hot wall that indicates "deflation" is already going on in the distant parts of the universe, an approaching wavefront that clearly dooms all intelligent species?
  • What, if anything, happens after the great singularity at the end of time?


7 January 2017, 13:50 UTC

Monoprice Select 3D Printer Review (part 2)

I reviewed this entry-level 3D printer soon after I got it. Now I've been using it for nearly two months and over 100 prints and I wanted to post some updates. I do continue to feel that this is a good printer for me, and for anyone who would like to start 3D printing without spending much money and without building a machine from parts. (on the other hand, you do have to endure the learning curve that comes with modeling and slicing software on your PC, which I was interested to do)

The printer continues to give me very usable results in PLA, some adequate results (but with lots of stringing) in PETG, and useless results in ABS. bold Update: Check this update for how I have been printing ABS successfully. I've been doing PLA on painter's tape and a cold bed; PETG on painter's tape with gluestick and 75C bed. First layer adhesion is just fine, removal is sometimes finicky.

The original hot end continues to work, though I did have one pretty close call when the old filament broke during a filament change, leaving the old filament stuck in the hot end, unwilling to move forward or back. Ultimately, I disassembled the hot end so that the heat break was not in the heatsink, then heated the heatbreak+nozzle assembly to 250C from the front panel. As soon as it was possible to do so, I pushed the filament through using an allen wrench of the right cross-section. After this, I experienced more minor jams during my next few filament changes; I think there is some remaining filament melted to the inside of the heat break further up than it ought to be. But it does continue working, extruding properly.

(I've tried using the atomic method to clean it up inside, but I just can't find that sweet spot where the PLA is pullable but not too melted)

On the software side, I am getting more comfortable with Cura and OpenSCAD and I've been able to contribute a few designs to thingiverse, a few remixes but mostly original items. The firmware of the machine itself is adequate, though you do have to get used to a few quirks. The main quirk occurs when you want to print again immediately: Cura writes out an ending sequence like: Turn off heaters, wait 5 minutes, turn off fan. After "turn off heaters", the front panel UI acts like the part is done and returns to the main screen. But if you actually try to print something again immediately, the 5 minute wait is still going on and doesn't seem possible to cancel. At this point, it's easiest to just power-cycle the printer. (But it's good enough that I don't care to spend weeks figuring out how to replace the control's firmware with a proper, source-available firmware, or replace the whole control with linuxcnc, despite the superficial feasibility of either option)

As far as modifying the printer itself, I haven't done (or had to do) much. The fan sounds pretty bad, and sometimes the whole machine rattles pretty loudly when moving; I probably could do something about this by either making sure all the screws are well-tightened and/or trying some of the vibration-reducing designs on Thingiverse. I haven't had to change anything about the wiring or electronics; overheating is not a problem in my 20C house (but just wait for summer..). I did print a little "filament guide nut" that goes at the entry to the bowden tube, and a spinner for the extruder just so I can see at a glance that it's working properly, but that's just about it.


19 November 2016, 19:08 UTC

Monoprice Select Mini 3D Printer Review

16 November 2016, 2:04 UTC

Monoprice Select Mini, sight unseen

17 August 2016, 12:51 UTC

Imagine (software developer version)

All older entries
Website Copyright © 2004-2017 Jeff Epler