def extrudeWCurve(mode=0): 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 # - curve - name = VARS[3].get() names = name.split(';') curve = [] for v in names: v = v.lstrip() v = v.rstrip() sname = v.split('/', 1) bases = Internal.getNodesFromName1(CTK.t, sname[0]) if bases != []: nodes = Internal.getNodesFromType1(bases[0], 'Zone_t') for z in nodes: if z[0] == sname[1]: curve.append(z) if len(curve) == 0: CTK.TXT.insert('START', 'Curve is incorrect.\n') CTK.TXT.insert('START', 'Error: ', 'Error') return nzs = CPlot.getSelectedZones() if nzs == []: CTK.TXT.insert('START', 'Selection is empty.\n') CTK.TXT.insert('START', 'Error: ', 'Error') return CTK.saveTree() fail = False errors = [] for nz in nzs: nob = CTK.Nb[nz] + 1 noz = CTK.Nz[nz] z = CTK.t[2][nob][2][noz] try: if mode == 0: z = D.lineDrive(z, curve) else: z = D.orthoDrive(z, curve) CTK.replace(CTK.t, nob, noz, z) except Exception as e: fail = True errors += [0, str(e)] if not fail: CTK.TXT.insert('START', 'Mesh extruded with curve(s).\n') else: Panels.displayErrors(errors, header='Error: extrusion') CTK.TXT.insert('START', 'Extrusion fails for at least one zone.\n') CTK.TXT.insert('START', 'Warning: ', 'Warning') (CTK.Nb, CTK.Nz) = CPlot.updateCPlotNumbering(CTK.t) CTK.TKTREE.updateApp() CPlot.render()
# - orthoDrive (pyTree) - import Geom.PyTree as D import Converter.PyTree as C import KCore.test as test a = D.circle((0, 0, 0), 1.) c = D.polyline([(0., 1., 0.), (0., 1., 1.), (2., 1., 2.)]) d = D.spline(c, 3, N=100) o = D.orthoDrive(a, d, mode=0) test.testT(o, 1)