1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
// off_show.cmd
// Surface Evolver command to print OFF file.
// Only facets that qualify under the current "show facets" criterion
// are listed. No color in this file; see coff.cmd for color OFF.
// Edges are not done, since the OFF format does not include them.
/* usage: read in this command file
set the "show facets" expression (optional)
run "off_show" and redirect output to file.
Example:
Enter command: read "off_show.cmd"
Enter command: show facet where not fixed
Enter command: off_show >>> "filename.off"
*/
off_show := {
local inx,fcount,ecount,v_inx;
if torus then
{ errprintf "Cannot run 'off_show' command in torus mode. Do 'detorus' first.\n";
abort;
};
if symmetry_group then
{ errprintf "Cannot run 'off_show' command in symmetry group mode. Do 'detorus' first.\n";
abort;
};
if space_dimension != 3 then
{ errprintf "The 'off_show' command must be run in three-dimensional space.\n";
abort;
};
if surface_dimension == 1 then
{ errprintf "The 'off_show' command is not meant for the string model.\n";
abort;
};
if simplex_representation then
{ errprintf "The 'off_show' command is not meant for the simplex model.\n";
abort;
};
if lagrange_order >= 2 then
{ errprintf "The 'off_show' command is meant for the linear model, not quadratic or Lagrange.\n";
abort;
};
if rgb_colors then
{ errprintf "The 'off_show' command does not do RGB colors; do rgb_colors off.\n";
abort;
};
// Consecutive index numbers for vertices
define v_inx integer[max(vertex,id)];
inx := 0;
foreach vertex vv do
{ v_inx[vv.id] := inx;
inx += 1;
};
fcount := sum(facet,show);
ecount := sum(edge,show);
// file header is ascii
printf "OFF\n";
printf "%d %d %d\n",vertex_count,fcount,ecount;
// vertex list
foreach vertex do { printf "%f %f %f\n",x,y,z };
// Triangle list.
foreach facet ff where ff.show do
{ printf "%d ",3;
foreach ff.vertex vv do printf "%d ",v_inx[vv.id];
printf "\n";
};
define v_inx integer[0]; // deallocate v_inx storage
}
// end off_show.cmd
// Usage: off_show >>> "filename.off"
|