Here's an image of a part I am printing now:

Strange....Very Strange

As you can see, it is not a particularly complex part. Here it is loaded into the current version of Craftware:

Strange....Very Strange

This looks fine, and just to verify all is well, here it is loaded into the latest version of Prusa's modifications to Slic3r (which I call Plic3r):

Strange....Very Strange

Now for the fun part.

This is what Plic3r produces after slicing; this image is at about 70% if the full height:

Strange....Very Strange

This agrees with the geometry of the unsliced STL file. But here is what Craftware shows at about the same layer height:

Strange....Very Strange

Need I say any more? I have no idea where all that extra geometry comes from. I used 3D Builder to view the same STL file and it shows exactly what Craftware and Plic3r show before slicing. So I really do think the STL file is OK.

Needless to say what I'm printing now is the results of the Plic3r slicer. I plan on posting the results tomorrow and also making a blog page about this particular part. I'll post the link for it here tomorrow too.

June 4, 2017

Birk Binnard Birk Binnard
Revered
609 posts

37 replies


Hi Birk!

Can you please send the .stl file to support(at)craftunique.com? I can forward it to our developer team so they can pintpoint the issue. Thanks!

June 6, 2017

Edina Fajcsi Edina Fajcsi
Admin
59 posts

Sure Edina, I'll send the email straight away.

June 6, 2017

Birk Binnard Birk Binnard
Revered
609 posts

Phew, just looking at your model is twisting my brain...
Looks like you maybe activated the covfefe option by accident :-)
Looking at the creases it seems to me as if (not sure how to put this) the creases were all concave and the surfaces near the creases all convex, leading to a strange result if the walls are thin. I'd be interested in having a peek at your stl!

Apart from that: I'd print the Craftware version, much more interesting + you can pause the print halfway and hide little goodies in the pockets!

June 6, 2017

Kerrberos Kerrberos
Beginner
28 posts

Well I'm glad you found the part interesting. Since it was surprisingly easy to make I thought people might be interested to see the technique I used, so I made this this blog page to explain it all.

I wasn't going to publish the page until the print was finished, but since you wanted to look at the STL file this was the easiest way to make it available. I certainly agree the results Craftware produced were unique and unexpected, and i have no idea at all how or why it did what it did. I have never run across that kind of issue before, and I've been using Craftware pretty exclusively for quite a long time.

Edit: the print finished OK and I have updated the blog page to show the final result.

June 6, 2017

Birk Binnard Birk Binnard
Revered
609 posts

@Kerrberos, hahahahaha "covfefe option"
Kerrberos wrote:Phew, just looking at your model is twisting my brain...
Looks like you maybe activated the covfefe option by accident :-)

June 7, 2017

Ivan Hoe Ivan Hoe
Revered
509 posts

Unless you subtracted some of the inside after doing the counter-rotation (but your blog gives no indication of this) my impression is that CW is the only one of your slicers to process the part correctly :-)
I have loaded your stl into Catia V5 and cut it at roughly the height you show:
Strange....Very Strange

I also copied your design and made a brand-new model that has the same basic layout (with 36° counter-rotation), again cut:
Strange....Very Strange
What this shows is that there are definitely no convex edges on the inside of this design (but there are in your print).

And lastly, this is the shading your model gets loaded with in my Catia - looks fishy to me, but might be something to do with the fact that CATIA is not really designed to work with stls (but it doesn't do it with my own model):
Strange....Very Strange

June 7, 2017

Kerrberos Kerrberos
Beginner
28 posts

Those are very interesting (and confounding) images for sure - thanks for taking the time to analyze them. I do understand that Catia is the top of the heap in 3D Design software, and we are lucky to have someone here with access to it. That in itself makes your results most vexing - clearly Catia sees the same geometry as the Craftware slicer does, but why does nothing else see it? And where is that geometry anyway?

The method I used to create the STL file is exactly as I outlined in my blog page. There is no separate solid surface subtraction. As I noted, when I view the final STL file in any software I have (Craftware. Plic3r, Simplify3D, Kisslicer, STL View, 3D Builder) it looks the way I showed in photo 2 of my original post. But Craftware (and, it turns out, Kisslicer) slice the file with the extra bumps/ears that I showed in photo5.

I'm guessing the problem is related to Rhino - and how it converts from it's native geometry format (NURBS surfaces) to STL files. The way my process works is like this: I use Grasshopper to create geometry in Rhino. This is in native Rhino format of course, which is useless for 3D printing. Rhino has routines to transform/export it's internal geometry into all sorts of formats, including STL files.

Rhino's STL files typically contain errors, so I usually run them through 3D builder to fix them. But after the latest release of Windows I've found that 3d Builder tends to create errors rather than fix them. In the case of this file, Craftware crashes when it tries to slice the un-fixed STL file. This, by itself, is not an unusual circumstance. Plic3r has an STL fixer built in to it, and that's what I used to make the STL file I sliced, printed, and posted on my blog, Thingiverse, etc.

I have no idea what the Plic3r code did to the unfixed STL file, but I was able to print the fixed part successfully. And of course it printed as it looked at design time. Craftware will slice this fixed file too, but it produces the extra bumps when it does.

I did try converting the geometry to a mesh before exporting from Rhino, but this resulted in no change to any previous results. So maybe Rhino's NURBS format really has nothing to do with whatever is going on here.

I'm beginning to think I should post this info on the Rhino message board and see if anyone there has any idea what's going on. So far I've not made any postings there because I really don't use Rhino at all; for me it's just a means to get Grasshopper designs transformed into printable STL files.

June 7, 2017

Birk Binnard Birk Binnard
Revered
609 posts

The STL is definitely fishy. Here is a piece of it in MeshMixer with wireframe switched on:
Strange....Very Strange
In a correct STL you simply cannot have crossing lines. Looks like, that the top face is covered at least twice.
Here is another part. Notice, that there are no edges on the crease line and other edges just end at nowhere.
Strange....Very Strange
The surfaces just cross each other, so I think in effect there must be two solids in the STL with no effort to make them one. Most slicers hate that, like in this video:

June 8, 2017

psanyi psanyi
Exalted
775 posts

Thanks psanyl, that is an excellent video and I think it does accurately reflect my situation. The method I used to make the double-reverse twist clearly results in 2 separate intersecting shells (one for each twist), but this fact did not occur to me as significant because the resulting geometry looked good whenever I displayed it. And the fact that Plic3r sliced the geometry as I expected made me think the STL file was OK.

Apparently what I need to do is find some piece of software that can both detect this situation when it occurs, and then correct it appropriately. All I know right now is that 3D Builder is not that software, so I'll see what else I can find out there.

June 8, 2017

Birk Binnard Birk Binnard
Revered
609 posts

I'm no Rhino user, but AFAIK Rhino is a solid modeller too, so it should have some union operation. If you do the union on the solids, then the result should be good for STL export.

June 8, 2017

psanyi psanyi
Exalted
775 posts

Yup - been there, done that. No joy.

What happens is Rhino shows the final geometry comprised of 2 Breps. A Brep is Rhino's term for Binary Representation - I have no idea what this really means. But whatever it is, this is how Rhino shows the 2 Breps:

Strange....Very Strange

If I select one and drag it off to the side I get this:

Strange....Very Strange

The rub is, if I start with the original 2 Breps as generated from Grasshopper and try to combine them into a single Brep, I get this:

Command: _Boolean2Objects
Select two objects to Boolean ( DeleteInput=Yes ): '_SelAll
2 polysurfaces added to selection.
Calculating Boolean results...
Failed to Boolean. Nothing done

Essentially the same thing happens if I convert the Breps to meshes. So Rhino is no help in this situation.

Grrrrrrrrrrr.

June 8, 2017

Birk Binnard Birk Binnard
Revered
609 posts

I Googled "fix intersecting shells" and found this video. I tried it, but it did not fix the problem. In fact it seemed to have no effect at all, other than reducing the size of the original STL file.

Still searching.....

June 8, 2017

Birk Binnard Birk Binnard
Revered
609 posts

A few ideas to set your mind off at a tangent:

1. Separate the inner and outer shells:
- make the initial model solid by completely filling the outer shell right to the top. Mirror it along any upright plane, see if those two solids will union (is that a verb?, otherwise combine etc.)
- If it works, do the same for the inner shell. Then subtract the smaller one from the bigger one and hope for the best.

2. Try the same for a 36°-segment of the original (single-twist) model. (Suggestion: use 2 adjacent symmetry planes of the upper pentagon). Mirror (along one of these planes), combine, make a rotating pattern (5 instances, each rotated by 72°). (is this possible in Rhino/Grasshopper?) I got this idea from looking at your picture directly under the "this is how Rhino shows the two Breps" post, where it is obvious tht the outer shell is now made up of 10 sub-segments with vertical boundaries. This way you will nip the interseting surfaces in the bud.

3. Export the stls separately. Meshmixer claims to be able to do good booleans by now, but I haven't tried myself.

Good luck!

June 9, 2017

Kerrberos Kerrberos
Beginner
28 posts

1. Tried that - it's actually an old Grasshopper trick used to create a "closed Brep" which is needed to prevent "naked edges". At any rate the final result looked the same - and behaved the same as the method I am currently using. So no joy there.

2. Each filleted pentagon used to create the initial untwisted shape is actually comprised of 5 straight lines and 5 arcs. There are 10 of these pentagons, each one scaled to a different size, stacked up vertically to make the untwisted Loft shape. In theory I could take one vertical set of the line/arc pairs, loft them, make a circular array of these, and then go from there, but my guess is I'd end up with exactly the same thing the software does now. This contradicts my belief that "machines should work; people should think."

3. I've tried Meshmixer several times in the past and each time concluded that it did not do anything useful for me. I tried it again now by separating the 2 single twisted forms and merging them into Meshmixer. The result in Meshmixer had the same basic shape I originally came up with, but the top and bottom surfaces looked bad - presumably because there were coincident ones from each part. The Inspect function found no errors however. And when I exported the merged geometry as an STL I got only one of the twisted shapes - the other one just wasn't there.

Maybe I should try making spinners.

June 9, 2017

Birk Binnard Birk Binnard
Revered
609 posts

I tried the current version of Netfabb. I didn't know that Autodesk had taken it over. What a mess they made of it. The UI is bad - the various panels don't scroll or scale properly, can't be moved or separated, and are not at all intuitive. Plus it installs several other programs that are of no use.

I finally did figure out how to use it's Repair function. It did do something, but the results were wrong - it output just one of the 2 shells that comprise the part. So I deleted the whole thing.

June 10, 2017

Birk Binnard Birk Binnard
Revered
609 posts

I totally agree that "machines should work; people should think" and I do not know Rhino, but hear me out. Can you convert the shape into triangle mesh before rotation? I think union on triangle meshes is way simpler, than union on spline surfaces, maybe Rhino can do that.

June 10, 2017

psanyi psanyi
Exalted
775 posts

Thanks - that's a good suggestion I had not tried before. Grasshopper has a Mesh function that converts a Brep into a mesh, so I only had to add one component to implement your idea.

It failed miserably. The mesh of the untwisted geometry looked fine, but the twist function resulted on only one of the shaped being produced (even though I verified 2 meshes were input to it), and that one looked bad - all the filleted surfaces had jaggy edges. My guess is the Rotate function was coded for Breps and simply does not know how to handle meshes.

I don't recall if I mentioned this before, but I did try meshing each individually rotated piece, and then merging those, but the result was no different from just using Breps throughout.

My sense now is that intersecting shells is something that simply exceeds the capabilities of STL definitions, and what's needed is additional functionality in design software that eliminates the intersections before the STL file is created. Since the double-twisted geometry can be visualized properly I think this concept could be implemented, but I'm not sure if anyone is interested in actually doing this.

June 10, 2017

Birk Binnard Birk Binnard
Revered
609 posts

Sure, you are totally right. Although STL can represent intersecting shells and stuff, but what does that mean is left to the applications. Better to stick with simple shells, no duplications, no intersections.

June 10, 2017

psanyi psanyi
Exalted
775 posts

Sad but true. I won't even mention the pathological case I made about a year ago ; it was a double twist of a double twist. Looked cool on screen, but was impossible to slice.

June 10, 2017

Birk Binnard Birk Binnard
Revered
609 posts

Sorry for staying quiet for quite a time now, but not only am I minding the 7 cats of some neighbours this weekend - but one of them caught a mother mouse last night, so today was rather occupied by the baby mouse. Vet, trying to get it to eat, feeding the cats, ... Will try to find the time to try something tomorrow...

June 11, 2017

Kerrberos Kerrberos
Beginner
28 posts

@Kerrberos: I'm glad at least one of us knows what's important to focus on....

June 11, 2017

Bart ter Haar Bart ter Haar
Service partner
1401 posts

Cat wrangler?

Cat herder?

June 11, 2017

Birk Binnard Birk Binnard
Revered
609 posts

Cat herder has put yesterday to good use :-)

Let me explain what I meant by my suggestion to use mirroring:
Strange....Very Strange

Ooops, how did that manage to find its way here??

OK, so here goes:
Strange....Very Strange

It struck me that this part (picture generated with the help of Birk's stl) looks symmetrical along the yellow and the blue planes, so I first reverse-engineered the design (parametrically, of course, Birk!), starting with the single twist:
Strange....Very Strange

Cut it along the aforementioned planes, and you are left (if you do it right - I didn't to start with and spent some time trying to figure out where I'd gone wrong) with the greenish "primitive" with which we will be continuing - and the red load of rubbish:
Strange....Very Strange

Voila - the primitive in all its glory:
Strange....Very Strange
(Note that it contains the "interesting" section of the contour. Choose the planes differently and it is not nearly so intriguing :-(
The discerning reader might notice that the primitive doesn't have an corresponding segment of base plate - true, couldn't be bothered. Easy enough to include, but I was more concerned with the side walls.

Now we mirror along one of the planes:
Strange....Very Strange

Like such:
Strange....Very Strange

Then pattern the resulting solid 5x at 72° steps, and you are left with:

Strange....Very Strange

Which made use of neither booleans (well, more or less, at least no combining of intersecting surfaces) nor does it have the original's pockets. Alas, one might say, because where better to hide some secret provisions for dark times... Winter is coming!!

(And finally, this is how my final model (translucent) compares to the original (green):
Strange....Very Strange
Didn't quite hit it perfectly, but hopefully close enough (another hope dashed: "The original looks more elegant", I am told...)

I hope I have managed to make a little clearer what I wanted to say - that Rhino is accommodating in this respect - and that you haven't already given up all hope on this!




June 12, 2017

Kerrberos Kerrberos
Beginner
28 posts

That is a fascinating analysis Kerrberos - thanks. I do understand what you did, and you achieved a very elegant solution, but I have the following questions/comments:

The selection of your 2 cut planes is very effective, but they are guesses. How would one determine what the perfect plane definitions are? Everything I design is done completely in Grasshopper; I do not use Rhino at all. So far I've been able to do OK with that, but this situation is different. It seems to me the plane definitions would depend on the amount of twist, and the size of the polygon fillets, but how to relate these to obtain the proper cut plane defintions?

Also, it seems a bit counter-intuitive to me to first make the final shape, then cut it up, and then rebuild it using that cutout. Assuming that works, shouldn't there be a clever way to make just the cutout itself? Regrettably I don't seem to be that clever.

The method you propose is almost exactly like one I got more than a year ago from an architect who is also a highly skilled Grasshopper user. We had a short discussion on the Grasshopper forum, but he apparently realized i was operating in a different universe and never answered the questions I had.

Finally, as I noted above, your solution, elegant as it is, is really just a workaround for the problem of the STL generation not working the way it should - namely not handling the situation of intersecting shells properly. It seems to me this is where a fix is actually needed.

PS: what software did you use to make your diagrams?

June 12, 2017

Birk Binnard Birk Binnard
Revered
609 posts

Arrgh: Text all gone! Rant! Rave!! Just because I wanted to use a keyboard shortcut (ALT 0177) for ± without having the num pad switched on - went back a page and lost everything :-(

June 13, 2017

Kerrberos Kerrberos
Beginner
28 posts

Ok, so a shorter version of what I was just finishing, hmpf:

I work as a designer in aerospace and so have access to and experience with Catia V5, which I used for the design and pictures in my post above.

I often find that designing a part quick and dirty until it looks right, then going back and redoing the whole thing with acceptable methodology, is actually quicker and certainly more maintainable afterwards than fuming around for ages with something that will in many cases explode right in your face as soon as you try to change the tiniest bit...

In this case: it's not as counterintuitive and guess-worky as you thought. The base of the part has two sets of symmetry lines: through origin and middle of the straight segments and through origin and centre of the arcs (on the far side of the part, it having an uneven number of segments, one line will become the other and vice versa).
Since the top of the two twisted parts is rotated by exactly ± half a pitch the symmetry lines/planes of the base segment will likewise be symmetry lines/planes of the upper surface. As far as I can imagine it this concept should work for all numbers of segments. Unfortunately, in Catia I can parametrify the number of segments, but not the additional guide curves I need to make the twisted surface follow the "vase shape" that makes this design so attractive.
And: any twist that exceeds half a pitch will end up - if processed this way - with a "primitive" that itself needs booleans because it will overlap the one coming the other way.
Of course fixing the stls is the way things should actually develop, but in the meantime (and in aerospace the "meantime" is often open-ended) there are many things that you will either get done with a workaround or not at all...

June 13, 2017

Kerrberos Kerrberos
Beginner
28 posts

Catia - of course! That was going to be my guess.

Interestingly enough I started out in aerospace too. Loft Lines to be precise. (You'll be the only one here who knows what that means.) I got into software design early on, and in fact was one of 3 people that developed the first 3D CAD program in the US. Unfortunately, no one (including IBM) realized what we had at the time. Oh well.

Your description of how to determine the necessary planes make perfect sense. I think I can do that, and then figure out how to make the basic surface shape. Once this is in place the rest is easy.

Thanks again for your interest and help with this.

June 13, 2017

Birk Binnard Birk Binnard
Revered
609 posts

Well, i followed Kerbeross's recipe - it took me a while to figure out how best to do it using only Grasshopper components - but I got it to work. End result - no help. This is unfortunate for sure because it means now there seems to be no way for me to fix this issue. I regret taking up all this space on the CW server, but I'll do it anyway. Here's what I did, and what happened:

1. Starting with the double twisted shape we all know and love, I whacked off half of it, using the midpoint of one of the straight line segments as the whacking point:

Strange....Very Strange

2. From this I whacked off everything except a 36 degree slice:

Strange....Very Strange

3. I mirrored this slice to make it's opposite:

Strange....Very Strange

4. I joined these 2 together:

Strange....Very Strange

5. I used this to make a 5 piece circular array, thus recreating the original geoometry:

Strange....Very Strange

6. This had the nice result of making the ribbed bottom surface much more pleasing:

Strange....Very Strange

7. I exported this result as an STL file. CW messed up pretty badly slicing it.

Strange....Very Strange

Plic3r didn't do any better.

8. I ran the STL through 3D Builder. It messed up the bottom pretty badly but the slicing got better. Here is Plic3r's results:

Strange....Very Strange

For some reason this is worse than my original methodology, but even if it had been OK I would not have used it since the bottom was wacked.

9 -- etc. In Grasshopper I converted the results to a mesh, exported this from Rhino as an STL, and got pretty similar results. So I'm not bothering to show those screenshots. I tried merging the meshes prior to export, but Rhino would not do that. The only benefit I found from meshing first was the final STL File got much smaller - 3MB as opposed to around 30.

June 13, 2017

Birk Binnard Birk Binnard
Revered
609 posts

Try starting with the single twisted one - the outside surface will look the same after you are finished but the inside will be much cleaner and you will have your desired walk thickness everywhere without any unexpected bulges.

June 13, 2017

Kerrberos Kerrberos
Beginner
28 posts

Hmmm...interesting concept. I'll try that tomorrow. Should only take a couple of minutes.

June 13, 2017

Birk Binnard Birk Binnard
Revered
609 posts

Actually it took only a second. All I had to do was disable the A - B subtraction that produced the negative twist. When I did this the final image did not change at all - just as Kerrboros predicted. And, again as he predicted, the resulting STL file sliced OK.

Wowee - this is one of the coolest tricks I've come upon in all my 3D printing experience. Many thanks to Kerrboros for pointing out this clever approach. Now I'll have to come up with a blog page explaining the whole situation. I wonder how many people will be interested.

I should note that Craftware did have a problem slicing the new STL file: it messed up the first few layers, specifically by missing some of the bottom's ridges shown in step 6 above. I tried tweaking the ridge geometry a bit, but this didn't help. Plic3r sliced everything OK, so hopefully CW 1.15 will do the same.

I ran the new STL file through 3D Builder to see if that would fix the CW issue; it did not.

June 13, 2017

Birk Binnard Birk Binnard
Revered
609 posts

Doing the design and creating the pictures was certainly fun for me - glad it helped you :-)
Are you using "concentric" for top and bottom layers? Doing that gives me grey hair with many models - missing bits of layers dotted around everywhere and usually nothing helps except changing to parallel => blue fuzz. If anything, it's getting worse, even though I haven't changed anything!

June 13, 2017

Kerrberos Kerrberos
Beginner
28 posts

The blue fuzz bug has bugged me for a long time and I usually try both concentric and rectilinear parameters to see which one works better given the geometry involved. For this part I used concentric primarily because of the part's thin walls and overall shape.

June 13, 2017

Birk Binnard Birk Binnard
Revered
609 posts

Same here :-(
I would often like to use concentric and have to give up because it's full of holes. Exasperating!
=> => => => CW1.15 <= <= <= <=

Yes, I do know what loft lines are - but I doubt I'm the only one in this forum. We even have architects here, and after all most houses have a loft :-)
However, I don't get to use the "real ones" as often as I would like to because what I do at work mostly concerns conventional machining (not even sheet metal forming) and I hesitate to call the edges of e.g. a cube "loft line", even though they could be seen as such.

HOWEVER: with the advent of 3D printing in a productive environment, the imminence of which one reads in the newspapers every day, many of these limitations will topple and fall - and then those who have already gained some experience with their own desktop printers (a totally different technology from powder bed metal fusion with 1000W lasers, but even so...) are going to have a huuuge advantage. I can already sense it starting - having sliced something yourself and tried in vain to find ways of printing a part that will not need any supports makes you do your best to avoid repetition and so gives you a certain edge. And then at the latest all those ruined prints will finally have been worth it.

June 13, 2017

Kerrberos Kerrberos
Beginner
28 posts

When I was in the Loft Dept. we provided that code that made machine toolpaths for cutting out things like wing spars and fuselage bulkheads. Other people added more machining for holes, wiring harnesses, tubes, attachment fittings, etc. My sense is that the best benefit of 3D printing experience will be getting people able to think about and visualize objects in 3 dimensions. I've seen numerous Aha! moments when people suddenly get how to do this.

While I was out running today I thought of another totally different (and simpler) approach for solving the overlapping shell problem for at least the part in question here. If it works I'll post more about it tomorrow.

June 14, 2017

Birk Binnard Birk Binnard
Revered
609 posts

Well, my idea did not work. I thought that perhaps I could remove the parts of the reverse-twist shell from the final STL file by subtracting from it a solid part that had the shape of the inside of the final part. Grasshopper did the subtraction OK, and the result was a slightly smaller STL file, but the slicing results were the same as the original.

It is mysterious to me just where the "ghost" geometry is that Craftware sees but Plic3r does not.

June 14, 2017

Birk Binnard Birk Binnard
Revered
609 posts

Just for fun I've tried it with PrusaControl and it seemed OK, looked good on the screen. The fly in the ointment is that it works only with the Prusa I3, cannot change the printer dimensions, parameters.

June 18, 2017

psanyi psanyi
Exalted
775 posts
To start a discussion or reply to a post please Login or Create an account.