5
$\begingroup$

I imported some SVG objects, extracted them and converted them to a mesh. When I tried to perform a boolean difference operation between them, I saw the error message "Cannot execute boolean operation". When I looked in the console, I saw these errors:

uncontained hole loop does not share vertices with any face loop!
CSG failed, exception /build/buildd/blender-2.72.b+dfsg0/extern/carve/lib/triangulator.cpp:898  "didn't manage to link up hole!"
CSG failed, exception /build/buildd/blender-2.72.b+dfsg0/extern/carve/lib/triangulator.cpp:898  "didn't manage to link up hole!"
CSG failed, exception /build/buildd/blender-2.72.b+dfsg0/extern/carve/include/carve/csg_triangulator.hpp:330  unpaired.find((*i).first.first) == unpaired.end()

Here is a link to the file that I'm trying to use. I'm trying to subtract the 'QR' object from the 'BG' object. Is there something wrong with the meshes resulting from the import/extract step? What's going on here?

$\endgroup$
2
  • $\begingroup$ I'm about to look at the mesh, I suspect it's geometry weirdness like nGons or very large polys being compared against very small polys. $\endgroup$ Commented May 4, 2015 at 5:24
  • $\begingroup$ I used Remove Doubles. I also removed all the interior faces. I also diced up the large block into smaller segments and I still cannot get it to work. Maybe the mesh has too many non-manifold components to be useable with the boolean modifier. Hopefully, someone who knows more about this can help. :) I even tried separating some of the pieces so it could be done in stages and that failed as well. $\endgroup$ Commented May 4, 2015 at 6:03

2 Answers 2

6
$\begingroup$

You could try and deal with this in another way.

I selected an upwards facing face and used shift+g->normals to select all the other faces that are facing upwards and deleted them.

Now if you select edges and press f, the faces can be filled in quickly enough.

By doing this, you can build up the large box without having to use the boolean modifier.

enter image description here

$\endgroup$
4
$\begingroup$

I suspect this is caused by several things.

  • The original QR geometry you provided is all separate triangles, this kind of mesh isn't suitable for a boolean because each vertex is only used by one face, and not shared by all faces that have a vertex at that coordinate. The image below also shows there are interior edges and faces enter image description here

A few steps to improve the geometry before extruding to thickness are:

  • remove doubles (removes about 800 duplicated verts)
  • limited dissolve (joins adjacent faces, islands)
  • then extrude upwards
  • also remove doubles on the BG block

Manifold geometry

enter image description here

But the final problem is geometry like this: These islands when extruded are the basis of invalid geometry (though blender Blender can represent it because it isn't thinking about what your intentions are), when you try to operate on it with Boolean CSG it becomes an undefined problem.

More elaborately explained here What is non-manifold geometry?

This is much like if you tried to cut out a silhouette with a hole, the hole will drop out unless it is attached to something. You best option is to have small joins on touching squares:

enter image description here

A nice piece about this is seen in the work of Golan Levin: http://www.flong.com/projects/qr-codes-for-digital-nomads/ . Of course stencilling is different, but it has similar subtle things to think about.

The negative geometry becomes this, you might find it acceptable. enter image description here

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .