Changeset 4418 for trunk/gui/scripts/mesh.tcl
- Timestamp:
- Jun 23, 2014 3:45:07 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gui/scripts/mesh.tcl
r4401 r4418 85 85 private method WriteTriangles { path xv yv zv triangles } 86 86 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 } 87 91 private method WriteTetrahedrons { path xv yv zv tetrahedrons } 88 92 private method WriteHexahedrons { path xv yv zv hexhedrons } … … 860 864 } 861 865 866 itcl::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 900 itcl::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 934 itcl::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 968 itcl::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 862 1002 itcl::body Rappture::Mesh::WriteTetrahedrons { path xv yv zv tetras } { 863 1003 set _type "tetrahedrons" … … 1040 1180 # Step 1: Verify that there's only one cell tag of any kind. 1041 1181 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 } { 1044 1186 set data [$_xmlobj get $path.unstructured.$type] 1045 1187 if { $data != "" } { … … 1057 1199 return 0 1058 1200 } 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 } { 1061 1205 set data [$_xmlobj get $path.unstructured.$type] 1062 1206 if { $data != "" } { … … 1299 1443 itcl::body Rappture::Mesh::GetCellType { name } { 1300 1444 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 1307 1461 } 1308 1462 if { [info exists name2type($name)] } { … … 1331 1485 13 6 1332 1486 14 5 1333 15 01334 16 01487 15 10 1488 16 12 1335 1489 } 1336 1490 if { [info exists type2indices($type)] } {
Note: See TracChangeset
for help on using the changeset viewer.