Newer
Older

Christophe Geuzaine
committed
{
SymmetryShapes((yyvsp[(2) - (5)].v)[0], (yyvsp[(2) - (5)].v)[1], (yyvsp[(2) - (5)].v)[2], (yyvsp[(2) - (5)].v)[3], (yyvsp[(4) - (5)].l));
(yyval.l) = (yyvsp[(4) - (5)].l);
;}
break;

Christophe Geuzaine
committed
{
DilatShapes((yyvsp[(3) - (9)].v)[0], (yyvsp[(3) - (9)].v)[1], (yyvsp[(3) - (9)].v)[2], (yyvsp[(5) - (9)].d), (yyvsp[(8) - (9)].l));
(yyval.l) = (yyvsp[(8) - (9)].l);
;}
break;

Christophe Geuzaine
committed
if(!strcmp((yyvsp[(1) - (4)].c), "Duplicata")){
for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){
Shape TheShape;
List_Read((yyvsp[(3) - (4)].l), i, &TheShape);
CopyShape(TheShape.Type, TheShape.Num, &TheShape.Num);
List_Add((yyval.l), &TheShape);
}
}
else if(!strcmp((yyvsp[(1) - (4)].c), "Boundary")){
BoundaryShapes((yyvsp[(3) - (4)].l), (yyval.l), false);
}
else if(!strcmp((yyvsp[(1) - (4)].c), "CombinedBoundary")){
BoundaryShapes((yyvsp[(3) - (4)].l), (yyval.l), true);
else{
yymsg(0, "Unknown command on multiple shapes: '%s'", (yyvsp[(1) - (4)].c));
}
Free((yyvsp[(1) - (4)].c));

Christophe Geuzaine
committed
{
(yyval.l) = List_Create(2, 1, sizeof(Shape));
IntersectCurvesWithSurface((yyvsp[(4) - (9)].l), (int)(yyvsp[(8) - (9)].d), (yyval.l));
List_Delete((yyvsp[(4) - (9)].l));
;}
break;

Christophe Geuzaine
committed
{
(yyval.l) = List_Create(2, 1, sizeof(Shape*));
List_T *tmp = ListOfDouble2ListOfInt((yyvsp[(7) - (9)].l));
SplitCurve((int)(yyvsp[(4) - (9)].d), tmp, (yyval.l));
List_Delete(tmp);
;}
break;

Christophe Geuzaine
committed

Christophe Geuzaine
committed
{ (yyval.l) = (yyvsp[(1) - (1)].l); ;}
break;

Christophe Geuzaine
committed
{
(yyval.l) = List_Create(3, 3, sizeof(Shape));
;}
break;

Christophe Geuzaine
committed
{
List_Add((yyval.l), &(yyvsp[(2) - (2)].s));
;}
break;

Christophe Geuzaine
committed
double d;
List_Read((yyvsp[(4) - (6)].l), i, &d);
Shape TheShape;
TheShape.Num = (int)d;
Vertex *v = FindPoint(std::abs(TheShape.Num));
if(v){
TheShape.Type = MSH_POINT;
List_Add((yyval.l), &TheShape);
}
else{
GVertex *gv = GModel::current()->getVertexByTag(std::abs(TheShape.Num));
if(gv){
TheShape.Type = MSH_POINT_FROM_GMODEL;
List_Add((yyval.l), &TheShape);
}
else
yymsg(1, "Unknown point %d", TheShape.Num);
}

Christophe Geuzaine
committed
double d;
List_Read((yyvsp[(4) - (6)].l), i, &d);
Shape TheShape;
TheShape.Num = (int)d;
Curve *c = FindCurve(std::abs(TheShape.Num));
if(c){
TheShape.Type = c->Typ;
List_Add((yyval.l), &TheShape);
}
else{
GEdge *ge = GModel::current()->getEdgeByTag(std::abs(TheShape.Num));
if(ge){
TheShape.Type = MSH_SEGM_FROM_GMODEL;
List_Add((yyval.l), &TheShape);
}
else
yymsg(1, "Unknown curve %d", TheShape.Num);
}

Christophe Geuzaine
committed
double d;
List_Read((yyvsp[(4) - (6)].l), i, &d);
Shape TheShape;
TheShape.Num = (int)d;
Surface *s = FindSurface(std::abs(TheShape.Num));
if(s){
TheShape.Type = s->Typ;
List_Add((yyval.l), &TheShape);
}
else{
GFace *gf = GModel::current()->getFaceByTag(std::abs(TheShape.Num));
if(gf){
TheShape.Type = MSH_SURF_FROM_GMODEL;
List_Add((yyval.l), &TheShape);
}
else
yymsg(1, "Unknown surface %d", TheShape.Num);
}

Christophe Geuzaine
committed
double d;
List_Read((yyvsp[(4) - (6)].l), i, &d);
Shape TheShape;
TheShape.Num = (int)d;
Volume *v = FindVolume(std::abs(TheShape.Num));
if(v){
TheShape.Type = v->Typ;
List_Add((yyval.l), &TheShape);
}
else{
GRegion *gr = GModel::current()->getRegionByTag(std::abs(TheShape.Num));
if(gr){
TheShape.Type = MSH_VOLUME_FROM_GMODEL;
List_Add((yyval.l), &TheShape);
}
else
yymsg(1, "Unknown volume %d", TheShape.Num);
}

Christophe Geuzaine
committed
if(List_Nbr((yyvsp[(7) - (8)].l)) == 4){
int t = (int)(yyvsp[(4) - (8)].d);
if(FindLevelSet(t)){
yymsg(0, "Levelset %d already exists", t);
}
else {
double d[4];
for(int i = 0; i < 4; i++)
List_Read((yyvsp[(7) - (8)].l), i, &d[i]);
gLevelset *ls = new gLevelsetPlane(d[0], d[1], d[2], d[3], t);
LevelSet *l = Create_LevelSet(ls->getTag(), ls);
Tree_Add(GModel::current()->getGEOInternals()->LevelSets, &l);
}
}
else
yymsg(0, "Wrong levelset definition (%d)", (yyvsp[(4) - (8)].d));

Christophe Geuzaine
committed
Emilie Marchandise
committed
6249
6250
6251
6252
6253
6254
6255
6256
6257
6258
6259
6260
6261
6262
6263
6264
6265
6266
6267
6268
6269
6270
6271
#if defined(HAVE_DINTEGRATION)
int t = (int)(yyvsp[(4) - (10)].d);
if(FindLevelSet(t)){
yymsg(0, "Levelset %d already exists", t);
}
else {
//Msg::Info("nb = %d \n",List_Nbr($8) );
fullMatrix<double> centers(List_Nbr((yyvsp[(8) - (10)].l)),3);
for (int i = 0; i < List_Nbr((yyvsp[(8) - (10)].l)); i++){
List_T *l = *(List_T**)List_Pointer((yyvsp[(8) - (10)].l), i);
for (int j = 0; j < List_Nbr(l); j++){
//Msg::Info("nb j = %d \n",List_Nbr(l) );
centers(i,j) = (double)(*(double*)List_Pointer(l, j));
}
}
gLevelset *ls = new gLevelsetPoints(centers, t);
LevelSet *l = Create_LevelSet(ls->getTag(), ls);
Tree_Add(GModel::current()->getGEOInternals()->LevelSets, &l);
}
#endif
;}
break;
Emilie Marchandise
committed
Emilie Marchandise
committed
{
if(List_Nbr((yyvsp[(12) - (14)].l)) == 0){
int t = (int)(yyvsp[(4) - (14)].d);
if(FindLevelSet(t)){
yymsg(0, "Levelset %d already exists", t);
}
else {
double pt[3] = {(yyvsp[(8) - (14)].v)[0], (yyvsp[(8) - (14)].v)[1], (yyvsp[(8) - (14)].v)[2]};
double n[3] = {(yyvsp[(10) - (14)].v)[0], (yyvsp[(10) - (14)].v)[1], (yyvsp[(10) - (14)].v)[2]};
gLevelset *ls = new gLevelsetPlane(pt, n, t);
LevelSet *l = Create_LevelSet(ls->getTag(), ls);
Tree_Add(GModel::current()->getGEOInternals()->LevelSets, &l);
}
}
else
yymsg(0, "Wrong levelset definition (%d)", (yyvsp[(4) - (14)].d));

Christophe Geuzaine
committed
if(List_Nbr((yyvsp[(14) - (16)].l)) == 0){
int t = (int)(yyvsp[(4) - (16)].d);
if(FindLevelSet(t)){
yymsg(0, "Levelset %d already exists", t);
}
else {
double pt1[3] = {(yyvsp[(8) - (16)].v)[0], (yyvsp[(8) - (16)].v)[1], (yyvsp[(8) - (16)].v)[2]};
double pt2[3] = {(yyvsp[(10) - (16)].v)[0], (yyvsp[(10) - (16)].v)[1], (yyvsp[(10) - (16)].v)[2]};
double pt3[3] = {(yyvsp[(12) - (16)].v)[0], (yyvsp[(12) - (16)].v)[1], (yyvsp[(12) - (16)].v)[2]};
gLevelset *ls = new gLevelsetPlane(pt1, pt2, pt3, t);
LevelSet *l = Create_LevelSet(ls->getTag(), ls);
Tree_Add(GModel::current()->getGEOInternals()->LevelSets, &l);
}
}
else
yymsg(0, "Wrong levelset definition (%d)", (yyvsp[(4) - (16)].d));

Christophe Geuzaine
committed
if(List_Nbr((yyvsp[(10) - (12)].l)) == 1){
int t = (int)(yyvsp[(4) - (12)].d);
if(FindLevelSet(t)){
yymsg(0, "Levelset %d already exists", t);
}
else {
double d;
List_Read((yyvsp[(10) - (12)].l), 0, &d);
gLevelset *ls = new gLevelsetSphere((yyvsp[(8) - (12)].v)[0], (yyvsp[(8) - (12)].v)[1], (yyvsp[(8) - (12)].v)[2], d, t);
LevelSet *l = Create_LevelSet(ls->getTag(), ls);
Tree_Add(GModel::current()->getGEOInternals()->LevelSets, &l);
}
}
else
yymsg(0, "Wrong levelset definition (%d)", (yyvsp[(4) - (12)].d));

Christophe Geuzaine
committed
if(!strcmp((yyvsp[(2) - (8)].c), "Union")){
int t = (int)(yyvsp[(4) - (8)].d);
if(FindLevelSet(t)){
yymsg(0, "Levelset %d already exists", t);
}
else {
std::vector<const gLevelset *> vl;
for(int i = 0; i < List_Nbr((yyvsp[(7) - (8)].l)); i++) {
double d; List_Read((yyvsp[(7) - (8)].l), i, &d);
LevelSet *pl = FindLevelSet((int)d);
if(!pl) yymsg(0, "Levelset Union %d : unknown levelset %d", t, (int)d);
else vl.push_back(pl->ls);
}
gLevelset *ls = new gLevelsetUnion(vl);
LevelSet *l = Create_LevelSet(t, ls);
Tree_Add(GModel::current()->getGEOInternals()->LevelSets, &l);
}
}
else if(!strcmp((yyvsp[(2) - (8)].c), "Intersection")){
int t = (int)(yyvsp[(4) - (8)].d);
if(FindLevelSet(t)){
yymsg(0, "Levelset %d already exists", t);
}
else {
std::vector<const gLevelset *> vl;
for(int i = 0; i < List_Nbr((yyvsp[(7) - (8)].l)); i++) {
double d; List_Read((yyvsp[(7) - (8)].l), i, &d);
LevelSet *pl = FindLevelSet((int)d);
if(!pl) yymsg(0, "Levelset Intersection %d : unknown levelset %d", t, (int)d);
else vl.push_back(pl->ls);
}
gLevelset *ls = new gLevelsetIntersection(vl);
LevelSet *l = Create_LevelSet(t, ls);
Tree_Add(GModel::current()->getGEOInternals()->LevelSets, &l);
}
}
else if(!strcmp((yyvsp[(2) - (8)].c), "Cut")){
int t = (int)(yyvsp[(4) - (8)].d);
if(FindLevelSet(t)){
yymsg(0, "Levelset %d already exists", t);
}
else {
std::vector<const gLevelset *> vl;
for(int i = 0; i < List_Nbr((yyvsp[(7) - (8)].l)); i++) {
double d; List_Read((yyvsp[(7) - (8)].l), i, &d);
LevelSet *pl = FindLevelSet((int)d);
if(!pl) yymsg(0, "Levelset Cut %d : unknown levelset %d", t, (int)d);
else vl.push_back(pl->ls);
}
gLevelset *ls = new gLevelsetCut(vl);
LevelSet *l = Create_LevelSet(t, ls);
Tree_Add(GModel::current()->getGEOInternals()->LevelSets, &l);
}
}
else if(!strcmp((yyvsp[(2) - (8)].c), "Crack")){
int t = (int)(yyvsp[(4) - (8)].d);
if(FindLevelSet(t)){
yymsg(0, "Levelset %d already exists", t);
}
else {
std::vector<const gLevelset *> vl;
for(int i = 0; i < List_Nbr((yyvsp[(7) - (8)].l)); i++) {
double d; List_Read((yyvsp[(7) - (8)].l), i, &d);
LevelSet *pl = FindLevelSet((int)d);
if(!pl) yymsg(0, "Levelset Crack %d : unknown levelset %d", t, (int)d);
else vl.push_back(pl->ls);
}
gLevelset *ls = new gLevelsetCrack(vl);
LevelSet *l = Create_LevelSet(t, ls);
Tree_Add(GModel::current()->getGEOInternals()->LevelSets, &l);
}
}
else if(!strcmp((yyvsp[(2) - (8)].c), "Reverse")){
int t = (int)(yyvsp[(4) - (8)].d);
if(FindLevelSet(t)){
yymsg(0, "Levelset %d already exists", t);
}
else {
double d;
List_Read((yyvsp[(7) - (8)].l), 0, &d);
LevelSet *pl = FindLevelSet((int)d);
gLevelset *ls = NULL;
if(!pl) yymsg(0, "Levelset Reverse %d : unknown levelset %d", t, (int)d);
else ls = new gLevelsetReverse(pl->ls);
LevelSet *l = Create_LevelSet(t, ls);
Tree_Add(GModel::current()->getGEOInternals()->LevelSets, &l);
}
}
else if(!strcmp((yyvsp[(2) - (8)].c), "PostView")){
int t = (int)(yyvsp[(4) - (8)].d);
if(FindLevelSet(t)){
yymsg(0, "Levelset %d already exists", t);
}
else {
if(List_Nbr((yyvsp[(7) - (8)].l)) > 0){
double d; List_Read((yyvsp[(7) - (8)].l), 0, &d);
gLevelset *ls = new gLevelsetPostView((int)d, t);
LevelSet *l = Create_LevelSet(ls->getTag(), ls);
Tree_Add(GModel::current()->getGEOInternals()->LevelSets, &l);
}
}
}
else
yymsg(0, "Wrong levelset definition (%d)", (yyvsp[(4) - (8)].d));
Free((yyvsp[(2) - (8)].c));
;}
break;

Christophe Geuzaine
committed
{
#if defined(HAVE_DINTEGRATION)
if(!strcmp((yyvsp[(2) - (8)].c), "MathEval")){
int t = (int)(yyvsp[(4) - (8)].d);
if(FindLevelSet(t)){
yymsg(0, "Levelset %d already exists", t);
}
else {
gLevelset *ls = new gLevelsetMathEval((yyvsp[(7) - (8)].c), t);
LevelSet *l = Create_LevelSet(ls->getTag(), ls);
Tree_Add(GModel::current()->getGEOInternals()->LevelSets, &l);
}
}
else
yymsg(0, "Wrong levelset definition");
Free((yyvsp[(2) - (8)].c)); Free((yyvsp[(7) - (8)].c));
#endif
;}
break;

Christophe Geuzaine
committed
if(!strcmp((yyvsp[(2) - (6)].c), "CutMesh")){
int t = (int)(yyvsp[(4) - (6)].d);
GModel *GM = GModel::current();
if(FindLevelSet(t)){
GM->buildCutGModel(FindLevelSet(t)->ls, true, false);
GM->setVisibility(0);
}
else
yymsg(0, "Unknown levelset (%d)", t);
Emilie Marchandise
committed
}
Emilie Marchandise
committed
int t = (int)(yyvsp[(4) - (6)].d);
GModel *GM = GModel::current();
if(FindLevelSet(t)){
GM->buildCutGModel(FindLevelSet(t)->ls, true, true);
GM->setVisibility(0);
}
else
yymsg(0, "Unknown levelset (%d)", t);
else if(!strcmp((yyvsp[(2) - (6)].c), "SplitMesh")){
int t = (int)(yyvsp[(4) - (6)].d);
GModel *GM = GModel::current();
if(FindLevelSet(t)){
GM->buildCutGModel(FindLevelSet(t)->ls, false, true);
GM->setVisibility(0);
}
else
yymsg(0, "Unknown levelset (%d)", t);
else
yymsg(0, "Wrong levelset definition");
Free((yyvsp[(2) - (6)].c));
;}
break;

Christophe Geuzaine
committed
if(!strcmp((yyvsp[(2) - (14)].c), "Cylinder") && List_Nbr((yyvsp[(12) - (14)].l)) == 1){
int t = (int)(yyvsp[(4) - (14)].d);
if(FindLevelSet(t)){
yymsg(0, "Levelset %d already exists", t);
}
else {
double d;
List_Read((yyvsp[(12) - (14)].l), 0, &d);
double pt[3] = {(yyvsp[(8) - (14)].v)[0], (yyvsp[(8) - (14)].v)[1], (yyvsp[(8) - (14)].v)[2]};
double dir[3] = {(yyvsp[(10) - (14)].v)[0], (yyvsp[(10) - (14)].v)[1], (yyvsp[(10) - (14)].v)[2]};
gLevelset *ls = new gLevelsetGenCylinder(pt, dir, d, t);
LevelSet *l = Create_LevelSet(ls->getTag(), ls);
Tree_Add(GModel::current()->getGEOInternals()->LevelSets, &l);
}
}
else if(!strcmp((yyvsp[(2) - (14)].c), "Cone") && List_Nbr((yyvsp[(12) - (14)].l)) == 1){
int t = (int)(yyvsp[(4) - (14)].d);
if(FindLevelSet(t)){
yymsg(0, "Levelset %d already exists", t);
}
else {
double d;
List_Read((yyvsp[(12) - (14)].l), 0, &d);
double pt[3] = {(yyvsp[(8) - (14)].v)[0], (yyvsp[(8) - (14)].v)[1], (yyvsp[(8) - (14)].v)[2]};
double dir[3] = {(yyvsp[(10) - (14)].v)[0], (yyvsp[(10) - (14)].v)[1], (yyvsp[(10) - (14)].v)[2]};
gLevelset *ls = new gLevelsetCone(pt, dir, d, t);
LevelSet *l = Create_LevelSet(ls->getTag(), ls);
Tree_Add(GModel::current()->getGEOInternals()->LevelSets, &l);
}
}
else if(!strcmp((yyvsp[(2) - (14)].c), "Cylinder") && List_Nbr((yyvsp[(12) - (14)].l)) == 2){
int t = (int)(yyvsp[(4) - (14)].d);
if(FindLevelSet(t)){
yymsg(0, "Levelset %d already exists", t);
}
else {
double d[2];
for(int i = 0; i < 2; i++)
List_Read((yyvsp[(12) - (14)].l), i, &d[i]);
double pt[3] = {(yyvsp[(8) - (14)].v)[0], (yyvsp[(8) - (14)].v)[1], (yyvsp[(8) - (14)].v)[2]};
double dir[3] = {(yyvsp[(10) - (14)].v)[0], (yyvsp[(10) - (14)].v)[1], (yyvsp[(10) - (14)].v)[2]};
gLevelset *ls = new gLevelsetCylinder(pt, dir, d[0], d[1], t);
LevelSet *l = Create_LevelSet(ls->getTag(), ls);
Tree_Add(GModel::current()->getGEOInternals()->LevelSets, &l);
}
}
else if(!strcmp((yyvsp[(2) - (14)].c), "Cylinder") && List_Nbr((yyvsp[(12) - (14)].l)) == 3){
int t = (int)(yyvsp[(4) - (14)].d);
if(FindLevelSet(t)){
yymsg(0, "Levelset %d already exists", t);
}
else {
double d[3];
for(int i = 0; i < 3; i++)
List_Read((yyvsp[(12) - (14)].l), i, &d[i]);
double pt[3] = {(yyvsp[(8) - (14)].v)[0], (yyvsp[(8) - (14)].v)[1], (yyvsp[(8) - (14)].v)[2]};
double dir[3] = {(yyvsp[(10) - (14)].v)[0], (yyvsp[(10) - (14)].v)[1], (yyvsp[(10) - (14)].v)[2]};
gLevelset *ls = new gLevelsetCylinder(pt, dir, d[0], d[1], d[2], t);
LevelSet *l = Create_LevelSet(ls->getTag(), ls);
Tree_Add(GModel::current()->getGEOInternals()->LevelSets, &l);
}
}
else if(!strcmp((yyvsp[(2) - (14)].c), "Ellipsoid") && List_Nbr((yyvsp[(12) - (14)].l)) == 3){
int t = (int)(yyvsp[(4) - (14)].d);
if(FindLevelSet(t)){
yymsg(0, "Levelset %d already exists", t);
}
else {
double d[3];
for(int i = 0; i < 3; i++)
List_Read((yyvsp[(12) - (14)].l), i, &d[i]);
double pt[3] = {(yyvsp[(8) - (14)].v)[0], (yyvsp[(8) - (14)].v)[1], (yyvsp[(8) - (14)].v)[2]};
double dir[3] = {(yyvsp[(10) - (14)].v)[0], (yyvsp[(10) - (14)].v)[1], (yyvsp[(10) - (14)].v)[2]};
gLevelset *ls = new gLevelsetEllipsoid(pt, dir, d[0], d[1], d[2], t);
LevelSet *l = Create_LevelSet(ls->getTag(), ls);
Tree_Add(GModel::current()->getGEOInternals()->LevelSets, &l);
}
}
else if(!strcmp((yyvsp[(2) - (14)].c), "Quadric") && List_Nbr((yyvsp[(12) - (14)].l)) == 5){
int t = (int)(yyvsp[(4) - (14)].d);
if(FindLevelSet(t)){
yymsg(0, "Levelset %d already exists", t);
}
else {
double d[5];
for(int i = 0; i < 5; i++)
List_Read((yyvsp[(12) - (14)].l), i, &d[i]);
double pt[3] = {(yyvsp[(8) - (14)].v)[0], (yyvsp[(8) - (14)].v)[1], (yyvsp[(8) - (14)].v)[2]};
double dir[3] = {(yyvsp[(10) - (14)].v)[0], (yyvsp[(10) - (14)].v)[1], (yyvsp[(10) - (14)].v)[2]};
gLevelset *ls = new gLevelsetGeneralQuadric(pt, dir, d[0], d[1],
d[2], d[3], d[4], t);
LevelSet *l = Create_LevelSet(ls->getTag(), ls);
Tree_Add(GModel::current()->getGEOInternals()->LevelSets, &l);
}
}
else
yymsg(0, "Wrong levelset definition (%d)", (yyvsp[(4) - (14)].d));
Free((yyvsp[(2) - (14)].c));
;}
break;

Christophe Geuzaine
committed
Shape TheShape;
List_Read((yyvsp[(3) - (4)].l), i, &TheShape);
DeleteShape(TheShape.Type, TheShape.Num);

Christophe Geuzaine
committed
GModel::current()->getFields()->deleteField((int)(yyvsp[(4) - (6)].d));

Christophe Geuzaine
committed
int index = (int)(yyvsp[(4) - (6)].d);
if(index >= 0 && index < (int)PView::list.size())
delete PView::list[index];
else
yymsg(0, "Unknown view %d", index);
yymsg(0, "Unknown command 'Delete %s'", (yyvsp[(2) - (6)].c));

Christophe Geuzaine
committed
#endif

Christophe Geuzaine
committed
if(!strcmp((yyvsp[(2) - (3)].c), "Meshes") || !strcmp((yyvsp[(2) - (3)].c), "All")){
}
else if(!strcmp((yyvsp[(2) - (3)].c), "Model")){
GModel::current()->destroy();
GModel::current()->getGEOInternals()->destroy();
GModel::current()->getGEOInternals()->reset_physicals();
GModel::current()->deletePhysicalGroups();
else if(!strcmp((yyvsp[(2) - (3)].c), "Variables")){
gmsh_yysymbols.clear();
else if(!strcmp((yyvsp[(2) - (3)].c), "Options")){
ReInitOptions(0);
InitOptionsGUI(0);
}
if(gmsh_yysymbols.count((yyvsp[(2) - (3)].c)))
gmsh_yysymbols.erase((yyvsp[(2) - (3)].c));
else
yymsg(0, "Unknown object or expression to delete '%s'", (yyvsp[(2) - (3)].c));

Christophe Geuzaine
committed
if(!strcmp((yyvsp[(2) - (4)].c), "Empty") && !strcmp((yyvsp[(3) - (4)].c), "Views")){
for(int i = PView::list.size() - 1; i >= 0; i--)
if(PView::list[i]->getData()->empty()) delete PView::list[i];
yymsg(0, "Unknown command 'Delete %s %s'", (yyvsp[(2) - (4)].c), (yyvsp[(3) - (4)].c));

Christophe Geuzaine
committed
#endif
Free((yyvsp[(2) - (4)].c)); Free((yyvsp[(3) - (4)].c));
;}
break;

Christophe Geuzaine
committed
Shape TheShape;
List_Read((yyvsp[(4) - (5)].l), i, &TheShape);
ColorShape(TheShape.Type, TheShape.Num, (yyvsp[(2) - (5)].u));

Christophe Geuzaine
committed
VisibilityShape((yyvsp[(2) - (3)].c), i, 1);

Christophe Geuzaine
committed
VisibilityShape((yyvsp[(2) - (3)].c), i, 0);

Christophe Geuzaine
committed
Shape TheShape;
List_Read((yyvsp[(3) - (4)].l), i, &TheShape);
VisibilityShape(TheShape.Type, TheShape.Num, 1);

Christophe Geuzaine
committed
Shape TheShape;
List_Read((yyvsp[(3) - (4)].l), i, &TheShape);
VisibilityShape(TheShape.Type, TheShape.Num, 0);

Christophe Geuzaine
committed
std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(2) - (3)].c));
// Warning: we *don't* close included files (to allow user
// functions in these files). If you need to include many many
// files and don't have functions in the files, use "Merge"
// instead: some OSes limit the number of files a process can
// open simultaneously. The right solution would be of course
// to modify FunctionManager to reopen the files instead of
// using the FILE pointer, but hey, I'm lazy...
Msg::StatusBar(2, true, "Reading '%s'...", tmp.c_str());
ParseFile(tmp, false, true);
SetBoundingBox();
Msg::StatusBar(2, true, "Done reading '%s'", tmp.c_str());
// make sure we have the latest data from GEO_Internals in GModel
// (fixes bug where we would have no geometry in the picture if
// the print command is in the same file as the geometry)
GModel::current()->importGEOInternals();
std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(2) - (3)].c));
CreateOutputFile(tmp, CTX::instance()->print.fileFormat);
GModel::current()->importGEOInternals();
std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(2) - (3)].c));
CreateOutputFile(tmp, CTX::instance()->mesh.fileFormat);
else if(!strcmp((yyvsp[(1) - (3)].c), "Merge") || !strcmp((yyvsp[(1) - (3)].c), "MergeWithBoundingBox")){
// MergeWithBoundingBox is deprecated
std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(2) - (3)].c));
MergeFile(tmp, true);
}
SystemCall((yyvsp[(2) - (3)].c));
else if(!strcmp((yyvsp[(1) - (3)].c), "SetName"))
GModel::current()->setName((yyvsp[(2) - (3)].c));
yymsg(0, "Unknown command '%s'", (yyvsp[(1) - (3)].c));
Free((yyvsp[(1) - (3)].c)); Free((yyvsp[(2) - (3)].c));
;}
break;

Christophe Geuzaine
committed
if(!strcmp((yyvsp[(1) - (7)].c), "Save") && !strcmp((yyvsp[(2) - (7)].c), "View")){
int index = (int)(yyvsp[(4) - (7)].d);
if(index >= 0 && index < (int)PView::list.size()){
std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(6) - (7)].c));
PView::list[index]->write(tmp, CTX::instance()->post.fileFormat);
}
else
yymsg(0, "Unknown view %d", index);
yymsg(0, "Unknown command '%s'", (yyvsp[(1) - (7)].c));

Christophe Geuzaine
committed
#endif
Free((yyvsp[(1) - (7)].c)); Free((yyvsp[(2) - (7)].c)); Free((yyvsp[(6) - (7)].c));
;}
break;

Christophe Geuzaine
committed
#if defined(HAVE_POST) && defined(HAVE_MESH)
if(!strcmp((yyvsp[(1) - (7)].c), "Background") && !strcmp((yyvsp[(2) - (7)].c), "Mesh") && !strcmp((yyvsp[(3) - (7)].c), "View")){
int index = (int)(yyvsp[(5) - (7)].d);
if(index >= 0 && index < (int)PView::list.size())
GModel::current()->getFields()->setBackgroundMesh(index);
else
yymsg(0, "Unknown view %d", index);
yymsg(0, "Unknown command '%s'", (yyvsp[(1) - (7)].c));

Christophe Geuzaine
committed
#endif
Free((yyvsp[(1) - (7)].c)); Free((yyvsp[(2) - (7)].c)); Free((yyvsp[(3) - (7)].c));
;}
break;

Christophe Geuzaine
committed
SleepInSeconds((yyvsp[(2) - (3)].d));
yymsg(0, "Surface remeshing must be reinterfaced");
int lock = CTX::instance()->lock;
CTX::instance()->lock = 0;
GModel::current()->importGEOInternals();
GModel::current()->mesh((int)(yyvsp[(2) - (3)].d));
CTX::instance()->lock = lock;
yymsg(0, "Unknown command '%s'", (yyvsp[(1) - (3)].c));

Christophe Geuzaine
committed
#if defined(HAVE_PLUGINS)
PluginManager::instance()->action((yyvsp[(3) - (7)].c), (yyvsp[(6) - (7)].c), 0);
yymsg(0, "Unknown action '%s' or plugin '%s'", (yyvsp[(6) - (7)].c), (yyvsp[(3) - (7)].c));

Christophe Geuzaine
committed
#endif
Free((yyvsp[(3) - (7)].c)); Free((yyvsp[(6) - (7)].c));
;}
break;

Christophe Geuzaine
committed
PView::combine(false, 1, CTX::instance()->post.combineRemoveOrig);
else if(!strcmp((yyvsp[(2) - (3)].c), "ElementsFromVisibleViews"))
PView::combine(false, 0, CTX::instance()->post.combineRemoveOrig);
PView::combine(false, 2, CTX::instance()->post.combineRemoveOrig);
PView::combine(true, 1, CTX::instance()->post.combineRemoveOrig);
else if(!strcmp((yyvsp[(2) - (3)].c), "TimeStepsFromVisibleViews"))
PView::combine(true, 0, CTX::instance()->post.combineRemoveOrig);
PView::combine(true, 2, CTX::instance()->post.combineRemoveOrig);
PView::combine(false, 1, CTX::instance()->post.combineRemoveOrig);
PView::combine(true, 2, CTX::instance()->post.combineRemoveOrig);
yymsg(0, "Unknown 'Combine' command");

Christophe Geuzaine
committed
#endif

Christophe Geuzaine
committed

Christophe Geuzaine
committed
{
// FIXME: this is a hack to force a transfer from the old DB to
// the new DB. This will become unnecessary if/when we fill the
// GModel directly during parsing.
GModel::current()->importGEOInternals();
;}
break;

Christophe Geuzaine
committed
CTX::instance()->forcedBBox = 0;

Christophe Geuzaine
committed
CTX::instance()->forcedBBox = 1;
SetBoundingBox((yyvsp[(3) - (15)].d), (yyvsp[(5) - (15)].d), (yyvsp[(7) - (15)].d), (yyvsp[(9) - (15)].d), (yyvsp[(11) - (15)].d), (yyvsp[(13) - (15)].d));
;}
break;