Newer
Older
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(!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) BGMWithView(*vv);
}
else{
yymsg(GERROR, "Unknown command '%s'", yyvsp[-6].c);
}
Free(yyvsp[-6].c); Free(yyvsp[-5].c); Free(yyvsp[-4].c);
;
break;}
case 128:
#line 1814 "Gmsh.y"
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);
LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-3].d;
LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-1].d;
LoopControlVariablesTab[ImbricatedLoop][2] = 1.0;
yylinenoImbricatedLoopsTab[ImbricatedLoop] = yylineno;
ImbricatedLoop++;
if(ImbricatedLoop > MAX_RECUR_LOOPS-1){
yymsg(GERROR, "Reached maximum number of imbricated loops");
ImbricatedLoop = MAX_RECUR_LOOPS-1;
}
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))
skip_until("For", "EndFor");
LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-3].d;
LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-1].d;
LoopControlVariablesTab[ImbricatedLoop][2] = 1.0;
LoopControlVariablesNameTab[ImbricatedLoop] = yyvsp[-6].c;
Symbol TheSymbol;
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);
}
yylinenoImbricatedLoopsTab[ImbricatedLoop] = yylineno;
ImbricatedLoop++;
if(ImbricatedLoop > MAX_RECUR_LOOPS-1){
yymsg(GERROR, "Reached maximum number of imbricated loops");
ImbricatedLoop = MAX_RECUR_LOOPS-1;
}
LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-5].d;
LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-3].d;
LoopControlVariablesTab[ImbricatedLoop][2] = yyvsp[-1].d;
LoopControlVariablesNameTab[ImbricatedLoop] = yyvsp[-8].c;
Symbol TheSymbol;
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);
}
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))
skip_until("For", "EndFor");
if(ImbricatedLoop <= 0){
yymsg(GERROR, "Invalid For/EndFor loop");
ImbricatedLoop = 0;
double x0 = LoopControlVariablesTab[ImbricatedLoop-1][0];
double x1 = LoopControlVariablesTab[ImbricatedLoop-1][1];
double step = LoopControlVariablesTab[ImbricatedLoop-1][2];
int do_next = (step > 0.) ? (x0+step <= x1) : (x0+step >= x1);
if(do_next){
LoopControlVariablesTab[ImbricatedLoop-1][0] +=
LoopControlVariablesTab[ImbricatedLoop-1][2];
Symbol TheSymbol;
TheSymbol.Name = LoopControlVariablesNameTab[ImbricatedLoop-1];
Symbol *pSymbol;
if(!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol)))
yymsg(GERROR, "Unknown loop variable");
else
*(double*)List_Pointer_Fast(pSymbol->val, 0) +=
LoopControlVariablesTab[ImbricatedLoop-1][2];
}
fsetpos(yyin, &yyposImbricatedLoopsTab[ImbricatedLoop-1]);
yylineno = yylinenoImbricatedLoopsTab[ImbricatedLoop-1];
}
else{
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);
ExtrudeShapes(TRANSLATE, yyvsp[-1].l,
yyvsp[-3].v[0], yyvsp[-3].v[1], yyvsp[-3].v[2], 0., 0., 0., 0., 0., 0., 0.,
NULL, yyval.l);
List_Delete(yyvsp[-1].l);
ExtrudeShapes(ROTATE, yyvsp[-1].l,
0., 0., 0., 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,
NULL, yyval.l);
List_Delete(yyvsp[-1].l);
ExtrudeShapes(TRANSLATE_ROTATE, yyvsp[-1].l,
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].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].d,
NULL, yyval.l);
List_Delete(yyvsp[-1].l);
ExtrudeShapes(TRANSLATE, yyvsp[-3].l,
yyvsp[-5].v[0], yyvsp[-5].v[1], yyvsp[-5].v[2], 0., 0., 0., 0., 0., 0., 0.,
&extr, yyval.l);
List_Delete(yyvsp[-3].l);
ExtrudeShapes(ROTATE, yyvsp[-3].l,
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,
&extr, yyval.l);
List_Delete(yyvsp[-3].l);
ExtrudeShapes(TRANSLATE_ROTATE, yyvsp[-3].l,
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,
&extr, yyval.l);
List_Delete(yyvsp[-3].l);
ExtrudeShape(TRANSLATE, MSH_POINT, (int)yyvsp[-4].d,
yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2], 0., 0., 0., 0., 0., 0., 0.,
NULL, yyval.l);
ExtrudeShape(TRANSLATE, MSH_SEGM_LINE, (int)yyvsp[-4].d,
yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2], 0., 0., 0., 0., 0., 0., 0.,
NULL, yyval.l);
ExtrudeShape(TRANSLATE, MSH_SURF_PLAN, (int)yyvsp[-4].d,
yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2], 0., 0., 0., 0., 0., 0., 0.,
NULL, yyval.l);
yyval.l = List_Create(2, 1, sizeof(Shape));
ExtrudeShape(ROTATE, MSH_POINT, (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,
NULL, yyval.l);
ExtrudeShape(ROTATE, MSH_SEGM_LINE, (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,
NULL, yyval.l);
yyval.l = List_Create(2, 1, sizeof(Shape));
ExtrudeShape(ROTATE, MSH_SURF_PLAN, (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,
NULL, yyval.l);
ExtrudeShape(TRANSLATE_ROTATE, MSH_POINT, (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,
NULL, yyval.l);
yyval.l = List_Create(2, 1, sizeof(Shape));
ExtrudeShape(TRANSLATE_ROTATE, MSH_SEGM_LINE, (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,
NULL, yyval.l);
ExtrudeShape(TRANSLATE_ROTATE, MSH_SURF_PLAN, (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,
NULL, yyval.l);
{
extr.mesh.ExtrudeMesh = false;
extr.mesh.Recombine = false;
ExtrudeShape(TRANSLATE, MSH_POINT, (int)yyvsp[-8].d,
yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], 0., 0., 0., 0., 0., 0., 0.,
&extr, yyval.l);
extr.mesh.ExtrudeMesh = false;
extr.mesh.Recombine = false;
ExtrudeShape(TRANSLATE, MSH_SEGM_LINE, (int)yyvsp[-8].d,
yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], 0., 0., 0., 0., 0., 0., 0.,
&extr, yyval.l);
extr.mesh.ExtrudeMesh = false;
extr.mesh.Recombine = false;
ExtrudeShape(TRANSLATE, MSH_SURF_PLAN, (int)yyvsp[-8].d,
yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], 0., 0., 0., 0., 0., 0., 0.,
&extr, yyval.l);
extr.mesh.ExtrudeMesh = false;
extr.mesh.Recombine = false;
ExtrudeShape(ROTATE, MSH_POINT, (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,
&extr, yyval.l);
;
break;}
{
extr.mesh.ExtrudeMesh = false;
extr.mesh.Recombine = false;
yyval.l = List_Create(2, 1, sizeof(Shape));
ExtrudeShape(ROTATE, MSH_SEGM_LINE, (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,
&extr, yyval.l);
{
yyval.l = List_Create(2, 1, sizeof(Shape));
ExtrudeShape(ROTATE, MSH_SURF_PLAN, (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,
&extr, yyval.l);
;
break;}
{
extr.mesh.ExtrudeMesh = false;
extr.mesh.Recombine = false;
;
break;}
{
yyval.l = List_Create(2, 1, sizeof(Shape));
ExtrudeShape(TRANSLATE_ROTATE, MSH_POINT, (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,
&extr, yyval.l);
;
break;}
{
extr.mesh.ExtrudeMesh = false;
extr.mesh.Recombine = false;
;
break;}
{
yyval.l = List_Create(2, 1, sizeof(Shape));
ExtrudeShape(TRANSLATE_ROTATE, MSH_SEGM_LINE, (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,
&extr, yyval.l);
;
break;}
{
extr.mesh.ExtrudeMesh = false;
extr.mesh.Recombine = false;
;
break;}
{
yyval.l = List_Create(2, 1, sizeof(Shape));
ExtrudeShape(TRANSLATE_ROTATE, MSH_SURF_PLAN, (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,
&extr, yyval.l);
;
break;}