Newer
Older

Christophe Geuzaine
committed
yymsg(WARNING, "Unknown Curve %d", ip);
else{
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);
Cdbseg101((int)yyvsp[-4].d, MSH_SEGM_CIRC, 2, yyvsp[-1].l, NULL, -1, -1, 0., 1., NULL, NULL, NULL);
yyval.s.Type = MSH_SEGM_CIRC ;
yyval.s.Num = (int)yyvsp[-4].d;
Cdbseg101((int)yyvsp[-4].d, MSH_SEGM_ELLI, 2, yyvsp[-1].l, NULL, -1, -1, 0., 1., NULL, NULL, NULL);

Christophe Geuzaine
committed
yyval.s.Type = MSH_SEGM_ELLI ;
yyval.s.Num = (int)yyvsp[-4].d;
temp = List_Create(List_Nbr(yyvsp[-3].l), 1, sizeof(int));
for(i = 0; i < List_Nbr(yyvsp[-3].l); i++){
List_Read(yyvsp[-3].l, i, &d);
}
AddCircleInDataBase ((int) yyvsp[-6].d, MSH_SEGM_CIRC, temp, yyvsp[-1].v);
List_Delete(temp);
yyval.s.Type = MSH_SEGM_CIRC ;
yyval.s.Num = (int)yyvsp[-6].d;
Cdbseg101((int)yyvsp[-14].d, MSH_SEGM_PARAMETRIC, 2, NULL, NULL, -1, -1, yyvsp[-10].d, yyvsp[-8].d, yyvsp[-6].c, yyvsp[-4].c, yyvsp[-2].c);
yyval.s.Type = MSH_SEGM_PARAMETRIC ;
yyval.s.Num = (int)yyvsp[-14].d;
Cdbz101((int)yyvsp[-4].d, MSH_PHYSICAL_LINE, 0, 0, 0, 0, 0, NULL, yyvsp[-1].l, NULL);
yyval.s.Type = MSH_PHYSICAL_LINE;
yyval.s.Num = (int)yyvsp[-4].d;
yyval.s.Type = MSH_SEGM_LOOP;
Cdbz101((int)yyvsp[-4].d, yyval.s.Type, 0, 0, 0, 0, 0, NULL, yyvsp[-1].l, NULL);
yyval.s.Num = (int)yyvsp[-4].d;
Cdbseg101((int)yyvsp[-4].d, MSH_SEGM_BSPLN, 2, yyvsp[-1].l, NULL, -1, -1, 0., 1., NULL, NULL, NULL);
yyval.s.Type = MSH_SEGM_BSPLN;
yyval.s.Num = (int)yyvsp[-4].d;
}
else

Christophe Geuzaine
committed
yymsg(GERROR, "Too few control points for BSpline %d (%d < 4)", (int)yyvsp[-4].d,
List_Nbr(yyvsp[-1].l));
Cdbseg101((int)yyvsp[-4].d, MSH_SEGM_BEZIER, 2, yyvsp[-1].l, NULL, -1, -1, 0., 1., NULL, NULL, NULL);
yyval.s.Type = MSH_SEGM_BSPLN;
yyval.s.Num = (int)yyvsp[-4].d;
}
else

Christophe Geuzaine
committed
yymsg(GERROR, "Too few control points for Bezier %d (%d < 4)", (int)yyvsp[-4].d,
List_Nbr(yyvsp[-1].l));
List_T *Temp;
int i;
double d;
if(List_Nbr(yyvsp[-5].l) + (int)yyvsp[-1].d + 1 != List_Nbr(yyvsp[-3].l)){

Christophe Geuzaine
committed
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);
Temp = List_Create(List_Nbr(yyvsp[-5].l), 1, sizeof(int));
for(i = 0; i < List_Nbr(yyvsp[-5].l); i++) {
List_Read(yyvsp[-5].l, i, &d);
AddCurveInDataBase ((int)yyvsp[-8].d, MSH_SEGM_NURBS, (int)yyvsp[-1].d, Temp, yyvsp[-3].l, -1, -1, 0., 1.);
Cdbz101((int)yyvsp[-4].d, MSH_SURF_PLAN, 0, 0, 0, 0, 0, NULL, yyvsp[-1].l, NULL);
yyval.s.Type = MSH_SURF_PLAN;
yyval.s.Num = (int)yyvsp[-4].d;
Surface *s,*support;

Christophe Geuzaine
committed
yymsg(GERROR, "Unknown Surface %d", (int)yyvsp[-4].d);
else{
Cdbz101((int)yyvsp[-8].d, MSH_SURF_PLAN, 0, 0, 0, 0, 0, NULL, yyvsp[-2].l, NULL);
s = FindSurface((int)yyvsp[-8].d, THEM);

Christophe Geuzaine
committed
yymsg(GERROR, "Unknown Surface %d", (int)yyvsp[-8].d);
else{
s->Typ = MSH_SURF_TRIMMED;
s->Support = support;
yyval.s.Type = MSH_SURF_TRIMMED;
}

Christophe Geuzaine
committed
yymsg(GERROR, "Unknown Line Loop %d", i);
else{
j = List_Nbr(el->Curves);
if(j==4)
yyval.s.Type = MSH_SURF_REGL;
else if(j==3)

Christophe Geuzaine
committed
yymsg(GERROR, "Wrong definition of Ruled Surface %d: "
(int)yyvsp[-4].d, j);
Cdbz101((int)yyvsp[-4].d, yyval.s.Type, 0, 0, 0, 0, 0, NULL, yyvsp[-1].l, NULL);
yyval.s.Num = (int)yyvsp[-4].d;
}
AddTriangulationToSurface ((int) yyvsp[-10].d, (int) yyvsp[-6].d, (int) yyvsp[-4].d, yyvsp[-2].l, yyvsp[-1].l);
CreateNurbsSurface ( (int) yyvsp[-16].d , (int)yyvsp[-4].d , (int)yyvsp[-2].d , yyvsp[-13].l, yyvsp[-10].l, yyvsp[-8].l);
yyval.s.Num = (int)yyvsp[-16].d;
CreateNurbsSurfaceSupport ((int)yyvsp[-16].d, (int) yyvsp[-4].d , (int) yyvsp[-2].d , yyvsp[-13].l, yyvsp[-10].l, yyvsp[-8].l);
Cdbz101((int)yyvsp[-4].d, MSH_PHYSICAL_SURFACE, 0, 0, 0, 0, 0, NULL, yyvsp[-1].l, NULL);
yyval.s.Type = MSH_PHYSICAL_SURFACE;
yyval.s.Num = (int)yyvsp[-4].d;
Cdbz101((int)yyvsp[-4].d, MSH_SURF_LOOP, 0, 0, 0, 0, 0, NULL, yyvsp[-1].l, NULL);
yyval.s.Type = MSH_SURF_LOOP;
yyval.s.Num = (int)yyvsp[-4].d;
Cdbz101((int)yyvsp[-4].d, MSH_VOLUME, 0, 0, 0, 0, 0, NULL, yyvsp[-1].l, NULL);
yyval.s.Type = MSH_VOLUME;
yyval.s.Num = (int)yyvsp[-4].d;
Cdbz101((int)yyvsp[-4].d, MSH_VOLUME, 0, 0, 0, 0, 0, NULL, yyvsp[-1].l, NULL);
yyval.s.Type = MSH_VOLUME;
yyval.s.Num = (int)yyvsp[-4].d;
Cdbz101((int)yyvsp[-4].d, MSH_PHYSICAL_VOLUME, 0, 0, 0, 0, 0, NULL, yyvsp[-1].l, NULL);
yyval.s.Type = MSH_PHYSICAL_VOLUME;
yyval.s.Num = (int)yyvsp[-4].d;
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);
List_Read(yyvsp[-2].l, i, &d);
TheShape.Num = (int)d;

Christophe Geuzaine
committed
yymsg(WARNING, "Unknown Point %d", TheShape.Num);
List_Read(yyvsp[-2].l, i, &d);
TheShape.Num = (int)d;

Christophe Geuzaine
committed
yymsg(WARNING, "Unknown Curve %d", TheShape.Num);
List_Read(yyvsp[-2].l, i, &d);
TheShape.Num = (int)d;

Christophe Geuzaine
committed
yymsg(WARNING, "Unknown Surface %d", TheShape.Num);
yyval.l = List_Create(3, 3, sizeof(Shape));
for(i = 0; i < List_Nbr(yyvsp[-1].l); i++){
List_Read (yyvsp[-1].l, i, &TheShape);
CopyShape(TheShape.Type, TheShape.Num, &j);
TheShape.Num = j;
if(!strcmp(yyvsp[-4].c, "View")) DuplicateView((int)yyvsp[-2].d, 0);
yyval.l = NULL;
for(i = 0; i < List_Nbr(yyvsp[-1].l); i++){
List_Read (yyvsp[-1].l, i, &TheShape);
DeleteShape(TheShape.Type, TheShape.Num);
if(!strcmp(yyvsp[-4].c, "View")) FreeView((int)yyvsp[-2].d);
Init_Mesh(THEM, 1);
for(i = 0; i < List_Nbr(yyvsp[-1].l); i++){
List_Read (yyvsp[-1].l, i, &TheShape);
ColorShape(TheShape.Type, TheShape.Num, yyvsp[-3].u);

Christophe Geuzaine
committed
}
if(!strcmp(yyvsp[-2].c, "Include")){
yyinTab[RecursionLevel++] = yyin;
if(yyvsp[-1].c[0] == '/' || yyvsp[-1].c[0] == '\\' || (strlen(yyvsp[-1].c)>2 && yyvsp[-1].c[1] == ':')){
strcpy(tmpstring, yyname);
i = strlen(yyname)-1 ;
while(i >= 0 && yyname[i] != '/' && yyname[i] != '\\') i-- ;
tmpstring[i+1] = '\0';
strcat(tmpstring, yyvsp[-1].c);
}
if((yyin = fopen(tmpstring,"r"))){
Msg(INFO, "Including '%s'", tmpstring);
strcpy(yynameTab[RecursionLevel-1], yyname);
yylinenoTab[RecursionLevel-1] = yylineno;
yylineno = 1;
strcpy(yyname, tmpstring);
while(!feof(yyin)){
yyparse();
}
// warning, warning... If we close the stream, we cannot
// call a Function defined in another file... So we just
// leave it open (arghhh)
yylineno = yylinenoTab[RecursionLevel];

Christophe Geuzaine
committed
yymsg(GERROR, "Unknown file '%s'", tmpstring) ;
yyin = yyinTab[--RecursionLevel];
}
else if(!strcmp(yyvsp[-2].c, "Print")){
if(!CTX.batch) CreateOutputFile(yyvsp[-1].c, CTX.print.format);
CreateOutputFile(yyvsp[-1].c, CTX.mesh.format);
else if(!strcmp(yyvsp[-2].c, "Merge")){
FILE *ff = yyin;
MergeProblem(yyvsp[-1].c);
yyin = ff;
}
else if(!strcmp(yyvsp[-2].c, "MergeWithBoundingBox")){
FILE *ff = yyin;
MergeProblemWithBoundingBox(yyvsp[-1].c);
yyin = ff;
}
else if(!strcmp(yyvsp[-2].c, "Open")){
FILE *ff = yyin;
OpenProblem(yyvsp[-1].c);
yyin = ff;
}
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[-2].c, "Sleep")){
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);
if(CTX.default_plugins)
GMSH_PluginManager::Instance()->Action(yyvsp[-4].c, yyvsp[-1].c, 0);
if(Tree_Nbr(THEM->Points) != Last_NumberOfPoints){
Last_NumberOfPoints = Tree_Nbr(THEM->Points);
Replot();
LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-3].d ;
LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-1].d ;
LoopControlVariablesTab[ImbricatedLoop][2] = 1.0 ;
LoopControlVariablesNameTab[ImbricatedLoop] = "" ;
fgetpos( yyin, &yyposImbricatedLoopsTab[ImbricatedLoop]);
yylinenoImbricatedLoopsTab[ImbricatedLoop] = yylineno;
ImbricatedLoop++;
LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-5].d ;
LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-3].d ;
LoopControlVariablesTab[ImbricatedLoop][2] = yyvsp[-1].d ;
LoopControlVariablesNameTab[ImbricatedLoop] = "" ;
fgetpos( yyin, &yyposImbricatedLoopsTab[ImbricatedLoop]);
yylinenoImbricatedLoopsTab[ImbricatedLoop] = yylineno;
ImbricatedLoop++;
LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-3].d ;
LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-1].d ;
LoopControlVariablesTab[ImbricatedLoop][2] = 1.0 ;
LoopControlVariablesNameTab[ImbricatedLoop] = yyvsp[-6].c ;
TheSymbol.Name = yyvsp[-6].c;
if(!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))){
TheSymbol.val = List_Create(1, 1, sizeof(double));
List_Put(TheSymbol.val, 0, &yyvsp[-3].d);
}
else{
List_Write(pSymbol->val, 0, &yyvsp[-3].d);
}
fgetpos( yyin, &yyposImbricatedLoopsTab[ImbricatedLoop]);
yylinenoImbricatedLoopsTab[ImbricatedLoop] = yylineno;
ImbricatedLoop++;
LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-5].d ;
LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-3].d ;
LoopControlVariablesTab[ImbricatedLoop][2] = yyvsp[-1].d ;
LoopControlVariablesNameTab[ImbricatedLoop] = yyvsp[-8].c ;
if(!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))){
TheSymbol.val = List_Create(1, 1, sizeof(double));
List_Put(TheSymbol.val, 0, &yyvsp[-5].d);
}
else{
List_Write(pSymbol->val, 0, &yyvsp[-5].d);
}
fgetpos( yyin, &yyposImbricatedLoopsTab[ImbricatedLoop]);
yylinenoImbricatedLoopsTab[ImbricatedLoop] = yylineno;
ImbricatedLoop++;
if(LoopControlVariablesTab[ImbricatedLoop-1][1] >
LoopControlVariablesTab[ImbricatedLoop-1][0]){
LoopControlVariablesTab[ImbricatedLoop-1][0] +=
LoopControlVariablesTab[ImbricatedLoop-1][2];
if(strlen(LoopControlVariablesNameTab[ImbricatedLoop-1])){
TheSymbol.Name = LoopControlVariablesNameTab[ImbricatedLoop-1];
*(double*)List_Pointer_Fast(pSymbol->val, 0) +=
LoopControlVariablesTab[ImbricatedLoop-1][2] ;
fsetpos( yyin, &yyposImbricatedLoopsTab[ImbricatedLoop-1]);
yylineno = yylinenoImbricatedLoopsTab[ImbricatedLoop-1];
ImbricatedLoop--;
}
if(!FunctionManager::Instance()->createFunction(yyvsp[0].c, yyin, yyname, yylineno))
yymsg(GERROR, "Redefinition of function %s", yyvsp[0].c);
if(!FunctionManager::Instance()->leaveFunction(&yyin, yyname, yylineno))

Christophe Geuzaine
committed
yymsg(GERROR, "Error while exiting function");
if(!FunctionManager::Instance()->enterFunction(yyvsp[-1].c, &yyin, yyname, yylineno))
yymsg(GERROR, "Unknown function %s", yyvsp[-1].c);
TheShape.Num = Extrude_ProtudePoint(TRANSLATE, (int)yyvsp[-4].d, yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2],
0., 0., 0., 0., 0., 0., 0.,
&pc, &prc, 1, NULL);
TheShape.Type = MSH_POINT;
yyval.l = List_Create(1, 1, sizeof(Shape));
List_Add(yyval.l, &TheShape);
TheShape.Num = Extrude_ProtudePoint(ROTATE, (int)yyvsp[-8].d, 0., 0., 0.,
yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].v[0], yyvsp[-4].v[1], yyvsp[-4].v[2], yyvsp[-2].d,
&pc, &prc, 1, NULL);
TheShape.Type = MSH_POINT;
yyval.l = List_Create(1, 1, sizeof(Shape));
List_Add(yyval.l, &TheShape);
TheShape.Num = Extrude_ProtudePoint(TRANSLATE_ROTATE, (int)yyvsp[-10].d, 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].v[0], yyvsp[-4].v[1], yyvsp[-4].v[2], yyvsp[-2].d,
&pc, &prc, 1, NULL);
TheShape.Type = MSH_POINT;
yyval.l = List_Create(1, 1, sizeof(Shape));
List_Add(yyval.l, &TheShape);
TheShape.Num = Extrude_ProtudePoint(TRANSLATE, (int)yyvsp[-8].d, yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2],
0., 0., 0., 0., 0., 0., 0.,
&pc, &prc, 1, &extr);
TheShape.Type = MSH_POINT;
yyval.l = List_Create(1, 1, sizeof(Shape));
List_Add(yyval.l, &TheShape);
TheShape.Num = Extrude_ProtudePoint(ROTATE, (int)yyvsp[-12].d, 0., 0., 0.,
yyvsp[-10].v[0], yyvsp[-10].v[1], yyvsp[-10].v[2], yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].d,
&pc, &prc, 1, &extr);
TheShape.Type = MSH_POINT;
yyval.l = List_Create(1, 1, sizeof(Shape));
List_Add(yyval.l, &TheShape);
TheShape.Num = Extrude_ProtudePoint(TRANSLATE_ROTATE, (int)yyvsp[-14].d, yyvsp[-12].v[0], yyvsp[-12].v[1], yyvsp[-12].v[2],
yyvsp[-10].v[0], yyvsp[-10].v[1], yyvsp[-10].v[2], yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].d,
&pc, &prc, 1, &extr);
TheShape.Type = MSH_POINT;
yyval.l = List_Create(1, 1, sizeof(Shape));
List_Add(yyval.l, &TheShape);
#line 2278 "Gmsh.y"
{
Surface *ps;
TheShape.Num = Extrude_ProtudeCurve(TRANSLATE, (int)yyvsp[-4].d, yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2],
0., 0., 0., 0., 0., 0., 0.,
&ps, 1, NULL);
Curve *c = FindCurve(TheShape.Num, THEM);
if(!c){
TheShape.Type = 0;
}
else{
TheShape.Type = c->Typ;
}
yyval.l = List_Create(1, 1, sizeof(Shape));
List_Add(yyval.l, &TheShape);
#line 2295 "Gmsh.y"
{
Surface *ps;
TheShape.Num = Extrude_ProtudeCurve(ROTATE, (int)yyvsp[-8].d, 0., 0., 0.,
yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].v[0], yyvsp[-4].v[1], yyvsp[-4].v[2], yyvsp[-2].d,
&ps, 1, NULL);
Curve *c = FindCurve(TheShape.Num, THEM);
if(!c){
TheShape.Type = 0;
}
else{
TheShape.Type = c->Typ;
}
yyval.l = List_Create(1, 1, sizeof(Shape));
List_Add(yyval.l, &TheShape);
Surface *ps;
TheShape.Num = Extrude_ProtudeCurve(TRANSLATE_ROTATE, (int)yyvsp[-10].d, 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].v[0], yyvsp[-4].v[1], yyvsp[-4].v[2], yyvsp[-2].d,
&ps, 1, NULL);
Curve *c = FindCurve(TheShape.Num, THEM);
if(!c){
TheShape.Type = 0;
}
else{
TheShape.Type = c->Typ;
}
yyval.l = List_Create(1, 1, sizeof(Shape));
List_Add(yyval.l, &TheShape);
extr.mesh.ExtrudeMesh = false;
extr.mesh.Recombine = false;
#line 2334 "Gmsh.y"
{
Surface *ps;
TheShape.Num = Extrude_ProtudeCurve(TRANSLATE, (int)yyvsp[-8].d, yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2],
0., 0., 0., 0., 0., 0., 0.,
&ps, 1, &extr);
Curve *c = FindCurve(TheShape.Num, THEM);
if(!c){
TheShape.Type = 0;
}
else{
TheShape.Type = c->Typ;
}
yyval.l = List_Create(1, 1, sizeof(Shape));
List_Add(yyval.l, &TheShape);
extr.mesh.ExtrudeMesh = false;
extr.mesh.Recombine = false;
Surface *ps;
TheShape.Num = Extrude_ProtudeCurve(ROTATE, (int)yyvsp[-12].d, 0., 0., 0.,
yyvsp[-10].v[0], yyvsp[-10].v[1], yyvsp[-10].v[2], yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].d,
&ps, 1, &extr);
Curve *c = FindCurve(TheShape.Num, THEM);
if(!c){
TheShape.Type = 0;
}
else{
TheShape.Type = c->Typ;
}
yyval.l = List_Create(1, 1, sizeof(Shape));
List_Add(yyval.l, &TheShape);
extr.mesh.ExtrudeMesh = false;
extr.mesh.Recombine = false;
#line 2378 "Gmsh.y"
{
Surface *ps;
TheShape.Num = Extrude_ProtudeCurve(TRANSLATE_ROTATE, (int)yyvsp[-14].d, yyvsp[-12].v[0], yyvsp[-12].v[1], yyvsp[-12].v[2],
yyvsp[-10].v[0], yyvsp[-10].v[1], yyvsp[-10].v[2], yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].d,
&ps, 1, &extr);
Curve *c = FindCurve(TheShape.Num, THEM);
if(!c){
TheShape.Type = 0;
}
else{
TheShape.Type = c->Typ;
}
yyval.l = List_Create(1, 1, sizeof(Shape));
List_Add(yyval.l, &TheShape);
#line 2398 "Gmsh.y"
{
TheShape.Num = Extrude_ProtudeSurface(TRANSLATE, (int)yyvsp[-4].d, yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2],
0., 0., 0., 0., 0., 0., 0.,
0, NULL);
Surface *s = FindSurface(TheShape.Num, THEM);
if(!s){
TheShape.Type = 0;
}
else{
TheShape.Type = s->Typ;
}
yyval.l = List_Create(1, 1, sizeof(Shape));
List_Add(yyval.l, &TheShape);
#line 2414 "Gmsh.y"
{
TheShape.Num = Extrude_ProtudeSurface(ROTATE, (int)yyvsp[-8].d, 0., 0., 0.,
yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].v[0], yyvsp[-4].v[1], yyvsp[-4].v[2], yyvsp[-2].d,
0, NULL);
Surface *s = FindSurface(TheShape.Num, THEM);
if(!s){
TheShape.Type = 0;
}
else{
TheShape.Type = s->Typ;
}
yyval.l = List_Create(1, 1, sizeof(Shape));
List_Add(yyval.l, &TheShape);
#line 2430 "Gmsh.y"
{
TheShape.Num = Extrude_ProtudeSurface(TRANSLATE_ROTATE, (int)yyvsp[-10].d, 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].v[0], yyvsp[-4].v[1], yyvsp[-4].v[2], yyvsp[-2].d,
0, NULL);
Surface *s = FindSurface(TheShape.Num, THEM);
if(!s){
TheShape.Type = 0;
}
else{
TheShape.Type = s->Typ;
}
yyval.l = List_Create(1, 1, sizeof(Shape));
List_Add(yyval.l, &TheShape);
extr.mesh.ExtrudeMesh = false;
extr.mesh.Recombine = false;
TheShape.Num = Extrude_ProtudeSurface(TRANSLATE, (int)yyvsp[-8].d, yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2],
0., 0., 0., 0., 0., 0., 0.,
vol, &extr);
Surface *s = FindSurface(TheShape.Num, THEM);
if(!s){
TheShape.Type = 0;
}
else{
TheShape.Type = s->Typ;
}
yyval.l = List_Create(1, 1, sizeof(Shape));
List_Add(yyval.l, &TheShape);
extr.mesh.ExtrudeMesh = false;
extr.mesh.Recombine = false;
TheShape.Num = Extrude_ProtudeSurface(ROTATE, (int)yyvsp[-12].d, 0., 0., 0.,
yyvsp[-10].v[0], yyvsp[-10].v[1], yyvsp[-10].v[2], yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].d,
vol, &extr);
Surface *s = FindSurface(TheShape.Num, THEM);
if(!s){
TheShape.Type = 0;
}
else{
TheShape.Type = s->Typ;
}
yyval.l = List_Create(1, 1, sizeof(Shape));
List_Add(yyval.l, &TheShape);
extr.mesh.ExtrudeMesh = false;
extr.mesh.Recombine = false;
TheShape.Num = Extrude_ProtudeSurface(TRANSLATE_ROTATE, (int)yyvsp[-14].d, yyvsp[-12].v[0], yyvsp[-12].v[1], yyvsp[-12].v[2],
yyvsp[-10].v[0], yyvsp[-10].v[1], yyvsp[-10].v[2], yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].d,
vol, &extr);
Surface *s = FindSurface(TheShape.Num, THEM);
if(!s){
TheShape.Type = 0;
}
else{
TheShape.Type = s->Typ;