mirror of
https://github.com/NGSolve/netgen.git
synced 2024-12-24 21:10:33 +05:00
opengl/tcl structure
This commit is contained in:
parent
bdc3718499
commit
42ea36b932
@ -4,7 +4,7 @@
|
|||||||
#include <csg.hpp>
|
#include <csg.hpp>
|
||||||
|
|
||||||
|
|
||||||
#include <incvis.hpp>
|
#include <inctcl.hpp>
|
||||||
#include <visual.hpp>
|
#include <visual.hpp>
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#include <mystdlib.h>
|
#include <mystdlib.h>
|
||||||
#include "incvis.hpp"
|
#include "incopengl.hpp"
|
||||||
|
|
||||||
#include <myadt.hpp>
|
#include <myadt.hpp>
|
||||||
#include <meshing.hpp>
|
#include <meshing.hpp>
|
||||||
|
@ -365,7 +365,7 @@ namespace netgen
|
|||||||
mp.maxh = h;
|
mp.maxh = h;
|
||||||
}
|
}
|
||||||
|
|
||||||
mesh = make_shared<Mesh>();
|
// mesh = make_shared<Mesh>();
|
||||||
mesh->SetDimension (2);
|
mesh->SetDimension (2);
|
||||||
|
|
||||||
Point3d pmin(bbox.PMin()(0), bbox.PMin()(1), -bbox.Diam());
|
Point3d pmin(bbox.PMin()(0), bbox.PMin()(1), -bbox.Diam());
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#include <meshing.hpp>
|
#include <meshing.hpp>
|
||||||
#include <geometry2d.hpp>
|
#include <geometry2d.hpp>
|
||||||
#include <visual.hpp>
|
#include <visual.hpp>
|
||||||
|
#include <inctcl.hpp>
|
||||||
|
|
||||||
#include "vsgeom2d.hpp"
|
#include "vsgeom2d.hpp"
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
noinst_HEADERS = acisgeom.hpp gprim.hpp meshing.hpp occgeom.hpp \
|
noinst_HEADERS = acisgeom.hpp gprim.hpp meshing.hpp occgeom.hpp \
|
||||||
visual.hpp csg.hpp incvis.hpp myadt.hpp opti.hpp geometry2d.hpp \
|
visual.hpp csg.hpp incvis.hpp myadt.hpp opti.hpp geometry2d.hpp \
|
||||||
linalg.hpp mydefs.hpp parallel.hpp stlgeom.hpp mystdlib.h \
|
linalg.hpp mydefs.hpp parallel.hpp stlgeom.hpp mystdlib.h \
|
||||||
nginterface_v2_impl.hpp
|
nginterface_v2_impl.hpp inctcl.hpp incopengl.hpp
|
||||||
|
|
||||||
include_HEADERS = nginterface.h nginterface_v2.hpp
|
include_HEADERS = nginterface.h nginterface_v2.hpp
|
||||||
|
|
||||||
|
31
libsrc/include/incopengl.hpp
Normal file
31
libsrc/include/incopengl.hpp
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
#define GL_GLEXT_PROTOTYPES
|
||||||
|
|
||||||
|
|
||||||
|
# if defined(TOGL_AGL) || defined(TOGL_AGL_CLASSIC)
|
||||||
|
# include <OpenGL/gl.h>
|
||||||
|
# include <OpenGL/glu.h>
|
||||||
|
# else
|
||||||
|
# include <GL/gl.h>
|
||||||
|
# include <GL/glu.h>
|
||||||
|
# endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef TOGL_X11
|
||||||
|
// parallel
|
||||||
|
#define GLX_GLXEXT_PROTOTYPES
|
||||||
|
#include <GL/glx.h>
|
||||||
|
#include <GL/glxext.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// part of OpenGL 1.2, but not in Microsoft's OpenGL 1.1 header:
|
||||||
|
// GL version sould be checked at runtime
|
||||||
|
#ifndef GL_CLAMP_TO_EDGE
|
||||||
|
#define GL_CLAMP_TO_EDGE 0x812F
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
8
libsrc/include/inctcl.hpp
Normal file
8
libsrc/include/inctcl.hpp
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
#include <tcl.h>
|
||||||
|
#include <tk.h>
|
||||||
|
|
||||||
|
#if TK_MAJOR_VERSION==8 && TK_MINOR_VERSION>=4
|
||||||
|
#define tcl_const const
|
||||||
|
#else
|
||||||
|
#define tcl_const
|
||||||
|
#endif
|
@ -1,40 +1,6 @@
|
|||||||
// libraries for User interface:
|
// libraries for User interface:
|
||||||
|
|
||||||
#include <tcl.h>
|
nicht mehr verwendet
|
||||||
#include <tk.h>
|
|
||||||
|
|
||||||
#if TK_MAJOR_VERSION==8 && TK_MINOR_VERSION>=4
|
|
||||||
#define tcl_const const
|
|
||||||
#else
|
|
||||||
#define tcl_const
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define GL_GLEXT_PROTOTYPES
|
|
||||||
|
|
||||||
|
|
||||||
# if defined(TOGL_AGL) || defined(TOGL_AGL_CLASSIC)
|
|
||||||
# include <OpenGL/gl.h>
|
|
||||||
# include <OpenGL/glu.h>
|
|
||||||
# else
|
|
||||||
# include <GL/gl.h>
|
|
||||||
# include <GL/glu.h>
|
|
||||||
# endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef TOGL_X11
|
|
||||||
// parallel
|
|
||||||
#define GLX_GLXEXT_PROTOTYPES
|
|
||||||
#include <GL/glx.h>
|
|
||||||
#include <GL/glxext.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// part of OpenGL 1.2, but not in Microsoft's OpenGL 1.1 header:
|
|
||||||
// GL version sould be checked at runtime
|
|
||||||
#ifndef GL_CLAMP_TO_EDGE
|
|
||||||
#define GL_CLAMP_TO_EDGE 0x812F
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#include "inctcl.hpp"
|
||||||
|
#include "incopengl.hpp"
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#include <occgeom.hpp>
|
#include <occgeom.hpp>
|
||||||
|
|
||||||
|
|
||||||
#include <incvis.hpp>
|
#include <inctcl.hpp>
|
||||||
#include <visual.hpp>
|
#include <visual.hpp>
|
||||||
|
|
||||||
#include "../meshing/bcfunctions.hpp"
|
#include "../meshing/bcfunctions.hpp"
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
#include <meshing.hpp>
|
#include <meshing.hpp>
|
||||||
|
|
||||||
|
|
||||||
#include <incvis.hpp>
|
#include <inctcl.hpp>
|
||||||
#include <visual.hpp>
|
#include <visual.hpp>
|
||||||
|
|
||||||
#include <stlgeom.hpp>
|
#include <stlgeom.hpp>
|
||||||
|
@ -14,6 +14,7 @@ endif
|
|||||||
|
|
||||||
|
|
||||||
libvisual_la_SOURCES = meshdoc.cpp mvdraw.cpp \
|
libvisual_la_SOURCES = meshdoc.cpp mvdraw.cpp \
|
||||||
vsfieldlines.cpp vsmesh.cpp vssolution.cpp importsolution.cpp
|
vsfieldlines.cpp vsmesh.cpp vssolution.cpp importsolution.cpp visualpkg.cpp
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
|
|
||||||
#include <visual.hpp>
|
#include <visual.hpp>
|
||||||
|
#include <inctcl.hpp>
|
||||||
|
|
||||||
namespace netgen
|
namespace netgen
|
||||||
{
|
{
|
||||||
|
@ -35,10 +35,17 @@ namespace netgen
|
|||||||
#endif
|
#endif
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
void (*opengl_text_function)(const char * text) = NULL;
|
||||||
|
void Set_OpenGLText_Callback ( void (*fun) (const char * text) )
|
||||||
|
{
|
||||||
|
opengl_text_function = fun;
|
||||||
|
}
|
||||||
|
|
||||||
void MyOpenGLText (const char * text)
|
void MyOpenGLText (const char * text)
|
||||||
{
|
{
|
||||||
cout << "MyOpenGLText: " << text << endl;
|
if (opengl_text_function)
|
||||||
|
(*opengl_text_function) (text);
|
||||||
|
// cout << "MyOpenGLText: " << text << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -82,7 +82,7 @@ namespace netgen
|
|||||||
|
|
||||||
|
|
||||||
DLL_HEADER extern void MyOpenGLText (const char * text);
|
DLL_HEADER extern void MyOpenGLText (const char * text);
|
||||||
|
DLL_HEADER extern void Set_OpenGLText_Callback ( void (*fun) (const char * text) );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ Visualization
|
|||||||
#define PARALLELGL
|
#define PARALLELGL
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "../include/incvis.hpp"
|
#include "../include/incopengl.hpp"
|
||||||
|
|
||||||
#include "vispar.hpp"
|
#include "vispar.hpp"
|
||||||
#include "soldata.hpp"
|
#include "soldata.hpp"
|
||||||
|
398
libsrc/visualization/visualpkg.cpp
Normal file
398
libsrc/visualization/visualpkg.cpp
Normal file
@ -0,0 +1,398 @@
|
|||||||
|
#include <mystdlib.h>
|
||||||
|
// #include <incopengl.hpp>
|
||||||
|
#include <inctcl.hpp>
|
||||||
|
|
||||||
|
|
||||||
|
#include <myadt.hpp>
|
||||||
|
#include <meshing.hpp>
|
||||||
|
#include <csg.hpp>
|
||||||
|
#include <stlgeom.hpp>
|
||||||
|
|
||||||
|
|
||||||
|
// #include <parallel.hpp>
|
||||||
|
#include <visual.hpp>
|
||||||
|
|
||||||
|
#include <limits>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
namespace netgen
|
||||||
|
|
||||||
|
{
|
||||||
|
|
||||||
|
/*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int Ng_Vis_Set (ClientData clientData,
|
||||||
|
Tcl_Interp * interp,
|
||||||
|
int argc, tcl_const char *argv[])
|
||||||
|
|
||||||
|
{
|
||||||
|
if (argc >= 2)
|
||||||
|
{
|
||||||
|
if (strcmp (argv[1], "parameters") == 0)
|
||||||
|
{
|
||||||
|
vssolution.imag_part =
|
||||||
|
atoi (Tcl_GetVar (interp, "::visoptions.imaginary", TCL_GLOBAL_ONLY));
|
||||||
|
vssolution.usetexture =
|
||||||
|
atoi (Tcl_GetVar (interp, "::visoptions.usetexture", TCL_GLOBAL_ONLY));
|
||||||
|
if (atoi (Tcl_GetVar (interp, "::visoptions.redrawperiodic", TCL_GLOBAL_ONLY)))
|
||||||
|
vssolution.usetexture = 2;
|
||||||
|
|
||||||
|
vssolution.invcolor =
|
||||||
|
atoi (Tcl_GetVar (interp, "::visoptions.invcolor", TCL_GLOBAL_ONLY));
|
||||||
|
|
||||||
|
vssolution.clipsolution = 0;
|
||||||
|
|
||||||
|
if (strcmp (Tcl_GetVar (interp, "::visoptions.clipsolution", TCL_GLOBAL_ONLY),
|
||||||
|
"scal") == 0)
|
||||||
|
vssolution.clipsolution = 1;
|
||||||
|
if (strcmp (Tcl_GetVar (interp, "::visoptions.clipsolution", TCL_GLOBAL_ONLY),
|
||||||
|
"vec") == 0)
|
||||||
|
vssolution.clipsolution = 2;
|
||||||
|
|
||||||
|
tcl_const char * scalname =
|
||||||
|
Tcl_GetVar (interp, "::visoptions.scalfunction", TCL_GLOBAL_ONLY);
|
||||||
|
tcl_const char * vecname =
|
||||||
|
Tcl_GetVar (interp, "::visoptions.vecfunction", TCL_GLOBAL_ONLY);
|
||||||
|
tcl_const char * fieldlines_vecname =
|
||||||
|
Tcl_GetVar (interp, "::visoptions.fieldlinesvecfunction", TCL_GLOBAL_ONLY);
|
||||||
|
|
||||||
|
|
||||||
|
vssolution.scalfunction = -1;
|
||||||
|
vssolution.vecfunction = -1;
|
||||||
|
vssolution.fieldlines_vecfunction = -1;
|
||||||
|
|
||||||
|
int pointpos; // SZ
|
||||||
|
const char * pch = strchr(scalname,':');
|
||||||
|
pointpos = int(pch-scalname+1);
|
||||||
|
|
||||||
|
for (int i = 0; i < vssolution.soldata.Size(); i++)
|
||||||
|
{
|
||||||
|
if ( (strlen (vssolution.soldata[i]->name) == size_t(pointpos-1)) &&
|
||||||
|
(strncmp (vssolution.soldata[i]->name, scalname, pointpos-1) == 0) )
|
||||||
|
{
|
||||||
|
vssolution.scalfunction = i;
|
||||||
|
vssolution.scalcomp = atoi (scalname + pointpos);
|
||||||
|
if ( vssolution.scalcomp > vssolution.soldata[i]->components )
|
||||||
|
vssolution.scalcomp = 1;
|
||||||
|
char newscalname[100];
|
||||||
|
for ( int ii = 0; ii < pointpos; ii++ )
|
||||||
|
newscalname[ii] = scalname[ii];
|
||||||
|
newscalname[pointpos] = ':';
|
||||||
|
sprintf (newscalname+pointpos, "%i", vssolution.scalcomp);
|
||||||
|
|
||||||
|
if (strcmp (scalname, newscalname) != 0)
|
||||||
|
Tcl_SetVar ( interp, "::visoptions.scalfunction", newscalname, TCL_GLOBAL_ONLY );
|
||||||
|
scalname = Tcl_GetVar (interp, "::visoptions.scalfunction", TCL_GLOBAL_ONLY);
|
||||||
|
}
|
||||||
|
if (strcmp (vssolution.soldata[i]->name, vecname) == 0)
|
||||||
|
vssolution.vecfunction = i;
|
||||||
|
|
||||||
|
if (strcmp (vssolution.soldata[i]->name, fieldlines_vecname) == 0)
|
||||||
|
vssolution.fieldlines_vecfunction = i;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(vssolution.fieldlines_vecfunction != -1 &&
|
||||||
|
vssolution.vecfunction == -1)
|
||||||
|
{
|
||||||
|
//cout << "WARNING: Setting vector function in Visualization toolbox to value from Fieldlines toolbox!" << endl;
|
||||||
|
vssolution.vecfunction = vssolution.fieldlines_vecfunction;
|
||||||
|
}
|
||||||
|
|
||||||
|
// reset visoptions.scalfunction and visoptions.vecfunction if not avialable
|
||||||
|
if ( vssolution.scalfunction == -1 && strcmp (scalname, "none") != 0)
|
||||||
|
Tcl_SetVar ( interp, "::visoptions.scalfunction", "none", TCL_GLOBAL_ONLY );
|
||||||
|
if ( vssolution.vecfunction == -1 && strcmp (vecname, "none") != 0)
|
||||||
|
Tcl_SetVar ( interp, "::visoptions.vecfunction", "none", TCL_GLOBAL_ONLY );
|
||||||
|
|
||||||
|
tcl_const char * evalname =
|
||||||
|
Tcl_GetVar (interp, "::visoptions.evaluate", TCL_GLOBAL_ONLY);
|
||||||
|
|
||||||
|
if (strcmp(evalname, "abs") == 0) vssolution.evalfunc = VisualSceneSolution::FUNC_ABS;
|
||||||
|
if (strcmp(evalname, "abstens") == 0) vssolution.evalfunc = VisualSceneSolution::FUNC_ABS_TENSOR;
|
||||||
|
if (strcmp(evalname, "mises") == 0) vssolution.evalfunc = VisualSceneSolution::FUNC_MISES;
|
||||||
|
if (strcmp(evalname, "main") == 0) vssolution.evalfunc = VisualSceneSolution::FUNC_MAIN;
|
||||||
|
|
||||||
|
vssolution.gridsize =
|
||||||
|
atoi (Tcl_GetVar (interp, "::visoptions.gridsize", TCL_GLOBAL_ONLY));
|
||||||
|
|
||||||
|
vssolution.xoffset =
|
||||||
|
atof (Tcl_GetVar (interp, "::visoptions.xoffset", TCL_GLOBAL_ONLY));
|
||||||
|
|
||||||
|
// cout << "x-offset:" << vssolution.xoffset << endl;
|
||||||
|
|
||||||
|
vssolution.yoffset =
|
||||||
|
atof (Tcl_GetVar (interp, "::visoptions.yoffset", TCL_GLOBAL_ONLY));
|
||||||
|
|
||||||
|
vssolution.autoscale =
|
||||||
|
atoi (Tcl_GetVar (interp, "::visoptions.autoscale", TCL_GLOBAL_ONLY));
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
vssolution.linear_colors =
|
||||||
|
atoi (Tcl_GetVar (interp, "::visoptions.lineartexture", TCL_GLOBAL_ONLY));
|
||||||
|
*/
|
||||||
|
vssolution.logscale =
|
||||||
|
atoi (Tcl_GetVar (interp, "::visoptions.logscale", TCL_GLOBAL_ONLY));
|
||||||
|
|
||||||
|
vssolution.mminval =
|
||||||
|
atof (Tcl_GetVar (interp, "::visoptions.mminval", TCL_GLOBAL_ONLY));
|
||||||
|
vssolution.mmaxval =
|
||||||
|
atof (Tcl_GetVar (interp, "::visoptions.mmaxval", TCL_GLOBAL_ONLY));
|
||||||
|
|
||||||
|
vssolution.showclipsolution =
|
||||||
|
atoi (Tcl_GetVar (interp, "::visoptions.showclipsolution", TCL_GLOBAL_ONLY));
|
||||||
|
vssolution.showsurfacesolution =
|
||||||
|
atoi (Tcl_GetVar (interp, "::visoptions.showsurfacesolution", TCL_GLOBAL_ONLY));
|
||||||
|
vssolution.lineartexture =
|
||||||
|
atoi (Tcl_GetVar (interp, "::visoptions.lineartexture", TCL_GLOBAL_ONLY));
|
||||||
|
vssolution.numtexturecols =
|
||||||
|
atoi (Tcl_GetVar (interp, "::visoptions.numtexturecols", TCL_GLOBAL_ONLY));
|
||||||
|
|
||||||
|
vssolution.multidimcomponent =
|
||||||
|
atoi (Tcl_GetVar (interp, "::visoptions.multidimcomponent", TCL_GLOBAL_ONLY));
|
||||||
|
|
||||||
|
vssolution.drawpointcurves =
|
||||||
|
atoi (Tcl_GetVar (interp, "::visoptions.drawpointcurves", TCL_GLOBAL_ONLY));
|
||||||
|
|
||||||
|
vssolution.draw_fieldlines =
|
||||||
|
atoi (Tcl_GetVar (interp, "::visoptions.drawfieldlines", TCL_GLOBAL_ONLY));
|
||||||
|
vssolution.num_fieldlines =
|
||||||
|
atoi (Tcl_GetVar (interp, "::visoptions.numfieldlines", TCL_GLOBAL_ONLY));
|
||||||
|
vssolution.fieldlines_randomstart =
|
||||||
|
atoi (Tcl_GetVar (interp, "::visoptions.fieldlinesrandomstart", TCL_GLOBAL_ONLY));
|
||||||
|
|
||||||
|
vssolution.fieldlines_reltolerance =
|
||||||
|
atof (Tcl_GetVar (interp, "::visoptions.fieldlinestolerance", TCL_GLOBAL_ONLY));
|
||||||
|
|
||||||
|
if (strcmp (Tcl_GetVar (interp, "::visoptions.fieldlinesrktype", TCL_GLOBAL_ONLY),
|
||||||
|
"euler") == 0)
|
||||||
|
vssolution.fieldlines_rktype = 0;
|
||||||
|
else if (strcmp (Tcl_GetVar (interp, "::visoptions.fieldlinesrktype", TCL_GLOBAL_ONLY),
|
||||||
|
"eulercauchy") == 0)
|
||||||
|
vssolution.fieldlines_rktype = 1;
|
||||||
|
else if (strcmp (Tcl_GetVar (interp, "::visoptions.fieldlinesrktype", TCL_GLOBAL_ONLY),
|
||||||
|
"simpson") == 0)
|
||||||
|
vssolution.fieldlines_rktype = 2;
|
||||||
|
else if (strcmp (Tcl_GetVar (interp, "::visoptions.fieldlinesrktype", TCL_GLOBAL_ONLY),
|
||||||
|
"crungekutta") == 0)
|
||||||
|
vssolution.fieldlines_rktype = 3;
|
||||||
|
|
||||||
|
|
||||||
|
vssolution.fieldlines_rellength =
|
||||||
|
atof (Tcl_GetVar (interp, "::visoptions.fieldlineslength", TCL_GLOBAL_ONLY));
|
||||||
|
|
||||||
|
vssolution.fieldlines_maxpoints =
|
||||||
|
atoi (Tcl_GetVar (interp, "::visoptions.fieldlinesmaxpoints", TCL_GLOBAL_ONLY));
|
||||||
|
|
||||||
|
vssolution.fieldlines_relthickness =
|
||||||
|
atof (Tcl_GetVar (interp, "::visoptions.fieldlinesthickness", TCL_GLOBAL_ONLY));
|
||||||
|
|
||||||
|
|
||||||
|
vssolution.fieldlines_fixedphase =
|
||||||
|
(atoi (Tcl_GetVar (interp, "::visoptions.fieldlinesonlyonephase", TCL_GLOBAL_ONLY)) != 0);
|
||||||
|
|
||||||
|
if(vssolution.fieldlines_fixedphase)
|
||||||
|
vssolution.fieldlines_phase =
|
||||||
|
atof (Tcl_GetVar (interp, "::visoptions.fieldlinesphase", TCL_GLOBAL_ONLY));
|
||||||
|
|
||||||
|
|
||||||
|
if (strcmp (Tcl_GetVar (interp, "::visoptions.fieldlinesstartarea", TCL_GLOBAL_ONLY),
|
||||||
|
"box") == 0)
|
||||||
|
vssolution.fieldlines_startarea = 0;
|
||||||
|
else if (strcmp (Tcl_GetVar (interp, "::visoptions.fieldlinesstartarea", TCL_GLOBAL_ONLY),
|
||||||
|
"file") == 0)
|
||||||
|
vssolution.fieldlines_startarea = 1;
|
||||||
|
else if (strcmp (Tcl_GetVar (interp, "::visoptions.fieldlinesstartarea", TCL_GLOBAL_ONLY),
|
||||||
|
"face") == 0)
|
||||||
|
vssolution.fieldlines_startarea = 2;
|
||||||
|
|
||||||
|
|
||||||
|
if (vssolution.fieldlines_startarea == 0)
|
||||||
|
{
|
||||||
|
vssolution.fieldlines_startarea_parameter.SetSize(6);
|
||||||
|
vssolution.fieldlines_startarea_parameter[0] = atof (Tcl_GetVar (interp, "::visoptions.fieldlinesstartareap1x", TCL_GLOBAL_ONLY));
|
||||||
|
vssolution.fieldlines_startarea_parameter[1] = atof (Tcl_GetVar (interp, "::visoptions.fieldlinesstartareap1y", TCL_GLOBAL_ONLY));
|
||||||
|
vssolution.fieldlines_startarea_parameter[2] = atof (Tcl_GetVar (interp, "::visoptions.fieldlinesstartareap1z", TCL_GLOBAL_ONLY));
|
||||||
|
vssolution.fieldlines_startarea_parameter[3] = atof (Tcl_GetVar (interp, "::visoptions.fieldlinesstartareap2x", TCL_GLOBAL_ONLY));
|
||||||
|
vssolution.fieldlines_startarea_parameter[4] = atof (Tcl_GetVar (interp, "::visoptions.fieldlinesstartareap2y", TCL_GLOBAL_ONLY));
|
||||||
|
vssolution.fieldlines_startarea_parameter[5] = atof (Tcl_GetVar (interp, "::visoptions.fieldlinesstartareap2z", TCL_GLOBAL_ONLY));
|
||||||
|
}
|
||||||
|
else if (vssolution.fieldlines_startarea == 1)
|
||||||
|
{
|
||||||
|
vssolution.fieldlines_filename = Tcl_GetVar (interp, "::visoptions.fieldlinesfilename", TCL_GLOBAL_ONLY);
|
||||||
|
}
|
||||||
|
else if (vssolution.fieldlines_startarea == 2)
|
||||||
|
{
|
||||||
|
vssolution.fieldlines_startface = atoi (Tcl_GetVar (interp, "::visoptions.fieldlinesstartface", TCL_GLOBAL_ONLY));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
vssolution.deform =
|
||||||
|
atoi (Tcl_GetVar (interp, "::visoptions.deformation", TCL_GLOBAL_ONLY));
|
||||||
|
vssolution.scaledeform =
|
||||||
|
atof (Tcl_GetVar (interp, "::visoptions.scaledeform1", TCL_GLOBAL_ONLY)) *
|
||||||
|
atof (Tcl_GetVar (interp, "::visoptions.scaledeform2", TCL_GLOBAL_ONLY));
|
||||||
|
|
||||||
|
|
||||||
|
if (atoi (Tcl_GetVar (interp, "::visoptions.isolines", TCL_GLOBAL_ONLY)))
|
||||||
|
vssolution.numisolines = atoi (Tcl_GetVar (interp, "::visoptions.numiso", TCL_GLOBAL_ONLY));
|
||||||
|
else
|
||||||
|
vssolution.numisolines = 0;
|
||||||
|
vssolution.draw_isosurface =
|
||||||
|
atoi (Tcl_GetVar (interp, "::visoptions.isosurf", TCL_GLOBAL_ONLY));
|
||||||
|
|
||||||
|
vssolution.SetSubdivision(atoi (Tcl_GetVar (interp, "::visoptions.subdivisions", TCL_GLOBAL_ONLY)));
|
||||||
|
|
||||||
|
vssolution.UpdateSolutionTimeStamp();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strcmp (argv[1], "parametersrange") == 0)
|
||||||
|
{
|
||||||
|
vssolution.invcolor =
|
||||||
|
atoi (Tcl_GetVar (interp, "::visoptions.invcolor", TCL_GLOBAL_ONLY));
|
||||||
|
vssolution.mminval =
|
||||||
|
atof (Tcl_GetVar (interp, "::visoptions.mminval", TCL_GLOBAL_ONLY));
|
||||||
|
vssolution.mmaxval =
|
||||||
|
atof (Tcl_GetVar (interp, "::visoptions.mmaxval", TCL_GLOBAL_ONLY));
|
||||||
|
vssolution.lineartexture =
|
||||||
|
atoi (Tcl_GetVar (interp, "::visoptions.lineartexture", TCL_GLOBAL_ONLY));
|
||||||
|
vssolution.numtexturecols =
|
||||||
|
atoi (Tcl_GetVar (interp, "::visoptions.numtexturecols", TCL_GLOBAL_ONLY));
|
||||||
|
|
||||||
|
if (vssolution.usetexture == 0 || vssolution.logscale)
|
||||||
|
vssolution.UpdateSolutionTimeStamp();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (argc >= 3 && strcmp (argv[1], "time") == 0)
|
||||||
|
{
|
||||||
|
vssolution.time = double (atoi (argv[2])) / 1000;
|
||||||
|
|
||||||
|
vssolution.timetimestamp = NextTimeStamp();
|
||||||
|
cout << "\rtime = " << vssolution.time << " " << flush;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
vsmesh.SetClippingPlane (); // for computing parameters
|
||||||
|
vssolution.SetClippingPlane (); // for computing parameters
|
||||||
|
glDisable(GL_CLIP_PLANE0);
|
||||||
|
|
||||||
|
#ifdef PARALLELGL
|
||||||
|
vsmesh.Broadcast ();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
return TCL_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
int Ng_Vis_Field (ClientData clientData,
|
||||||
|
Tcl_Interp * interp,
|
||||||
|
int argc, tcl_const char *argv[])
|
||||||
|
{
|
||||||
|
auto mesh = vssolution.GetMesh();
|
||||||
|
int i;
|
||||||
|
char buf[1000];
|
||||||
|
buf[0] = 0;
|
||||||
|
|
||||||
|
if (argc >= 2)
|
||||||
|
{
|
||||||
|
if (strcmp (argv[1], "setfield") == 0)
|
||||||
|
{
|
||||||
|
if (argc < 3)
|
||||||
|
return TCL_ERROR;
|
||||||
|
|
||||||
|
for (i = 0; i < vssolution.GetNSolData(); i++)
|
||||||
|
if (strcmp (vssolution.GetSolData(i)->name, argv[2]) == 0)
|
||||||
|
{
|
||||||
|
cout << "found soldata " << i << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strcmp (argv[1], "getnfieldnames") == 0)
|
||||||
|
{
|
||||||
|
sprintf (buf, "%d", vssolution.GetNSolData());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strcmp (argv[1], "getfieldname") == 0)
|
||||||
|
{
|
||||||
|
sprintf (buf, "%s", vssolution.GetSolData(atoi(argv[2])-1)->name);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strcmp (argv[1], "iscomplex") == 0)
|
||||||
|
{
|
||||||
|
sprintf (buf, "%d", vssolution.GetSolData(atoi(argv[2])-1)->iscomplex);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strcmp (argv[1], "getfieldcomponents") == 0)
|
||||||
|
{
|
||||||
|
sprintf (buf, "%d", vssolution.GetSolData(atoi(argv[2])-1)->components);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (strcmp (argv[1], "getfieldnames") == 0)
|
||||||
|
{
|
||||||
|
for (i = 0; i < vssolution.GetNSolData(); i++)
|
||||||
|
{
|
||||||
|
strcat (buf, vssolution.GetSolData(i)->name);
|
||||||
|
strcat (buf, " ");
|
||||||
|
}
|
||||||
|
strcat (buf, "var1 var2 var3");
|
||||||
|
Tcl_SetResult (interp, buf, TCL_STATIC);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strcmp (argv[1], "setcomponent") == 0)
|
||||||
|
{
|
||||||
|
cout << "set component " << argv[2] << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strcmp (argv[1], "getactivefield") == 0)
|
||||||
|
{
|
||||||
|
sprintf (buf, "1");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strcmp (argv[1], "getdimension") == 0)
|
||||||
|
{
|
||||||
|
sprintf (buf, "%d", mesh->GetDimension());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Tcl_SetResult (interp, buf, TCL_STATIC);
|
||||||
|
return TCL_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
extern "C" int Ng_Vis_Init (Tcl_Interp * interp);
|
||||||
|
|
||||||
|
int Ng_Vis_Init (Tcl_Interp * interp)
|
||||||
|
{
|
||||||
|
Tcl_CreateCommand (interp, "Ng_Vis_Set", Ng_Vis_Set,
|
||||||
|
(ClientData)NULL,
|
||||||
|
(Tcl_CmdDeleteProc*) NULL);
|
||||||
|
|
||||||
|
Tcl_CreateCommand (interp, "Ng_Vis_Field", Ng_Vis_Field,
|
||||||
|
(ClientData)NULL,
|
||||||
|
(Tcl_CmdDeleteProc*) NULL);
|
||||||
|
|
||||||
|
|
||||||
|
return TCL_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
#ifndef NOTCL
|
#ifndef NOTCL
|
||||||
|
|
||||||
#include <mystdlib.h>
|
#include <mystdlib.h>
|
||||||
#include "incvis.hpp"
|
#include <incopengl.hpp>
|
||||||
|
|
||||||
|
|
||||||
#include <myadt.hpp>
|
#include <myadt.hpp>
|
||||||
|
@ -1,7 +1,4 @@
|
|||||||
#ifndef NOTCL
|
|
||||||
#include <mystdlib.h>
|
#include <mystdlib.h>
|
||||||
#include "incvis.hpp"
|
|
||||||
|
|
||||||
|
|
||||||
#include <myadt.hpp>
|
#include <myadt.hpp>
|
||||||
#include <meshing.hpp>
|
#include <meshing.hpp>
|
||||||
@ -4553,367 +4550,6 @@ namespace netgen
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
int Ng_Vis_Set (ClientData clientData,
|
|
||||||
Tcl_Interp * interp,
|
|
||||||
int argc, tcl_const char *argv[])
|
|
||||||
|
|
||||||
{
|
|
||||||
if (argc >= 2)
|
|
||||||
{
|
|
||||||
if (strcmp (argv[1], "parameters") == 0)
|
|
||||||
{
|
|
||||||
vssolution.imag_part =
|
|
||||||
atoi (Tcl_GetVar (interp, "::visoptions.imaginary", TCL_GLOBAL_ONLY));
|
|
||||||
vssolution.usetexture =
|
|
||||||
atoi (Tcl_GetVar (interp, "::visoptions.usetexture", TCL_GLOBAL_ONLY));
|
|
||||||
if (atoi (Tcl_GetVar (interp, "::visoptions.redrawperiodic", TCL_GLOBAL_ONLY)))
|
|
||||||
vssolution.usetexture = 2;
|
|
||||||
|
|
||||||
vssolution.invcolor =
|
|
||||||
atoi (Tcl_GetVar (interp, "::visoptions.invcolor", TCL_GLOBAL_ONLY));
|
|
||||||
|
|
||||||
vssolution.clipsolution = 0;
|
|
||||||
|
|
||||||
if (strcmp (Tcl_GetVar (interp, "::visoptions.clipsolution", TCL_GLOBAL_ONLY),
|
|
||||||
"scal") == 0)
|
|
||||||
vssolution.clipsolution = 1;
|
|
||||||
if (strcmp (Tcl_GetVar (interp, "::visoptions.clipsolution", TCL_GLOBAL_ONLY),
|
|
||||||
"vec") == 0)
|
|
||||||
vssolution.clipsolution = 2;
|
|
||||||
|
|
||||||
tcl_const char * scalname =
|
|
||||||
Tcl_GetVar (interp, "::visoptions.scalfunction", TCL_GLOBAL_ONLY);
|
|
||||||
tcl_const char * vecname =
|
|
||||||
Tcl_GetVar (interp, "::visoptions.vecfunction", TCL_GLOBAL_ONLY);
|
|
||||||
tcl_const char * fieldlines_vecname =
|
|
||||||
Tcl_GetVar (interp, "::visoptions.fieldlinesvecfunction", TCL_GLOBAL_ONLY);
|
|
||||||
|
|
||||||
|
|
||||||
vssolution.scalfunction = -1;
|
|
||||||
vssolution.vecfunction = -1;
|
|
||||||
vssolution.fieldlines_vecfunction = -1;
|
|
||||||
|
|
||||||
int pointpos; // SZ
|
|
||||||
const char * pch = strchr(scalname,':');
|
|
||||||
pointpos = int(pch-scalname+1);
|
|
||||||
|
|
||||||
for (int i = 0; i < vssolution.soldata.Size(); i++)
|
|
||||||
{
|
|
||||||
if ( (strlen (vssolution.soldata[i]->name) == size_t(pointpos-1)) &&
|
|
||||||
(strncmp (vssolution.soldata[i]->name, scalname, pointpos-1) == 0) )
|
|
||||||
{
|
|
||||||
vssolution.scalfunction = i;
|
|
||||||
vssolution.scalcomp = atoi (scalname + pointpos);
|
|
||||||
if ( vssolution.scalcomp > vssolution.soldata[i]->components )
|
|
||||||
vssolution.scalcomp = 1;
|
|
||||||
char newscalname[100];
|
|
||||||
for ( int ii = 0; ii < pointpos; ii++ )
|
|
||||||
newscalname[ii] = scalname[ii];
|
|
||||||
newscalname[pointpos] = ':';
|
|
||||||
sprintf (newscalname+pointpos, "%i", vssolution.scalcomp);
|
|
||||||
|
|
||||||
if (strcmp (scalname, newscalname) != 0)
|
|
||||||
Tcl_SetVar ( interp, "::visoptions.scalfunction", newscalname, TCL_GLOBAL_ONLY );
|
|
||||||
scalname = Tcl_GetVar (interp, "::visoptions.scalfunction", TCL_GLOBAL_ONLY);
|
|
||||||
}
|
|
||||||
if (strcmp (vssolution.soldata[i]->name, vecname) == 0)
|
|
||||||
vssolution.vecfunction = i;
|
|
||||||
|
|
||||||
if (strcmp (vssolution.soldata[i]->name, fieldlines_vecname) == 0)
|
|
||||||
vssolution.fieldlines_vecfunction = i;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(vssolution.fieldlines_vecfunction != -1 &&
|
|
||||||
vssolution.vecfunction == -1)
|
|
||||||
{
|
|
||||||
//cout << "WARNING: Setting vector function in Visualization toolbox to value from Fieldlines toolbox!" << endl;
|
|
||||||
vssolution.vecfunction = vssolution.fieldlines_vecfunction;
|
|
||||||
}
|
|
||||||
|
|
||||||
// reset visoptions.scalfunction and visoptions.vecfunction if not avialable
|
|
||||||
if ( vssolution.scalfunction == -1 && strcmp (scalname, "none") != 0)
|
|
||||||
Tcl_SetVar ( interp, "::visoptions.scalfunction", "none", TCL_GLOBAL_ONLY );
|
|
||||||
if ( vssolution.vecfunction == -1 && strcmp (vecname, "none") != 0)
|
|
||||||
Tcl_SetVar ( interp, "::visoptions.vecfunction", "none", TCL_GLOBAL_ONLY );
|
|
||||||
|
|
||||||
tcl_const char * evalname =
|
|
||||||
Tcl_GetVar (interp, "::visoptions.evaluate", TCL_GLOBAL_ONLY);
|
|
||||||
|
|
||||||
if (strcmp(evalname, "abs") == 0) vssolution.evalfunc = VisualSceneSolution::FUNC_ABS;
|
|
||||||
if (strcmp(evalname, "abstens") == 0) vssolution.evalfunc = VisualSceneSolution::FUNC_ABS_TENSOR;
|
|
||||||
if (strcmp(evalname, "mises") == 0) vssolution.evalfunc = VisualSceneSolution::FUNC_MISES;
|
|
||||||
if (strcmp(evalname, "main") == 0) vssolution.evalfunc = VisualSceneSolution::FUNC_MAIN;
|
|
||||||
|
|
||||||
vssolution.gridsize =
|
|
||||||
atoi (Tcl_GetVar (interp, "::visoptions.gridsize", TCL_GLOBAL_ONLY));
|
|
||||||
|
|
||||||
vssolution.xoffset =
|
|
||||||
atof (Tcl_GetVar (interp, "::visoptions.xoffset", TCL_GLOBAL_ONLY));
|
|
||||||
|
|
||||||
// cout << "x-offset:" << vssolution.xoffset << endl;
|
|
||||||
|
|
||||||
vssolution.yoffset =
|
|
||||||
atof (Tcl_GetVar (interp, "::visoptions.yoffset", TCL_GLOBAL_ONLY));
|
|
||||||
|
|
||||||
vssolution.autoscale =
|
|
||||||
atoi (Tcl_GetVar (interp, "::visoptions.autoscale", TCL_GLOBAL_ONLY));
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
vssolution.linear_colors =
|
|
||||||
atoi (Tcl_GetVar (interp, "::visoptions.lineartexture", TCL_GLOBAL_ONLY));
|
|
||||||
*/
|
|
||||||
vssolution.logscale =
|
|
||||||
atoi (Tcl_GetVar (interp, "::visoptions.logscale", TCL_GLOBAL_ONLY));
|
|
||||||
|
|
||||||
vssolution.mminval =
|
|
||||||
atof (Tcl_GetVar (interp, "::visoptions.mminval", TCL_GLOBAL_ONLY));
|
|
||||||
vssolution.mmaxval =
|
|
||||||
atof (Tcl_GetVar (interp, "::visoptions.mmaxval", TCL_GLOBAL_ONLY));
|
|
||||||
|
|
||||||
vssolution.showclipsolution =
|
|
||||||
atoi (Tcl_GetVar (interp, "::visoptions.showclipsolution", TCL_GLOBAL_ONLY));
|
|
||||||
vssolution.showsurfacesolution =
|
|
||||||
atoi (Tcl_GetVar (interp, "::visoptions.showsurfacesolution", TCL_GLOBAL_ONLY));
|
|
||||||
vssolution.lineartexture =
|
|
||||||
atoi (Tcl_GetVar (interp, "::visoptions.lineartexture", TCL_GLOBAL_ONLY));
|
|
||||||
vssolution.numtexturecols =
|
|
||||||
atoi (Tcl_GetVar (interp, "::visoptions.numtexturecols", TCL_GLOBAL_ONLY));
|
|
||||||
|
|
||||||
vssolution.multidimcomponent =
|
|
||||||
atoi (Tcl_GetVar (interp, "::visoptions.multidimcomponent", TCL_GLOBAL_ONLY));
|
|
||||||
|
|
||||||
vssolution.drawpointcurves =
|
|
||||||
atoi (Tcl_GetVar (interp, "::visoptions.drawpointcurves", TCL_GLOBAL_ONLY));
|
|
||||||
|
|
||||||
vssolution.draw_fieldlines =
|
|
||||||
atoi (Tcl_GetVar (interp, "::visoptions.drawfieldlines", TCL_GLOBAL_ONLY));
|
|
||||||
vssolution.num_fieldlines =
|
|
||||||
atoi (Tcl_GetVar (interp, "::visoptions.numfieldlines", TCL_GLOBAL_ONLY));
|
|
||||||
vssolution.fieldlines_randomstart =
|
|
||||||
atoi (Tcl_GetVar (interp, "::visoptions.fieldlinesrandomstart", TCL_GLOBAL_ONLY));
|
|
||||||
|
|
||||||
vssolution.fieldlines_reltolerance =
|
|
||||||
atof (Tcl_GetVar (interp, "::visoptions.fieldlinestolerance", TCL_GLOBAL_ONLY));
|
|
||||||
|
|
||||||
if (strcmp (Tcl_GetVar (interp, "::visoptions.fieldlinesrktype", TCL_GLOBAL_ONLY),
|
|
||||||
"euler") == 0)
|
|
||||||
vssolution.fieldlines_rktype = 0;
|
|
||||||
else if (strcmp (Tcl_GetVar (interp, "::visoptions.fieldlinesrktype", TCL_GLOBAL_ONLY),
|
|
||||||
"eulercauchy") == 0)
|
|
||||||
vssolution.fieldlines_rktype = 1;
|
|
||||||
else if (strcmp (Tcl_GetVar (interp, "::visoptions.fieldlinesrktype", TCL_GLOBAL_ONLY),
|
|
||||||
"simpson") == 0)
|
|
||||||
vssolution.fieldlines_rktype = 2;
|
|
||||||
else if (strcmp (Tcl_GetVar (interp, "::visoptions.fieldlinesrktype", TCL_GLOBAL_ONLY),
|
|
||||||
"crungekutta") == 0)
|
|
||||||
vssolution.fieldlines_rktype = 3;
|
|
||||||
|
|
||||||
|
|
||||||
vssolution.fieldlines_rellength =
|
|
||||||
atof (Tcl_GetVar (interp, "::visoptions.fieldlineslength", TCL_GLOBAL_ONLY));
|
|
||||||
|
|
||||||
vssolution.fieldlines_maxpoints =
|
|
||||||
atoi (Tcl_GetVar (interp, "::visoptions.fieldlinesmaxpoints", TCL_GLOBAL_ONLY));
|
|
||||||
|
|
||||||
vssolution.fieldlines_relthickness =
|
|
||||||
atof (Tcl_GetVar (interp, "::visoptions.fieldlinesthickness", TCL_GLOBAL_ONLY));
|
|
||||||
|
|
||||||
|
|
||||||
vssolution.fieldlines_fixedphase =
|
|
||||||
(atoi (Tcl_GetVar (interp, "::visoptions.fieldlinesonlyonephase", TCL_GLOBAL_ONLY)) != 0);
|
|
||||||
|
|
||||||
if(vssolution.fieldlines_fixedphase)
|
|
||||||
vssolution.fieldlines_phase =
|
|
||||||
atof (Tcl_GetVar (interp, "::visoptions.fieldlinesphase", TCL_GLOBAL_ONLY));
|
|
||||||
|
|
||||||
|
|
||||||
if (strcmp (Tcl_GetVar (interp, "::visoptions.fieldlinesstartarea", TCL_GLOBAL_ONLY),
|
|
||||||
"box") == 0)
|
|
||||||
vssolution.fieldlines_startarea = 0;
|
|
||||||
else if (strcmp (Tcl_GetVar (interp, "::visoptions.fieldlinesstartarea", TCL_GLOBAL_ONLY),
|
|
||||||
"file") == 0)
|
|
||||||
vssolution.fieldlines_startarea = 1;
|
|
||||||
else if (strcmp (Tcl_GetVar (interp, "::visoptions.fieldlinesstartarea", TCL_GLOBAL_ONLY),
|
|
||||||
"face") == 0)
|
|
||||||
vssolution.fieldlines_startarea = 2;
|
|
||||||
|
|
||||||
|
|
||||||
if (vssolution.fieldlines_startarea == 0)
|
|
||||||
{
|
|
||||||
vssolution.fieldlines_startarea_parameter.SetSize(6);
|
|
||||||
vssolution.fieldlines_startarea_parameter[0] = atof (Tcl_GetVar (interp, "::visoptions.fieldlinesstartareap1x", TCL_GLOBAL_ONLY));
|
|
||||||
vssolution.fieldlines_startarea_parameter[1] = atof (Tcl_GetVar (interp, "::visoptions.fieldlinesstartareap1y", TCL_GLOBAL_ONLY));
|
|
||||||
vssolution.fieldlines_startarea_parameter[2] = atof (Tcl_GetVar (interp, "::visoptions.fieldlinesstartareap1z", TCL_GLOBAL_ONLY));
|
|
||||||
vssolution.fieldlines_startarea_parameter[3] = atof (Tcl_GetVar (interp, "::visoptions.fieldlinesstartareap2x", TCL_GLOBAL_ONLY));
|
|
||||||
vssolution.fieldlines_startarea_parameter[4] = atof (Tcl_GetVar (interp, "::visoptions.fieldlinesstartareap2y", TCL_GLOBAL_ONLY));
|
|
||||||
vssolution.fieldlines_startarea_parameter[5] = atof (Tcl_GetVar (interp, "::visoptions.fieldlinesstartareap2z", TCL_GLOBAL_ONLY));
|
|
||||||
}
|
|
||||||
else if (vssolution.fieldlines_startarea == 1)
|
|
||||||
{
|
|
||||||
vssolution.fieldlines_filename = Tcl_GetVar (interp, "::visoptions.fieldlinesfilename", TCL_GLOBAL_ONLY);
|
|
||||||
}
|
|
||||||
else if (vssolution.fieldlines_startarea == 2)
|
|
||||||
{
|
|
||||||
vssolution.fieldlines_startface = atoi (Tcl_GetVar (interp, "::visoptions.fieldlinesstartface", TCL_GLOBAL_ONLY));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
vssolution.deform =
|
|
||||||
atoi (Tcl_GetVar (interp, "::visoptions.deformation", TCL_GLOBAL_ONLY));
|
|
||||||
vssolution.scaledeform =
|
|
||||||
atof (Tcl_GetVar (interp, "::visoptions.scaledeform1", TCL_GLOBAL_ONLY)) *
|
|
||||||
atof (Tcl_GetVar (interp, "::visoptions.scaledeform2", TCL_GLOBAL_ONLY));
|
|
||||||
|
|
||||||
|
|
||||||
if (atoi (Tcl_GetVar (interp, "::visoptions.isolines", TCL_GLOBAL_ONLY)))
|
|
||||||
vssolution.numisolines = atoi (Tcl_GetVar (interp, "::visoptions.numiso", TCL_GLOBAL_ONLY));
|
|
||||||
else
|
|
||||||
vssolution.numisolines = 0;
|
|
||||||
vssolution.draw_isosurface =
|
|
||||||
atoi (Tcl_GetVar (interp, "::visoptions.isosurf", TCL_GLOBAL_ONLY));
|
|
||||||
|
|
||||||
vssolution.SetSubdivision(atoi (Tcl_GetVar (interp, "::visoptions.subdivisions", TCL_GLOBAL_ONLY)));
|
|
||||||
|
|
||||||
vssolution.UpdateSolutionTimeStamp();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (strcmp (argv[1], "parametersrange") == 0)
|
|
||||||
{
|
|
||||||
vssolution.invcolor =
|
|
||||||
atoi (Tcl_GetVar (interp, "::visoptions.invcolor", TCL_GLOBAL_ONLY));
|
|
||||||
vssolution.mminval =
|
|
||||||
atof (Tcl_GetVar (interp, "::visoptions.mminval", TCL_GLOBAL_ONLY));
|
|
||||||
vssolution.mmaxval =
|
|
||||||
atof (Tcl_GetVar (interp, "::visoptions.mmaxval", TCL_GLOBAL_ONLY));
|
|
||||||
vssolution.lineartexture =
|
|
||||||
atoi (Tcl_GetVar (interp, "::visoptions.lineartexture", TCL_GLOBAL_ONLY));
|
|
||||||
vssolution.numtexturecols =
|
|
||||||
atoi (Tcl_GetVar (interp, "::visoptions.numtexturecols", TCL_GLOBAL_ONLY));
|
|
||||||
|
|
||||||
if (vssolution.usetexture == 0 || vssolution.logscale)
|
|
||||||
vssolution.UpdateSolutionTimeStamp();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (argc >= 3 && strcmp (argv[1], "time") == 0)
|
|
||||||
{
|
|
||||||
vssolution.time = double (atoi (argv[2])) / 1000;
|
|
||||||
|
|
||||||
vssolution.timetimestamp = NextTimeStamp();
|
|
||||||
cout << "\rtime = " << vssolution.time << " " << flush;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
vsmesh.SetClippingPlane (); // for computing parameters
|
|
||||||
vssolution.SetClippingPlane (); // for computing parameters
|
|
||||||
glDisable(GL_CLIP_PLANE0);
|
|
||||||
|
|
||||||
#ifdef PARALLELGL
|
|
||||||
vsmesh.Broadcast ();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
return TCL_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int Ng_Vis_Field (ClientData clientData,
|
|
||||||
Tcl_Interp * interp,
|
|
||||||
int argc, tcl_const char *argv[])
|
|
||||||
{
|
|
||||||
auto mesh = vssolution.GetMesh();
|
|
||||||
int i;
|
|
||||||
char buf[1000];
|
|
||||||
buf[0] = 0;
|
|
||||||
|
|
||||||
if (argc >= 2)
|
|
||||||
{
|
|
||||||
if (strcmp (argv[1], "setfield") == 0)
|
|
||||||
{
|
|
||||||
if (argc < 3)
|
|
||||||
return TCL_ERROR;
|
|
||||||
|
|
||||||
for (i = 0; i < vssolution.GetNSolData(); i++)
|
|
||||||
if (strcmp (vssolution.GetSolData(i)->name, argv[2]) == 0)
|
|
||||||
{
|
|
||||||
cout << "found soldata " << i << endl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (strcmp (argv[1], "getnfieldnames") == 0)
|
|
||||||
{
|
|
||||||
sprintf (buf, "%d", vssolution.GetNSolData());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (strcmp (argv[1], "getfieldname") == 0)
|
|
||||||
{
|
|
||||||
sprintf (buf, "%s", vssolution.GetSolData(atoi(argv[2])-1)->name);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (strcmp (argv[1], "iscomplex") == 0)
|
|
||||||
{
|
|
||||||
sprintf (buf, "%d", vssolution.GetSolData(atoi(argv[2])-1)->iscomplex);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (strcmp (argv[1], "getfieldcomponents") == 0)
|
|
||||||
{
|
|
||||||
sprintf (buf, "%d", vssolution.GetSolData(atoi(argv[2])-1)->components);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (strcmp (argv[1], "getfieldnames") == 0)
|
|
||||||
{
|
|
||||||
for (i = 0; i < vssolution.GetNSolData(); i++)
|
|
||||||
{
|
|
||||||
strcat (buf, vssolution.GetSolData(i)->name);
|
|
||||||
strcat (buf, " ");
|
|
||||||
}
|
|
||||||
strcat (buf, "var1 var2 var3");
|
|
||||||
Tcl_SetResult (interp, buf, TCL_STATIC);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (strcmp (argv[1], "setcomponent") == 0)
|
|
||||||
{
|
|
||||||
cout << "set component " << argv[2] << endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (strcmp (argv[1], "getactivefield") == 0)
|
|
||||||
{
|
|
||||||
sprintf (buf, "1");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (strcmp (argv[1], "getdimension") == 0)
|
|
||||||
{
|
|
||||||
sprintf (buf, "%d", mesh->GetDimension());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Tcl_SetResult (interp, buf, TCL_STATIC);
|
|
||||||
return TCL_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
extern "C" int Ng_Vis_Init (Tcl_Interp * interp);
|
|
||||||
|
|
||||||
int Ng_Vis_Init (Tcl_Interp * interp)
|
|
||||||
{
|
|
||||||
Tcl_CreateCommand (interp, "Ng_Vis_Set", Ng_Vis_Set,
|
|
||||||
(ClientData)NULL,
|
|
||||||
(Tcl_CmdDeleteProc*) NULL);
|
|
||||||
|
|
||||||
Tcl_CreateCommand (interp, "Ng_Vis_Field", Ng_Vis_Field,
|
|
||||||
(ClientData)NULL,
|
|
||||||
(Tcl_CmdDeleteProc*) NULL);
|
|
||||||
|
|
||||||
|
|
||||||
return TCL_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void Ng_ClearSolutionData ()
|
void Ng_ClearSolutionData ()
|
||||||
@ -4966,6 +4602,4 @@ void Ng_SetSolutionData (Ng_SolutionData * soldata)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// }
|
|
||||||
|
|
||||||
#endif // NOTCL
|
|
||||||
|
@ -1,22 +1,25 @@
|
|||||||
#ifndef FILE_VSSOLUTION
|
#ifndef FILE_VSSOLUTION
|
||||||
#define FILE_VSSOLUTION
|
#define FILE_VSSOLUTION
|
||||||
|
|
||||||
|
|
||||||
|
typedef void * ClientData;
|
||||||
|
struct Tcl_Interp;
|
||||||
|
|
||||||
|
|
||||||
namespace netgen
|
namespace netgen
|
||||||
{
|
{
|
||||||
|
|
||||||
#ifndef SMALLLIB
|
|
||||||
#ifndef NOTCL
|
|
||||||
|
|
||||||
extern
|
extern
|
||||||
void ImportSolution (const char * filename);
|
void ImportSolution (const char * filename);
|
||||||
|
|
||||||
extern int Ng_Vis_Set (ClientData clientData,
|
|
||||||
Tcl_Interp * interp,
|
|
||||||
int argc, tcl_const char *argv[]);
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
class FieldLineCalc;
|
class FieldLineCalc;
|
||||||
|
|
||||||
|
extern int Ng_Vis_Set (ClientData clientData,
|
||||||
|
Tcl_Interp * interp,
|
||||||
|
int argc, const char *argv[]);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class VisualSceneSolution : public VisualScene
|
class VisualSceneSolution : public VisualScene
|
||||||
{
|
{
|
||||||
@ -324,15 +327,10 @@ public:
|
|||||||
// 0 .. non, 1 .. scalar, 2 .. complex
|
// 0 .. non, 1 .. scalar, 2 .. complex
|
||||||
void SetTextureMode (int texturemode) const;
|
void SetTextureMode (int texturemode) const;
|
||||||
|
|
||||||
#ifndef SMALLLIB
|
|
||||||
#ifndef NOTCL
|
|
||||||
|
|
||||||
friend int Ng_Vis_Set (ClientData clientData,
|
friend int Ng_Vis_Set (ClientData clientData,
|
||||||
Tcl_Interp * interp,
|
Tcl_Interp * interp,
|
||||||
int argc, tcl_const char *argv[]);
|
int argc, const char *argv[]);
|
||||||
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef PARALLELGL
|
#ifdef PARALLELGL
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
#include <geometry2d.hpp>
|
#include <geometry2d.hpp>
|
||||||
#include <stlgeom.hpp>
|
#include <stlgeom.hpp>
|
||||||
#include <meshing.hpp>
|
#include <meshing.hpp>
|
||||||
#include "incvis.hpp"
|
#include "inctcl.hpp"
|
||||||
#include <visual.hpp>
|
#include <visual.hpp>
|
||||||
|
|
||||||
namespace netgen {
|
namespace netgen {
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <mystdlib.h>
|
#include <mystdlib.h>
|
||||||
#include "incvis.hpp"
|
#include <inctcl.hpp>
|
||||||
#include <meshing.hpp>
|
#include <meshing.hpp>
|
||||||
|
|
||||||
#ifdef NGPYTHON
|
#ifdef NGPYTHON
|
||||||
|
@ -11,7 +11,7 @@ The interface between the GUI and the netgen library
|
|||||||
#include <meshing.hpp>
|
#include <meshing.hpp>
|
||||||
|
|
||||||
|
|
||||||
#include <incvis.hpp>
|
#include <inctcl.hpp>
|
||||||
#include <visual.hpp>
|
#include <visual.hpp>
|
||||||
|
|
||||||
|
|
||||||
@ -1860,7 +1860,7 @@ namespace netgen
|
|||||||
|
|
||||||
static int fontbase = 0;
|
static int fontbase = 0;
|
||||||
|
|
||||||
void MyOpenGLText (const char * text)
|
void MyOpenGLText_GUI (const char * text)
|
||||||
{
|
{
|
||||||
if (nodisplay)
|
if (nodisplay)
|
||||||
return;
|
return;
|
||||||
@ -1877,7 +1877,8 @@ namespace netgen
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
fontbase = Togl_LoadBitmapFont( togl, TOGL_BITMAP_8_BY_13 );
|
fontbase = Togl_LoadBitmapFont( togl, TOGL_BITMAP_8_BY_13 );
|
||||||
|
Set_OpenGLText_Callback (&MyOpenGLText_GUI);
|
||||||
|
|
||||||
glMatrixMode(GL_PROJECTION);
|
glMatrixMode(GL_PROJECTION);
|
||||||
glLoadIdentity();
|
glLoadIdentity();
|
||||||
glMatrixMode(GL_MODELVIEW);
|
glMatrixMode(GL_MODELVIEW);
|
||||||
|
@ -1222,20 +1222,22 @@ namespace netgen
|
|||||||
|
|
||||||
|
|
||||||
void Render() { ; }
|
void Render() { ; }
|
||||||
void MyOpenGLText (const char * text) { ; }
|
|
||||||
|
|
||||||
} // End of namespace netgen
|
} // End of namespace netgen
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void Ng_Redraw () { ; }
|
void Ng_Redraw () { ; }
|
||||||
void Ng_ClearSolutionData () { ; }
|
void Ng_ClearSolutionData () { ; }
|
||||||
|
/*
|
||||||
void Ng_SetSolutionData (Ng_SolutionData * soldata)
|
void Ng_SetSolutionData (Ng_SolutionData * soldata)
|
||||||
{
|
{
|
||||||
delete soldata->solclass;
|
delete soldata->solclass;
|
||||||
}
|
}
|
||||||
void Ng_InitSolutionData (Ng_SolutionData * soldata) { ; }
|
void Ng_InitSolutionData (Ng_SolutionData * soldata) { ; }
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef NG_PYTHON
|
#ifdef NG_PYTHON
|
||||||
|
Loading…
Reference in New Issue
Block a user