""" Generate a list of N colors starting from color1 to color2 in RGB or HSV space """ from __future__ import print_function print(__doc__) from vtkplotter.colors import makePalette, getColorName cols = makePalette("red", "blue", 10, hsv=True) for c in cols: print("rgb =", c, " closest color is:", getColorName(c))
def printvtkactor(actor, tab=""): if not actor.GetPickable(): return mapper = actor.GetMapper() if hasattr(actor, "polydata"): poly = actor.polydata() else: poly = mapper.GetInput() pro = actor.GetProperty() pos = actor.GetPosition() bnds = actor.GetBounds() col = pro.GetColor() colr = precision(col[0], 3) colg = precision(col[1], 3) colb = precision(col[2], 3) alpha = pro.GetOpacity() npt = poly.GetNumberOfPoints() ncl = poly.GetNumberOfCells() npl = poly.GetNumberOfPolys() print(tab, end="") colors.printc("vtkActor", c="g", bold=1, invert=1, dim=1, end=" ") if hasattr(actor, "_legend") and actor._legend: colors.printc("legend: ", c="g", bold=1, end="") colors.printc(actor._legend, c="g", bold=0) else: print() if hasattr(actor, "filename") and actor.filename: colors.printc(tab + " file: ", c="g", bold=1, end="") colors.printc(actor.filename, c="g", bold=0) if not actor.GetMapper().GetScalarVisibility(): colors.printc(tab + " color: ", c="g", bold=1, end="") #colors.printc("defined by point or cell data", c="g", bold=0) #else: colors.printc(colors.getColorName(col) + ', rgb=(' + colr + ', ' + colg + ', ' + colb + '), alpha=' + str(alpha), c='g', bold=0) if actor.GetBackfaceProperty(): bcol = actor.GetBackfaceProperty().GetDiffuseColor() bcolr = precision(bcol[0], 3) bcolg = precision(bcol[1], 3) bcolb = precision(bcol[2], 3) colors.printc(tab + ' back color: ', c='g', bold=1, end='') colors.printc(colors.getColorName(bcol) + ', rgb=(' + bcolr + ', ' + bcolg + ', ' + bcolb + ')', c='g', bold=0) colors.printc(tab + " points: ", c="g", bold=1, end="") colors.printc(npt, c="g", bold=0) colors.printc(tab + " cells: ", c="g", bold=1, end="") colors.printc(ncl, c="g", bold=0) colors.printc(tab + " polygons: ", c="g", bold=1, end="") colors.printc(npl, c="g", bold=0) colors.printc(tab + " position: ", c="g", bold=1, end="") colors.printc(pos, c="g", bold=0) if hasattr(actor, "polydata") and actor.N(): colors.printc(tab + " c. of mass: ", c="g", bold=1, end="") cm = tuple(actor.centerOfMass()) colors.printc(precision(cm, 3), c="g", bold=0) colors.printc(tab + " ave. size: ", c="g", bold=1, end="") colors.printc(precision(actor.averageSize(), 6), c="g", bold=0) colors.printc(tab + " diag. size: ", c="g", bold=1, end="") colors.printc(precision(actor.diagonalSize(), 6), c="g", bold=0) _area = actor.area() if _area: colors.printc(tab + " area: ", c="g", bold=1, end="") colors.printc(precision(_area, 6), c="g", bold=0) _vol = actor.volume() if _vol: colors.printc(tab + " volume: ", c="g", bold=1, end="") colors.printc(precision(_vol, 6), c="g", bold=0) colors.printc(tab + " bounds: ", c="g", bold=1, end="") bx1, bx2 = precision(bnds[0], 3), precision(bnds[1], 3) colors.printc("x=(" + bx1 + ", " + bx2 + ")", c="g", bold=0, end="") by1, by2 = precision(bnds[2], 3), precision(bnds[3], 3) colors.printc(" y=(" + by1 + ", " + by2 + ")", c="g", bold=0, end="") bz1, bz2 = precision(bnds[4], 3), precision(bnds[5], 3) colors.printc(" z=(" + bz1 + ", " + bz2 + ")", c="g", bold=0) arrtypes = dict() arrtypes[vtk.VTK_UNSIGNED_CHAR] = "UNSIGNED_CHAR" arrtypes[vtk.VTK_SIGNED_CHAR] = "SIGNED_CHAR" arrtypes[vtk.VTK_UNSIGNED_INT] = "UNSIGNED_INT" arrtypes[vtk.VTK_INT] = "INT" arrtypes[vtk.VTK_CHAR] = "CHAR" arrtypes[vtk.VTK_SHORT] = "SHORT" arrtypes[vtk.VTK_LONG] = "LONG" arrtypes[vtk.VTK_ID_TYPE] = "ID" arrtypes[vtk.VTK_FLOAT] = "FLOAT" arrtypes[vtk.VTK_DOUBLE] = "DOUBLE" ptdata = poly.GetPointData() cldata = poly.GetCellData() colors.printc(tab + " scalar mode:", c="g", bold=1, end=" ") colors.printc(mapper.GetScalarModeAsString(), ' coloring =', mapper.GetColorModeAsString(), c="g", bold=0) if ptdata.GetNumberOfArrays() + cldata.GetNumberOfArrays(): colors.printc(tab + " active scalars: ", c="g", bold=1, end="") if ptdata.GetScalars(): colors.printc(ptdata.GetScalars().GetName(), "(point data) ", c="g", bold=0, end="") if cldata.GetScalars(): colors.printc(cldata.GetScalars().GetName(), "(cell data)", c="g", bold=0, end="") print() for i in range(ptdata.GetNumberOfArrays()): name = ptdata.GetArrayName(i) if name and ptdata.GetArray(i): colors.printc(tab + " point data: ", c="g", bold=1, end="") try: tt = arrtypes[ptdata.GetArray(i).GetDataType()] except: tt = str(ptdata.GetArray(i).GetDataType()) ncomp = str(ptdata.GetArray(i).GetNumberOfComponents()) colors.printc("name=" + name, "(" + ncomp + " " + tt + "),", c="g", bold=0, end="") rng = ptdata.GetArray(i).GetRange() colors.printc(" range=(" + precision(rng[0], 4) + ',' + precision(rng[1], 4) + ')', c="g", bold=0) for i in range(cldata.GetNumberOfArrays()): name = cldata.GetArrayName(i) if name and cldata.GetArray(i): colors.printc(tab + " cell data: ", c="g", bold=1, end="") try: tt = arrtypes[cldata.GetArray(i).GetDataType()] except: tt = str(cldata.GetArray(i).GetDataType()) ncomp = str(cldata.GetArray(i).GetNumberOfComponents()) colors.printc("name=" + name, "(" + ncomp + " " + tt + "),", c="g", bold=0, end="") rng = cldata.GetArray(i).GetRange() colors.printc(" range=(" + precision(rng[0], 4) + ',' + precision(rng[1], 4) + ')', c="g", bold=0)
def mouseleft(vp, obj, event): x, y = vp.interactor.GetEventPosition() #print ('mouse at',x,y) vp.renderer = obj.FindPokedRenderer(x, y) vp.renderWin = obj.GetRenderWindow() clickedr = vp.renderers.index(vp.renderer) picker = vtk.vtkPropPicker() picker.PickProp(x, y, vp.renderer) clickedActor = picker.GetActor() clickedActorIsAssembly = False if not clickedActor: clickedActor = picker.GetAssembly() clickedActorIsAssembly = True vp.picked3d = picker.GetPickPosition() vp.justremoved = None if vp.verbose: if len(vp.renderers) > 1 or clickedr > 0 and vp.clickedr != clickedr: print('Current Renderer:', clickedr, end='') print(', nr. of actors =', len(vp.getActors())) leg, oldleg = '', '' if hasattr(clickedActor, 'legend'): leg = clickedActor.legend if hasattr(vp.clickedActor, 'legend'): oldleg = vp.clickedActor.legend #detect if clickin the same obj if leg and isinstance(leg, str) and len(leg) and oldleg != leg: try: indx = str(vp.getActors().index(clickedActor)) except ValueError: indx = None try: indx = str(vp.actors.index(clickedActor)) except ValueError: indx = None try: rgb = list(clickedActor.GetProperty().GetColor()) cn = colors.getColorName(rgb) if cn == 'white': cn = '' else: cn = '(' + cn + '),' except: cn = '' if indx and isinstance(clickedActor, vtk.vtkAssembly): colors.printc( ('-> assembly', indx + ':', clickedActor.legend, cn), end=' ') elif indx: colors.printc(('-> actor', indx + ':', leg, cn), end=' ') if not clickedActorIsAssembly: n = clickedActor.GetMapper().GetInput().GetNumberOfPoints() else: n = vp.getActors(clickedActor)[0].GetMapper().GetInput( ).GetNumberOfPoints() colors.printc('N=' + str(n), end='') px, py, pz = vp.picked3d px, py, pz = str(round(px, 1)), str(round(py, 1)), str(round(pz, 1)) colors.printc(', p=(' + px + ',' + py + ',' + pz + ')') vp.clickedActor = clickedActor vp.clickedRenderer = clickedr
#!/usr/bin/env python # # Generate a list of N colors starting from color1 to color2 in RGB or HSV space from __future__ import print_function from vtkplotter.colors import makePalette, getColorName cols = makePalette('red', 'blue', 10, hsv=True) for c in cols: print('rgb =', c, ' closest color is:', getColorName(c))
def printvtkactor(actor, tab=''): poly = actor.polydata() pro = actor.GetProperty() pos = actor.GetPosition() bnds = actor.GetBounds() col = pro.GetColor() colr = to_precision(col[0], 3) colg = to_precision(col[1], 3) colb = to_precision(col[2], 3) alpha = pro.GetOpacity() npt = poly.GetNumberOfPoints() ncl = poly.GetNumberOfCells() print(tab, end='') colors.printc('vtkActor', c='g', bold=1, invert=1, dim=1, end=' ') if hasattr(actor, 'legend') and actor.legend: colors.printc('legend: ', c='g', bold=1, end='') colors.printc(actor.legend, c='g', bold=0) else: print() if hasattr(actor, 'filename'): colors.printc(tab+' file: ', c='g', bold=1, end='') colors.printc(actor.filename, c='g', bold=0) colors.printc(tab+' color: ', c='g', bold=1, end='') if actor.GetMapper().GetScalarVisibility(): colors.printc('defined by point or cell data', c='g', bold=0) else: colors.printc(colors.getColorName(col) + ', rgb=('+colr+', ' + colg+', '+colb+'), alpha='+str(alpha), c='g', bold=0) if actor.GetBackfaceProperty(): bcol = actor.GetBackfaceProperty().GetDiffuseColor() bcolr = to_precision(bcol[0], 3) bcolg = to_precision(bcol[1], 3) bcolb = to_precision(bcol[2], 3) colors.printc(tab+' back color: ', c='g', bold=1, end='') colors.printc(colors.getColorName(bcol) + ', rgb=('+bcolr+', ' + bcolg+', ' + bcolb+')', c='g', bold=0) colors.printc(tab+' points: ', c='g', bold=1, end='') colors.printc(npt, c='g', bold=0) colors.printc(tab+' cells: ', c='g', bold=1, end='') colors.printc(ncl, c='g', bold=0) colors.printc(tab+' position: ', c='g', bold=1, end='') colors.printc(pos, c='g', bold=0) colors.printc(tab+' c. of mass: ', c='g', bold=1, end='') colors.printc(actor.centerOfMass(), c='g', bold=0) colors.printc(tab+' ave. size: ', c='g', bold=1, end='') colors.printc(to_precision(actor.averageSize(), 4), c='g', bold=0) colors.printc(tab+' diag. size: ', c='g', bold=1, end='') colors.printc(actor.diagonalSize(), c='g', bold=0) #colors.printc(' clicked point:', obj.picked3d, bold=0, c='c') colors.printc(tab+' bounds: ', c='g', bold=1, end='') bx1, bx2 = to_precision(bnds[0], 3), to_precision(bnds[1], 3) colors.printc('x=('+bx1+', '+bx2+')', c='g', bold=0, end='') by1, by2 = to_precision(bnds[2], 3), to_precision(bnds[3], 3) colors.printc(' y=('+by1+', '+by2+')', c='g', bold=0, end='') bz1, bz2 = to_precision(bnds[4], 3), to_precision(bnds[5], 3) colors.printc(' z=('+bz1+', '+bz2+')', c='g', bold=0) colors.printc(tab+' area: ', c='g', bold=1, end='') colors.printc(to_precision(actor.area(), 8), c='g', bold=0) colors.printc(tab+' volume: ', c='g', bold=1, end='') colors.printc(to_precision(actor.volume(), 8), c='g', bold=0) arrtypes = dict() arrtypes[vtk.VTK_UNSIGNED_CHAR] = 'VTK_UNSIGNED_CHAR' arrtypes[vtk.VTK_UNSIGNED_INT] = 'VTK_UNSIGNED_INT' arrtypes[vtk.VTK_FLOAT] = 'VTK_FLOAT' arrtypes[vtk.VTK_DOUBLE] = 'VTK_DOUBLE' if poly.GetPointData(): ptdata = poly.GetPointData() for i in range(ptdata.GetNumberOfArrays()): name = ptdata.GetArrayName(i) if name: colors.printc(tab+' point data: ', c='g', bold=1, end='') try: tt = arrtypes[ptdata.GetArray(i).GetDataType()] colors.printc('name='+name, 'type='+tt, c='g', bold=0) except: tt = ptdata.GetArray(i).GetDataType() colors.printc('name='+name, 'type=', tt, c='g', bold=0) if poly.GetCellData(): cldata = poly.GetCellData() for i in range(cldata.GetNumberOfArrays()): name = cldata.GetArrayName(i) if name: colors.printc(tab+' cell data: ', c='g', bold=1, end='') try: tt = arrtypes[cldata.GetArray(i).GetDataType()] colors.printc('name='+name, 'type='+tt, c='g', bold=0) except: tt = cldata.GetArray(i).GetDataType() colors.printc('name='+name, 'type=', tt, c='g', bold=0)
def printvtkactor(actor, tab=""): if not actor.GetPickable(): return if hasattr(actor, "polydata"): poly = actor.polydata() else: poly = actor.GetMapper().GetInput() pro = actor.GetProperty() pos = actor.GetPosition() bnds = actor.GetBounds() col = pro.GetColor() colr = precision(col[0], 3) colg = precision(col[1], 3) colb = precision(col[2], 3) alpha = pro.GetOpacity() npt = poly.GetNumberOfPoints() ncl = poly.GetNumberOfCells() print(tab, end="") colors.printc("vtkActor", c="g", bold=1, invert=1, dim=1, end=" ") if hasattr(actor, "_legend") and actor._legend: colors.printc("legend: ", c="g", bold=1, end="") colors.printc(actor._legend, c="g", bold=0) else: print() if hasattr(actor, "filename") and actor.filename: colors.printc(tab + " file: ", c="g", bold=1, end="") colors.printc(actor.filename, c="g", bold=0) colors.printc(tab + " color: ", c="g", bold=1, end="") if actor.GetMapper().GetScalarVisibility(): colors.printc("defined by point or cell data", c="g", bold=0) else: colors.printc(colors.getColorName(col) + ', rgb=(' + colr + ', ' + colg + ', ' + colb + '), alpha=' + str(alpha), c='g', bold=0) if actor.GetBackfaceProperty(): bcol = actor.GetBackfaceProperty().GetDiffuseColor() bcolr = precision(bcol[0], 3) bcolg = precision(bcol[1], 3) bcolb = precision(bcol[2], 3) colors.printc(tab + ' back color: ', c='g', bold=1, end='') colors.printc(colors.getColorName(bcol) + ', rgb=(' + bcolr + ', ' + bcolg + ', ' + bcolb + ')', c='g', bold=0) colors.printc(tab + " points: ", c="g", bold=1, end="") colors.printc(npt, c="g", bold=0) colors.printc(tab + " cells: ", c="g", bold=1, end="") colors.printc(ncl, c="g", bold=0) colors.printc(tab + " position: ", c="g", bold=1, end="") colors.printc(pos, c="g", bold=0) if hasattr(actor, "polydata"): colors.printc(tab + " c. of mass: ", c="g", bold=1, end="") colors.printc(actor.centerOfMass(), c="g", bold=0) colors.printc(tab + " ave. size: ", c="g", bold=1, end="") colors.printc(precision(actor.averageSize(), 4), c="g", bold=0) colors.printc(tab + " diag. size: ", c="g", bold=1, end="") colors.printc(actor.diagonalSize(), c="g", bold=0) colors.printc(tab + " area: ", c="g", bold=1, end="") colors.printc(precision(actor.area(), 8), c="g", bold=0) colors.printc(tab + " volume: ", c="g", bold=1, end="") colors.printc(precision(actor.volume(), 8), c="g", bold=0) colors.printc(tab + " bounds: ", c="g", bold=1, end="") bx1, bx2 = precision(bnds[0], 3), precision(bnds[1], 3) colors.printc("x=(" + bx1 + ", " + bx2 + ")", c="g", bold=0, end="") by1, by2 = precision(bnds[2], 3), precision(bnds[3], 3) colors.printc(" y=(" + by1 + ", " + by2 + ")", c="g", bold=0, end="") bz1, bz2 = precision(bnds[4], 3), precision(bnds[5], 3) colors.printc(" z=(" + bz1 + ", " + bz2 + ")", c="g", bold=0) arrtypes = dict() arrtypes[vtk.VTK_UNSIGNED_CHAR] = "UNSIGNED_CHAR" arrtypes[vtk.VTK_UNSIGNED_INT] = "UNSIGNED_INT" arrtypes[vtk.VTK_FLOAT] = "FLOAT" arrtypes[vtk.VTK_DOUBLE] = "DOUBLE" if poly.GetPointData(): ptdata = poly.GetPointData() for i in range(ptdata.GetNumberOfArrays()): name = ptdata.GetArrayName(i) if name: colors.printc(tab + " point data: ", c="g", bold=1, end="") try: tt = arrtypes[ptdata.GetArray(i).GetDataType()] except: tt = ptdata.GetArray(i).GetDataType() colors.printc("name=" + name, "type=" + tt, c="g", bold=0, end="") colors.printc(" range:", ptdata.GetArray(i).GetRange(), c="g", bold=0) if poly.GetCellData(): cldata = poly.GetCellData() for i in range(cldata.GetNumberOfArrays()): name = cldata.GetArrayName(i) if name: colors.printc(tab + " cell data: ", c="g", bold=1, end="") try: tt = arrtypes[cldata.GetArray(i).GetDataType()] except: tt = cldata.GetArray(i).GetDataType() colors.printc("name=" + name, "type=" + tt, c="g", bold=0, end="") colors.printc(" range:", cldata.GetArray(i).GetRange(), c="g", bold=0)