Newer
Older
Curve *c = Create_Curve(num, MSH_SEGM_SPLN, 3, temp, NULL,
-1, -1, 0., 1.);
Tree_Add(THEM->Curves, &c);
List_Delete(yyvsp[-1].l);
yyval.s.Type = MSH_SEGM_SPLN;
yyval.s.Num = num;
;
break;}
case 96:
Curve *c = Create_Curve(num, MSH_SEGM_CIRC, 2, temp, NULL,
-1, -1, 0., 1.);
Tree_Add(THEM->Curves, &c);
List_Delete(yyvsp[-1].l);
yyval.s.Type = MSH_SEGM_CIRC;
yyval.s.Num = num;
;
break;}
case 97:
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];
rc->Circle.n[0] = yyvsp[-1].v[0];
rc->Circle.n[1] = yyvsp[-1].v[1];
rc->Circle.n[2] = yyvsp[-1].v[2];
List_Delete(yyvsp[-3].l);
yyval.s.Type = MSH_SEGM_CIRC;
yyval.s.Num = num;
;
break;}
case 98:
Curve *c = Create_Curve(num, MSH_SEGM_ELLI, 2, temp, NULL,
-1, -1, 0., 1.);
Tree_Add(THEM->Curves, &c);
List_Delete(yyvsp[-1].l);
yyval.s.Type = MSH_SEGM_ELLI;
yyval.s.Num = num;
;
break;}
case 99:
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];
rc->Circle.n[0] = yyvsp[-1].v[0];
rc->Circle.n[1] = yyvsp[-1].v[1];
rc->Circle.n[2] = yyvsp[-1].v[2];
List_Delete(yyvsp[-3].l);
yyval.s.Type = MSH_SEGM_ELLI;
yyval.s.Num = num;
;
break;}
case 100:
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);
Free(yyvsp[-6].c); Free(yyvsp[-4].c); Free(yyvsp[-2].c);
yyval.s.Type = MSH_SEGM_PARAMETRIC;
yyval.s.Num = num;
;
break;}
case 101:
{
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,
Curve *c = Create_Curve(num, MSH_SEGM_BSPLN, 2, temp, NULL,
-1, -1, 0., 1.);
Tree_Add(THEM->Curves, &c);
List_Delete(yyvsp[-1].l);
yyval.s.Type = MSH_SEGM_BSPLN;
yyval.s.Num = num;
;
break;}
case 102:
{
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,
Curve *c = Create_Curve(num, MSH_SEGM_BEZIER, 2, temp, NULL,
-1, -1, 0., 1.);
Tree_Add(THEM->Curves, &c);
List_Delete(yyvsp[-1].l);
yyval.s.Type = MSH_SEGM_BEZIER;
yyval.s.Num = num;
;
break;}
case 103:
{
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);
List_T *temp = ListOfDouble2ListOfInt(yyvsp[-5].l);
Curve *c = Create_Curve(num, MSH_SEGM_NURBS, (int)yyvsp[-1].d, temp, yyvsp[-3].l,
List_Delete(yyvsp[-5].l);
List_Delete(yyvsp[-3].l);
yyval.s.Type = MSH_SEGM_NURBS;
yyval.s.Num = num;
;
break;}
case 104:
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;
;
break;}
case 105:
else{
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;
;
break;}
case 106:
yymsg(GERROR, "Surface %d already exists", num);
}
else{
Surface *s = Create_Surface(num, MSH_SURF_PLAN);
setSurfaceGeneratrices(s, temp);
List_Delete(temp);
End_Surface(s);
Tree_Add(THEM->Surfaces, &s);
}
List_Delete(yyvsp[-1].l);
yyval.s.Type = MSH_SURF_PLAN;
yyval.s.Num = num;
;
break;}
case 107:
yymsg(GERROR, "Surface %d already exists", num);
}
else{
double d;
}
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);
setSurfaceGeneratrices(s, temp);
List_Delete(temp);
End_Surface(s);
Tree_Add(THEM->Surfaces, &s);
}
}
List_Delete(yyvsp[-1].l);
yyval.s.Type = type;
yyval.s.Num = num;
;
break;}
case 108:
{
myGmshSurface = gmshSurface :: surfaceByTag ( (int) yyvsp[-1].d);
;
break;}
case 110:
{
int num = (int)yyvsp[-6].d, type = 0;
myGmshSurface = gmshParametricSurface::NewParametricSurface ((int)yyvsp[-6].d,yyvsp[-3].c,yyvsp[-2].c,yyvsp[-1].c);
;
break;}
case 111:
{
int num = (int)yyvsp[-4].d, type = 0;
if (List_Nbr(yyvsp[-1].l) != 2){
yymsg(GERROR, "Sphere %d has to be defined using 2 points (center + "
List_Read(yyvsp[-1].l, 0, &p1);
List_Read(yyvsp[-1].l, 1, &p2);
Vertex *v1 = FindPoint((int)p1);
Vertex *v2 = FindPoint((int)p2);
if(!v1) yymsg(GERROR, "Sphere %d : unknown point %d", num, (int)p1);
if(!v2) yymsg(GERROR, "Sphere %d : unknown point %d", num, (int)p2);
myGmshSurface = gmshSphere::NewSphere
(num, v1->Pos.X, v1->Pos.Y, v1->Pos.Z,
sqrt((v2->Pos.X - v1->Pos.X) * (v2->Pos.X - v1->Pos.X) +
(v2->Pos.Y - v1->Pos.Y) * (v2->Pos.Y - v1->Pos.Y) +
(v2->Pos.Z - v1->Pos.Z) * (v2->Pos.Z - v1->Pos.Z)));
{
int num = (int)yyvsp[-4].d, type = 0;
if (List_Nbr(yyvsp[-1].l) != 2){
yymsg(GERROR, "PolarSphere %d has to be defined using 2 points (center + "
List_Read(yyvsp[-1].l, 0, &p1);
List_Read(yyvsp[-1].l, 1, &p2);
Vertex *v1 = FindPoint((int)p1);
Vertex *v2 = FindPoint((int)p2);
if(!v1) yymsg(GERROR, "PolarSphere %d : unknown point %d", num, (int)p1);
if(!v2) yymsg(GERROR, "PolarSphere %d : unknown point %d", num, (int)p2);
myGmshSurface = gmshPolarSphere::NewPolarSphere
(num, v1->Pos.X, v1->Pos.Y, v1->Pos.Z,
sqrt((v2->Pos.X - v1->Pos.X) * (v2->Pos.X - v1->Pos.X) +
(v2->Pos.Y - v1->Pos.Y) * (v2->Pos.Y - v1->Pos.Y) +
(v2->Pos.Z - v1->Pos.Z) * (v2->Pos.Z - v1->Pos.Z)));
}
yymsg(GERROR, "Surface loop %d already exists", num);
}
else{
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;
;
break;}
case 114:
yymsg(GERROR, "Physical surface %d already exists", num);
}
else{
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;
;
break;}
case 115:
yymsg(GERROR, "Volume %d already exists", num);
}
else{
Volume *v = Create_Volume(num, MSH_VOLUME);
setVolumeSurfaces(v, temp);
List_Delete(temp);
Tree_Add(THEM->Volumes, &v);
}
List_Delete(yyvsp[-1].l);
yyval.s.Type = MSH_VOLUME;
yyval.s.Num = num;
;
break;}
case 116:
yymsg(GERROR, "Volume %d already exists", num);
}
else{
Volume *v = Create_Volume(num, MSH_VOLUME);
setVolumeSurfaces(v, temp);
List_Delete(temp);
Tree_Add(THEM->Volumes, &v);
}
List_Delete(yyvsp[-1].l);
yyval.s.Type = MSH_VOLUME;
yyval.s.Num = num;
;
break;}
case 117:
yymsg(GERROR, "Physical volume %d already exists", num);
}
else{
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;
yyval.s.Num = num;
;
break;}
case 118:
{
TranslateShapes(yyvsp[-3].v[0], yyvsp[-3].v[1], yyvsp[-3].v[2], yyvsp[-1].l);
yyval.l = yyvsp[-1].l;
;
break;}
case 119:
{
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);
yyval.l = yyvsp[-1].l;
;
break;}
case 120:
{
SymmetryShapes(yyvsp[-3].v[0], yyvsp[-3].v[1], yyvsp[-3].v[2], yyvsp[-3].v[3], yyvsp[-1].l);
yyval.l = yyvsp[-1].l;
;
break;}
case 121:
{
DilatShapes(yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].d, yyvsp[-1].l);
yyval.l = yyvsp[-1].l;
;
break;}
case 122:
#line 1709 "Gmsh.y"
{
yyval.l = List_Create(3, 3, sizeof(Shape));
;
break;}
case 126:
{
List_Add(yyval.l, &yyvsp[0].s);
;
break;}
case 127:
else{
GVertex *gv = GMODEL->vertexByTag(TheShape.Num);
if(gv){
TheShape.Type = MSH_POINT_FROM_GMODEL;
}
else
yymsg(WARNING, "Unknown point %d", TheShape.Num);
}
else{
GEdge *ge = GMODEL->edgeByTag(TheShape.Num);
if(ge){
TheShape.Type = MSH_SEGM_FROM_GMODEL;
}
else
yymsg(WARNING, "Unknown curve %d", TheShape.Num);
}
else{
GFace *gf = GMODEL->faceByTag(TheShape.Num);
if(gf){
TheShape.Type = MSH_SURF_FROM_GMODEL;
}
else
yymsg(WARNING, "Unknown surface %d", TheShape.Num);
}
else{
GRegion *gr = GMODEL->regionByTag(TheShape.Num);
if(gr){
TheShape.Type = MSH_VOLUME_FROM_GMODEL;
}
else
yymsg(WARNING, "Unknown volume %d", TheShape.Num);
}
{
yyval.l = List_Create(3, 3, sizeof(Shape));
for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){
{
if(!strcmp(yyvsp[-4].c, "View")) AliasView((int)yyvsp[-2].d, 0);
Free(yyvsp[-4].c);
yyval.l = NULL;
;
break;}
case 133:
{
if(!strcmp(yyvsp[-4].c, "View")) AliasView((int)yyvsp[-2].d, 0);
Free(yyvsp[-4].c);
yyval.l = NULL;
;
break;}
case 134:
{
if(!strcmp(yyvsp[-4].c, "View")) AliasView((int)yyvsp[-2].d, 1);
Free(yyvsp[-4].c);
yyval.l = NULL;
;
break;}
case 135:
{
if(!strcmp(yyvsp[-4].c, "View")){
RemoveViewByIndex((int)yyvsp[-2].d);
{
if(!strcmp(yyvsp[-1].c, "Meshes") || !strcmp(yyvsp[-1].c, "All")){
List_Action(THEM->PhysicalGroups, Free_PhysicalGroup);
List_Reset(THEM->PhysicalGroups);
{
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);
Free(yyvsp[-2].c); Free(yyvsp[-1].c);
;
break;}
case 139:
List_Read(yyvsp[-1].l, i, &TheShape);
ColorShape(TheShape.Type, TheShape.Num, yyvsp[-3].u);
VisibilityShape(yyvsp[-1].c, i, 1);
Free(yyvsp[-1].c);
;
break;}
case 141:
VisibilityShape(yyvsp[-1].c, i, 0);
Free(yyvsp[-1].c);
;
break;}
case 142:
VisibilityShape(TheShape.Type, TheShape.Num, 1);
// 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(STATUS2, "Reading '%s'", tmpstring);
ParseFile(tmpstring, 0, 1);
// make sure we have the latest data from THEM 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->importTHEM();
GMODEL->importTHEM();
else if(!strcmp(yyvsp[-2].c, "Merge") || !strcmp(yyvsp[-2].c, "MergeWithBoundingBox")){
}
else if(!strcmp(yyvsp[-2].c, "System")){
SystemCall(yyvsp[-1].c);
Free(yyvsp[-2].c); Free(yyvsp[-1].c);
;
break;}
case 145:
{
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);
Free(yyvsp[-6].c); Free(yyvsp[-5].c); Free(yyvsp[-1].c);
;
break;}
case 146:
{
if(!strcmp(yyvsp[-6].c, "Background") && !strcmp(yyvsp[-5].c, "Mesh") && !strcmp(yyvsp[-4].c, "View")){
Post_View **vv = (Post_View **)List_Pointer_Test(CTX.post.list, (int)yyvsp[-2].d);
if(vv) {
Field *field=new PostViewField(*vv);
fields.insert(field);
BGMAddField(field);
}
Free(yyvsp[-6].c); Free(yyvsp[-5].c); Free(yyvsp[-4].c);
;
break;}
case 147:
{
if(!strcmp(yyvsp[-2].c, "Sleep")){
SleepInSeconds(yyvsp[-1].d);
Msg(GERROR, "Surface ReMeshing must be reinterfaced");
// ReMesh();

Christophe Geuzaine
committed
yymsg(GERROR, "Mesh directives are not (yet) allowed in scripts");
yymsg(GERROR, "Mesh directives are not (yet) allowed in scripts");
GMSH_PluginManager::instance()->action(yyvsp[-4].c, yyvsp[-1].c, 0);
yymsg(GERROR, "Unknown action '%s' or plugin '%s'", yyvsp[-1].c, yyvsp[-4].c);
Free(yyvsp[-4].c); Free(yyvsp[-1].c);
;
break;}
case 149:
SetBoundingBox(yyvsp[-12].d, yyvsp[-10].d, yyvsp[-8].d, yyvsp[-6].d, yyvsp[-4].d, yyvsp[-2].d);
;
break;}
case 153:
{
LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-3].d;
LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-1].d;
yylinenoImbricatedLoopsTab[ImbricatedLoop] = yylineno;
ImbricatedLoop++;
if(ImbricatedLoop > MAX_RECUR_LOOPS-1){
yymsg(GERROR, "Reached maximum number of imbricated loops");
ImbricatedLoop = MAX_RECUR_LOOPS-1;
}
if(yyvsp[-3].d > yyvsp[-1].d) skip_until("For", "EndFor");
;
break;}
case 155:
{
LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-5].d;
LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-3].d;
LoopControlVariablesTab[ImbricatedLoop][2] = yyvsp[-1].d;
yylinenoImbricatedLoopsTab[ImbricatedLoop] = yylineno;
ImbricatedLoop++;
if(ImbricatedLoop > MAX_RECUR_LOOPS-1){
yymsg(GERROR, "Reached maximum number of imbricated loops");
ImbricatedLoop = MAX_RECUR_LOOPS-1;
}
if((yyvsp[-1].d > 0. && yyvsp[-5].d > yyvsp[-3].d) || (yyvsp[-1].d < 0. && yyvsp[-5].d < yyvsp[-3].d))
{
LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-3].d;
LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-1].d;
if(!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))){
TheSymbol.val = List_Create(1, 1, sizeof(double));
yylinenoImbricatedLoopsTab[ImbricatedLoop] = yylineno;
ImbricatedLoop++;
if(ImbricatedLoop > MAX_RECUR_LOOPS-1){
yymsg(GERROR, "Reached maximum number of imbricated loops");
ImbricatedLoop = MAX_RECUR_LOOPS-1;
}
if(yyvsp[-3].d > yyvsp[-1].d) skip_until("For", "EndFor");
;
break;}