示例#1
0
"""
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))
示例#2
0
    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
示例#4
0
#!/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))
示例#5
0
    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)
示例#6
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)