All Collections
Nesting for MJF 4200
Nesting for MJF 4200

What's at stake when nesting is calculated (or not) for models being quoted.

Updated over a week ago

A number of HP MJF owners have asked us why we will not try to take account of the “nestability” of parts when quoting for MultiJet Fusion (MJF).

“Nesting” as we understand it is placing one model inside the bounding box of another model when setting up a print run, thereby improving the filling rate of the printer. This is relevant for all 3D printing techs with two cycles per layer, a forming and a material transport cycle, but not for FDM, where transport and forming cycles coincide. 

The material transport cycle, being of a constant length, nivellates the difference in total print time between a well-filled and a poorly filled print envelope, thereby making models from a well-filled printer envelope “cheaper“. 

In MJF, as in Direct Light Processing (DLP), this phenomenon gets exacerbated by the fact that the forming cycle is done in a parallel process, which makes the difference between forming times for a well-filled and an almost empty layer hardly noticeable. 

That way a well-filled print envelope takes as much time to print as an almost empty one. Since print-time has a cost, and the task of a quoting tool like DigiFabster (DF) is to divide that cost as correctly as possible over various prints, the question, “why we will not try to take account of the “nestability” of parts when quoting for MultiJet Fusion” is fair. 

Let’s have a look at what part of the printing costs is at stake here. As DF knows better than most, there exists a wide range of practices in assigning costs to models. 

At one end of the range, all costs get assigned by volume of model: print shop owners lump both fixed (rent, loan payments, payroll) and variable costs (materials) for a certain period of time in the past together, divide that by the cubic centimeters of models printed during that period and thus get an average price per cubic centimeters from the past to use for prints in the future.

At the other extreme, all costs again get lumped together for a certain period, and they get divided by the time the machines have worked, which gives an average price per hour of machine time, which then gets applied to machine time.

Since this approach clearly negates the beneficial effects of big orders with their relatively low sales,- administrative,- and handling costs, a complicated system of discounts has then to be designed so as not to get stuck with all the small jobs and short runs. 

Since complication always causes conversion loss, sales costs per order will go up.

That's why we need to split costs: when we discuss print time and its attributes: price per hour, nestability, we need to exclude material use, electricity consumption, print preparation, or cleaning of the models after printing. They all correlate to the geometry of the models, their volumes, their surfaces, or their quantity, and can be priced by those parameters. Here we’re talking about print time. A well-filled batch (one print run) takes roughly as much time as a poorly filled one, thus the parts in the poorly filled one should cost more per piece than those in the well-filled batch. How much more?

Let’s start with how much a whole batch costs in print time. The consensus seems to be that a batch on an MJF 4200 takes more than one 8-hour shift but less than two. so if you’re working in single shifts, that’s one batch a workday. What does a workday of print time cost?

The simplest way to look at it is this way: You took a loan with the bank to buy one MJF 4200, which you have to pay back over time. Since you would like to buy a new and better printer in 5 years’ time, you will have to go to the bank again in five years’ time to get another loan, so it’s probably wise to pay them back for your current printer, on time and in full.

Assuming your printer costs $300,000 and you borrowed against 5% for 5 years, your monthly payments will be roughly $5,600 per month. Working 22 days per month, so 22 batches per month, a batch in print time should bring in $260.

There are some other fixed costs connected with owning a printer of this size, like rent for the space it takes up, but they tend to be marginal as compared to the loan repayment, and all summed up less than doubles it. Other costs, like those of sales and handling, which may seem to be fixed, aren’t: They are correlated to the number of copies sold and can be costed as per part fee, start-up fee, or simply added to the price per cubic centimeter of the model, with that particular cost coming down as the model becomes bigger (for a detailed discussion of how to deal with seemingly fixed costs see here). That leaves us with the loan payment which has to be recovered by the work of the printer, plus some undefined other fixed costs.

To make sure we cover all fixed costs (and simplify our calculations :-)) we make it 410$, which is what the printer needs to earn per batch.

So the sum at stake in the issue is 410$ per batch, and the question is: how to fairly distribute $410 over the models which are going to be in the batch at the moment of quoting.

This, showing a fair price at the moment of quoting, is an important point. There are a few factors that preclude perfectly fair quoting.

  1. A 3D model in a batch can be positioned in an infinite number of ways. Two parts can thus be juxtaposed ∞² times, three parts ∞³, etc. CPU time, needed for all those iterations is going to be, well, infinite. Not everybody has that kind of patience. Even if we adhere to good manufacturing practices - for example, by putting all models as flat as possible- we still can spin those parts through 360 degrees around the z-axis, and since GMP does not preclude spinning by minutes or seconds or even smaller intervals, we’re again facing infinity. 

  2. The models in the queue are constantly changing. Later in this text, there will be a discussion of a big hollow model which messes up calculations even for one elementary iteration, but the point is: You can’t count on the fact that every order is going to fill the whole envelope, so at almost every given moment you will be combining ordered models, with their infinite number of juxtapositions, with models in unconfirmed quotes, with quotes not yet made, about which you know absolutely nothing.

  3. Whichever way you look at it, the law of diminishing returns is going to influence the cost of a model in a well-filled batch differently from one in an almost empty batch, and until you decide that now you really have to stop fiddling around with all those ordered, quoted and not-as-yet-quoted models and start printing, you don't know what's it going to be. To illustrate: A batch with one model costs $410, so the model costs $410 in print time. If a second copy is added, both copies will cost half that, 10 copies will cost $41 in print time per piece, etc. Strange, right? All copies are identical, but by simply changing the number ordered the cost per copy changes. 

The above three points are abstract and, if anything, understate the difficulty of fair pricing “on the go”. But at least they clarify why the cost assigned to print time should be as small as is still reasonable: with so much unpredictability you don’t want to gamble big figures. 

But, as said, those points are all a bit abstract. We need some real information, which we can get in the past, and which we can then generalize. To get some “generalized knowledge of the past” for this article we’ve analyzed every tenth of the last 300 models uploaded for an MJF 4200 in DigiFabster in 2018 and extracted the following data:

Length, width, and height of the model’s bounding box -which gives us the volume of the bounding box-, 

-the surface area of the models


-the volume of the models.

One aside concerning the surface area of the models: HP has a rule that no two models should be closer to one another than 2 millimeters. This makes it possible to project a “no-go” zone around all models, by giving the surface area parameter, which is two dimensional, depth: a layer of 1 millimeter thick. By doing that we understand that the fill rate of this printer will never be 100%: the weighted average ratio of “no-go area” volume to model volume for the sample set below is 35%, the ratio of no-go area to a total bounding box is 4%. So the maximum theoretical fill rate for this set is 96%. Just saying.

This is the sample, after eliminating two outliers with extremely low or high model volume to bounding box volume ratios (MV/BBV), all sizes are in millimeters, square millimeters, or cubic millimeters, as appropriate:

We’re left with 28 samples, with a total bounding box volume of 53 liters and a total model volume of 5,4 liters, so the weighted MV/BBV is roughly 10% (1 liter is 1 million cubic millimeters). 

The unweighted MV/BBV average is 22%. The sample set contains one really big model, the third from the top. We can use this model, which has a quite low MV/BBV of 5% to simulate nesting later on.

I want to propose 4 subsets based on this sample:

First subset: We order the sample set by model name from A-Z, sum up the bounding box volume of all earlier rows with that of the current model, and cut off before 41 liters are reached. 41 liters is the effective size of the 4200 printer.

Another aside: When stacking up bounding boxes like this, in real life they would not fit a volume of 41 liters because empty space would be left between them or at the edges. At the risk of restating the blindingly obvious, I will try to visualize this point for the first 10 models in the above sample. 

My visualization:

This is the result of the first iteration of compactly stacking bounding boxes, using HI© and a lot of time: the total volume of the stacked bounding boxes is 40 liter and the total volume of the new bounding box around these stacked bounding boxes is 56 liter. So when we use the algorithm above, cutting off at 41 liters, we are already compacting the load, by allowing bounding boxes to overlap. And yes, as a general rule, given the anisotropic mechanical properties of nylon out of an MJF 4200, or any other 3D process, you should try not to flip models to a vertical position just to make the loading more compact. 

Anyway, subset 1 is:

To reiterate: we ordered the models in the sample by file name (which we cannot show here, sorry), from A to Z, and added the bounding box volume of the current model to all earlier models, until we reached 41 liters, at which point we cut off at the model before that. Total bounding box volume: 40,5 liters, total model volume 2,5 liters, fill rate 6%.

The second subset, same rules, now ordered by model name from Z to A:

Why only 27 liters? The next model in line was the big one with a 24 liter bounding box, which would have brought the total to 52 liters, much bigger than the effective printer space. So we cut off after model number 22. Curiously enough the overall fill rate is much better than before, due to the absence in the set of the big, low MV/BBV-rate model.

Third subset: we kicked out the very big model mentioned above and filled the printer space with copies of models already entered, up until a total bounding box volume of 40,9 liters:

This subset contains 35 models, the highest quantity of all subsets. 

And the fourth and last set: we simply “loaded” all models in the sample into the printer, ignoring our own 41 liters cutoff rule and assuming that some kind of clever nesting software would increase the original MV/BBV rate from 10% (5,4l./53l.) to 13% (5,4l./41l.), an improvement of 30%:

Those are the proposed subsets, each with an explanation of how they came to be and all based on models that have entered the DF space within the last week, chosen (every 10th ), and shuffled (by file name) more or less at random, and then, in case of the last two subsets, improved by simple means. Those two last subsets with improvements on the completely random queueing are meant to simulate two successful attempts at nesting. 

What does it all mean? 

We have now a range, from 6% to 18 % filling rate. From conversations with MJF users, we understand that this more or less reflects reality, with and without nesting, with factual filling rates ranging from 10 to 20%. Now the big question: How should a feature that could predict nesting influence the price of a model?

DigiFabster’s standard proposal, without taking nesting into account, is: take the 410$ fixed costs per batch and split it over the available cubic centimeters in the printer. The printer has 41 liters, is 41*1000=41000 cm3. So charge 410/41000=0,01$ per cubic centimeter bounding box. This, in our mind, covers an average case with 15% fill rate. Now if by some clever nesting the fill rate goes up to 20%, the price per cubic centimeter "should" go down by the same proportion. 15/20=0,75, 0,01*0,75= 0,0075$.

For the other main pricing components we give the following recommendations:

Price per gram of nylon, at a (nominal) density of 1: 0,08$

Price per square centimeter of model surface: 0,02$

Price per cubic centimeter model, diminished by exponent 0,7: 0,70$.

This is the feature that makes big models relatively cheap, which better reflects a fair distribution of handling costs (different but similar issue). The result, when costing the models for a 15% and a 20% filled printer is the following:

The “total price 2” figures reflect the prices based on an assumed filling rate of 20%, and they show that with this assumption and with these pricing settings the prices shown in the quote would drop on average by 4%, on weighted average by 6%, with a median price drop of 3%.

A further tweak per model is possible, by decreasing the price per cubic centimeter bounding box and increasing the price per square centimeter surface area. This would increase the relative importance of surface features, which by sticking out of the model predictably hinders successful nesting. We can’t say how much you should either increase or decrease those parameters, you should test it on your own models, maybe with a smaller set and with some dedicated nesting software standing by. But that’s up to you, we are sure that we’re in the ballpark with our ± 5% estimation of filling density and our median 3% price variation due to that. To answer the question in the header: 3% is what's at stake.

It’s up to you to decide if 3% is within your expectations for accuracy when quoting, the more so since discount rules, per part fees, start-up prices, etc. are going to fuzz up the issue anyway.

If you think that a 3% drop in some prices (with a logically following increase in others by the same 3%) is going to give you the competitive edge, feel free to use the tip about surface area enhanced pricing above. 

We honestly feel that to be overkill. Because, please remember: The issue is quoting and getting orders, not process optimization. Getting those orders takes more than a plus-minus 3% cost variation.

Fast quoting, fast delivery, an easy-to-use interface, being open for business 24/7, those things are much more important.

Getting double the models out of one print run is nothing to be sneezed at, but that’s another story, for another day.

Did this answer your question?