Changeset 4418 for trunk


Ignore:
Timestamp:
Jun 23, 2014 3:45:07 PM (10 years ago)
Author:
ldelgass
Message:

support vertices,lines,polygons,trianglestrips lists in unstructured grids

File:
1 edited

Legend:

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

    r4401 r4418  
    8585    private method WriteTriangles { path xv yv zv triangles }
    8686    private method WriteQuads { path xv yv zv quads }
     87    private method WriteVertices { path xv yv zv vertices }
     88    private method WriteLines { path xv yv zv lines }
     89    private method WritePolygons { path xv yv zv polygons }
     90    private method WriteTriangleStrips { path xv yv zv trianglestrips }
    8791    private method WriteTetrahedrons { path xv yv zv tetrahedrons }
    8892    private method WriteHexahedrons { path xv yv zv hexhedrons }
     
    860864}
    861865
     866itcl::body Rappture::Mesh::WriteVertices { path xv yv zv vertices } {
     867    set _type "vertices"
     868    set _numPoints [$xv length]
     869    set _numCells 0
     870    set data {}
     871    set lines [split $vertices \n]
     872    set count 0
     873    foreach { line } $lines {
     874        set numIndices [llength $line]
     875        if { $numIndices == 0 } {
     876            continue
     877        }
     878        append data " $numIndices $line\n"
     879        incr _numCells
     880        set count [expr $count + $numIndices + 1]
     881    }
     882    append out "DATASET POLYDATA\n"
     883    append out "POINTS $_numPoints double\n"
     884    foreach x [$xv range 0 end] y [$yv range 0 end] z [$zv range 0 end] {
     885        append out " $x $y $z\n"
     886    }
     887    append out "VERTICES $_numCells $count\n"
     888    append out $data
     889    set _limits(x) [$xv limits]
     890    set _limits(y) [$yv limits]
     891    if { $_dim == 3 } {
     892        set _limits(z) [$zv limits]
     893    } else {
     894        set _limits(z) [list 0 0]
     895    }
     896    set _vtkdata $out
     897    return 1
     898}
     899
     900itcl::body Rappture::Mesh::WriteLines { path xv yv zv polylines } {
     901    set _type "lines"
     902    set _numPoints [$xv length]
     903    set _numCells 0
     904    set data {}
     905    set lines [split $polylines \n]
     906    set count 0
     907    foreach { line } $lines {
     908        set numIndices [llength $line]
     909        if { $numIndices == 0 } {
     910            continue
     911        }
     912        append data " $numIndices $line\n"
     913        incr _numCells
     914        set count [expr $count + $numIndices + 1]
     915    }
     916    append out "DATASET POLYDATA\n"
     917    append out "POINTS $_numPoints double\n"
     918    foreach x [$xv range 0 end] y [$yv range 0 end] z [$zv range 0 end] {
     919        append out " $x $y $z\n"
     920    }
     921    append out "LINES $_numCells $count\n"
     922    append out $data
     923    set _limits(x) [$xv limits]
     924    set _limits(y) [$yv limits]
     925    if { $_dim == 3 } {
     926        set _limits(z) [$zv limits]
     927    } else {
     928        set _limits(z) [list 0 0]
     929    }
     930    set _vtkdata $out
     931    return 1
     932}
     933
     934itcl::body Rappture::Mesh::WritePolygons { path xv yv zv polygons } {
     935    set _type "polygons"
     936    set _numPoints [$xv length]
     937    set _numCells 0
     938    set data {}
     939    set lines [split $polygons \n]
     940    set count 0
     941    foreach { line } $lines {
     942        set numIndices [llength $line]
     943        if { $numIndices == 0 } {
     944            continue
     945        }
     946        append data " $numIndices $line\n"
     947        incr _numCells
     948        set count [expr $count + $numIndices + 1]
     949    }
     950    append out "DATASET POLYDATA\n"
     951    append out "POINTS $_numPoints double\n"
     952    foreach x [$xv range 0 end] y [$yv range 0 end] z [$zv range 0 end] {
     953        append out " $x $y $z\n"
     954    }
     955    append out "POLYGONS $_numCells $count\n"
     956    append out $data
     957    set _limits(x) [$xv limits]
     958    set _limits(y) [$yv limits]
     959    if { $_dim == 3 } {
     960        set _limits(z) [$zv limits]
     961    } else {
     962        set _limits(z) [list 0 0]
     963    }
     964    set _vtkdata $out
     965    return 1
     966}
     967
     968itcl::body Rappture::Mesh::WriteTriangleStrips { path xv yv zv trianglestrips } {
     969    set _type "trianglestrips"
     970    set _numPoints [$xv length]
     971    set _numCells 0
     972    set data {}
     973    set lines [split $trianglestrips \n]
     974    set count 0
     975    foreach { line } $lines {
     976        set numIndices [llength $line]
     977        if { $numIndices == 0 } {
     978            continue
     979        }
     980        append data " $numIndices $line\n"
     981        incr _numCells
     982        set count [expr $count + $numIndices + 1]
     983    }
     984    append out "DATASET POLYDATA\n"
     985    append out "POINTS $_numPoints double\n"
     986    foreach x [$xv range 0 end] y [$yv range 0 end] z [$zv range 0 end] {
     987        append out " $x $y $z\n"
     988    }
     989    append out "TRIANGLE_STRIPS $_numCells $count\n"
     990    append out $data
     991    set _limits(x) [$xv limits]
     992    set _limits(y) [$yv limits]
     993    if { $_dim == 3 } {
     994        set _limits(z) [$zv limits]
     995    } else {
     996        set _limits(z) [list 0 0]
     997    }
     998    set _vtkdata $out
     999    return 1
     1000}
     1001
    8621002itcl::body Rappture::Mesh::WriteTetrahedrons { path xv yv zv tetras } {
    8631003    set _type "tetrahedrons"
     
    10401180    # Step 1: Verify that there's only one cell tag of any kind.
    10411181    set numCells 0
    1042     foreach type { cells triangles quads tetrahedrons
    1043         hexahedrons wedges pyramids } {
     1182    foreach type { cells
     1183        vertices lines polygons trianglestrips
     1184        triangles quads
     1185        tetrahedrons hexahedrons wedges pyramids } {
    10441186        set data [$_xmlobj get $path.unstructured.$type]
    10451187        if { $data != "" } {
     
    10571199        return 0
    10581200    }
    1059     foreach type { cells triangles quads tetrahedrons
    1060         hexahedrons wedges pyramids } {
     1201    foreach type { cells
     1202        vertices lines polygons trianglestrips
     1203        triangles quads
     1204        tetrahedrons hexahedrons wedges pyramids } {
    10611205        set data [$_xmlobj get $path.unstructured.$type]
    10621206        if { $data != "" } {
     
    12991443itcl::body Rappture::Mesh::GetCellType { name } {
    13001444    array set name2type {
    1301         "triangle"     5
    1302         "quad"         9
    1303         "tetrahedron"  10
    1304         "hexahedron"   12
    1305         "wedge"        13
    1306         "pyramid"      14
     1445        "vertex"          1
     1446        "polyvertex"      2
     1447        "line"            3
     1448        "polyline"        4
     1449        "triangle"        5
     1450        "trianglestrip"   6
     1451        "polygon"         7
     1452        "pixel"           8
     1453        "quad"            9
     1454        "tetrahedron"     10
     1455        "voxel"           11
     1456        "hexahedron"      12
     1457        "wedge"           13
     1458        "pyramid"         14
     1459        "pentagonalprism" 15
     1460        "hexagonalprism"  16
    13071461    }
    13081462    if { [info exists name2type($name)] } {
     
    13311485        13      6
    13321486        14      5
    1333         15      0
    1334         16      0
     1487        15      10
     1488        16      12
    13351489    }
    13361490    if { [info exists type2indices($type)] } {
Note: See TracChangeset for help on using the changeset viewer.