def intersection(): if CTK.t == []: return if CTK.__MAINTREE__ <= 0: CTK.TXT.insert('START', 'Fail on a temporary tree.\n') CTK.TXT.insert('START', 'Error: ', 'Error') return nzs = CPlot.getSelectedZones() if len(nzs) < 2: CTK.TXT.insert('START', 'Please, select two or more surfaces.\n') CTK.TXT.insert('START', 'Error: ', 'Error') return tol = CTK.varsFromWidget(VARS[0].get(), type=1) if len(tol) != 1: CTK.TXT.insert('START', 'Tolerance is incorrect.\n') CTK.TXT.insert('START', 'Error: ', 'Error') return tol = tol[0] CTK.saveTree() zlist = [] deletedZoneNames = [] for nz in nzs: nob = CTK.Nb[nz] + 1 noz = CTK.Nz[nz] deletedZoneNames.append(CTK.t[2][nob][0] + Internal.SEP1 + CTK.t[2][nob][2][noz][0]) z = CTK.t[2][nob][2][noz] zlist.append(z) try: j = XOR.booleanIntersection(zlist[0], zlist[1], tol=tol) except Exception as e: Panels.displayErrors([0, str(e)], header='Error: intersection') CTK.TXT.insert('START', 'Intersection failed.\n') return for nz in range(len(zlist) - 2): try: j = XOR.booleanIntersection(j, zlist[nz + 2], tol=tol) except Exception as e: Panels.displayErrors([0, str(e)], header='Error: intersection') CTK.TXT.insert('START', 'Intersection failed.\n') return CTK.t = CPlot.deleteSelection(CTK.t, CTK.Nb, CTK.Nz, nzs) CPlot.delete(deletedZoneNames) CTK.add(CTK.t, CTK.Nb[0] + 1, -1, j) CTK.TXT.insert('START', 'Intersection performed.\n') #C._fillMissingVariables(CTK.t) (CTK.Nb, CTK.Nz) = CPlot.updateCPlotNumbering(CTK.t) CTK.TKTREE.updateApp() CPlot.render()
# - boolean intersection (pyTree) - # BAR import Intersector.PyTree as XOR import Generator.PyTree as G import Converter.PyTree as C import Geom.PyTree as D import KCore.test as test c1 = D.circle((0, 0, 0), 1, N=100) c2 = D.circle((0.2, 0, 0), 1, N=50) c1 = C.convertArray2Tetra(c1) c1 = G.close(c1) c2 = C.convertArray2Tetra(c2) c2 = G.close(c2) x = XOR.booleanIntersection(c1, c2, tol=0.) test.testT(x)
# - boolean intersection (pyTree) - import Intersector.PyTree as XOR import Generator.PyTree as G import Converter.PyTree as C import Geom.PyTree as D import KCore.test as test s1 = D.sphere( (0,0,0), 1, N=20 ) s2 = D.sphere( (0.,1.,0.), 1, N=30 ) s1 = C.convertArray2Tetra(s1); s1 = G.close(s1) s2 = C.convertArray2Tetra(s2); s2 = G.close(s2) x = XOR.booleanIntersection(s1, s2, tol=0.) test.testT(x, 1)
# - boolean intersection (PyTree) - import Intersector.PyTree as XOR import Converter.PyTree as C M1 = C.convertFile2PyTree('boolNG_M1.tp') M1 = C.convertArray2NGon(M1) M2 = C.convertFile2PyTree('boolNG_M2.tp') M2 = C.convertArray2NGon(M2) tol = 1.e-12 x = XOR.booleanIntersection(M1, M2, tol, preserve_right=1, solid_right=1) t = C.newPyTree(['Base', 2, x]) C.convertPyTree2File(t, 'boolNGinter11.cgns') x = XOR.booleanIntersection(M1, M2, tol, preserve_right=0, solid_right=1) C.convertPyTree2File(x, 'boolNGinter01.cgns') x = XOR.booleanIntersection(M1, M2, tol, preserve_right=1, solid_right=0) C.convertPyTree2File(x, 'boolNGinter10.cgns') x = XOR.booleanIntersection(M1, M2, tol, preserve_right=0, solid_right=0) C.convertPyTree2File(x, 'boolNGinter00.cgns')