Changeset 6405 for trunk


Ignore:
Timestamp:
Jun 21, 2016, 4:27:45 PM (8 years ago)
Author:
ldelgass
Message:

Work on coloring molecule (vtk) by scalar field. Parse fields in VTK file data,
initial style settings (not complete yet).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gui/scripts/vtkviewer.tcl

    r6361 r6405  
    134134    private variable _click;            # info used for rotate operations
    135135    private variable _limits;           # autoscale min/max for all axes
     136    private variable _fieldlimits;      # maps dataobj-comp to field limits
     137    private variable _fieldComponents;  # maps dataobj-comp-fname to number of
     138                                        # components
    136139    private variable _view;             # view params for 3D view
    137140    private variable _settings
     
    241244    set _arcball [blt::arcball create 100 100]
    242245    $_arcball quaternion [ViewToQuaternion]
    243 
    244     set _limits(zmin) 0.0
    245     set _limits(zmax) 1.0
    246246
    247247    array set _axis [subst {
     
    263263    }]
    264264    array set _settings [subst {
    265         glyphs-edges            0
    266         glyphs-lighting         1
    267         glyphs-opacity          100
    268         glyphs-outline          0
    269         glyphs-palette          BCGYR
    270         glyphs-visible          1
    271         glyphs-wireframe        0
    272         legend                  1
    273         molecule-atoms-visible  1
    274         molecule-atomscale      0.3
    275         molecule-bonds-visible  1
    276         molecule-bondscale      0.075
    277         molecule-bondstyle      "cylinder"
    278         molecule-edges          0
    279         molecule-labels         0
    280         molecule-lighting       1
    281         molecule-opacity        100
    282         molecule-outline        0
    283         molecule-palette        elementDefault
    284         molecule-quality        1.0
    285         molecule-representation "Ball and Stick"
    286         molecule-rscale         "covalent"
    287         molecule-visible        1
    288         molecule-wireframe      0
    289         polydata-edges          0
    290         polydata-lighting       1
    291         polydata-opacity        100
    292         polydata-outline        0
    293         polydata-palette        BCGYR
    294         polydata-visible        1
    295         polydata-wireframe      0
     265        glyphs-edges               0
     266        glyphs-lighting            1
     267        glyphs-opacity             100
     268        glyphs-outline             0
     269        glyphs-palette             BCGYR
     270        glyphs-visible             1
     271        glyphs-wireframe           0
     272        legend                     1
     273        molecule-atoms-visible     1
     274        molecule-atomscale         0.3
     275        molecule-bonds-visible     1
     276        molecule-bondscale         0.075
     277        molecule-bondstyle         "cylinder"
     278        molecule-colorfield        "element"
     279        molecule-colormode         "by_elements"
     280        molecule-edges             0
     281        molecule-labels            0
     282        molecule-lighting          1
     283        molecule-opacity           100
     284        molecule-outline           0
     285        molecule-palette           elementDefault
     286        molecule-quality           1.0
     287        molecule-representation    "Ball and Stick"
     288        molecule-rscale            "covalent"
     289        molecule-visible           1
     290        molecule-wireframe         0
     291        polydata-edges             0
     292        polydata-lighting          1
     293        polydata-opacity           100
     294        polydata-outline           0
     295        polydata-palette           BCGYR
     296        polydata-visible           1
     297        polydata-wireframe         0
    296298    }]
    297299    itk_component add view {
     
    760762        if { ![$itk_component(main) exists "Glyphs Settings"] } {
    761763            if { [catch { BuildGlyphsTab } errs ]  != 0 } {
    762                 puts stderr "errs=$errs"
     764                global errorInfo
     765                puts stderr "errs=$errs\nerrorInfo=$errorInfo"
    763766            }
    764767        }
     
    767770        if { ![$itk_component(main) exists "Mesh Settings"] } {
    768771            if { [catch { BuildPolydataTab } errs ]  != 0 } {
    769                 puts stderr "errs=$errs"
     772                global errorInfo
     773                puts stderr "errs=$errs\nerrorInfo=$errorInfo"
    770774            }
    771775        }
     
    10311035    }
    10321036
    1033     set _limits(zmin) ""
    1034     set _limits(zmax) ""
    10351037    set _first ""
    10361038    SendCmd "dataset visible 0"
    10371039    set count 0
     1040    eval scale $_dlist
    10381041    foreach dataobj [get -objects] {
    10391042        if { [info exists _obj2ovride($dataobj-raise)] &&  $_first == "" } {
     
    15781581                    ChangeColormap $dataobj $comp $palette
    15791582                    if { $palette == "elementDefault" } {
    1580                         SendCmd "molecule colormode by_elements element $dataset"
     1583                        SendCmd [list molecule colormode by_elements element $dataset]
    15811584                    } else {
    15821585                        # FIXME: Set the chosen scalar field name here
    1583                         SendCmd "molecule colormode scalar {} $dataset"
     1586                        set _settings(molecule-colormode) scalar
     1587                        set _settings(molecule-colorfield) ""
     1588                        SendCmd [list molecule colormode $_settings(molecule-colormode) $_settings(molecule-colorfield) $dataset]
    15841589                    }
    15851590                }
     
    18701875
    18711876itcl::body Rappture::VtkViewer::limits { dataobj } {
    1872     foreach comp [$dataobj components] {
    1873         set tag $dataobj-$comp
     1877    foreach cname [$dataobj components] {
     1878        set tag $dataobj-$cname
    18741879        if { ![info exists _limits($tag)] } {
    1875             set data [$dataobj data $comp]
     1880            set data [$dataobj data $cname]
    18761881            if { $data == "" } {
    18771882                continue
     
    18841889            set reader [vtkDataSetReader $tag-xvtkDataSetReader]
    18851890            $reader SetFileName $tmpfile
    1886 set debug 0
    1887             if {$debug} {
    1888                 # Only needed for debug output below
    1889                 $reader ReadAllNormalsOn
    1890                 $reader ReadAllTCoordsOn
    1891                 $reader ReadAllScalarsOn
    1892                 $reader ReadAllColorScalarsOn
    1893                 $reader ReadAllVectorsOn
    1894                 $reader ReadAllTensorsOn
    1895                 $reader ReadAllFieldsOn
    1896             }
     1891            $reader ReadAllNormalsOn
     1892            $reader ReadAllTCoordsOn
     1893            $reader ReadAllScalarsOn
     1894            $reader ReadAllColorScalarsOn
     1895            $reader ReadAllVectorsOn
     1896            $reader ReadAllTensorsOn
     1897            $reader ReadAllFieldsOn
    18971898            $reader Update
    18981899            file delete $tmpfile
    1899             set output [$reader GetOutput]
    1900             if { $output == "" } {
     1900            set dataset [$reader GetOutput]
     1901            if { $dataset == "" } {
    19011902                # Invalid VTK file -- loader failed to parse
    19021903                continue
    19031904            }
    1904             set _limits($tag) [$output GetBounds]
    1905             if {$debug} {
    1906                 puts stderr "\#scalars=[$reader GetNumberOfScalarsInFile]"
    1907                 puts stderr "\#vectors=[$reader GetNumberOfVectorsInFile]"
    1908                 puts stderr "\#tensors=[$reader GetNumberOfTensorsInFile]"
    1909                 puts stderr "\#normals=[$reader GetNumberOfNormalsInFile]"
    1910                 puts stderr "\#tcoords=[$reader GetNumberOfTCoordsInFile]"
    1911                 puts stderr "\#fielddata=[$reader GetNumberOfFieldDataInFile]"
    1912                 puts stderr "fielddataname=[$reader GetFieldDataNameInFile 0]"
    1913                 set pointData [$output GetPointData]
    1914                 if { $pointData != ""} {
    1915                     puts stderr "point \#arrays=[$pointData GetNumberOfArrays]"
    1916                     puts stderr "point \#components=[$pointData GetNumberOfComponents]"
    1917                     puts stderr "point \#tuples=[$pointData GetNumberOfTuples]"
    1918                     puts stderr "point scalars=[$pointData GetScalars]"
    1919                     puts stderr "point vectors=[$pointData GetVectors]"
    1920                 }
    1921                 set cellData [$output GetCellData]
    1922                 if { $cellData != ""} {
    1923                     puts stderr "cell \#arrays=[$cellData GetNumberOfArrays]"
    1924                     puts stderr "cell \#components=[$cellData GetNumberOfComponents]"
    1925                     puts stderr "cell \#tuples=[$cellData GetNumberOfTuples]"
    1926                     puts stderr "cell scalars=[$cellData GetScalars]"
    1927                     puts stderr "cell vectors=[$cellData GetVectors]"
    1928                 }
    1929                 set fieldData [$output GetFieldData]
    1930                 if { $fieldData != ""} {
    1931                     puts stderr "field \#arrays=[$fieldData GetNumberOfArrays]"
    1932                     puts stderr "field \#components=[$fieldData GetNumberOfComponents]"
    1933                     puts stderr "field \#tuples=[$fieldData GetNumberOfTuples]"
    1934                 }
    1935             }
    1936             rename $output ""
     1905            set _limits($tag) [$dataset GetBounds]
     1906            set dataAttrs [$dataset GetPointData]
     1907            if { $dataAttrs != ""} {
     1908                set numArrays [$dataAttrs GetNumberOfArrays]
     1909                for {set i 0} {$i < $numArrays} {incr i} {
     1910                    set array [$dataAttrs GetArray $i]
     1911                    set fname [$dataAttrs GetArrayName $i]
     1912                    foreach {min max} [$array GetRange -1] break
     1913                    lappend _fieldlimits($tag) $fname [list $min $max]
     1914                    set _fieldComponents($tag-$fname) [$array GetNumberOfComponents]
     1915                }
     1916            }
     1917            set dataAttrs [$dataset GetCellData]
     1918            if { $dataAttrs != ""} {
     1919                set numArrays [$dataAttrs GetNumberOfArrays]
     1920                for {set i 0} {$i < $numArrays} {incr i} {
     1921                    set array [$dataAttrs GetArray $i]
     1922                    set fname [$dataAttrs GetArrayName $i]
     1923                    foreach {min max} [$array GetRange -1] break
     1924                    lappend _fieldlimits($tag) $fname [list $min $max]
     1925                    set _fieldComponents($tag-$fname) [$array GetNumberOfComponents]
     1926                }
     1927            }
     1928            set dataAttrs [$dataset GetFieldData]
     1929            if { $dataAttrs != ""} {
     1930                set numArrays [$dataAttrs GetNumberOfArrays]
     1931                for {set i 0} {$i < $numArrays} {incr i} {
     1932                    set array [$dataAttrs GetArray $i]
     1933                    set fname [$dataAttrs GetArrayName $i]
     1934                    foreach {min max} [$array GetRange -1] break
     1935                    lappend _fieldlimits($tag) $fname [list $min $max]
     1936                    set _fieldComponents($tag-$fname) [$array GetNumberOfComponents]
     1937                }
     1938            }
     1939            rename $dataset ""
    19371940            rename $reader ""
    19381941        }
    1939         foreach { xMin xMax yMin yMax zMin zMax} $_limits($tag) break
     1942        foreach {xMin xMax yMin yMax zMin zMax} $_limits($tag) break
    19401943        if {![info exists limits(xmin)] || $limits(xmin) > $xMin} {
    19411944            set limits(xmin) $xMin
     
    26882691                -atomscale 0.3
    26892692                -atomsvisible 1
     2693                -bondconstcolor white
     2694                -bondcolormode "by_elements"
    26902695                -bondscale 0.075
    26912696                -bondstyle "cylinder"
    26922697                -bondsvisible 1
    26932698                -color "elementDefault"
     2699                -colormode "by_elements"
     2700                -colorfield "element"
     2701                -constcolor white
    26942702                -edgecolor black
    26952703                -edges 0
     
    27992807            SendCmd "molecule labels $settings(-labels) $tag"
    28002808            set _settings(molecule-labels) $settings(-labels)
     2809            SendCmd "molecule bcmode $settings(-bondcolormode) $tag"
     2810            SendCmd "molecule bcolor [Color2RGB $settings(-bondconstcolor)] $tag"
     2811            SendCmd "molecule color [Color2RGB $settings(-constcolor)] $tag"
     2812            SendCmd "molecule colormap $settings(-color) $tag"
     2813            set _settings(molecule-palette) $settings(-color)
     2814            $itk_component(moleculepalette) value $settings(-color)
     2815            SendCmd [list molecule colormode $settings(-colormode) $settings(-colorfield) $tag]
     2816            set _settings(molecule-colormode) $settings(-colormode)
     2817            set _settings(molecule-colorfield) $settings(-colorfield)
    28012818            SendCmd "molecule linecolor [Color2RGB $settings(-edgecolor)] $tag"
    28022819            SendCmd "molecule linewidth $settings(-linewidth) $tag"
Note: See TracChangeset for help on using the changeset viewer.