diff --git a/Geo/CAD.cpp b/Geo/CAD.cpp index 86e152bfd7bbf8ab56c8dc05fffb7fe5c79c50d4..7265151a671db69233ca972e39fb189f7670da70 100644 --- a/Geo/CAD.cpp +++ b/Geo/CAD.cpp @@ -1,4 +1,4 @@ -// $Id: CAD.cpp,v 1.36 2001-11-12 10:26:33 geuzaine Exp $ +// $Id: CAD.cpp,v 1.37 2001-11-12 11:25:22 geuzaine Exp $ #include "Gmsh.h" #include "Numeric.h" @@ -147,8 +147,6 @@ Vertex *FindVertex(int inum, Mesh *M){ return NULL; } - - Curve *FindCurve(int inum, Mesh *M){ Curve C,*pc; pc = &C; @@ -608,11 +606,11 @@ static void vecmat4x4(double mat[4][4],double vec[4], double res[4]){ } } -void ApplyTransformationToPoint ( double matrix[4][4], Vertex *v ){ +void ApplyTransformationToPoint(double matrix[4][4], Vertex *v){ double pos[4],vec[4]; if(!ListOfTransformedPoints) - ListOfTransformedPoints = List_Create(2,2,sizeof(int)); + ListOfTransformedPoints = List_Create(50,50,sizeof(int)); if(!List_Search(ListOfTransformedPoints,&v->Num,fcmp_absint)){ List_Add(ListOfTransformedPoints,&v->Num); @@ -795,23 +793,28 @@ void ProtudeXYZ (double &x, double &y, double &z, ExtrudeParams *e){ double matrix[4][4]; double T[3]; Vertex v(x,y,z); + T[0] = -e->geo.pt[0]; T[1] = -e->geo.pt[1]; T[2] = -e->geo.pt[2]; - List_Reset(ListOfTransformedPoints); SetTranslationMatrix(matrix,T); - ApplyTransformationToPoint(matrix,&v); List_Reset(ListOfTransformedPoints); - SetRotationMatrix(matrix,e->geo.axe,e->geo.angle); ApplyTransformationToPoint(matrix,&v); + + SetRotationMatrix(matrix,e->geo.axe,e->geo.angle); List_Reset(ListOfTransformedPoints); + ApplyTransformationToPoint(matrix,&v); + T[0] = -T[0]; T[1] = -T[1]; T[2] = -T[2]; SetTranslationMatrix(matrix,T); - ApplyTransformationToPoint(matrix,&v); List_Reset(ListOfTransformedPoints); + ApplyTransformationToPoint(matrix,&v); + x = v.Pos.X; y = v.Pos.Y; z = v.Pos.Z; + + List_Reset(ListOfTransformedPoints); } void Extrude_ProtudePoint(int type, int ip, @@ -839,8 +842,8 @@ void Extrude_ProtudePoint(int type, int ip, case TRANSLATE : T[0] = T0; T[1] = T1; T[2] = T2; SetTranslationMatrix(matrix,T); - ApplyTransformationToPoint(matrix,chapeau); List_Reset(ListOfTransformedPoints); + ApplyTransformationToPoint(matrix,chapeau); if(!comparePosition(&pv,&chapeau)) return ; c = Create_Curve(NEWLINE(),MSH_SEGM_LINE,1,NULL,NULL,-1,-1,0.,1.); @@ -858,18 +861,18 @@ void Extrude_ProtudePoint(int type, int ip, case ROTATE : T[0] = -X0; T[1] = -X1; T[2] = -X2; SetTranslationMatrix(matrix,T); - ApplyTransformationToPoint(matrix,chapeau); List_Reset(ListOfTransformedPoints); + ApplyTransformationToPoint(matrix,chapeau); Ax[0] = A0; Ax[1] = A1; Ax[2] = A2; SetRotationMatrix(matrix,Ax,alpha); - ApplyTransformationToPoint(matrix,chapeau); List_Reset(ListOfTransformedPoints); + ApplyTransformationToPoint(matrix,chapeau); T[0] = X0; T[1] = X1; T[2] = X2; SetTranslationMatrix(matrix,T); - ApplyTransformationToPoint(matrix,chapeau); List_Reset(ListOfTransformedPoints); + ApplyTransformationToPoint(matrix,chapeau); if(!comparePosition(&pv,&chapeau)) return ; c = Create_Curve(NEWLINE(),MSH_SEGM_CIRC,1,NULL,NULL,-1,-1,0.,1.); @@ -906,23 +909,23 @@ void Extrude_ProtudePoint(int type, int ip, T[0] = -X0; T[1] = -X1; T[2] = -X2; SetTranslationMatrix(matrix,T); - ApplyTransformationToPoint(matrix,pv); List_Reset(ListOfTransformedPoints); + ApplyTransformationToPoint(matrix,pv); Ax[0] = A0; Ax[1] = A1; Ax[2] = A2; SetRotationMatrix(matrix,Ax,alpha/d); - ApplyTransformationToPoint(matrix,pv); List_Reset(ListOfTransformedPoints); + ApplyTransformationToPoint(matrix,pv); T[0] = X0; T[1] = X1; T[2] = X2; SetTranslationMatrix(matrix,T); - ApplyTransformationToPoint(matrix,pv); List_Reset(ListOfTransformedPoints); + ApplyTransformationToPoint(matrix,pv); T[0] = T0/d; T[1] = T1/d; T[2] = T2/d; SetTranslationMatrix(matrix,T); - ApplyTransformationToPoint(matrix,pv); List_Reset(ListOfTransformedPoints); + ApplyTransformationToPoint(matrix,pv); List_Add(c->Control_Points,&pv); } @@ -940,13 +943,14 @@ void Extrude_ProtudePoint(int type, int ip, *pc = c; *prc = FindCurve(-c->Num,THEM); + List_Reset(ListOfTransformedPoints); } Surface *Extrude_ProtudeCurve(int type, int ic, double T0, double T1, double T2, double A0, double A1, double A2, - double X0, double X1, double X2, - double alpha, ExtrudeParams *e){ + double X0, double X1, double X2, double alpha, + int final, ExtrudeParams *e){ double matrix[4][4],T[3],Ax[3]; Curve *CurveBeg,*CurveEnd; Curve *ReverseChapeau,*ReverseBeg,*ReverseEnd; @@ -971,45 +975,45 @@ Surface *Extrude_ProtudeCurve(int type, int ic, case TRANSLATE : T[0] = T0; T[1] = T1; T[2] = T2; SetTranslationMatrix(matrix,T); - ApplyTransformationToCurve(matrix,chapeau); List_Reset(ListOfTransformedPoints); + ApplyTransformationToCurve(matrix,chapeau); break; case ROTATE : T[0] = -X0; T[1] = -X1; T[2] = -X2; SetTranslationMatrix(matrix,T); - ApplyTransformationToCurve(matrix,chapeau); List_Reset(ListOfTransformedPoints); + ApplyTransformationToCurve(matrix,chapeau); Ax[0] = A0; Ax[1] = A1; Ax[2] = A2; SetRotationMatrix(matrix,Ax,alpha); - ApplyTransformationToCurve(matrix,chapeau); List_Reset(ListOfTransformedPoints); + ApplyTransformationToCurve(matrix,chapeau); T[0] = X0; T[1] = X1; T[2] = X2; SetTranslationMatrix(matrix,T); - ApplyTransformationToCurve(matrix,chapeau); List_Reset(ListOfTransformedPoints); + ApplyTransformationToCurve(matrix,chapeau); break; case TRANSLATE_ROTATE : T[0] = -X0; T[1] = -X1; T[2] = -X2; SetTranslationMatrix(matrix,T); - ApplyTransformationToCurve(matrix,chapeau); List_Reset(ListOfTransformedPoints); + ApplyTransformationToCurve(matrix,chapeau); Ax[0] = A0; Ax[1] = A1; Ax[2] = A2; SetRotationMatrix(matrix,Ax,alpha); - ApplyTransformationToCurve(matrix,chapeau); List_Reset(ListOfTransformedPoints); + ApplyTransformationToCurve(matrix,chapeau); T[0] = X0; T[1] = X1; T[2] = X2; SetTranslationMatrix(matrix,T); - ApplyTransformationToCurve(matrix,chapeau); List_Reset(ListOfTransformedPoints); + ApplyTransformationToCurve(matrix,chapeau); T[0] = T0; T[1] = T1; T[2] = T2; SetTranslationMatrix(matrix,T); - ApplyTransformationToCurve(matrix,chapeau); List_Reset(ListOfTransformedPoints); + ApplyTransformationToCurve(matrix,chapeau); break; default : Msg(GERROR, "Unknown extrusion type"); @@ -1022,7 +1026,6 @@ Surface *Extrude_ProtudeCurve(int type, int ic, Extrude_ProtudePoint(type,pc->end->Num,T0,T1,T2, A0,A1,A2,X0,X1,X2,alpha, &CurveEnd,&ReverseEnd,e); - List_Reset(ListOfTransformedPoints); if(!CurveBeg && !CurveEnd) return NULL; @@ -1059,7 +1062,14 @@ Surface *Extrude_ProtudeCurve(int type, int ic, End_Surface(s); Tree_Add(THEM->Surfaces,&s); - return s; + List_Reset(ListOfTransformedPoints); + + if(final && CTX.geom.auto_coherence){ + ReplaceAllDuplicates(THEM); + return NULL; + } + else + return s; } void Extrude_ProtudeSurface(int type, int is, @@ -1110,7 +1120,7 @@ void Extrude_ProtudeSurface(int type, int is, for(i=0;i<List_Nbr(ps->Generatrices);i++){ List_Read(ps->Generatrices,i,&c); - s = Extrude_ProtudeCurve(type,c->Num,T0,T1,T2,A0,A1,A2,X0,X1,X2,alpha,e); + s = Extrude_ProtudeCurve(type,c->Num,T0,T1,T2,A0,A1,A2,X0,X1,X2,alpha,0,e); if(pv && s) List_Add(pv->Surfaces,&s); } @@ -1118,45 +1128,45 @@ void Extrude_ProtudeSurface(int type, int is, case TRANSLATE : T[0] = T0; T[1] = T1; T[2] = T2; SetTranslationMatrix(matrix,T); - ApplyTransformationToSurface(matrix,chapeau); List_Reset(ListOfTransformedPoints); + ApplyTransformationToSurface(matrix,chapeau); break; case ROTATE : T[0] = -X0; T[1] = -X1; T[2] = -X2; SetTranslationMatrix(matrix,T); - ApplyTransformationToSurface(matrix,chapeau); List_Reset(ListOfTransformedPoints); + ApplyTransformationToSurface(matrix,chapeau); Ax[0] = A0; Ax[1] = A1; Ax[2] = A2; SetRotationMatrix(matrix,Ax,alpha); - ApplyTransformationToSurface(matrix,chapeau); List_Reset(ListOfTransformedPoints); + ApplyTransformationToSurface(matrix,chapeau); T[0] = X0; T[1] = X1; T[2] = X2; SetTranslationMatrix(matrix,T); - ApplyTransformationToSurface(matrix,chapeau); List_Reset(ListOfTransformedPoints); + ApplyTransformationToSurface(matrix,chapeau); break; case TRANSLATE_ROTATE : T[0] = -X0; T[1] = -X1; T[2] = -X2; SetTranslationMatrix(matrix,T); - ApplyTransformationToSurface(matrix,chapeau); List_Reset(ListOfTransformedPoints); + ApplyTransformationToSurface(matrix,chapeau); Ax[0] = A0; Ax[1] = A1; Ax[2] = A2; SetRotationMatrix(matrix,Ax,alpha); - ApplyTransformationToSurface(matrix,chapeau); List_Reset(ListOfTransformedPoints); + ApplyTransformationToSurface(matrix,chapeau); T[0] = X0; T[1] = X1; T[2] = X2; SetTranslationMatrix(matrix,T); - ApplyTransformationToSurface(matrix,chapeau); List_Reset(ListOfTransformedPoints); + ApplyTransformationToSurface(matrix,chapeau); T[0] = T0; T[1] = T1; T[2] = T2; SetTranslationMatrix(matrix,T); - ApplyTransformationToSurface(matrix,chapeau); List_Reset(ListOfTransformedPoints); + ApplyTransformationToSurface(matrix,chapeau); break; default : Msg(GERROR, "Unknown extrusion type"); @@ -1172,9 +1182,9 @@ void Extrude_ProtudeSurface(int type, int is, if(pv) Tree_Add(THEM->Volumes,&pv); - if(CTX.geom.auto_coherence) ReplaceAllDuplicates ( THEM ); - List_Reset(ListOfTransformedPoints); + if(CTX.geom.auto_coherence) ReplaceAllDuplicates(THEM); + List_Reset(ListOfTransformedPoints); } void DivideCurve (Curve *c , double u, Vertex *v, Curve **c1, Curve **c2){ @@ -1318,7 +1328,7 @@ void MaxNumSurface(void *a, void *b){ THEM->MaxSurfaceNum = MAX(THEM->MaxSurfaceNum,s->Num); } -void ReplaceDuplicatePoints (Mesh *m){ +void ReplaceDuplicatePoints(Mesh *m){ List_T *All; Tree_T *allNonDulpicatedPoints; Vertex *v; @@ -1394,7 +1404,7 @@ void ReplaceDuplicatePoints (Mesh *m){ } -void ReplaceDuplicateCurves (Mesh *m){ +void ReplaceDuplicateCurves(Mesh *m){ List_T *All; Curve *c,*c2; Surface *s; @@ -1455,7 +1465,7 @@ void ReplaceDuplicateCurves (Mesh *m){ } -void ReplaceDuplicateSurfaces (Mesh *m){ +void ReplaceDuplicateSurfaces(Mesh *m){ List_T *All; Surface *s; Volume *vol; @@ -1503,43 +1513,33 @@ void ReplaceDuplicateSurfaces (Mesh *m){ } -void ReplaceAllDuplicates (Mesh *m){ +void ReplaceAllDuplicates(Mesh *m){ ReplaceDuplicatePoints(m); ReplaceDuplicateCurves(m); ReplaceDuplicateSurfaces(m); } -/* NEW CAD FUNCTIONS */ void ModifyLcPoint(int ip, double lc){ Vertex *v = FindPoint(ip,THEM); - if(v)v->lc = lc; -} - -void ApplicationOnPoint(int ip,double matrix[4][4]){ - Vertex *v = FindPoint(ip,THEM); - if(v)ApplyTransformationToPoint ( matrix, v ); -} - -void ApplicationOnLine(int ip, double matrix[4][4]){ - Curve *c = FindCurve(ip,THEM); - if(c)ApplyTransformationToCurve ( matrix, c ); -} - -void ApplicationOnSurface(int ip, double matrix[4][4]){ - Surface *s = FindSurface(ip,THEM); - if(s)ApplyTransformationToSurface ( matrix, s ); + if(v) v->lc = lc; } void ApplicationOnShapes(double matrix[4][4], List_T *ListShapes){ int i; Shape O; + Vertex *v; + Curve *c; + Surface *s; + List_Reset(ListOfTransformedPoints); + for(i=0;i<List_Nbr(ListShapes);i++){ List_Read(ListShapes,i,&O); switch(O.Type){ case MSH_POINT: - ApplicationOnPoint(O.Num,matrix); + v = FindPoint(O.Num,THEM); + if(v) ApplyTransformationToPoint(matrix, v); break; case MSH_SEGM_LINE: case MSH_SEGM_SPLN: @@ -1548,13 +1548,15 @@ void ApplicationOnShapes(double matrix[4][4], List_T *ListShapes){ case MSH_SEGM_CIRC: case MSH_SEGM_ELLI: case MSH_SEGM_NURBS: - ApplicationOnLine(O.Num,matrix); + c = FindCurve(O.Num,THEM); + if(c) ApplyTransformationToCurve(matrix, c); break; case MSH_SURF_NURBS : case MSH_SURF_REGL : case MSH_SURF_TRIC : case MSH_SURF_PLAN : - ApplicationOnSurface(O.Num,matrix); + s = FindSurface(O.Num,THEM); + if(s) ApplyTransformationToSurface(matrix, s); break; default: Msg(GERROR, "Impossible to apply transformation on entity %d (of type %d)", @@ -1562,48 +1564,61 @@ void ApplicationOnShapes(double matrix[4][4], List_T *ListShapes){ break; } } + List_Reset(ListOfTransformedPoints); } void TranslateShapes(double X,double Y,double Z, List_T *ListShapes, int isFinal){ double T[3],matrix[4][4]; - T[0] = X;T[1] = Y;T[2] = Z; + + T[0] = X; T[1] = Y; T[2] = Z; SetTranslationMatrix(matrix,T); ApplicationOnShapes(matrix,ListShapes); - if(CTX.geom.auto_coherence && isFinal) ReplaceAllDuplicates ( THEM ); + + if(CTX.geom.auto_coherence && isFinal) ReplaceAllDuplicates(THEM); } void DilatShapes(double X,double Y,double Z, double A, List_T *ListShapes, int isFinal){ double T[3],matrix[4][4]; - T[0] = X;T[1] = Y;T[2] = Z; + + T[0] = X; T[1] = Y; T[2] = Z; SetDilatationMatrix(matrix,T,A); ApplicationOnShapes(matrix,ListShapes); - if(CTX.geom.auto_coherence) ReplaceAllDuplicates ( THEM ); + + if(CTX.geom.auto_coherence) ReplaceAllDuplicates(THEM); } void RotateShapes (double Ax,double Ay,double Az, double Px,double Py, double Pz, double alpha, List_T *ListShapes){ - double A[3],matrix[4][4]; - A[0] = Ax;A[1] = Ay;A[2] = Az; - TranslateShapes(-Px,-Py,-Pz,ListShapes,0); - List_Reset(ListOfTransformedPoints); + double A[3], T[3], matrix[4][4]; + + T[0] = -Px; T[1] = -Py; T[2] = -Pz; + SetTranslationMatrix(matrix,T); + ApplicationOnShapes(matrix,ListShapes); + + A[0] = Ax; A[1] = Ay; A[2] = Az; SetRotationMatrix(matrix,A,alpha); ApplicationOnShapes(matrix,ListShapes); - TranslateShapes(Px,Py,Pz,ListShapes,0); - List_Reset(ListOfTransformedPoints); - if(CTX.geom.auto_coherence) ReplaceAllDuplicates ( THEM ); + + T[0] = Px; T[1] = Py; T[2] = Pz; + SetTranslationMatrix(matrix,T); + ApplicationOnShapes(matrix,ListShapes); + + if(CTX.geom.auto_coherence) ReplaceAllDuplicates(THEM); } void SymmetryShapes (double A,double B,double C, double D, List_T *ListShapes, int x){ double matrix[4][4]; + SetSymmetryMatrix(matrix,A,B,C,D); ApplicationOnShapes(matrix,ListShapes); - if(CTX.geom.auto_coherence) ReplaceAllDuplicates ( THEM ); + + if(CTX.geom.auto_coherence) ReplaceAllDuplicates(THEM); } diff --git a/Geo/CAD.h b/Geo/CAD.h index 5978d69991d27dbef1463a99a7e59a9759813ef3..d2e1048e3a63bce7d67f209d9e4cbac0d36f645c 100644 --- a/Geo/CAD.h +++ b/Geo/CAD.h @@ -34,7 +34,7 @@ Surface *Extrude_ProtudeCurve(int type, int ic, double T0, double T1, double T2, double A0, double A1, double A2, double X0, double X1, double X2, double alpha, - ExtrudeParams *e); + int final, ExtrudeParams *e); void Extrude_ProtudeSurface(int type, int is, double T0, double T1, double T2, double A0, double A1, double A2, diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp index d094f07cd5e27c80050cb0efbaf5b622ff853c12..63611366675083be8e10de69919d23ececd5afc6 100644 --- a/Parser/Gmsh.tab.cpp +++ b/Parser/Gmsh.tab.cpp @@ -177,7 +177,7 @@ #line 1 "Gmsh.y" -// $Id: Gmsh.tab.cpp,v 1.124 2001-11-12 10:26:33 geuzaine Exp $ +// $Id: Gmsh.tab.cpp,v 1.125 2001-11-12 11:25:22 geuzaine Exp $ #include <stdarg.h> #ifndef _NOPLUGIN @@ -4989,21 +4989,21 @@ case 227: #line 1789 "Gmsh.y" { 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.,NULL); + 0.,0.,0.,0.,0.,0.,0.,1,NULL); ; break;} case 228: #line 1794 "Gmsh.y" { 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,NULL); + 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,1,NULL); ; break;} case 229: #line 1799 "Gmsh.y" { 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,NULL); + 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,1,NULL); ; break;} case 230: @@ -5017,7 +5017,7 @@ case 231: #line 1809 "Gmsh.y" { 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.,&extr); + 0.,0.,0.,0.,0.,0.,0.,1,&extr); ; break;} case 232: @@ -5031,7 +5031,7 @@ case 233: #line 1819 "Gmsh.y" { 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,&extr); + 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,1,&extr); ; break;} case 234: @@ -5045,7 +5045,7 @@ case 235: #line 1829 "Gmsh.y" { 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,&extr); + 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,1,&extr); ; break;} case 236: diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y index a491fa66d7f584ba50d8024a5af8c1b7d8329263..d97cac8f893570bab1e5ceb845b94403c52bdc02 100644 --- a/Parser/Gmsh.y +++ b/Parser/Gmsh.y @@ -1,6 +1,6 @@ %{ -// $Id: Gmsh.y,v 1.109 2001-11-12 10:26:33 geuzaine Exp $ +// $Id: Gmsh.y,v 1.110 2001-11-12 11:25:22 geuzaine Exp $ #include <stdarg.h> #ifndef _NOPLUGIN @@ -1788,17 +1788,17 @@ Extrude : | tExtrude tLine '{' FExpr ',' VExpr '}' tEND { Extrude_ProtudeCurve(TRANSLATE,(int)$4,$6[0],$6[1],$6[2], - 0.,0.,0.,0.,0.,0.,0.,NULL); + 0.,0.,0.,0.,0.,0.,0.,1,NULL); } | tExtrude tLine '{' FExpr ',' VExpr ',' VExpr ',' FExpr '}' tEND { Extrude_ProtudeCurve(ROTATE,(int)$4,0.,0.,0., - $6[0],$6[1],$6[2],$8[0],$8[1],$8[2],$10,NULL); + $6[0],$6[1],$6[2],$8[0],$8[1],$8[2],$10,1,NULL); } | tExtrude tLine '{' FExpr ',' VExpr ',' VExpr ',' VExpr ',' FExpr '}' tEND { Extrude_ProtudeCurve(TRANSLATE_ROTATE,(int)$4,$6[0],$6[1],$6[2], - $8[0],$8[1],$8[2],$10[0],$10[1],$10[2],$12,NULL); + $8[0],$8[1],$8[2],$10[0],$10[1],$10[2],$12,1,NULL); } | tExtrude tLine '{' FExpr ',' VExpr '}' { @@ -1808,7 +1808,7 @@ Extrude : '{' ExtrudeParameters '}' tEND { Extrude_ProtudeCurve(TRANSLATE,(int)$4,$6[0],$6[1],$6[2], - 0.,0.,0.,0.,0.,0.,0.,&extr); + 0.,0.,0.,0.,0.,0.,0.,1,&extr); } | tExtrude tLine '{' FExpr ',' VExpr ',' VExpr ',' FExpr '}' { @@ -1818,7 +1818,7 @@ Extrude : '{' ExtrudeParameters '}' tEND { Extrude_ProtudeCurve(ROTATE,(int)$4,0.,0.,0., - $6[0],$6[1],$6[2],$8[0],$8[1],$8[2],$10,&extr); + $6[0],$6[1],$6[2],$8[0],$8[1],$8[2],$10,1,&extr); } | tExtrude tLine '{' FExpr ',' VExpr ',' VExpr ',' VExpr ',' FExpr '}' { @@ -1828,7 +1828,7 @@ Extrude : '{' ExtrudeParameters '}' tEND { Extrude_ProtudeCurve(TRANSLATE_ROTATE,(int)$4,$6[0],$6[1],$6[2], - $8[0],$8[1],$8[2],$10[0],$10[1],$10[2],$12,&extr); + $8[0],$8[1],$8[2],$10[0],$10[1],$10[2],$12,1,&extr); } /* -------- Surfaces -------- */ diff --git a/Parser/Gmsh.yy.cpp b/Parser/Gmsh.yy.cpp index 12ddd7d6be61e8636ef28744c6f470dc96f4d732..5b8ac98356c21222bf9bc0018835aff94b28d592 100644 --- a/Parser/Gmsh.yy.cpp +++ b/Parser/Gmsh.yy.cpp @@ -2,7 +2,7 @@ /* A lexical scanner generated by flex */ /* Scanner skeleton version: - * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.124 2001-11-12 10:26:34 geuzaine Exp $ + * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.125 2001-11-12 11:25:22 geuzaine Exp $ */ #define FLEX_SCANNER @@ -1000,7 +1000,7 @@ char *yytext; #define INITIAL 0 #line 2 "Gmsh.l" -// $Id: Gmsh.yy.cpp,v 1.124 2001-11-12 10:26:34 geuzaine Exp $ +// $Id: Gmsh.yy.cpp,v 1.125 2001-11-12 11:25:22 geuzaine Exp $ #include <stdio.h> #include <stdlib.h>