Multiple fragments in a row fail
Calling the occ.fragment
function again with the same object / tool breaks the previous fragmenting in some cases:
import gmsh
gmsh.initialize()
occ = gmsh.model.occ
r0 = occ.add_rectangle(-1, 0, 0, 1, 2)
r1 = occ.add_rectangle(0, 0, 0, 1, 1)
r2 = occ.add_rectangle(0, 1, 0, 1, 1)
# does not work
occ.fragment([(2, r0)], [(2, r1)]) # this yields expected result, if the following two lines are commented out
occ.fragment([(2, r0)], [(2, r2)])
occ.fragment([(2, r1)], [(2, r2)])
# works
# occ.fragment([(2, r1)], [(2, r2)])
# occ.fragment([(2, r0)], [(2, r1)])
# occ.fragment([(2, r0)], [(2, r2)])
# works
# occ.fragment([(2, r0)], [(2, r1), (2, r2)])
# check if fragment worked correctly
occ.synchronize()
bnd_r0 = gmsh.model.getBoundary([(2, r0)], False, False, False)
bnd_r1 = gmsh.model.getBoundary([(2, r1)], False, False, False)
bnd_r2 = gmsh.model.getBoundary([(2, r2)], False, False, False)
print("interface r0/r1", [x for x in bnd_r0 if x in bnd_r1])
print("interface r0/r2", [x for x in bnd_r0 if x in bnd_r2])
print("interface r1/r2", [x for x in bnd_r1 if x in bnd_r2])
I'm using gmsh v.4.10.5 on Windows 10, Python 3.8.5.
Edited by Arved Wintzer