Newer
Older
yymsg(GERROR, "Unknown option '%s' or plugin '%s'", yyvsp[-3].c, yyvsp[-6].c);
Free(yyvsp[-6].c); Free(yyvsp[-3].c); // FIXME: sometimes leak $8
int num = (int)yyvsp[-4].d;
if(FindPoint(num, THEM)){
yymsg(GERROR, "Point %d already exists", num);
}
else{
Vertex *v = Create_Vertex(num, CTX.geom.scaling_factor * yyvsp[-1].v[0],
CTX.geom.scaling_factor * yyvsp[-1].v[1],
CTX.geom.scaling_factor * yyvsp[-1].v[2],
CTX.geom.scaling_factor * yyvsp[-1].v[3], 1.0);
Tree_Add(THEM->Points, &v);
}

Christophe Geuzaine
committed
yyval.s.Type = MSH_POINT;
int num = (int)yyvsp[-4].d;
if(FindPhysicalGroup(num, MSH_PHYSICAL_POINT, THEM)){
yymsg(GERROR, "Physical point %d already exists", num);
}
else{
List_T *temp = ListOfDouble2ListOfInt(yyvsp[-1].l);
PhysicalGroup *p = Create_PhysicalGroup(num, MSH_PHYSICAL_POINT, temp);
List_Delete(temp);
List_Add(THEM->PhysicalGroups, &p);
}
List_Delete(yyvsp[-1].l);
yyval.s.Type = MSH_PHYSICAL_POINT;
Attractor *a = Create_Attractor(List_Nbr(THEM->Metric->Attractors)+1,
yyvsp[-6].d, yyvsp[-4].d, yyvsp[-2].d, v, NULL, NULL);
List_Delete(yyvsp[-9].l);
// dummy values
yyval.s.Type = 0;
yyval.s.Num = 0;
List_Read(yyvsp[-3].l, i, &d);
Vertex *v = FindPoint((int)d, THEM);
else
v->lc = yyvsp[-1].d;
}
List_Delete(yyvsp[-3].l);
// dummy values
yyval.s.Type = 0;
yyval.s.Num = 0;
int num = (int)yyvsp[-4].d;
if(FindCurve(num, THEM)){
yymsg(GERROR, "Curve %d already exists", num);
else{
List_T *temp = ListOfDouble2ListOfInt(yyvsp[-1].l);
Curve *c = Create_Curve(num, MSH_SEGM_LINE, 1, temp, NULL,
-1, -1, 0., 1.);
Tree_Add(THEM->Curves, &c);
CreateReversedCurve(THEM, c);
List_Delete(temp);
}
List_Delete(yyvsp[-1].l);
yyval.s.Type = MSH_SEGM_LINE;
yyval.s.Num = num;
int num = (int)yyvsp[-4].d;
if(FindCurve(num, THEM)){
yymsg(GERROR, "Curve %d already exists", num);
}
else{
List_T *temp = ListOfDouble2ListOfInt(yyvsp[-1].l);
Curve *c = Create_Curve(num, MSH_SEGM_SPLN, 3, temp, NULL,
-1, -1, 0., 1.);
Tree_Add(THEM->Curves, &c);
CreateReversedCurve(THEM, c);
List_Delete(temp);
}
List_Delete(yyvsp[-1].l);
yyval.s.Type = MSH_SEGM_SPLN;
yyval.s.Num = num;
int num = (int)yyvsp[-4].d;
if(FindCurve(num, THEM)){
yymsg(GERROR, "Curve %d already exists", num);
}
else{
List_T *temp = ListOfDouble2ListOfInt(yyvsp[-1].l);
Curve *c = Create_Curve(num, MSH_SEGM_CIRC, 2, temp, NULL,
-1, -1, 0., 1.);
Tree_Add(THEM->Curves, &c);
CreateReversedCurve(THEM, c);
List_Delete(temp);
}
List_Delete(yyvsp[-1].l);
yyval.s.Type = MSH_SEGM_CIRC;
yyval.s.Num = num;
int num = (int)yyvsp[-6].d;
if(FindCurve(num, THEM)){
yymsg(GERROR, "Curve %d already exists", num);
}
else{
List_T *temp = ListOfDouble2ListOfInt(yyvsp[-3].l);
Curve *c = Create_Curve(num, MSH_SEGM_CIRC, 2, temp, NULL,
-1, -1, 0., 1.);
c->Circle.n[0] = yyvsp[-1].v[0];
c->Circle.n[1] = yyvsp[-1].v[1];
c->Circle.n[2] = yyvsp[-1].v[2];
End_Curve(c);
Tree_Add(THEM->Curves, &c);
Curve *rc = CreateReversedCurve(THEM, c);
rc->Circle.n[0] = yyvsp[-1].v[0];
rc->Circle.n[1] = yyvsp[-1].v[1];
rc->Circle.n[2] = yyvsp[-1].v[2];
End_Curve(rc);
List_Delete(temp);
List_Delete(yyvsp[-3].l);
yyval.s.Type = MSH_SEGM_CIRC;
yyval.s.Num = num;
int num = (int)yyvsp[-4].d;
if(FindCurve(num, THEM)){
yymsg(GERROR, "Curve %d already exists", num);
}
else{
List_T *temp = ListOfDouble2ListOfInt(yyvsp[-1].l);
Curve *c = Create_Curve(num, MSH_SEGM_ELLI, 2, temp, NULL,
-1, -1, 0., 1.);
Tree_Add(THEM->Curves, &c);
CreateReversedCurve(THEM, c);
List_Delete(temp);
}
List_Delete(yyvsp[-1].l);
yyval.s.Type = MSH_SEGM_ELLI;
yyval.s.Num = num;
4193
4194
4195
4196
4197
4198
4199
4200
4201
4202
4203
4204
4205
4206
4207
4208
4209
4210
4211
4212
4213
4214
4215
int num = (int)yyvsp[-6].d;
if(FindCurve(num, THEM)){
yymsg(GERROR, "Curve %d already exists", num);
}
else{
List_T *temp = ListOfDouble2ListOfInt(yyvsp[-3].l);
Curve *c = Create_Curve(num, MSH_SEGM_ELLI, 2, temp, NULL,
-1, -1, 0., 1.);
c->Circle.n[0] = yyvsp[-1].v[0];
c->Circle.n[1] = yyvsp[-1].v[1];
c->Circle.n[2] = yyvsp[-1].v[2];
End_Curve(c);
Tree_Add(THEM->Curves, &c);
Curve *rc = CreateReversedCurve(THEM, c);
rc->Circle.n[0] = yyvsp[-1].v[0];
rc->Circle.n[1] = yyvsp[-1].v[1];
rc->Circle.n[2] = yyvsp[-1].v[2];
End_Curve(c);
List_Delete(temp);
}
List_Delete(yyvsp[-3].l);
yyval.s.Type = MSH_SEGM_ELLI;
yyval.s.Num = num;
int num = (int)yyvsp[-14].d;
if(FindCurve(num, THEM)){
yymsg(GERROR, "Curve %d already exists", num);
}
else{
Curve *c = Create_Curve(num, MSH_SEGM_PARAMETRIC, 2, NULL, NULL,
-1, -1, yyvsp[-10].d, yyvsp[-8].d);
strcpy(c->functu, yyvsp[-6].c);
strcpy(c->functv, yyvsp[-4].c);
strcpy(c->functw, yyvsp[-2].c);
Tree_Add(THEM->Curves, &c);
CreateReversedCurve(THEM, c);
}
4242
4243
4244
4245
4246
4247
4248
4249
4250
4251
4252
4253
4254
4255
4256
4257
4258
4259
4260
4261
4262
int num = (int)yyvsp[-4].d;
if(List_Nbr(yyvsp[-1].l) < 4){
yymsg(GERROR, "Too few control points for BSpline %d (%d < 4)", num,
List_Nbr(yyvsp[-1].l));
}
else{
if(FindCurve(num, THEM)){
yymsg(GERROR, "Curve %d already exists", num);
}
else{
List_T *temp = ListOfDouble2ListOfInt(yyvsp[-1].l);
Curve *c = Create_Curve(num, MSH_SEGM_BSPLN, 2, temp, NULL,
-1, -1, 0., 1.);
Tree_Add(THEM->Curves, &c);
CreateReversedCurve(THEM, c);
List_Delete(temp);
}
}
List_Delete(yyvsp[-1].l);
yyval.s.Type = MSH_SEGM_BSPLN;
yyval.s.Num = num;
int num = (int)yyvsp[-4].d;
if(List_Nbr(yyvsp[-1].l) < 4){
yymsg(GERROR, "Too few control points for Bezier curve %d (%d < 4)", num,

Christophe Geuzaine
committed
List_Nbr(yyvsp[-1].l));
}
else{
if(FindCurve(num, THEM)){
yymsg(GERROR, "Curve %d already exists", num);
}
else{
List_T *temp = ListOfDouble2ListOfInt(yyvsp[-1].l);
Curve *c = Create_Curve(num, MSH_SEGM_BEZIER, 2, temp, NULL,
-1, -1, 0., 1.);
Tree_Add(THEM->Curves, &c);
CreateReversedCurve(THEM, c);
List_Delete(temp);
}
}
List_Delete(yyvsp[-1].l);
yyval.s.Type = MSH_SEGM_BEZIER;
yyval.s.Num = num;
int num = (int)yyvsp[-8].d;
if(List_Nbr(yyvsp[-5].l) + (int)yyvsp[-1].d + 1 != List_Nbr(yyvsp[-3].l)){
yymsg(GERROR, "Wrong definition of Nurbs Curve %d: "
"got %d knots, need N + D + 1 = %d + %d + 1 = %d",
(int)yyvsp[-8].d, List_Nbr(yyvsp[-3].l), List_Nbr(yyvsp[-5].l), (int)yyvsp[-1].d, List_Nbr(yyvsp[-5].l) + (int)yyvsp[-1].d + 1);
else{
if(FindCurve(num, THEM)){
yymsg(GERROR, "Curve %d already exists", num);
}
else{
List_T *temp = ListOfDouble2ListOfInt(yyvsp[-5].l);
Curve *c = Create_Curve(num, MSH_SEGM_NURBS, (int)yyvsp[-1].d, temp, yyvsp[-3].l,
-1, -1, 0., 1.);
Tree_Add(THEM->Curves, &c);
CreateReversedCurve(THEM, c);
List_Delete(temp);
}
}
List_Delete(yyvsp[-5].l);
List_Delete(yyvsp[-3].l);
yyval.s.Type = MSH_SEGM_NURBS;
yyval.s.Num = num;
int num = (int)yyvsp[-4].d;
if(FindEdgeLoop(num, THEM)){
yymsg(GERROR, "Line loop %d already exists", num);
List_T *temp = ListOfDouble2ListOfInt(yyvsp[-1].l);
sortEdgesInLoop(num, temp);
EdgeLoop *l = Create_EdgeLoop(num, temp);
Tree_Add(THEM->EdgeLoops, &l);
List_Delete(temp);
List_Delete(yyvsp[-1].l);
yyval.s.Type = MSH_SEGM_LOOP;
yyval.s.Num = num;
for(int i = 0; i < List_Nbr(yyvsp[-9].l); i++){
double p;
List_Read(yyvsp[-9].l, i, &p);
Curve *c = FindCurve((int)p, THEM);
if(!c)
else{
Attractor *a = Create_Attractor(List_Nbr(THEM->Metric->Attractors)+1,
yyvsp[-6].d, yyvsp[-4].d, yyvsp[-2].d, NULL, c, NULL);
List_Add(THEM->Metric->Attractors, &a);
}
}
// dummy values
yyval.s.Type = 0;
yyval.s.Num = 0;
int num = (int)yyvsp[-4].d;
if(FindPhysicalGroup(num, MSH_PHYSICAL_LINE, THEM)){
yymsg(GERROR, "Physical line %d already exists", num);
}
else{
List_T *temp = ListOfDouble2ListOfInt(yyvsp[-1].l);
PhysicalGroup *p = Create_PhysicalGroup(num, MSH_PHYSICAL_LINE, temp);
List_Delete(temp);
List_Add(THEM->PhysicalGroups, &p);
}
List_Delete(yyvsp[-1].l);
yyval.s.Type = MSH_PHYSICAL_LINE;
yyval.s.Num = num;
int num = (int)yyvsp[-4].d;
if(FindSurface(num, THEM)){
yymsg(GERROR, "Surface %d already exists", num);
}
else{
Surface *s = Create_Surface(num, MSH_SURF_PLAN);
List_T *temp = ListOfDouble2ListOfInt(yyvsp[-1].l);
setSurfaceGeneratrices(s, temp);
List_Delete(temp);
s->Support = s;
End_Surface(s);
Tree_Add(THEM->Surfaces, &s);
}
List_Delete(yyvsp[-1].l);
yyval.s.Type = MSH_SURF_PLAN;
yyval.s.Num = num;
int num = (int)yyvsp[-4].d, type = 0;
if(FindSurface(num, THEM)){
yymsg(GERROR, "Surface %d already exists", num);
}
else{
double d;
List_Read(yyvsp[-1].l, 0, &d);
4410
4411
4412
4413
4414
4415
4416
4417
4418
4419
4420
4421
4422
4423
4424
4425
4426
4427
4428
4429
4430
4431
4432
4433
4434
4435
}
else{
int j = List_Nbr(el->Curves);
if(j == 4){
type = MSH_SURF_REGL;
}
else if(j == 3){
type = MSH_SURF_TRIC;
}
else{
yymsg(GERROR, "Wrong definition of Ruled Surface %d: "
"%d borders instead of 3 or 4", num, j);
type = MSH_SURF_PLAN;
}
Surface *s = Create_Surface(num, type);
List_T *temp = ListOfDouble2ListOfInt(yyvsp[-1].l);
setSurfaceGeneratrices(s, temp);
List_Delete(temp);
s->Support = s;
End_Surface(s);
Tree_Add(THEM->Surfaces, &s);
}
}
List_Delete(yyvsp[-1].l);
yyval.s.Type = type;
yyval.s.Num = num;
int num = (int)yyvsp[-8].d;
Surface *support = FindSurface((int)yyvsp[-4].d, THEM);
if(!support){
yymsg(GERROR, "Unknown support surface %d", (int)yyvsp[-4].d);
}
else{
if(FindSurface(num, THEM)){
yymsg(GERROR, "Surface %d already exists", num);
}
Surface *s = Create_Surface(num, MSH_SURF_TRIMMED);
List_T *temp = ListOfDouble2ListOfInt(yyvsp[-2].l);
setSurfaceGeneratrices(s, temp);
List_Delete(temp);
s->Support = support;
}
List_Delete(yyvsp[-2].l);
yyval.s.Type = MSH_SURF_TRIMMED;
yyval.s.Num = num;
int num = (int)yyvsp[-16].d;
if(FindSurface(num, THEM)){
yymsg(GERROR, "Surface %d already exists", num);
}
else{
CreateNurbsSurface(num, (int)yyvsp[-4].d, (int)yyvsp[-2].d, yyvsp[-13].l, yyvsp[-10].l, yyvsp[-8].l);
}
for(int i = 0; i < List_Nbr(yyvsp[-13].l); i++)
List_Delete((List_T*)List_Pointer(yyvsp[-13].l, i));
List_Delete(yyvsp[-13].l);
List_Delete(yyvsp[-10].l);
List_Delete(yyvsp[-8].l);
int num = (int)yyvsp[-16].d;
if(FindSurface(num, THEM)){
yymsg(GERROR, "Surface %d already exists", num);
}
else{
CreateNurbsSurfaceSupport(num, (int)yyvsp[-4].d, (int)yyvsp[-2].d, yyvsp[-13].l, yyvsp[-10].l, yyvsp[-8].l);
}
for(int i = 0; i < List_Nbr(yyvsp[-13].l); i++)
List_Delete((List_T*)List_Pointer(yyvsp[-13].l, i));
List_Delete(yyvsp[-13].l);
List_Delete(yyvsp[-10].l);
List_Delete(yyvsp[-8].l);
yyval.s.Type = MSH_SURF_NURBS;
yyval.s.Num = num;
int num = (int)yyvsp[-4].d;
if(FindSurfaceLoop(num, THEM)){
yymsg(GERROR, "Surface loop %d already exists", num);
}
else{
List_T *temp = ListOfDouble2ListOfInt(yyvsp[-1].l);
SurfaceLoop *l = Create_SurfaceLoop(num, temp);
Tree_Add(THEM->SurfaceLoops, &l);
List_Delete(temp);
}
List_Delete(yyvsp[-1].l);
yyval.s.Type = MSH_SURF_LOOP;
yyval.s.Num = num;
int num = (int)yyvsp[-4].d;
if(FindPhysicalGroup(num, MSH_PHYSICAL_SURFACE, THEM)){
yymsg(GERROR, "Physical surface %d already exists", num);
}
else{
List_T *temp = ListOfDouble2ListOfInt(yyvsp[-1].l);
PhysicalGroup *p = Create_PhysicalGroup(num, MSH_PHYSICAL_SURFACE, temp);
List_Delete(temp);
List_Add(THEM->PhysicalGroups, &p);
}
List_Delete(yyvsp[-1].l);
yyval.s.Type = MSH_PHYSICAL_SURFACE;
yyval.s.Num = num;
int num = (int)yyvsp[-4].d;
if(FindVolume(num, THEM)){
yymsg(GERROR, "Volume %d already exists", num);
}
else{
Volume *v = Create_Volume(num, MSH_VOLUME);
List_T *temp = ListOfDouble2ListOfInt(yyvsp[-1].l);
setVolumeSurfaces(v, temp);
List_Delete(temp);
Tree_Add(THEM->Volumes, &v);
}
List_Delete(yyvsp[-1].l);
yyval.s.Type = MSH_VOLUME;
int num = (int)yyvsp[-4].d;
if(FindVolume(num, THEM)){
yymsg(GERROR, "Volume %d already exists", num);
}
else{
Volume *v = Create_Volume(num, MSH_VOLUME);
List_T *temp = ListOfDouble2ListOfInt(yyvsp[-1].l);
setVolumeSurfaces(v, temp);
List_Delete(temp);
Tree_Add(THEM->Volumes, &v);
}
List_Delete(yyvsp[-1].l);
yyval.s.Type = MSH_VOLUME;
int num = (int)yyvsp[-4].d;
if(FindPhysicalGroup(num, MSH_PHYSICAL_VOLUME, THEM)){
yymsg(GERROR, "Physical volume %d already exists", num);
}
else{
List_T *temp = ListOfDouble2ListOfInt(yyvsp[-1].l);
PhysicalGroup *p = Create_PhysicalGroup(num, MSH_PHYSICAL_VOLUME, temp);
List_Delete(temp);
List_Add(THEM->PhysicalGroups, &p);
}
List_Delete(yyvsp[-1].l);
yyval.s.Type = MSH_PHYSICAL_VOLUME;
TranslateShapes(yyvsp[-3].v[0], yyvsp[-3].v[1], yyvsp[-3].v[2], yyvsp[-1].l, 1);
yyval.l = yyvsp[-1].l;
RotateShapes(yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].d, yyvsp[-1].l, 1);
yyval.l = yyvsp[-1].l;
SymmetryShapes(yyvsp[-3].v[0], yyvsp[-3].v[1], yyvsp[-3].v[2], yyvsp[-3].v[3], yyvsp[-1].l, 1);
yyval.l = yyvsp[-1].l;
DilatShapes(yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].d, yyvsp[-1].l, 1);
TheShape.Num = (int)d;
Volume *v = FindVolume(TheShape.Num, THEM);
if(!v)
else{
TheShape.Type = v->Typ;
List_Add(yyval.l, &TheShape);
}
}
for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){
Shape TheShape;
List_Read(yyvsp[-1].l, i, &TheShape);
int j;
TheShape.Num = j;
if(!strcmp(yyvsp[-4].c, "View")) AliasView((int)yyvsp[-2].d, 0);
Free(yyvsp[-4].c);
yyval.l = NULL;
if(!strcmp(yyvsp[-4].c, "View")) AliasView((int)yyvsp[-2].d, 1);
Free(yyvsp[-4].c);
yyval.l = NULL;
for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){
Shape TheShape;
List_Read(yyvsp[-1].l, i, &TheShape);
if(!strcmp(yyvsp[-4].c, "View")){
RemoveViewByIndex((int)yyvsp[-2].d);
}
else{
yymsg(GERROR, "Unknown command 'Delete %s'", yyvsp[-4].c);
}
if(!strcmp(yyvsp[-1].c, "Meshes") || !strcmp(yyvsp[-1].c, "All")){
else if(!strcmp(yyvsp[-1].c, "Physicals")){
List_Action(THEM->PhysicalGroups, Free_PhysicalGroup);
List_Reset(THEM->PhysicalGroups);
}
else{
yymsg(GERROR, "Unknown command 'Delete %s'", yyvsp[-1].c);
}
if(!strcmp(yyvsp[-2].c, "Empty") && !strcmp(yyvsp[-1].c, "Views")){
for(int i = List_Nbr(CTX.post.list) - 1; i >= 0; i--){
Post_View *v = *(Post_View **) List_Pointer(CTX.post.list, i);
if(v->empty())
RemoveViewByIndex(i);
}
}
else{
yymsg(GERROR, "Unknown command 'Delete %s %s'", yyvsp[-2].c, yyvsp[-1].c);
}
for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){
Shape TheShape;
List_Read(yyvsp[-1].l, i, &TheShape);

Christophe Geuzaine
committed
}
int m = (CTX.visibility_mode == 2) ? VIS_MESH :
((CTX.visibility_mode == 1) ? VIS_GEOM : VIS_GEOM|VIS_MESH);
int m = (CTX.visibility_mode == 2) ? VIS_MESH :
((CTX.visibility_mode == 1) ? VIS_GEOM : VIS_GEOM|VIS_MESH);
for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){
Shape TheShape;
List_Read(yyvsp[-1].l, i, &TheShape);
for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){
Shape TheShape;
List_Read(yyvsp[-1].l, i, &TheShape);
// 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...
else if(!strcmp(yyvsp[-2].c, "Print")){
FixRelativePath(yyvsp[-1].c, tmpstring);
CreateOutputFile(tmpstring, CTX.print.format);
}
FixRelativePath(yyvsp[-1].c, tmpstring);
CreateOutputFile(tmpstring, CTX.mesh.format);
else if(!strcmp(yyvsp[-2].c, "Merge") || !strcmp(yyvsp[-2].c, "MergeWithBoundingBox")){
// MergeWithBoundingBox is deprecated
}
else if(!strcmp(yyvsp[-2].c, "System")){

Christophe Geuzaine
committed
SystemCall(yyvsp[-1].c);

Christophe Geuzaine
committed
yymsg(GERROR, "Unknown command '%s'", yyvsp[-2].c);
if(!strcmp(yyvsp[-6].c, "Save") && !strcmp(yyvsp[-5].c, "View")){
Post_View **vv = (Post_View **)List_Pointer_Test(CTX.post.list, (int)yyvsp[-3].d);
if(vv){
}
}
else{
yymsg(GERROR, "Unknown command '%s'", yyvsp[-6].c);
}
if(GetTime() - sleep_time > (long)(yyvsp[-1].d*1.e6)) break;
}
}
else if(!strcmp(yyvsp[-2].c, "Mesh")){

Christophe Geuzaine
committed
yymsg(GERROR, "Mesh directives are not (yet) allowed in scripts");

Christophe Geuzaine
committed
yymsg(GERROR, "Unknown command '%s'", yyvsp[-2].c);
try {
GMSH_PluginManager::instance()->action(yyvsp[-4].c, yyvsp[-1].c, 0);
}
catch(...) {
yymsg(GERROR, "Unknown action '%s' or plugin '%s'", yyvsp[-1].c, yyvsp[-4].c);
}
Free(yyvsp[-4].c); Free(yyvsp[-1].c);
if(!strcmp(yyvsp[-1].c, "ElementsFromAllViews"))
CombineViews(0, 1, CTX.post.combine_remove_orig);
else if(!strcmp(yyvsp[-1].c, "ElementsFromVisibleViews"))
CombineViews(0, 0, CTX.post.combine_remove_orig);
else if(!strcmp(yyvsp[-1].c, "ElementsByViewName"))
CombineViews(0, 2, CTX.post.combine_remove_orig);
else if(!strcmp(yyvsp[-1].c, "TimeStepsFromAllViews"))
CombineViews(1, 1, CTX.post.combine_remove_orig);
else if(!strcmp(yyvsp[-1].c, "TimeStepsFromVisibleViews"))
CombineViews(1, 0, CTX.post.combine_remove_orig);
else if(!strcmp(yyvsp[-1].c, "TimeStepsByViewName"))
CombineViews(1, 2, CTX.post.combine_remove_orig);
else if(!strcmp(yyvsp[-1].c, "Views"))
SetBoundingBox(yyvsp[-12].d, yyvsp[-10].d, yyvsp[-8].d, yyvsp[-6].d, yyvsp[-4].d, yyvsp[-2].d);