Skip to content
Snippets Groups Projects
CutPlane.cpp 2.04 KiB
Newer Older
// $Id: CutPlane.cpp,v 1.18 2001-08-11 23:25:50 geuzaine Exp $
#include "CutPlane.h"
#include "List.h"

StringXNumber CutPlaneOptions_Number[] = {
  { GMSH_FULLRC, "A" , NULL , 1. },
  { GMSH_FULLRC, "B" , NULL , 0. },
  { GMSH_FULLRC, "C" , NULL , 0. },
  { GMSH_FULLRC, "D" , NULL , 0.01 },
Christophe Geuzaine's avatar
Christophe Geuzaine committed
  { GMSH_FULLRC, "iView" , NULL , -1. }
};

extern "C"
{
  GMSH_Plugin *GMSH_RegisterCutPlanePlugin ()
  {
    return new GMSH_CutPlanePlugin ();
GMSH_CutPlanePlugin::GMSH_CutPlanePlugin()
{
}

void GMSH_CutPlanePlugin::getName(char *name) const
{
  strcpy(name,"Cut Plane");
}

void GMSH_CutPlanePlugin::getInfos(char *author, char *copyright, char *help_text) const
{
  strcpy(author,"J.-F. Remacle (remacle@scorec.rpi.edu)");
  strcpy(copyright,"DGR (www.multiphysics.com)");
  strcpy(help_text,
	 "Cuts a 3D scalar view with the plane\n"
	 "A*X + B*Y + C*Z + D = 0.\n"
	 "Script name: Plugin(CutPlane).");
}

int GMSH_CutPlanePlugin::getNbOptions() const
{
  return sizeof(CutPlaneOptions_Number)/sizeof(StringXNumber);
StringXNumber* GMSH_CutPlanePlugin:: GetOption (int iopt)
  return  &CutPlaneOptions_Number[iopt];
}

void GMSH_CutPlanePlugin::CatchErrorMessage (char *errorMessage) const
{
  strcpy(errorMessage,"CutPlane failed...");
double GMSH_CutPlanePlugin :: levelset (double x, double y, double z, double val) const
  return CutPlaneOptions_Number[0].def * x +
    CutPlaneOptions_Number[1].def * y +
    CutPlaneOptions_Number[2].def * z +
    CutPlaneOptions_Number[3].def ;
extern List_T *Post_ViewList;
Post_View *GMSH_CutPlanePlugin::execute (Post_View *v)
{
Christophe Geuzaine's avatar
Christophe Geuzaine committed
  Post_View *vv;
  int iView = (int)CutPlaneOptions_Number[4].def;
  _orientation = ORIENT_PLANE;
  _ref[0] = CutPlaneOptions_Number[0].def;
  _ref[1] = CutPlaneOptions_Number[1].def;
  _ref[2] = CutPlaneOptions_Number[2].def;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
  if(v && iView < 0)
    vv = v;
  else{
    if(!v && iView < 0) iView = 0;
    if(!(vv = (Post_View*)List_Pointer_Test(Post_ViewList,iView))){
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      Msg(WARNING,"View[%d] does not exist",iView);
Christophe Geuzaine's avatar
Christophe Geuzaine committed

  return GMSH_LevelsetPlugin::execute(vv);