diff --git a/Geo/GModelIO_OCC.cpp b/Geo/GModelIO_OCC.cpp index 1c36164d4e3afedbf785da3a91f3464b2544ba32..faaaae9b82646b4b65ad5d4a38f835661f04cf83 100644 --- a/Geo/GModelIO_OCC.cpp +++ b/Geo/GModelIO_OCC.cpp @@ -20,7 +20,6 @@ #include <TopTools_DataMapIteratorOfDataMapOfShapeInteger.hxx> #include <TopTools_DataMapIteratorOfDataMapOfIntegerShape.hxx> -#include <BRepBuilderAPI_Transform.hxx> #include <BRepBuilderAPI_MakeEdge.hxx> #include <BRepBuilderAPI_MakeWire.hxx> #include <BRepBuilderAPI_Copy.hxx> @@ -137,6 +136,28 @@ void OCC_Internals::bindHighest(TopoDS_Shape shape, std::vector<int> tags[4]) } } +bool OCC_Internals::isBound(int dim, int tag) +{ + switch(dim){ + case 0 : return _tagVertex.IsBound(tag); + case 1 : return _tagEdge.IsBound(tag); + case 2 : return _tagFace.IsBound(tag); + case 3 : return _tagSolid.IsBound(tag); + default: return false; + } +} + +TopoDS_Shape OCC_Internals::find(int dim, int tag) +{ + switch(dim){ + case 0: return _tagVertex.Find(tag); + case 1: return _tagEdge.Find(tag); + case 2: return _tagFace.Find(tag); + case 3: return _tagSolid.Find(tag); + default: return TopoDS_Shape(); + } +} + void OCC_Internals::setTagConstraints(int maxTags[4]) { for(int i = 0; i < 4; i++) @@ -687,32 +708,50 @@ void OCC_Internals::getBoundary(std::vector<int> inTags[4], } } +void OCC_Internals::_transform(std::vector<int> inTags[4], + BRepBuilderAPI_Transform &tfo) +{ + for(unsigned int dim = 0; dim < 4; dim++){ + for(unsigned int i = 0; i < inTags[dim].size(); i++){ + int tag = inTags[dim][i]; + if(!isBound(dim, tag)){ + Msg::Error("Unknown OpenCASCADE entity with tag %d", tag); + return; + } + tfo.Perform(find(dim, tag), Standard_False); + if(!tfo.IsDone()){ + Msg::Error("Could not apply transformation"); + return; + } + switch(dim){ + case 0: bind(TopoDS::Vertex(tfo.Shape()), tag); break; + case 1: bind(TopoDS::Edge(tfo.Shape()), tag); break; + case 2: bind(TopoDS::Face(tfo.Shape()), tag); break; + case 3: bind(TopoDS::Solid(tfo.Shape()), tag); break; + } + } + } +} + void OCC_Internals::translate(std::vector<int> inTags[4], double dx, double dy, double dz) { gp_Trsf t; t.SetTranslation(gp_Pnt(0, 0, 0), gp_Pnt(dx, dy, dz)); BRepBuilderAPI_Transform tfo(t); + _transform(inTags, tfo); +} - for(unsigned int i = 0; i < inTags[3].size(); i++){ - if(!_tagSolid.IsBound(inTags[3][i])){ - Msg::Error("Unknown OpenCASCADE region with tag %d", inTags[3][i]); - return; - } - TopoDS_Solid solid = TopoDS::Solid(_tagSolid.Find(inTags[3][i])); - tfo.Perform(solid, Standard_False); - if(!tfo.IsDone()){ - Msg::Error("Could not apply translation"); - return; - } - TopoDS_Solid result = TopoDS::Solid(tfo.Shape()); - bind(result, inTags[3][i]); - } - - if(inTags[2].size() || inTags[1].size() || inTags[0].size()){ - Msg::Error("OCC TODO translation of surfaces, curves and vertices"); - } - +void OCC_Internals::rotate(std::vector<int> inTags[4], + double x, double y, double z, + double dx, double dy, double dz, + double angle) +{ + gp_Trsf t; + gp_Ax1 axisOfRevolution(gp_Pnt(x, y, z), gp_Dir(dx, dy, dz)); + t.SetRotation(axisOfRevolution, angle); + BRepBuilderAPI_Transform tfo(t); + _transform(inTags, tfo); } void OCC_Internals::copy(std::vector<int> inTags[4], std::vector<int> outTags[4]) diff --git a/Geo/GModelIO_OCC.h b/Geo/GModelIO_OCC.h index 2a87806a9985af45b498b6e228005c9c48a44bf6..b6112975e16ca000e00afbe9486b5321547b206f 100644 --- a/Geo/GModelIO_OCC.h +++ b/Geo/GModelIO_OCC.h @@ -44,6 +44,8 @@ class OCC_Internals { bool fixsmalledges, bool fixspotstripfaces, bool sewfaces, bool makesolids=false, double scaling=0.0); + // apply a geometrical transformation + void _transform(std::vector<int> inTags[4], BRepBuilderAPI_Transform &tfo); // *** FIXME will be removed *** protected : @@ -97,6 +99,12 @@ class OCC_Internals { // bind highest-dimensional entities in shape to tags void bindHighest(TopoDS_Shape shape, std::vector<int> tags[4]); + // is the entity of a given dimension/tag bound + bool isBound(int dim, int tag); + + // get the entity of a given dimension/tag + TopoDS_Shape find(int dim, int tag); + // set constraints on tags void setTagConstraints(int maxTags[4]); @@ -131,6 +139,8 @@ class OCC_Internals { // apply transformations void translate(std::vector<int> inTags[4], double dx, double dy, double dz); + void rotate(std::vector<int> inTags[4], double x, double y, double z, + double dx, double dy, double dz, double angle); void copy(std::vector<int> inTags[4], std::vector<int> outTags[4]); // import shapes from file @@ -180,6 +190,8 @@ public: void getBoundary(std::vector<int> inTags[4], std::vector<int> outTags[4], bool combined=false){} void translate(std::vector<int> inTags[4], double dx, double dy, double dz){} + void rotate(std::vector<int> inTags[4], double x, double y, double z, + double dx, double dy, double dz, double angle){} void copy(std::vector<int> inTags[4], std::vector<int> outTags[4]){} void importShapes(const std::string &fileName, std::vector<int> outTags[4]){} void exportShapes(const std::string &fileName){} diff --git a/Geo/OCCIncludes.h b/Geo/OCCIncludes.h index 0501db295e4686751db27c302073ed8f0f0fa888..9a61243fb32fda52e22b5795864ee08dba32ca62 100644 --- a/Geo/OCCIncludes.h +++ b/Geo/OCCIncludes.h @@ -29,6 +29,7 @@ using std::iostream; #include <BRepBuilderAPI_MakeVertex.hxx> #include <BRepBuilderAPI_MakeShell.hxx> #include <BRepBuilderAPI_MakeSolid.hxx> +#include <BRepBuilderAPI_Transform.hxx> #include <BRepOffsetAPI_Sewing.hxx> #include <BRepLProp_SLProps.hxx> #include <BRepAdaptor_Surface.hxx> diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp index ad882af91155afb0eb147956f6198e4849067bc6..dfa4fba5f30b369d27a31daf67c83c5e9966a2fb 100644 --- a/Parser/Gmsh.tab.cpp +++ b/Parser/Gmsh.tab.cpp @@ -1376,45 +1376,45 @@ static const yytype_uint16 yyrline[] = 1717, 1727, 1755, 1798, 1821, 1850, 1871, 1889, 1929, 1959, 1977, 1995, 2022, 2051, 2056, 2074, 2120, 2138, 2177, 2183, 2189, 2196, 2237, 2263, 2287, 2312, 2329, 2333, 2352, 2386, - 2433, 2451, 2468, 2486, 2490, 2506, 2554, 2571, 2581, 2591, - 2601, 2611, 2658, 2669, 2685, 2686, 2691, 2694, 2698, 2727, - 2756, 2785, 2819, 2841, 2867, 2889, 2912, 2933, 2989, 3013, - 3038, 3064, 3177, 3196, 3239, 3253, 3259, 3274, 3302, 3319, - 3328, 3342, 3356, 3362, 3368, 3377, 3386, 3395, 3409, 3471, - 3489, 3506, 3521, 3550, 3562, 3586, 3590, 3595, 3603, 3608, - 3614, 3619, 3625, 3633, 3637, 3641, 3646, 3706, 3722, 3739, - 3756, 3778, 3800, 3835, 3843, 3851, 3857, 3864, 3871, 3891, - 3917, 3929, 3941, 3949, 3957, 3966, 3965, 3980, 3979, 3994, - 3993, 4008, 4007, 4021, 4028, 4035, 4042, 4049, 4056, 4063, - 4070, 4077, 4085, 4084, 4098, 4097, 4111, 4110, 4124, 4123, - 4137, 4136, 4150, 4149, 4163, 4162, 4176, 4175, 4189, 4188, - 4205, 4208, 4214, 4226, 4246, 4270, 4274, 4278, 4282, 4286, - 4290, 4296, 4302, 4306, 4310, 4314, 4318, 4337, 4350, 4351, - 4352, 4353, 4354, 4358, 4359, 4360, 4363, 4388, 4414, 4436, - 4439, 4455, 4458, 4475, 4478, 4484, 4487, 4494, 4497, 4504, - 4560, 4630, 4635, 4702, 4738, 4746, 4789, 4828, 4848, 4880, - 4907, 4933, 4959, 4985, 5011, 5033, 5061, 5089, 5117, 5145, - 5173, 5212, 5251, 5272, 5293, 5320, 5324, 5334, 5369, 5370, - 5371, 5375, 5381, 5393, 5411, 5439, 5440, 5441, 5442, 5443, - 5444, 5445, 5446, 5447, 5454, 5455, 5456, 5457, 5458, 5459, - 5460, 5461, 5462, 5463, 5464, 5465, 5466, 5467, 5468, 5469, - 5470, 5471, 5472, 5473, 5474, 5475, 5476, 5477, 5478, 5479, - 5480, 5481, 5482, 5483, 5484, 5485, 5486, 5495, 5496, 5497, - 5498, 5499, 5500, 5501, 5502, 5503, 5504, 5505, 5510, 5509, - 5517, 5522, 5527, 5544, 5562, 5580, 5598, 5616, 5621, 5627, - 5642, 5661, 5681, 5701, 5721, 5744, 5749, 5754, 5764, 5774, - 5779, 5790, 5799, 5804, 5809, 5836, 5840, 5844, 5848, 5852, - 5859, 5863, 5867, 5871, 5878, 5883, 5890, 5895, 5899, 5904, - 5908, 5916, 5927, 5931, 5943, 5951, 5959, 5966, 5976, 6005, - 6009, 6013, 6017, 6021, 6025, 6029, 6033, 6037, 6066, 6095, - 6124, 6153, 6166, 6179, 6192, 6205, 6215, 6225, 6235, 6247, - 6260, 6272, 6276, 6280, 6284, 6288, 6306, 6324, 6332, 6340, - 6369, 6382, 6387, 6391, 6395, 6407, 6411, 6423, 6440, 6450, - 6454, 6469, 6474, 6481, 6485, 6498, 6512, 6526, 6540, 6554, - 6562, 6573, 6577, 6581, 6589, 6595, 6601, 6609, 6617, 6624, - 6632, 6647, 6661, 6675, 6687, 6703, 6712, 6721, 6731, 6742, - 6750, 6758, 6762, 6781, 6788, 6794, 6801, 6809, 6808, 6821, - 6826, 6832, 6841, 6854, 6857, 6861 + 2433, 2451, 2468, 2486, 2490, 2506, 2554, 2571, 2589, 2599, + 2609, 2619, 2666, 2677, 2693, 2694, 2699, 2702, 2706, 2735, + 2764, 2793, 2827, 2849, 2875, 2897, 2920, 2941, 2997, 3021, + 3046, 3072, 3185, 3204, 3247, 3261, 3267, 3282, 3310, 3327, + 3336, 3350, 3364, 3370, 3376, 3385, 3394, 3403, 3417, 3479, + 3497, 3514, 3529, 3558, 3570, 3594, 3598, 3603, 3611, 3616, + 3622, 3627, 3633, 3641, 3645, 3649, 3654, 3714, 3730, 3747, + 3764, 3786, 3808, 3843, 3851, 3859, 3865, 3872, 3879, 3899, + 3925, 3937, 3949, 3957, 3965, 3974, 3973, 3988, 3987, 4002, + 4001, 4016, 4015, 4029, 4036, 4043, 4050, 4057, 4064, 4071, + 4078, 4085, 4093, 4092, 4106, 4105, 4119, 4118, 4132, 4131, + 4145, 4144, 4158, 4157, 4171, 4170, 4184, 4183, 4197, 4196, + 4213, 4216, 4222, 4234, 4254, 4278, 4282, 4286, 4290, 4294, + 4298, 4304, 4310, 4314, 4318, 4322, 4326, 4345, 4358, 4359, + 4360, 4361, 4362, 4366, 4367, 4368, 4371, 4396, 4422, 4444, + 4447, 4463, 4466, 4483, 4486, 4492, 4495, 4502, 4505, 4512, + 4568, 4638, 4643, 4710, 4746, 4754, 4797, 4836, 4856, 4888, + 4915, 4941, 4967, 4993, 5019, 5041, 5069, 5097, 5125, 5153, + 5181, 5220, 5259, 5280, 5301, 5328, 5332, 5342, 5377, 5378, + 5379, 5383, 5389, 5401, 5419, 5447, 5448, 5449, 5450, 5451, + 5452, 5453, 5454, 5455, 5462, 5463, 5464, 5465, 5466, 5467, + 5468, 5469, 5470, 5471, 5472, 5473, 5474, 5475, 5476, 5477, + 5478, 5479, 5480, 5481, 5482, 5483, 5484, 5485, 5486, 5487, + 5488, 5489, 5490, 5491, 5492, 5493, 5494, 5503, 5504, 5505, + 5506, 5507, 5508, 5509, 5510, 5511, 5512, 5513, 5518, 5517, + 5525, 5530, 5535, 5552, 5570, 5588, 5606, 5624, 5629, 5635, + 5650, 5669, 5689, 5709, 5729, 5752, 5757, 5762, 5772, 5782, + 5787, 5798, 5807, 5812, 5817, 5844, 5848, 5852, 5856, 5860, + 5867, 5871, 5875, 5879, 5886, 5891, 5898, 5903, 5907, 5912, + 5916, 5924, 5935, 5939, 5951, 5959, 5967, 5974, 5984, 6013, + 6017, 6021, 6025, 6029, 6033, 6037, 6041, 6045, 6074, 6103, + 6132, 6161, 6174, 6187, 6200, 6213, 6223, 6233, 6243, 6255, + 6268, 6280, 6284, 6288, 6292, 6296, 6314, 6332, 6340, 6348, + 6377, 6390, 6395, 6399, 6403, 6415, 6419, 6431, 6448, 6458, + 6462, 6477, 6482, 6489, 6493, 6506, 6520, 6534, 6548, 6562, + 6570, 6581, 6585, 6589, 6597, 6603, 6609, 6617, 6625, 6632, + 6640, 6655, 6669, 6683, 6695, 6711, 6720, 6729, 6739, 6750, + 6758, 6766, 6770, 6789, 6796, 6802, 6809, 6817, 6816, 6829, + 6834, 6840, 6849, 6862, 6865, 6869 }; #endif @@ -8648,7 +8648,15 @@ yyreduce: #line 2572 "Gmsh.y" { if(factory == "OpenCASCADE" && GModel::current()->getOCCInternals()){ - Msg::Error("TODO OCC Rotate"); + std::vector<int> in[4]; + Shape TheShape; + for(int i = 0; i < List_Nbr((yyvsp[(10) - (11)].l)); i++){ + List_Read((yyvsp[(10) - (11)].l), i, &TheShape); + int dim = TheShape.Type / 100 - 1; + if(dim >= 0 && dim <= 3) in[dim].push_back(TheShape.Num); + } + GModel::current()->getOCCInternals()->rotate(in, (yyvsp[(5) - (11)].v)[0], (yyvsp[(5) - (11)].v)[1], (yyvsp[(5) - (11)].v)[2], + (yyvsp[(3) - (11)].v)[0], (yyvsp[(3) - (11)].v)[1], (yyvsp[(3) - (11)].v)[2], (yyvsp[(7) - (11)].d)); } else{ RotateShapes((yyvsp[(3) - (11)].v)[0], (yyvsp[(3) - (11)].v)[1], (yyvsp[(3) - (11)].v)[2], (yyvsp[(5) - (11)].v)[0], (yyvsp[(5) - (11)].v)[1], (yyvsp[(5) - (11)].v)[2], (yyvsp[(7) - (11)].d), (yyvsp[(10) - (11)].l)); @@ -8658,7 +8666,7 @@ yyreduce: break; case 208: -#line 2582 "Gmsh.y" +#line 2590 "Gmsh.y" { if(factory == "OpenCASCADE" && GModel::current()->getOCCInternals()){ Msg::Error("TODO OCC Symmetry"); @@ -8671,7 +8679,7 @@ yyreduce: break; case 209: -#line 2592 "Gmsh.y" +#line 2600 "Gmsh.y" { if(factory == "OpenCASCADE" && GModel::current()->getOCCInternals()){ Msg::Error("TODO OCC Dilate"); @@ -8684,7 +8692,7 @@ yyreduce: break; case 210: -#line 2602 "Gmsh.y" +#line 2610 "Gmsh.y" { if(factory == "OpenCASCADE" && GModel::current()->getOCCInternals()){ Msg::Error("TODO OCC Dilate"); @@ -8697,7 +8705,7 @@ yyreduce: break; case 211: -#line 2612 "Gmsh.y" +#line 2620 "Gmsh.y" { (yyval.l) = List_Create(3, 3, sizeof(Shape)); if(!strcmp((yyvsp[(1) - (4)].c), "Duplicata")){ @@ -8747,7 +8755,7 @@ yyreduce: break; case 212: -#line 2659 "Gmsh.y" +#line 2667 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); if(factory == "OpenCASCADE" && GModel::current()->getOCCInternals()){ @@ -8761,7 +8769,7 @@ yyreduce: break; case 213: -#line 2670 "Gmsh.y" +#line 2678 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape*)); if(factory == "OpenCASCADE" && GModel::current()->getOCCInternals()){ @@ -8777,31 +8785,31 @@ yyreduce: break; case 214: -#line 2685 "Gmsh.y" +#line 2693 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; case 215: -#line 2686 "Gmsh.y" +#line 2694 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; case 216: -#line 2691 "Gmsh.y" +#line 2699 "Gmsh.y" { (yyval.l) = List_Create(3, 3, sizeof(Shape)); ;} break; case 217: -#line 2695 "Gmsh.y" +#line 2703 "Gmsh.y" { List_Add((yyval.l), &(yyvsp[(2) - (2)].s)); ;} break; case 218: -#line 2699 "Gmsh.y" +#line 2707 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (6)].l)); i++){ double d; @@ -8833,7 +8841,7 @@ yyreduce: break; case 219: -#line 2728 "Gmsh.y" +#line 2736 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (6)].l)); i++){ double d; @@ -8865,7 +8873,7 @@ yyreduce: break; case 220: -#line 2757 "Gmsh.y" +#line 2765 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (6)].l)); i++){ double d; @@ -8897,7 +8905,7 @@ yyreduce: break; case 221: -#line 2786 "Gmsh.y" +#line 2794 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (6)].l)); i++){ double d; @@ -8929,7 +8937,7 @@ yyreduce: break; case 222: -#line 2820 "Gmsh.y" +#line 2828 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) if(List_Nbr((yyvsp[(7) - (8)].l)) == 4){ @@ -8954,7 +8962,7 @@ yyreduce: break; case 223: -#line 2842 "Gmsh.y" +#line 2850 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) int t = (int)(yyvsp[(4) - (10)].d); @@ -8983,7 +8991,7 @@ yyreduce: break; case 224: -#line 2869 "Gmsh.y" +#line 2877 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) if(List_Nbr((yyvsp[(12) - (14)].l)) == 0){ @@ -9007,7 +9015,7 @@ yyreduce: break; case 225: -#line 2891 "Gmsh.y" +#line 2899 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) if(List_Nbr((yyvsp[(14) - (16)].l)) == 0){ @@ -9032,7 +9040,7 @@ yyreduce: break; case 226: -#line 2913 "Gmsh.y" +#line 2921 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) if(List_Nbr((yyvsp[(10) - (12)].l)) == 1){ @@ -9056,7 +9064,7 @@ yyreduce: break; case 227: -#line 2935 "Gmsh.y" +#line 2943 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) if(List_Nbr((yyvsp[(12) - (14)].l)) == 1){ @@ -9114,7 +9122,7 @@ yyreduce: break; case 228: -#line 2991 "Gmsh.y" +#line 2999 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) if(List_Nbr((yyvsp[(12) - (14)].l)) == 1){ @@ -9140,7 +9148,7 @@ yyreduce: break; case 229: -#line 3015 "Gmsh.y" +#line 3023 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) if(List_Nbr((yyvsp[(12) - (14)].l)) == 3){ @@ -9167,7 +9175,7 @@ yyreduce: break; case 230: -#line 3040 "Gmsh.y" +#line 3048 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) if(List_Nbr((yyvsp[(12) - (14)].l)) == 5){ @@ -9195,7 +9203,7 @@ yyreduce: break; case 231: -#line 3065 "Gmsh.y" +#line 3073 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) if(!strcmp((yyvsp[(2) - (8)].c), "Union")){ @@ -9311,7 +9319,7 @@ yyreduce: break; case 232: -#line 3178 "Gmsh.y" +#line 3186 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) if(!strcmp((yyvsp[(2) - (8)].c), "MathEval")){ @@ -9333,7 +9341,7 @@ yyreduce: break; case 233: -#line 3197 "Gmsh.y" +#line 3205 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) if(!strcmp((yyvsp[(2) - (6)].c), "CutMesh")){ @@ -9374,7 +9382,7 @@ yyreduce: break; case 234: -#line 3240 "Gmsh.y" +#line 3248 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){ Shape TheShape; @@ -9391,7 +9399,7 @@ yyreduce: break; case 235: -#line 3254 "Gmsh.y" +#line 3262 "Gmsh.y" { #if defined(HAVE_MESH) GModel::current()->getFields()->deleteField((int)(yyvsp[(4) - (6)].d)); @@ -9400,7 +9408,7 @@ yyreduce: break; case 236: -#line 3260 "Gmsh.y" +#line 3268 "Gmsh.y" { #if defined(HAVE_POST) if(!strcmp((yyvsp[(2) - (6)].c), "View")){ @@ -9418,7 +9426,7 @@ yyreduce: break; case 237: -#line 3275 "Gmsh.y" +#line 3283 "Gmsh.y" { if(!strcmp((yyvsp[(2) - (3)].c), "Meshes") || !strcmp((yyvsp[(2) - (3)].c), "All")){ ClearProject(); @@ -9449,7 +9457,7 @@ yyreduce: break; case 238: -#line 3303 "Gmsh.y" +#line 3311 "Gmsh.y" { #if defined(HAVE_POST) if(!strcmp((yyvsp[(2) - (4)].c), "Empty") && !strcmp((yyvsp[(3) - (4)].c), "Views")){ @@ -9464,7 +9472,7 @@ yyreduce: break; case 239: -#line 3320 "Gmsh.y" +#line 3328 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++){ Shape TheShape; @@ -9476,7 +9484,7 @@ yyreduce: break; case 240: -#line 3329 "Gmsh.y" +#line 3337 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(5) - (6)].l)); i++){ Shape TheShape; @@ -9488,7 +9496,7 @@ yyreduce: break; case 241: -#line 3343 "Gmsh.y" +#line 3351 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++){ Shape TheShape; @@ -9500,7 +9508,7 @@ yyreduce: break; case 242: -#line 3357 "Gmsh.y" +#line 3365 "Gmsh.y" { for(int i = 0; i < 4; i++) VisibilityShape((yyvsp[(2) - (3)].c), i, 1, false); @@ -9509,7 +9517,7 @@ yyreduce: break; case 243: -#line 3363 "Gmsh.y" +#line 3371 "Gmsh.y" { for(int i = 0; i < 4; i++) VisibilityShape((yyvsp[(2) - (3)].c), i, 0, false); @@ -9518,7 +9526,7 @@ yyreduce: break; case 244: -#line 3369 "Gmsh.y" +#line 3377 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){ Shape TheShape; @@ -9530,7 +9538,7 @@ yyreduce: break; case 245: -#line 3378 "Gmsh.y" +#line 3386 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++){ Shape TheShape; @@ -9542,7 +9550,7 @@ yyreduce: break; case 246: -#line 3387 "Gmsh.y" +#line 3395 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){ Shape TheShape; @@ -9554,7 +9562,7 @@ yyreduce: break; case 247: -#line 3396 "Gmsh.y" +#line 3404 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++){ Shape TheShape; @@ -9566,7 +9574,7 @@ yyreduce: break; case 248: -#line 3410 "Gmsh.y" +#line 3418 "Gmsh.y" { if(!strcmp((yyvsp[(1) - (3)].c), "Include")){ std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(2) - (3)].c)); @@ -9631,7 +9639,7 @@ yyreduce: break; case 249: -#line 3472 "Gmsh.y" +#line 3480 "Gmsh.y" { int n = List_Nbr((yyvsp[(3) - (5)].l)); if(n == 1){ @@ -9652,7 +9660,7 @@ yyreduce: break; case 250: -#line 3490 "Gmsh.y" +#line 3498 "Gmsh.y" { #if defined(HAVE_POST) if(!strcmp((yyvsp[(1) - (7)].c), "Save") && !strcmp((yyvsp[(2) - (7)].c), "View")){ @@ -9672,7 +9680,7 @@ yyreduce: break; case 251: -#line 3507 "Gmsh.y" +#line 3515 "Gmsh.y" { #if defined(HAVE_POST) && defined(HAVE_MESH) if(!strcmp((yyvsp[(1) - (7)].c), "Background") && !strcmp((yyvsp[(2) - (7)].c), "Mesh") && !strcmp((yyvsp[(3) - (7)].c), "View")){ @@ -9690,7 +9698,7 @@ yyreduce: break; case 252: -#line 3522 "Gmsh.y" +#line 3530 "Gmsh.y" { if(!strcmp((yyvsp[(1) - (3)].c), "Sleep")){ SleepInSeconds((yyvsp[(2) - (3)].d)); @@ -9722,7 +9730,7 @@ yyreduce: break; case 253: -#line 3551 "Gmsh.y" +#line 3559 "Gmsh.y" { #if defined(HAVE_PLUGINS) try { @@ -9737,7 +9745,7 @@ yyreduce: break; case 254: -#line 3563 "Gmsh.y" +#line 3571 "Gmsh.y" { #if defined(HAVE_POST) if(!strcmp((yyvsp[(2) - (3)].c), "ElementsFromAllViews")) @@ -9764,14 +9772,14 @@ yyreduce: break; case 255: -#line 3587 "Gmsh.y" +#line 3595 "Gmsh.y" { Msg::Exit(0); ;} break; case 256: -#line 3591 "Gmsh.y" +#line 3599 "Gmsh.y" { gmsh_yyerrorstate = 999; // this will be checked when yyparse returns YYABORT; @@ -9779,7 +9787,7 @@ yyreduce: break; case 257: -#line 3596 "Gmsh.y" +#line 3604 "Gmsh.y" { // FIXME: this is a hack to force a transfer from the old DB to // the new DB. This will become unnecessary if/when we fill the @@ -9790,7 +9798,7 @@ yyreduce: break; case 258: -#line 3604 "Gmsh.y" +#line 3612 "Gmsh.y" { new GModel(); GModel::current(GModel::list.size() - 1); @@ -9798,7 +9806,7 @@ yyreduce: break; case 259: -#line 3609 "Gmsh.y" +#line 3617 "Gmsh.y" { CTX::instance()->forcedBBox = 0; GModel::current()->importGEOInternals(); @@ -9807,7 +9815,7 @@ yyreduce: break; case 260: -#line 3615 "Gmsh.y" +#line 3623 "Gmsh.y" { CTX::instance()->forcedBBox = 1; SetBoundingBox((yyvsp[(3) - (15)].d), (yyvsp[(5) - (15)].d), (yyvsp[(7) - (15)].d), (yyvsp[(9) - (15)].d), (yyvsp[(11) - (15)].d), (yyvsp[(13) - (15)].d)); @@ -9815,7 +9823,7 @@ yyreduce: break; case 261: -#line 3620 "Gmsh.y" +#line 3628 "Gmsh.y" { #if defined(HAVE_OPENGL) drawContext::global()->draw(); @@ -9824,7 +9832,7 @@ yyreduce: break; case 262: -#line 3626 "Gmsh.y" +#line 3634 "Gmsh.y" { #if defined(HAVE_OPENGL) CTX::instance()->mesh.changed = ENT_ALL; @@ -9835,21 +9843,21 @@ yyreduce: break; case 263: -#line 3634 "Gmsh.y" +#line 3642 "Gmsh.y" { GModel::current()->createTopologyFromMesh(); ;} break; case 264: -#line 3638 "Gmsh.y" +#line 3646 "Gmsh.y" { GModel::current()->createTopologyFromMesh(1); ;} break; case 265: -#line 3642 "Gmsh.y" +#line 3650 "Gmsh.y" { GModel::current()->importGEOInternals(); GModel::current()->refineMesh(CTX::instance()->mesh.secondOrderLinear); @@ -9857,7 +9865,7 @@ yyreduce: break; case 266: -#line 3648 "Gmsh.y" +#line 3656 "Gmsh.y" { int lock = CTX::instance()->lock; CTX::instance()->lock = 0; @@ -9914,7 +9922,7 @@ yyreduce: break; case 267: -#line 3707 "Gmsh.y" +#line 3715 "Gmsh.y" { #if defined(HAVE_POPPLER) std::vector<int> is; @@ -9929,7 +9937,7 @@ yyreduce: break; case 268: -#line 3723 "Gmsh.y" +#line 3731 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(3) - (6)].d); LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(5) - (6)].d); @@ -9949,7 +9957,7 @@ yyreduce: break; case 269: -#line 3740 "Gmsh.y" +#line 3748 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(3) - (8)].d); LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(5) - (8)].d); @@ -9969,7 +9977,7 @@ yyreduce: break; case 270: -#line 3757 "Gmsh.y" +#line 3765 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(5) - (8)].d); LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(7) - (8)].d); @@ -9994,7 +10002,7 @@ yyreduce: break; case 271: -#line 3779 "Gmsh.y" +#line 3787 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(5) - (10)].d); LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(7) - (10)].d); @@ -10019,7 +10027,7 @@ yyreduce: break; case 272: -#line 3801 "Gmsh.y" +#line 3809 "Gmsh.y" { if(ImbricatedLoop <= 0){ yymsg(0, "Invalid For/EndFor loop"); @@ -10057,7 +10065,7 @@ yyreduce: break; case 273: -#line 3836 "Gmsh.y" +#line 3844 "Gmsh.y" { if(!FunctionManager::Instance()->createFunction (std::string((yyvsp[(2) - (2)].c)), gmsh_yyin, gmsh_yyname, gmsh_yylineno)) @@ -10068,7 +10076,7 @@ yyreduce: break; case 274: -#line 3844 "Gmsh.y" +#line 3852 "Gmsh.y" { if(!FunctionManager::Instance()->createFunction (std::string((yyvsp[(2) - (2)].c)), gmsh_yyin, gmsh_yyname, gmsh_yylineno)) @@ -10079,7 +10087,7 @@ yyreduce: break; case 275: -#line 3852 "Gmsh.y" +#line 3860 "Gmsh.y" { if(!FunctionManager::Instance()->leaveFunction (&gmsh_yyin, gmsh_yyname, gmsh_yylineno)) @@ -10088,7 +10096,7 @@ yyreduce: break; case 276: -#line 3858 "Gmsh.y" +#line 3866 "Gmsh.y" { if(!FunctionManager::Instance()->enterFunction (std::string((yyvsp[(2) - (3)].c)), &gmsh_yyin, gmsh_yyname, gmsh_yylineno)) @@ -10098,7 +10106,7 @@ yyreduce: break; case 277: -#line 3865 "Gmsh.y" +#line 3873 "Gmsh.y" { if(!FunctionManager::Instance()->enterFunction (std::string((yyvsp[(2) - (3)].c)), &gmsh_yyin, gmsh_yyname, gmsh_yylineno)) @@ -10108,7 +10116,7 @@ yyreduce: break; case 278: -#line 3872 "Gmsh.y" +#line 3880 "Gmsh.y" { ImbricatedTest++; if(ImbricatedTest > MAX_RECUR_TESTS-1){ @@ -10131,7 +10139,7 @@ yyreduce: break; case 279: -#line 3892 "Gmsh.y" +#line 3900 "Gmsh.y" { if(ImbricatedTest > 0){ if (statusImbricatedTests[ImbricatedTest]){ @@ -10160,7 +10168,7 @@ yyreduce: break; case 280: -#line 3918 "Gmsh.y" +#line 3926 "Gmsh.y" { if(ImbricatedTest > 0){ if(statusImbricatedTests[ImbricatedTest]){ @@ -10175,7 +10183,7 @@ yyreduce: break; case 281: -#line 3930 "Gmsh.y" +#line 3938 "Gmsh.y" { ImbricatedTest--; if(ImbricatedTest < 0) @@ -10184,7 +10192,7 @@ yyreduce: break; case 282: -#line 3942 "Gmsh.y" +#line 3950 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShapes(TRANSLATE, (yyvsp[(4) - (5)].l), @@ -10195,7 +10203,7 @@ yyreduce: break; case 283: -#line 3950 "Gmsh.y" +#line 3958 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShapes(ROTATE, (yyvsp[(10) - (11)].l), @@ -10206,7 +10214,7 @@ yyreduce: break; case 284: -#line 3958 "Gmsh.y" +#line 3966 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShapes(TRANSLATE_ROTATE, (yyvsp[(12) - (13)].l), @@ -10217,7 +10225,7 @@ yyreduce: break; case 285: -#line 3966 "Gmsh.y" +#line 3974 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -10226,7 +10234,7 @@ yyreduce: break; case 286: -#line 3972 "Gmsh.y" +#line 3980 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShapes(TRANSLATE, (yyvsp[(4) - (7)].l), @@ -10237,7 +10245,7 @@ yyreduce: break; case 287: -#line 3980 "Gmsh.y" +#line 3988 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -10246,7 +10254,7 @@ yyreduce: break; case 288: -#line 3986 "Gmsh.y" +#line 3994 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShapes(ROTATE, (yyvsp[(10) - (13)].l), @@ -10257,7 +10265,7 @@ yyreduce: break; case 289: -#line 3994 "Gmsh.y" +#line 4002 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -10266,7 +10274,7 @@ yyreduce: break; case 290: -#line 4000 "Gmsh.y" +#line 4008 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShapes(TRANSLATE_ROTATE, (yyvsp[(12) - (15)].l), @@ -10277,7 +10285,7 @@ yyreduce: break; case 291: -#line 4008 "Gmsh.y" +#line 4016 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -10286,7 +10294,7 @@ yyreduce: break; case 292: -#line 4014 "Gmsh.y" +#line 4022 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShapes(BOUNDARY_LAYER, (yyvsp[(3) - (6)].l), 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., @@ -10296,7 +10304,7 @@ yyreduce: break; case 293: -#line 4022 "Gmsh.y" +#line 4030 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE, MSH_POINT, (int)(yyvsp[(4) - (8)].d), @@ -10306,7 +10314,7 @@ yyreduce: break; case 294: -#line 4029 "Gmsh.y" +#line 4037 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (8)].d), @@ -10316,7 +10324,7 @@ yyreduce: break; case 295: -#line 4036 "Gmsh.y" +#line 4044 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (8)].d), @@ -10326,7 +10334,7 @@ yyreduce: break; case 296: -#line 4043 "Gmsh.y" +#line 4051 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(ROTATE, MSH_POINT, (int)(yyvsp[(4) - (12)].d), @@ -10336,7 +10344,7 @@ yyreduce: break; case 297: -#line 4050 "Gmsh.y" +#line 4058 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(ROTATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (12)].d), @@ -10346,7 +10354,7 @@ yyreduce: break; case 298: -#line 4057 "Gmsh.y" +#line 4065 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(ROTATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (12)].d), @@ -10356,7 +10364,7 @@ yyreduce: break; case 299: -#line 4064 "Gmsh.y" +#line 4072 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE_ROTATE, MSH_POINT, (int)(yyvsp[(4) - (14)].d), @@ -10366,7 +10374,7 @@ yyreduce: break; case 300: -#line 4071 "Gmsh.y" +#line 4079 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE_ROTATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (14)].d), @@ -10376,7 +10384,7 @@ yyreduce: break; case 301: -#line 4078 "Gmsh.y" +#line 4086 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE_ROTATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (14)].d), @@ -10386,7 +10394,7 @@ yyreduce: break; case 302: -#line 4085 "Gmsh.y" +#line 4093 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -10395,7 +10403,7 @@ yyreduce: break; case 303: -#line 4091 "Gmsh.y" +#line 4099 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE, MSH_POINT, (int)(yyvsp[(4) - (12)].d), @@ -10405,7 +10413,7 @@ yyreduce: break; case 304: -#line 4098 "Gmsh.y" +#line 4106 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -10414,7 +10422,7 @@ yyreduce: break; case 305: -#line 4104 "Gmsh.y" +#line 4112 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (12)].d), @@ -10424,7 +10432,7 @@ yyreduce: break; case 306: -#line 4111 "Gmsh.y" +#line 4119 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -10433,7 +10441,7 @@ yyreduce: break; case 307: -#line 4117 "Gmsh.y" +#line 4125 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (12)].d), @@ -10443,7 +10451,7 @@ yyreduce: break; case 308: -#line 4124 "Gmsh.y" +#line 4132 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -10452,7 +10460,7 @@ yyreduce: break; case 309: -#line 4130 "Gmsh.y" +#line 4138 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(ROTATE, MSH_POINT, (int)(yyvsp[(4) - (16)].d), @@ -10462,7 +10470,7 @@ yyreduce: break; case 310: -#line 4137 "Gmsh.y" +#line 4145 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -10471,7 +10479,7 @@ yyreduce: break; case 311: -#line 4143 "Gmsh.y" +#line 4151 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(ROTATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (16)].d), @@ -10481,7 +10489,7 @@ yyreduce: break; case 312: -#line 4150 "Gmsh.y" +#line 4158 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -10490,7 +10498,7 @@ yyreduce: break; case 313: -#line 4156 "Gmsh.y" +#line 4164 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(ROTATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (16)].d), @@ -10500,7 +10508,7 @@ yyreduce: break; case 314: -#line 4163 "Gmsh.y" +#line 4171 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -10509,7 +10517,7 @@ yyreduce: break; case 315: -#line 4169 "Gmsh.y" +#line 4177 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE_ROTATE, MSH_POINT, (int)(yyvsp[(4) - (18)].d), @@ -10519,7 +10527,7 @@ yyreduce: break; case 316: -#line 4176 "Gmsh.y" +#line 4184 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -10528,7 +10536,7 @@ yyreduce: break; case 317: -#line 4182 "Gmsh.y" +#line 4190 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE_ROTATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (18)].d), @@ -10538,7 +10546,7 @@ yyreduce: break; case 318: -#line 4189 "Gmsh.y" +#line 4197 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -10547,7 +10555,7 @@ yyreduce: break; case 319: -#line 4195 "Gmsh.y" +#line 4203 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE_ROTATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (18)].d), @@ -10557,19 +10565,19 @@ yyreduce: break; case 320: -#line 4206 "Gmsh.y" +#line 4214 "Gmsh.y" { ;} break; case 321: -#line 4209 "Gmsh.y" +#line 4217 "Gmsh.y" { ;} break; case 322: -#line 4215 "Gmsh.y" +#line 4223 "Gmsh.y" { int n = (int)fabs((yyvsp[(3) - (5)].d)); if(n){ // we accept n==0 to easily disable layers @@ -10584,7 +10592,7 @@ yyreduce: break; case 323: -#line 4227 "Gmsh.y" +#line 4235 "Gmsh.y" { extr.mesh.ExtrudeMesh = true; extr.mesh.NbLayer = List_Nbr((yyvsp[(3) - (7)].l)); @@ -10607,7 +10615,7 @@ yyreduce: break; case 324: -#line 4247 "Gmsh.y" +#line 4255 "Gmsh.y" { yymsg(0, "Explicit region numbers in layers are deprecated"); extr.mesh.ExtrudeMesh = true; @@ -10633,42 +10641,42 @@ yyreduce: break; case 325: -#line 4271 "Gmsh.y" +#line 4279 "Gmsh.y" { extr.mesh.ScaleLast = true; ;} break; case 326: -#line 4275 "Gmsh.y" +#line 4283 "Gmsh.y" { extr.mesh.Recombine = true; ;} break; case 327: -#line 4279 "Gmsh.y" +#line 4287 "Gmsh.y" { extr.mesh.Recombine = (yyvsp[(2) - (3)].d) ? true : false; ;} break; case 328: -#line 4283 "Gmsh.y" +#line 4291 "Gmsh.y" { yymsg(0, "Keyword 'QuadTriSngl' deprecated. Use 'QuadTriNoNewVerts' instead."); ;} break; case 329: -#line 4287 "Gmsh.y" +#line 4295 "Gmsh.y" { yymsg(0, "Keyword 'QuadTriSngl' deprecated. Use 'QuadTriNoNewVerts' instead."); ;} break; case 330: -#line 4291 "Gmsh.y" +#line 4299 "Gmsh.y" { yymsg(0, "Method 'QuadTriDbl' deprecated. Use 'QuadTriAddVerts' instead, " "which has no requirement for the number of extrusion layers and meshes " @@ -10677,7 +10685,7 @@ yyreduce: break; case 331: -#line 4297 "Gmsh.y" +#line 4305 "Gmsh.y" { yymsg(0, "Method 'QuadTriDbl' deprecated. Use 'QuadTriAddVerts' instead, " "which has no requirement for the number of extrusion layers and meshes " @@ -10686,35 +10694,35 @@ yyreduce: break; case 332: -#line 4303 "Gmsh.y" +#line 4311 "Gmsh.y" { extr.mesh.QuadToTri = QUADTRI_ADDVERTS_1; ;} break; case 333: -#line 4307 "Gmsh.y" +#line 4315 "Gmsh.y" { extr.mesh.QuadToTri = QUADTRI_ADDVERTS_1_RECOMB; ;} break; case 334: -#line 4311 "Gmsh.y" +#line 4319 "Gmsh.y" { extr.mesh.QuadToTri = QUADTRI_NOVERTS_1; ;} break; case 335: -#line 4315 "Gmsh.y" +#line 4323 "Gmsh.y" { extr.mesh.QuadToTri = QUADTRI_NOVERTS_1_RECOMB; ;} break; case 336: -#line 4319 "Gmsh.y" +#line 4327 "Gmsh.y" { int num = (int)(yyvsp[(3) - (9)].d); if(FindSurface(num)){ @@ -10736,7 +10744,7 @@ yyreduce: break; case 337: -#line 4338 "Gmsh.y" +#line 4346 "Gmsh.y" { if(!strcmp((yyvsp[(2) - (6)].c), "Index")) extr.mesh.BoundaryLayerIndex = (yyvsp[(4) - (6)].d); @@ -10747,47 +10755,47 @@ yyreduce: break; case 338: -#line 4350 "Gmsh.y" +#line 4358 "Gmsh.y" { (yyval.i) = OCC_Internals::Union; ;} break; case 339: -#line 4351 "Gmsh.y" +#line 4359 "Gmsh.y" { (yyval.i) = OCC_Internals::Intersection; ;} break; case 340: -#line 4352 "Gmsh.y" +#line 4360 "Gmsh.y" { (yyval.i) = OCC_Internals::Difference; ;} break; case 341: -#line 4353 "Gmsh.y" +#line 4361 "Gmsh.y" { (yyval.i) = OCC_Internals::Section; ;} break; case 342: -#line 4354 "Gmsh.y" +#line 4362 "Gmsh.y" { (yyval.i) = OCC_Internals::Fragments; ;} break; case 343: -#line 4358 "Gmsh.y" +#line 4366 "Gmsh.y" { (yyval.i) = 0; ;} break; case 344: -#line 4359 "Gmsh.y" +#line 4367 "Gmsh.y" { (yyval.i) = 1; ;} break; case 345: -#line 4360 "Gmsh.y" +#line 4368 "Gmsh.y" { (yyval.i) = (yyvsp[(2) - (3)].d); ;} break; case 346: -#line 4365 "Gmsh.y" +#line 4373 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); if(factory == "OpenCASCADE" && GModel::current()->getOCCInternals()){ @@ -10814,7 +10822,7 @@ yyreduce: break; case 347: -#line 4389 "Gmsh.y" +#line 4397 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); if(factory == "OpenCASCADE" && GModel::current()->getOCCInternals()){ @@ -10840,7 +10848,7 @@ yyreduce: break; case 348: -#line 4416 "Gmsh.y" +#line 4424 "Gmsh.y" { if(factory == "OpenCASCADE" && GModel::current()->getOCCInternals()){ std::vector<int> shape[4], tool[4]; @@ -10860,14 +10868,14 @@ yyreduce: break; case 349: -#line 4436 "Gmsh.y" +#line 4444 "Gmsh.y" { (yyval.v)[0] = (yyval.v)[1] = 1.; ;} break; case 350: -#line 4440 "Gmsh.y" +#line 4448 "Gmsh.y" { if(!strcmp((yyvsp[(2) - (3)].c), "Progression") || !strcmp((yyvsp[(2) - (3)].c), "Power")) (yyval.v)[0] = 1.; @@ -10883,14 +10891,14 @@ yyreduce: break; case 351: -#line 4455 "Gmsh.y" +#line 4463 "Gmsh.y" { (yyval.i) = -1; // left ;} break; case 352: -#line 4459 "Gmsh.y" +#line 4467 "Gmsh.y" { if(!strcmp((yyvsp[(1) - (1)].c), "Right")) (yyval.i) = 1; @@ -10907,49 +10915,49 @@ yyreduce: break; case 353: -#line 4475 "Gmsh.y" +#line 4483 "Gmsh.y" { (yyval.l) = List_Create(1, 1, sizeof(double)); ;} break; case 354: -#line 4479 "Gmsh.y" +#line 4487 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (2)].l); ;} break; case 355: -#line 4484 "Gmsh.y" +#line 4492 "Gmsh.y" { (yyval.i) = 45; ;} break; case 356: -#line 4488 "Gmsh.y" +#line 4496 "Gmsh.y" { (yyval.i) = (int)(yyvsp[(2) - (2)].d); ;} break; case 357: -#line 4494 "Gmsh.y" +#line 4502 "Gmsh.y" { (yyval.l) = List_Create(1, 1, sizeof(double)); ;} break; case 358: -#line 4498 "Gmsh.y" +#line 4506 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (2)].l); ;} break; case 359: -#line 4505 "Gmsh.y" +#line 4513 "Gmsh.y" { int type = (int)(yyvsp[(6) - (7)].v)[0]; double coef = fabs((yyvsp[(6) - (7)].v)[1]); @@ -11008,7 +11016,7 @@ yyreduce: break; case 360: -#line 4561 "Gmsh.y" +#line 4569 "Gmsh.y" { int k = List_Nbr((yyvsp[(4) - (6)].l)); if(k != 0 && k != 3 && k != 4){ @@ -11081,7 +11089,7 @@ yyreduce: break; case 361: -#line 4631 "Gmsh.y" +#line 4639 "Gmsh.y" { yymsg(1, "Elliptic Surface is deprecated: use Transfinite instead (with smoothing)"); List_Delete((yyvsp[(7) - (8)].l)); @@ -11089,7 +11097,7 @@ yyreduce: break; case 362: -#line 4636 "Gmsh.y" +#line 4644 "Gmsh.y" { int k = List_Nbr((yyvsp[(4) - (5)].l)); if(k != 0 && k != 6 && k != 8){ @@ -11159,7 +11167,7 @@ yyreduce: break; case 363: -#line 4703 "Gmsh.y" +#line 4711 "Gmsh.y" { if(!(yyvsp[(2) - (3)].l)){ List_T *tmp = Tree2List(GModel::current()->getGEOInternals()->Volumes); @@ -11198,7 +11206,7 @@ yyreduce: break; case 364: -#line 4739 "Gmsh.y" +#line 4747 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (8)].l)); i++){ double d; @@ -11209,7 +11217,7 @@ yyreduce: break; case 365: -#line 4747 "Gmsh.y" +#line 4755 "Gmsh.y" { if(!(yyvsp[(3) - (5)].l)){ List_T *tmp = Tree2List(GModel::current()->getGEOInternals()->Surfaces); @@ -11255,7 +11263,7 @@ yyreduce: break; case 366: -#line 4790 "Gmsh.y" +#line 4798 "Gmsh.y" { if(!(yyvsp[(3) - (4)].l)){ List_T *tmp = Tree2List(GModel::current()->getGEOInternals()->Volumes); @@ -11297,7 +11305,7 @@ yyreduce: break; case 367: -#line 4829 "Gmsh.y" +#line 4837 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (6)].l)); i++){ double d; @@ -11320,7 +11328,7 @@ yyreduce: break; case 368: -#line 4850 "Gmsh.y" +#line 4858 "Gmsh.y" { if (List_Nbr((yyvsp[(4) - (11)].l)) != List_Nbr((yyvsp[(8) - (11)].l))){ yymsg(0, "Number of master lines (%d) different from number of " @@ -11354,7 +11362,7 @@ yyreduce: break; case 369: -#line 4882 "Gmsh.y" +#line 4890 "Gmsh.y" { if (List_Nbr((yyvsp[(4) - (11)].l)) != List_Nbr((yyvsp[(8) - (11)].l))){ yymsg(0, "Number of master faces (%d) different from number of " @@ -11383,7 +11391,7 @@ yyreduce: break; case 370: -#line 4909 "Gmsh.y" +#line 4917 "Gmsh.y" { if (List_Nbr((yyvsp[(4) - (18)].l)) != List_Nbr((yyvsp[(8) - (18)].l))){ yymsg(0, "Number of master edges (%d) different from number of " @@ -11411,7 +11419,7 @@ yyreduce: break; case 371: -#line 4935 "Gmsh.y" +#line 4943 "Gmsh.y" { if (List_Nbr((yyvsp[(4) - (18)].l)) != List_Nbr((yyvsp[(8) - (18)].l))){ yymsg(0, "Number of master faces (%d) different from number of " @@ -11439,7 +11447,7 @@ yyreduce: break; case 372: -#line 4961 "Gmsh.y" +#line 4969 "Gmsh.y" { if (List_Nbr((yyvsp[(4) - (12)].l)) != List_Nbr((yyvsp[(8) - (12)].l))){ yymsg(0, "Number of master edges (%d) different from number of " @@ -11467,7 +11475,7 @@ yyreduce: break; case 373: -#line 4987 "Gmsh.y" +#line 4995 "Gmsh.y" { if (List_Nbr((yyvsp[(4) - (12)].l)) != List_Nbr((yyvsp[(8) - (12)].l))){ yymsg(0, "Number of master faces (%d) different from number of " @@ -11495,7 +11503,7 @@ yyreduce: break; case 374: -#line 5013 "Gmsh.y" +#line 5021 "Gmsh.y" { if (List_Nbr((yyvsp[(5) - (12)].l)) != List_Nbr((yyvsp[(10) - (12)].l))){ yymsg(0, "Number of master surface edges (%d) different from number of " @@ -11519,7 +11527,7 @@ yyreduce: break; case 375: -#line 5034 "Gmsh.y" +#line 5042 "Gmsh.y" { Surface *s = FindSurface((int)(yyvsp[(8) - (10)].d)); if(s){ @@ -11550,7 +11558,7 @@ yyreduce: break; case 376: -#line 5062 "Gmsh.y" +#line 5070 "Gmsh.y" { Surface *s = FindSurface((int)(yyvsp[(8) - (10)].d)); if(s){ @@ -11581,7 +11589,7 @@ yyreduce: break; case 377: -#line 5090 "Gmsh.y" +#line 5098 "Gmsh.y" { Volume *v = FindVolume((int)(yyvsp[(8) - (10)].d)); if(v){ @@ -11612,7 +11620,7 @@ yyreduce: break; case 378: -#line 5118 "Gmsh.y" +#line 5126 "Gmsh.y" { Volume *v = FindVolume((int)(yyvsp[(8) - (10)].d)); if(v){ @@ -11643,7 +11651,7 @@ yyreduce: break; case 379: -#line 5146 "Gmsh.y" +#line 5154 "Gmsh.y" { Volume *v = FindVolume((int)(yyvsp[(8) - (10)].d)); if(v){ @@ -11674,7 +11682,7 @@ yyreduce: break; case 380: -#line 5174 "Gmsh.y" +#line 5182 "Gmsh.y" { if(!(yyvsp[(3) - (4)].l)){ List_T *tmp = Tree2List(GModel::current()->getGEOInternals()->Surfaces); @@ -11716,7 +11724,7 @@ yyreduce: break; case 381: -#line 5213 "Gmsh.y" +#line 5221 "Gmsh.y" { if(!(yyvsp[(3) - (4)].l)){ List_T *tmp = Tree2List(GModel::current()->getGEOInternals()->Curves); @@ -11758,7 +11766,7 @@ yyreduce: break; case 382: -#line 5252 "Gmsh.y" +#line 5260 "Gmsh.y" { if(!(yyvsp[(3) - (4)].l)){ for(GModel::viter it = GModel::current()->firstVertex(); @@ -11782,7 +11790,7 @@ yyreduce: break; case 383: -#line 5273 "Gmsh.y" +#line 5281 "Gmsh.y" { if(!(yyvsp[(3) - (4)].l)){ for(GModel::eiter it = GModel::current()->firstEdge(); @@ -11806,7 +11814,7 @@ yyreduce: break; case 384: -#line 5294 "Gmsh.y" +#line 5302 "Gmsh.y" { if(!(yyvsp[(3) - (4)].l)){ for(GModel::fiter it = GModel::current()->firstFace(); @@ -11830,14 +11838,14 @@ yyreduce: break; case 385: -#line 5321 "Gmsh.y" +#line 5329 "Gmsh.y" { ReplaceAllDuplicates(); ;} break; case 386: -#line 5325 "Gmsh.y" +#line 5333 "Gmsh.y" { if(!strcmp((yyvsp[(2) - (3)].c), "Geometry")) ReplaceAllDuplicates(); @@ -11850,7 +11858,7 @@ yyreduce: break; case 387: -#line 5335 "Gmsh.y" +#line 5343 "Gmsh.y" { if(List_Nbr((yyvsp[(4) - (6)].l)) >= 2){ double d; @@ -11883,22 +11891,22 @@ yyreduce: break; case 388: -#line 5369 "Gmsh.y" +#line 5377 "Gmsh.y" { (yyval.c) = (char*)"Homology"; ;} break; case 389: -#line 5370 "Gmsh.y" +#line 5378 "Gmsh.y" { (yyval.c) = (char*)"Cohomology"; ;} break; case 390: -#line 5371 "Gmsh.y" +#line 5379 "Gmsh.y" { (yyval.c) = (char*)"Betti"; ;} break; case 391: -#line 5376 "Gmsh.y" +#line 5384 "Gmsh.y" { std::vector<int> domain, subdomain, dim; for(int i = 0; i < 4; i++) dim.push_back(i); @@ -11907,7 +11915,7 @@ yyreduce: break; case 392: -#line 5382 "Gmsh.y" +#line 5390 "Gmsh.y" { std::vector<int> domain, subdomain, dim; for(int i = 0; i < List_Nbr((yyvsp[(3) - (5)].l)); i++){ @@ -11922,7 +11930,7 @@ yyreduce: break; case 393: -#line 5394 "Gmsh.y" +#line 5402 "Gmsh.y" { std::vector<int> domain, subdomain, dim; for(int i = 0; i < List_Nbr((yyvsp[(3) - (7)].l)); i++){ @@ -11943,7 +11951,7 @@ yyreduce: break; case 394: -#line 5412 "Gmsh.y" +#line 5420 "Gmsh.y" { std::vector<int> domain, subdomain, dim; for(int i = 0; i < List_Nbr((yyvsp[(6) - (10)].l)); i++){ @@ -11969,47 +11977,47 @@ yyreduce: break; case 395: -#line 5439 "Gmsh.y" +#line 5447 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (1)].d); ;} break; case 396: -#line 5440 "Gmsh.y" +#line 5448 "Gmsh.y" { (yyval.d) = (yyvsp[(2) - (3)].d); ;} break; case 397: -#line 5441 "Gmsh.y" +#line 5449 "Gmsh.y" { (yyval.d) = -(yyvsp[(2) - (2)].d); ;} break; case 398: -#line 5442 "Gmsh.y" +#line 5450 "Gmsh.y" { (yyval.d) = (yyvsp[(2) - (2)].d); ;} break; case 399: -#line 5443 "Gmsh.y" +#line 5451 "Gmsh.y" { (yyval.d) = !(yyvsp[(2) - (2)].d); ;} break; case 400: -#line 5444 "Gmsh.y" +#line 5452 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) - (yyvsp[(3) - (3)].d); ;} break; case 401: -#line 5445 "Gmsh.y" +#line 5453 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) + (yyvsp[(3) - (3)].d); ;} break; case 402: -#line 5446 "Gmsh.y" +#line 5454 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) * (yyvsp[(3) - (3)].d); ;} break; case 403: -#line 5448 "Gmsh.y" +#line 5456 "Gmsh.y" { if(!(yyvsp[(3) - (3)].d)) yymsg(0, "Division by zero in '%g / %g'", (yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].d)); @@ -12019,232 +12027,232 @@ yyreduce: break; case 404: -#line 5454 "Gmsh.y" +#line 5462 "Gmsh.y" { (yyval.d) = (int)(yyvsp[(1) - (3)].d) % (int)(yyvsp[(3) - (3)].d); ;} break; case 405: -#line 5455 "Gmsh.y" +#line 5463 "Gmsh.y" { (yyval.d) = pow((yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].d)); ;} break; case 406: -#line 5456 "Gmsh.y" +#line 5464 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) < (yyvsp[(3) - (3)].d); ;} break; case 407: -#line 5457 "Gmsh.y" +#line 5465 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) > (yyvsp[(3) - (3)].d); ;} break; case 408: -#line 5458 "Gmsh.y" +#line 5466 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) <= (yyvsp[(3) - (3)].d); ;} break; case 409: -#line 5459 "Gmsh.y" +#line 5467 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) >= (yyvsp[(3) - (3)].d); ;} break; case 410: -#line 5460 "Gmsh.y" +#line 5468 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) == (yyvsp[(3) - (3)].d); ;} break; case 411: -#line 5461 "Gmsh.y" +#line 5469 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) != (yyvsp[(3) - (3)].d); ;} break; case 412: -#line 5462 "Gmsh.y" +#line 5470 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) && (yyvsp[(3) - (3)].d); ;} break; case 413: -#line 5463 "Gmsh.y" +#line 5471 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) || (yyvsp[(3) - (3)].d); ;} break; case 414: -#line 5464 "Gmsh.y" +#line 5472 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (5)].d) ? (yyvsp[(3) - (5)].d) : (yyvsp[(5) - (5)].d); ;} break; case 415: -#line 5465 "Gmsh.y" +#line 5473 "Gmsh.y" { (yyval.d) = exp((yyvsp[(3) - (4)].d)); ;} break; case 416: -#line 5466 "Gmsh.y" +#line 5474 "Gmsh.y" { (yyval.d) = log((yyvsp[(3) - (4)].d)); ;} break; case 417: -#line 5467 "Gmsh.y" +#line 5475 "Gmsh.y" { (yyval.d) = log10((yyvsp[(3) - (4)].d)); ;} break; case 418: -#line 5468 "Gmsh.y" +#line 5476 "Gmsh.y" { (yyval.d) = sqrt((yyvsp[(3) - (4)].d)); ;} break; case 419: -#line 5469 "Gmsh.y" +#line 5477 "Gmsh.y" { (yyval.d) = sin((yyvsp[(3) - (4)].d)); ;} break; case 420: -#line 5470 "Gmsh.y" +#line 5478 "Gmsh.y" { (yyval.d) = asin((yyvsp[(3) - (4)].d)); ;} break; case 421: -#line 5471 "Gmsh.y" +#line 5479 "Gmsh.y" { (yyval.d) = cos((yyvsp[(3) - (4)].d)); ;} break; case 422: -#line 5472 "Gmsh.y" +#line 5480 "Gmsh.y" { (yyval.d) = acos((yyvsp[(3) - (4)].d)); ;} break; case 423: -#line 5473 "Gmsh.y" +#line 5481 "Gmsh.y" { (yyval.d) = tan((yyvsp[(3) - (4)].d)); ;} break; case 424: -#line 5474 "Gmsh.y" +#line 5482 "Gmsh.y" { (yyval.d) = atan((yyvsp[(3) - (4)].d)); ;} break; case 425: -#line 5475 "Gmsh.y" +#line 5483 "Gmsh.y" { (yyval.d) = atan2((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d));;} break; case 426: -#line 5476 "Gmsh.y" +#line 5484 "Gmsh.y" { (yyval.d) = sinh((yyvsp[(3) - (4)].d)); ;} break; case 427: -#line 5477 "Gmsh.y" +#line 5485 "Gmsh.y" { (yyval.d) = cosh((yyvsp[(3) - (4)].d)); ;} break; case 428: -#line 5478 "Gmsh.y" +#line 5486 "Gmsh.y" { (yyval.d) = tanh((yyvsp[(3) - (4)].d)); ;} break; case 429: -#line 5479 "Gmsh.y" +#line 5487 "Gmsh.y" { (yyval.d) = fabs((yyvsp[(3) - (4)].d)); ;} break; case 430: -#line 5480 "Gmsh.y" +#line 5488 "Gmsh.y" { (yyval.d) = floor((yyvsp[(3) - (4)].d)); ;} break; case 431: -#line 5481 "Gmsh.y" +#line 5489 "Gmsh.y" { (yyval.d) = ceil((yyvsp[(3) - (4)].d)); ;} break; case 432: -#line 5482 "Gmsh.y" +#line 5490 "Gmsh.y" { (yyval.d) = floor((yyvsp[(3) - (4)].d) + 0.5); ;} break; case 433: -#line 5483 "Gmsh.y" +#line 5491 "Gmsh.y" { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;} break; case 434: -#line 5484 "Gmsh.y" +#line 5492 "Gmsh.y" { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;} break; case 435: -#line 5485 "Gmsh.y" +#line 5493 "Gmsh.y" { (yyval.d) = sqrt((yyvsp[(3) - (6)].d) * (yyvsp[(3) - (6)].d) + (yyvsp[(5) - (6)].d) * (yyvsp[(5) - (6)].d)); ;} break; case 436: -#line 5486 "Gmsh.y" +#line 5494 "Gmsh.y" { (yyval.d) = (yyvsp[(3) - (4)].d) * (double)rand() / (double)RAND_MAX; ;} break; case 437: -#line 5495 "Gmsh.y" +#line 5503 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (1)].d); ;} break; case 438: -#line 5496 "Gmsh.y" +#line 5504 "Gmsh.y" { (yyval.d) = 3.141592653589793; ;} break; case 439: -#line 5497 "Gmsh.y" +#line 5505 "Gmsh.y" { (yyval.d) = (double)ImbricatedTest; ;} break; case 440: -#line 5498 "Gmsh.y" +#line 5506 "Gmsh.y" { (yyval.d) = Msg::GetCommRank(); ;} break; case 441: -#line 5499 "Gmsh.y" +#line 5507 "Gmsh.y" { (yyval.d) = Msg::GetCommSize(); ;} break; case 442: -#line 5500 "Gmsh.y" +#line 5508 "Gmsh.y" { (yyval.d) = GetGmshMajorVersion(); ;} break; case 443: -#line 5501 "Gmsh.y" +#line 5509 "Gmsh.y" { (yyval.d) = GetGmshMinorVersion(); ;} break; case 444: -#line 5502 "Gmsh.y" +#line 5510 "Gmsh.y" { (yyval.d) = GetGmshPatchVersion(); ;} break; case 445: -#line 5503 "Gmsh.y" +#line 5511 "Gmsh.y" { (yyval.d) = Cpu(); ;} break; case 446: -#line 5504 "Gmsh.y" +#line 5512 "Gmsh.y" { (yyval.d) = GetMemoryUsage()/1024./1024.; ;} break; case 447: -#line 5505 "Gmsh.y" +#line 5513 "Gmsh.y" { (yyval.d) = TotalRam(); ;} break; case 448: -#line 5510 "Gmsh.y" +#line 5518 "Gmsh.y" { floatOptions.clear(); charOptions.clear(); ;} break; case 449: -#line 5512 "Gmsh.y" +#line 5520 "Gmsh.y" { std::vector<double> val(1, (yyvsp[(3) - (6)].d)); Msg::ExchangeOnelabParameter("", val, floatOptions, charOptions); @@ -12253,7 +12261,7 @@ yyreduce: break; case 450: -#line 5518 "Gmsh.y" +#line 5526 "Gmsh.y" { (yyval.d) = Msg::GetOnelabNumber((yyvsp[(3) - (4)].c)); Free((yyvsp[(3) - (4)].c)); @@ -12261,7 +12269,7 @@ yyreduce: break; case 451: -#line 5523 "Gmsh.y" +#line 5531 "Gmsh.y" { (yyval.d) = Msg::GetOnelabNumber((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].d)); Free((yyvsp[(3) - (6)].c)); @@ -12269,7 +12277,7 @@ yyreduce: break; case 452: -#line 5528 "Gmsh.y" +#line 5536 "Gmsh.y" { if(!gmsh_yysymbols.count((yyvsp[(1) - (1)].c))){ yymsg(0, "Unknown variable '%s'", (yyvsp[(1) - (1)].c)); @@ -12289,7 +12297,7 @@ yyreduce: break; case 453: -#line 5545 "Gmsh.y" +#line 5553 "Gmsh.y" { int index = (int)(yyvsp[(3) - (4)].d); if(!gmsh_yysymbols.count((yyvsp[(1) - (4)].c))){ @@ -12310,7 +12318,7 @@ yyreduce: break; case 454: -#line 5563 "Gmsh.y" +#line 5571 "Gmsh.y" { int index = (int)(yyvsp[(3) - (4)].d); if(!gmsh_yysymbols.count((yyvsp[(1) - (4)].c))){ @@ -12331,7 +12339,7 @@ yyreduce: break; case 455: -#line 5581 "Gmsh.y" +#line 5589 "Gmsh.y" { int index = (int)(yyvsp[(3) - (4)].d); if(!gmsh_yysymbols.count((yyvsp[(1) - (4)].c))){ @@ -12352,7 +12360,7 @@ yyreduce: break; case 456: -#line 5599 "Gmsh.y" +#line 5607 "Gmsh.y" { int index = (int)(yyvsp[(3) - (4)].d); if(!gmsh_yysymbols.count((yyvsp[(1) - (4)].c))){ @@ -12373,7 +12381,7 @@ yyreduce: break; case 457: -#line 5617 "Gmsh.y" +#line 5625 "Gmsh.y" { (yyval.d) = gmsh_yysymbols.count((yyvsp[(3) - (4)].c)); Free((yyvsp[(3) - (4)].c)); @@ -12381,7 +12389,7 @@ yyreduce: break; case 458: -#line 5622 "Gmsh.y" +#line 5630 "Gmsh.y" { std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(3) - (4)].c)); (yyval.d) = !StatFile(tmp); @@ -12390,7 +12398,7 @@ yyreduce: break; case 459: -#line 5628 "Gmsh.y" +#line 5636 "Gmsh.y" { if(gmsh_yysymbols.count((yyvsp[(2) - (4)].c))){ gmsh_yysymbol &s(gmsh_yysymbols[(yyvsp[(2) - (4)].c)]); @@ -12408,7 +12416,7 @@ yyreduce: break; case 460: -#line 5643 "Gmsh.y" +#line 5651 "Gmsh.y" { if(!gmsh_yysymbols.count((yyvsp[(1) - (2)].c))){ yymsg(0, "Unknown variable '%s'", (yyvsp[(1) - (2)].c)); @@ -12430,7 +12438,7 @@ yyreduce: break; case 461: -#line 5662 "Gmsh.y" +#line 5670 "Gmsh.y" { int index = (int)(yyvsp[(3) - (5)].d); if(!gmsh_yysymbols.count((yyvsp[(1) - (5)].c))){ @@ -12453,7 +12461,7 @@ yyreduce: break; case 462: -#line 5682 "Gmsh.y" +#line 5690 "Gmsh.y" { int index = (int)(yyvsp[(3) - (5)].d); if(!gmsh_yysymbols.count((yyvsp[(1) - (5)].c))){ @@ -12476,7 +12484,7 @@ yyreduce: break; case 463: -#line 5702 "Gmsh.y" +#line 5710 "Gmsh.y" { int index = (int)(yyvsp[(3) - (5)].d); if(!gmsh_yysymbols.count((yyvsp[(1) - (5)].c))){ @@ -12499,7 +12507,7 @@ yyreduce: break; case 464: -#line 5722 "Gmsh.y" +#line 5730 "Gmsh.y" { int index = (int)(yyvsp[(3) - (5)].d); if(!gmsh_yysymbols.count((yyvsp[(1) - (5)].c))){ @@ -12522,7 +12530,7 @@ yyreduce: break; case 465: -#line 5745 "Gmsh.y" +#line 5753 "Gmsh.y" { NumberOption(GMSH_GET, (yyvsp[(1) - (3)].c), 0, (yyvsp[(3) - (3)].c), (yyval.d)); Free((yyvsp[(1) - (3)].c)); Free((yyvsp[(3) - (3)].c)); @@ -12530,7 +12538,7 @@ yyreduce: break; case 466: -#line 5750 "Gmsh.y" +#line 5758 "Gmsh.y" { NumberOption(GMSH_GET, (yyvsp[(1) - (6)].c), (int)(yyvsp[(3) - (6)].d), (yyvsp[(6) - (6)].c), (yyval.d)); Free((yyvsp[(1) - (6)].c)); Free((yyvsp[(6) - (6)].c)); @@ -12538,7 +12546,7 @@ yyreduce: break; case 467: -#line 5755 "Gmsh.y" +#line 5763 "Gmsh.y" { double d = 0.; if(NumberOption(GMSH_GET, (yyvsp[(1) - (4)].c), 0, (yyvsp[(3) - (4)].c), d)){ @@ -12551,7 +12559,7 @@ yyreduce: break; case 468: -#line 5765 "Gmsh.y" +#line 5773 "Gmsh.y" { double d = 0.; if(NumberOption(GMSH_GET, (yyvsp[(1) - (7)].c), (int)(yyvsp[(3) - (7)].d), (yyvsp[(6) - (7)].c), d)){ @@ -12564,7 +12572,7 @@ yyreduce: break; case 469: -#line 5775 "Gmsh.y" +#line 5783 "Gmsh.y" { (yyval.d) = Msg::GetValue((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].d)); Free((yyvsp[(3) - (6)].c)); @@ -12572,7 +12580,7 @@ yyreduce: break; case 470: -#line 5780 "Gmsh.y" +#line 5788 "Gmsh.y" { int matches = 0; for(int i = 0; i < List_Nbr((yyvsp[(3) - (6)].l)); i++){ @@ -12586,7 +12594,7 @@ yyreduce: break; case 471: -#line 5791 "Gmsh.y" +#line 5799 "Gmsh.y" { std::string s((yyvsp[(3) - (6)].c)), substr((yyvsp[(5) - (6)].c)); if(s.find(substr) != std::string::npos) @@ -12598,7 +12606,7 @@ yyreduce: break; case 472: -#line 5800 "Gmsh.y" +#line 5808 "Gmsh.y" { (yyval.d) = strlen((yyvsp[(3) - (4)].c)); Free((yyvsp[(3) - (4)].c)); @@ -12606,7 +12614,7 @@ yyreduce: break; case 473: -#line 5805 "Gmsh.y" +#line 5813 "Gmsh.y" { (yyval.d) = strcmp((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].c)); Free((yyvsp[(3) - (6)].c)); Free((yyvsp[(5) - (6)].c)); @@ -12614,7 +12622,7 @@ yyreduce: break; case 474: -#line 5810 "Gmsh.y" +#line 5818 "Gmsh.y" { int align = 0, font = 0, fontsize = CTX::instance()->glFontSize; if(List_Nbr((yyvsp[(3) - (4)].l)) % 2){ @@ -12641,70 +12649,70 @@ yyreduce: break; case 475: -#line 5837 "Gmsh.y" +#line 5845 "Gmsh.y" { memcpy((yyval.v), (yyvsp[(1) - (1)].v), 5*sizeof(double)); ;} break; case 476: -#line 5841 "Gmsh.y" +#line 5849 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = -(yyvsp[(2) - (2)].v)[i]; ;} break; case 477: -#line 5845 "Gmsh.y" +#line 5853 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = (yyvsp[(2) - (2)].v)[i]; ;} break; case 478: -#line 5849 "Gmsh.y" +#line 5857 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = (yyvsp[(1) - (3)].v)[i] - (yyvsp[(3) - (3)].v)[i]; ;} break; case 479: -#line 5853 "Gmsh.y" +#line 5861 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = (yyvsp[(1) - (3)].v)[i] + (yyvsp[(3) - (3)].v)[i]; ;} break; case 480: -#line 5860 "Gmsh.y" +#line 5868 "Gmsh.y" { (yyval.v)[0] = (yyvsp[(2) - (11)].d); (yyval.v)[1] = (yyvsp[(4) - (11)].d); (yyval.v)[2] = (yyvsp[(6) - (11)].d); (yyval.v)[3] = (yyvsp[(8) - (11)].d); (yyval.v)[4] = (yyvsp[(10) - (11)].d); ;} break; case 481: -#line 5864 "Gmsh.y" +#line 5872 "Gmsh.y" { (yyval.v)[0] = (yyvsp[(2) - (9)].d); (yyval.v)[1] = (yyvsp[(4) - (9)].d); (yyval.v)[2] = (yyvsp[(6) - (9)].d); (yyval.v)[3] = (yyvsp[(8) - (9)].d); (yyval.v)[4] = 1.0; ;} break; case 482: -#line 5868 "Gmsh.y" +#line 5876 "Gmsh.y" { (yyval.v)[0] = (yyvsp[(2) - (7)].d); (yyval.v)[1] = (yyvsp[(4) - (7)].d); (yyval.v)[2] = (yyvsp[(6) - (7)].d); (yyval.v)[3] = 0.0; (yyval.v)[4] = 1.0; ;} break; case 483: -#line 5872 "Gmsh.y" +#line 5880 "Gmsh.y" { (yyval.v)[0] = (yyvsp[(2) - (7)].d); (yyval.v)[1] = (yyvsp[(4) - (7)].d); (yyval.v)[2] = (yyvsp[(6) - (7)].d); (yyval.v)[3] = 0.0; (yyval.v)[4] = 1.0; ;} break; case 484: -#line 5879 "Gmsh.y" +#line 5887 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(List_T*)); List_Add((yyval.l), &((yyvsp[(1) - (1)].l))); @@ -12712,14 +12720,14 @@ yyreduce: break; case 485: -#line 5884 "Gmsh.y" +#line 5892 "Gmsh.y" { List_Add((yyval.l), &((yyvsp[(3) - (3)].l))); ;} break; case 486: -#line 5891 "Gmsh.y" +#line 5899 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); List_Add((yyval.l), &((yyvsp[(1) - (1)].d))); @@ -12727,14 +12735,14 @@ yyreduce: break; case 487: -#line 5896 "Gmsh.y" +#line 5904 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; case 488: -#line 5900 "Gmsh.y" +#line 5908 "Gmsh.y" { // creates an empty list (yyval.l) = List_Create(2, 1, sizeof(double)); @@ -12742,14 +12750,14 @@ yyreduce: break; case 489: -#line 5905 "Gmsh.y" +#line 5913 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (3)].l); ;} break; case 490: -#line 5909 "Gmsh.y" +#line 5917 "Gmsh.y" { (yyval.l) = (yyvsp[(3) - (4)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ @@ -12760,7 +12768,7 @@ yyreduce: break; case 491: -#line 5917 "Gmsh.y" +#line 5925 "Gmsh.y" { (yyval.l) = (yyvsp[(4) - (5)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ @@ -12771,14 +12779,14 @@ yyreduce: break; case 492: -#line 5928 "Gmsh.y" +#line 5936 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; case 493: -#line 5932 "Gmsh.y" +#line 5940 "Gmsh.y" { if(!strcmp((yyvsp[(1) - (1)].c), "*") || !strcmp((yyvsp[(1) - (1)].c), "all")) (yyval.l) = 0; @@ -12790,7 +12798,7 @@ yyreduce: break; case 494: -#line 5944 "Gmsh.y" +#line 5952 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (2)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ @@ -12801,7 +12809,7 @@ yyreduce: break; case 495: -#line 5952 "Gmsh.y" +#line 5960 "Gmsh.y" { (yyval.l) = (yyvsp[(3) - (3)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ @@ -12812,7 +12820,7 @@ yyreduce: break; case 496: -#line 5960 "Gmsh.y" +#line 5968 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); for(double d = (yyvsp[(1) - (3)].d); ((yyvsp[(1) - (3)].d) < (yyvsp[(3) - (3)].d)) ? (d <= (yyvsp[(3) - (3)].d)) : (d >= (yyvsp[(3) - (3)].d)); @@ -12822,7 +12830,7 @@ yyreduce: break; case 497: -#line 5967 "Gmsh.y" +#line 5975 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!(yyvsp[(5) - (5)].d)){ //|| ($1 < $3 && $5 < 0) || ($1 > $3 && $5 > 0) @@ -12835,7 +12843,7 @@ yyreduce: break; case 498: -#line 5977 "Gmsh.y" +#line 5985 "Gmsh.y" { // Returns the coordinates of a point and fills a list with it. // This allows to ensure e.g. that relative point positions are @@ -12867,63 +12875,63 @@ yyreduce: break; case 499: -#line 6006 "Gmsh.y" +#line 6014 "Gmsh.y" { (yyval.l) = GetAllElementaryEntityNumbers(0); ;} break; case 500: -#line 6010 "Gmsh.y" +#line 6018 "Gmsh.y" { (yyval.l) = GetAllElementaryEntityNumbers(1); ;} break; case 501: -#line 6014 "Gmsh.y" +#line 6022 "Gmsh.y" { (yyval.l) = GetAllElementaryEntityNumbers(2); ;} break; case 502: -#line 6018 "Gmsh.y" +#line 6026 "Gmsh.y" { (yyval.l) = GetAllElementaryEntityNumbers(3); ;} break; case 503: -#line 6022 "Gmsh.y" +#line 6030 "Gmsh.y" { (yyval.l) = GetAllPhysicalEntityNumbers(0); ;} break; case 504: -#line 6026 "Gmsh.y" +#line 6034 "Gmsh.y" { (yyval.l) = GetAllPhysicalEntityNumbers(1); ;} break; case 505: -#line 6030 "Gmsh.y" +#line 6038 "Gmsh.y" { (yyval.l) = GetAllPhysicalEntityNumbers(2); ;} break; case 506: -#line 6034 "Gmsh.y" +#line 6042 "Gmsh.y" { (yyval.l) = GetAllPhysicalEntityNumbers(3); ;} break; case 507: -#line 6038 "Gmsh.y" +#line 6046 "Gmsh.y" { (yyval.l) = List_Create(10, 1, sizeof(double)); for(int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++){ @@ -12955,7 +12963,7 @@ yyreduce: break; case 508: -#line 6067 "Gmsh.y" +#line 6075 "Gmsh.y" { (yyval.l) = List_Create(10, 1, sizeof(double)); for(int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++){ @@ -12987,7 +12995,7 @@ yyreduce: break; case 509: -#line 6096 "Gmsh.y" +#line 6104 "Gmsh.y" { (yyval.l) = List_Create(10, 1, sizeof(double)); for(int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++){ @@ -13019,7 +13027,7 @@ yyreduce: break; case 510: -#line 6125 "Gmsh.y" +#line 6133 "Gmsh.y" { (yyval.l) = List_Create(10, 1, sizeof(double)); for(int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++){ @@ -13051,7 +13059,7 @@ yyreduce: break; case 511: -#line 6155 "Gmsh.y" +#line 6163 "Gmsh.y" { (yyval.l) = List_Create(10, 1, sizeof(double)); GModel::current()->importGEOInternals(); @@ -13066,7 +13074,7 @@ yyreduce: break; case 512: -#line 6168 "Gmsh.y" +#line 6176 "Gmsh.y" { (yyval.l) = List_Create(10, 1, sizeof(double)); GModel::current()->importGEOInternals(); @@ -13081,7 +13089,7 @@ yyreduce: break; case 513: -#line 6181 "Gmsh.y" +#line 6189 "Gmsh.y" { (yyval.l) = List_Create(10, 1, sizeof(double)); GModel::current()->importGEOInternals(); @@ -13096,7 +13104,7 @@ yyreduce: break; case 514: -#line 6194 "Gmsh.y" +#line 6202 "Gmsh.y" { (yyval.l) = List_Create(10, 1, sizeof(double)); GModel::current()->importGEOInternals(); @@ -13111,7 +13119,7 @@ yyreduce: break; case 515: -#line 6206 "Gmsh.y" +#line 6214 "Gmsh.y" { (yyval.l) = List_Create(List_Nbr((yyvsp[(1) - (1)].l)), 1, sizeof(double)); for(int i = 0; i < List_Nbr((yyvsp[(1) - (1)].l)); i++){ @@ -13124,7 +13132,7 @@ yyreduce: break; case 516: -#line 6216 "Gmsh.y" +#line 6224 "Gmsh.y" { (yyval.l) = List_Create(List_Nbr((yyvsp[(1) - (1)].l)), 1, sizeof(double)); for(int i = 0; i < List_Nbr((yyvsp[(1) - (1)].l)); i++){ @@ -13137,7 +13145,7 @@ yyreduce: break; case 517: -#line 6226 "Gmsh.y" +#line 6234 "Gmsh.y" { (yyval.l) = List_Create(List_Nbr((yyvsp[(1) - (1)].l)), 1, sizeof(double)); for(int i = 0; i < List_Nbr((yyvsp[(1) - (1)].l)); i++){ @@ -13150,7 +13158,7 @@ yyreduce: break; case 518: -#line 6236 "Gmsh.y" +#line 6244 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!gmsh_yysymbols.count((yyvsp[(1) - (3)].c))) @@ -13165,7 +13173,7 @@ yyreduce: break; case 519: -#line 6248 "Gmsh.y" +#line 6256 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!gmsh_yysymbols.count((yyvsp[(1) - (3)].c))) @@ -13180,7 +13188,7 @@ yyreduce: break; case 520: -#line 6261 "Gmsh.y" +#line 6269 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!gmsh_yysymbols.count((yyvsp[(3) - (4)].c))) @@ -13195,35 +13203,35 @@ yyreduce: break; case 521: -#line 6273 "Gmsh.y" +#line 6281 "Gmsh.y" { (yyval.l) = (yyvsp[(3) - (4)].l); ;} break; case 522: -#line 6277 "Gmsh.y" +#line 6285 "Gmsh.y" { (yyval.l) = (yyvsp[(3) - (4)].l); ;} break; case 523: -#line 6281 "Gmsh.y" +#line 6289 "Gmsh.y" { (yyval.l) = (yyvsp[(4) - (6)].l); ;} break; case 524: -#line 6285 "Gmsh.y" +#line 6293 "Gmsh.y" { (yyval.l) = (yyvsp[(4) - (6)].l); ;} break; case 525: -#line 6289 "Gmsh.y" +#line 6297 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!gmsh_yysymbols.count((yyvsp[(1) - (6)].c))) @@ -13244,7 +13252,7 @@ yyreduce: break; case 526: -#line 6307 "Gmsh.y" +#line 6315 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!gmsh_yysymbols.count((yyvsp[(1) - (6)].c))) @@ -13265,7 +13273,7 @@ yyreduce: break; case 527: -#line 6325 "Gmsh.y" +#line 6333 "Gmsh.y" { (yyval.l) = List_Create(20,20,sizeof(double)); for(int i = 0; i < (int)(yyvsp[(7) - (8)].d); i++) { @@ -13276,7 +13284,7 @@ yyreduce: break; case 528: -#line 6333 "Gmsh.y" +#line 6341 "Gmsh.y" { (yyval.l) = List_Create(20,20,sizeof(double)); for(int i = 0; i < (int)(yyvsp[(7) - (8)].d); i++) { @@ -13287,7 +13295,7 @@ yyreduce: break; case 529: -#line 6341 "Gmsh.y" +#line 6349 "Gmsh.y" { Msg::Barrier(); FILE *File; @@ -13319,7 +13327,7 @@ yyreduce: break; case 530: -#line 6370 "Gmsh.y" +#line 6378 "Gmsh.y" { double x0 = (yyvsp[(3) - (14)].d), x1 = (yyvsp[(5) - (14)].d), y0 = (yyvsp[(7) - (14)].d), y1 = (yyvsp[(9) - (14)].d), ys = (yyvsp[(11) - (14)].d); int N = (int)(yyvsp[(13) - (14)].d); @@ -13332,7 +13340,7 @@ yyreduce: break; case 531: -#line 6383 "Gmsh.y" +#line 6391 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); List_Add((yyval.l), &((yyvsp[(1) - (1)].d))); @@ -13340,21 +13348,21 @@ yyreduce: break; case 532: -#line 6388 "Gmsh.y" +#line 6396 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; case 533: -#line 6392 "Gmsh.y" +#line 6400 "Gmsh.y" { List_Add((yyval.l), &((yyvsp[(3) - (3)].d))); ;} break; case 534: -#line 6396 "Gmsh.y" +#line 6404 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (3)].l)); i++){ double d; @@ -13366,21 +13374,21 @@ yyreduce: break; case 535: -#line 6408 "Gmsh.y" +#line 6416 "Gmsh.y" { (yyval.u) = CTX::instance()->packColor((int)(yyvsp[(2) - (9)].d), (int)(yyvsp[(4) - (9)].d), (int)(yyvsp[(6) - (9)].d), (int)(yyvsp[(8) - (9)].d)); ;} break; case 536: -#line 6412 "Gmsh.y" +#line 6420 "Gmsh.y" { (yyval.u) = CTX::instance()->packColor((int)(yyvsp[(2) - (7)].d), (int)(yyvsp[(4) - (7)].d), (int)(yyvsp[(6) - (7)].d), 255); ;} break; case 537: -#line 6424 "Gmsh.y" +#line 6432 "Gmsh.y" { int flag = 0; if(gmsh_yystringsymbols.count((yyvsp[(1) - (1)].c))){ @@ -13400,7 +13408,7 @@ yyreduce: break; case 538: -#line 6441 "Gmsh.y" +#line 6449 "Gmsh.y" { unsigned int val = 0; ColorOption(GMSH_GET, (yyvsp[(1) - (5)].c), 0, (yyvsp[(5) - (5)].c), val); @@ -13410,14 +13418,14 @@ yyreduce: break; case 539: -#line 6451 "Gmsh.y" +#line 6459 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (3)].l); ;} break; case 540: -#line 6455 "Gmsh.y" +#line 6463 "Gmsh.y" { (yyval.l) = List_Create(256, 10, sizeof(unsigned int)); GmshColorTable *ct = GetColorTable((int)(yyvsp[(3) - (6)].d)); @@ -13432,7 +13440,7 @@ yyreduce: break; case 541: -#line 6470 "Gmsh.y" +#line 6478 "Gmsh.y" { (yyval.l) = List_Create(256, 10, sizeof(unsigned int)); List_Add((yyval.l), &((yyvsp[(1) - (1)].u))); @@ -13440,21 +13448,21 @@ yyreduce: break; case 542: -#line 6475 "Gmsh.y" +#line 6483 "Gmsh.y" { List_Add((yyval.l), &((yyvsp[(3) - (3)].u))); ;} break; case 543: -#line 6482 "Gmsh.y" +#line 6490 "Gmsh.y" { (yyval.c) = (yyvsp[(1) - (1)].c); ;} break; case 544: -#line 6486 "Gmsh.y" +#line 6494 "Gmsh.y" { std::string val; if(!gmsh_yystringsymbols.count((yyvsp[(1) - (1)].c))) @@ -13470,7 +13478,7 @@ yyreduce: break; case 545: -#line 6499 "Gmsh.y" +#line 6507 "Gmsh.y" { std::string val; int j = (int)(yyvsp[(3) - (4)].d); @@ -13487,7 +13495,7 @@ yyreduce: break; case 546: -#line 6513 "Gmsh.y" +#line 6521 "Gmsh.y" { std::string val; int j = (int)(yyvsp[(3) - (4)].d); @@ -13504,7 +13512,7 @@ yyreduce: break; case 547: -#line 6527 "Gmsh.y" +#line 6535 "Gmsh.y" { std::string val; int j = (int)(yyvsp[(3) - (4)].d); @@ -13521,7 +13529,7 @@ yyreduce: break; case 548: -#line 6541 "Gmsh.y" +#line 6549 "Gmsh.y" { std::string val; int j = (int)(yyvsp[(3) - (4)].d); @@ -13538,7 +13546,7 @@ yyreduce: break; case 549: -#line 6555 "Gmsh.y" +#line 6563 "Gmsh.y" { std::string out; StringOption(GMSH_GET, (yyvsp[(1) - (3)].c), 0, (yyvsp[(3) - (3)].c), out); @@ -13549,7 +13557,7 @@ yyreduce: break; case 550: -#line 6563 "Gmsh.y" +#line 6571 "Gmsh.y" { std::string out; StringOption(GMSH_GET, (yyvsp[(1) - (6)].c), (int)(yyvsp[(3) - (6)].d), (yyvsp[(6) - (6)].c), out); @@ -13560,21 +13568,21 @@ yyreduce: break; case 551: -#line 6574 "Gmsh.y" +#line 6582 "Gmsh.y" { (yyval.c) = (yyvsp[(1) - (1)].c); ;} break; case 552: -#line 6578 "Gmsh.y" +#line 6586 "Gmsh.y" { (yyval.c) = (yyvsp[(3) - (4)].c); ;} break; case 553: -#line 6582 "Gmsh.y" +#line 6590 "Gmsh.y" { (yyval.c) = (char *)Malloc(32 * sizeof(char)); time_t now; @@ -13585,7 +13593,7 @@ yyreduce: break; case 554: -#line 6590 "Gmsh.y" +#line 6598 "Gmsh.y" { std::string exe = Msg::GetExecutableName(); (yyval.c) = (char *)Malloc(exe.size() + 1); @@ -13594,7 +13602,7 @@ yyreduce: break; case 555: -#line 6596 "Gmsh.y" +#line 6604 "Gmsh.y" { std::string action = Msg::GetOnelabAction(); (yyval.c) = (char *)Malloc(action.size() + 1); @@ -13603,7 +13611,7 @@ yyreduce: break; case 556: -#line 6602 "Gmsh.y" +#line 6610 "Gmsh.y" { const char *env = GetEnvironmentVar((yyvsp[(3) - (4)].c)); if(!env) env = ""; @@ -13614,7 +13622,7 @@ yyreduce: break; case 557: -#line 6610 "Gmsh.y" +#line 6618 "Gmsh.y" { std::string s = Msg::GetString((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].c)); (yyval.c) = (char *)Malloc((s.size() + 1) * sizeof(char)); @@ -13625,7 +13633,7 @@ yyreduce: break; case 558: -#line 6618 "Gmsh.y" +#line 6626 "Gmsh.y" { std::string s = Msg::GetOnelabString((yyvsp[(3) - (4)].c)); (yyval.c) = (char *)Malloc((s.size() + 1) * sizeof(char)); @@ -13635,7 +13643,7 @@ yyreduce: break; case 559: -#line 6625 "Gmsh.y" +#line 6633 "Gmsh.y" { std::string s = Msg::GetOnelabString((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].c)); (yyval.c) = (char *)Malloc((s.size() + 1) * sizeof(char)); @@ -13646,7 +13654,7 @@ yyreduce: break; case 560: -#line 6633 "Gmsh.y" +#line 6641 "Gmsh.y" { int size = 1; for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++) @@ -13664,7 +13672,7 @@ yyreduce: break; case 561: -#line 6648 "Gmsh.y" +#line 6656 "Gmsh.y" { (yyval.c) = (char *)Malloc((strlen((yyvsp[(3) - (4)].c)) + 1) * sizeof(char)); int i; @@ -13681,7 +13689,7 @@ yyreduce: break; case 562: -#line 6662 "Gmsh.y" +#line 6670 "Gmsh.y" { (yyval.c) = (char *)Malloc((strlen((yyvsp[(3) - (4)].c)) + 1) * sizeof(char)); int i; @@ -13698,7 +13706,7 @@ yyreduce: break; case 563: -#line 6676 "Gmsh.y" +#line 6684 "Gmsh.y" { std::string input = (yyvsp[(3) - (8)].c); std::string substr_old = (yyvsp[(5) - (8)].c); @@ -13713,7 +13721,7 @@ yyreduce: break; case 564: -#line 6688 "Gmsh.y" +#line 6696 "Gmsh.y" { int size = 1; for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++) @@ -13732,7 +13740,7 @@ yyreduce: break; case 565: -#line 6704 "Gmsh.y" +#line 6712 "Gmsh.y" { int i = 0; while ((yyvsp[(3) - (4)].c)[i]) { @@ -13744,7 +13752,7 @@ yyreduce: break; case 566: -#line 6713 "Gmsh.y" +#line 6721 "Gmsh.y" { int i = 0; while ((yyvsp[(3) - (4)].c)[i]) { @@ -13756,7 +13764,7 @@ yyreduce: break; case 567: -#line 6722 "Gmsh.y" +#line 6730 "Gmsh.y" { int i = 0; while ((yyvsp[(3) - (4)].c)[i]) { @@ -13769,7 +13777,7 @@ yyreduce: break; case 568: -#line 6732 "Gmsh.y" +#line 6740 "Gmsh.y" { if((yyvsp[(3) - (8)].d)){ (yyval.c) = (yyvsp[(5) - (8)].c); @@ -13783,7 +13791,7 @@ yyreduce: break; case 569: -#line 6743 "Gmsh.y" +#line 6751 "Gmsh.y" { std::string in = (yyvsp[(3) - (8)].c); std::string out = in.substr((int)(yyvsp[(5) - (8)].d), (int)(yyvsp[(7) - (8)].d)); @@ -13794,7 +13802,7 @@ yyreduce: break; case 570: -#line 6751 "Gmsh.y" +#line 6759 "Gmsh.y" { std::string in = (yyvsp[(3) - (6)].c); std::string out = in.substr((int)(yyvsp[(5) - (6)].d), std::string::npos); @@ -13805,14 +13813,14 @@ yyreduce: break; case 571: -#line 6759 "Gmsh.y" +#line 6767 "Gmsh.y" { (yyval.c) = (yyvsp[(3) - (4)].c); ;} break; case 572: -#line 6763 "Gmsh.y" +#line 6771 "Gmsh.y" { char tmpstring[5000]; int i = PrintListOfDouble((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].l), tmpstring); @@ -13834,7 +13842,7 @@ yyreduce: break; case 573: -#line 6782 "Gmsh.y" +#line 6790 "Gmsh.y" { std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(3) - (4)].c)); (yyval.c) = (char*)Malloc((tmp.size() + 1) * sizeof(char)); @@ -13844,7 +13852,7 @@ yyreduce: break; case 574: -#line 6789 "Gmsh.y" +#line 6797 "Gmsh.y" { std::string tmp = SplitFileName(GetAbsolutePath(gmsh_yyname))[0]; (yyval.c) = (char*)Malloc((tmp.size() + 1) * sizeof(char)); @@ -13853,7 +13861,7 @@ yyreduce: break; case 575: -#line 6795 "Gmsh.y" +#line 6803 "Gmsh.y" { std::string tmp = SplitFileName((yyvsp[(3) - (4)].c))[0]; (yyval.c) = (char*)Malloc((tmp.size() + 1) * sizeof(char)); @@ -13863,7 +13871,7 @@ yyreduce: break; case 576: -#line 6802 "Gmsh.y" +#line 6810 "Gmsh.y" { std::string tmp = GetAbsolutePath((yyvsp[(3) - (4)].c)); (yyval.c) = (char*)Malloc((tmp.size() + 1) * sizeof(char)); @@ -13873,12 +13881,12 @@ yyreduce: break; case 577: -#line 6809 "Gmsh.y" +#line 6817 "Gmsh.y" { floatOptions.clear(); charOptions.clear(); ;} break; case 578: -#line 6811 "Gmsh.y" +#line 6819 "Gmsh.y" { std::string val((yyvsp[(3) - (6)].c)); Msg::ExchangeOnelabParameter("", val, floatOptions, charOptions); @@ -13889,7 +13897,7 @@ yyreduce: break; case 579: -#line 6822 "Gmsh.y" +#line 6830 "Gmsh.y" { (yyval.l) = List_Create(20,20,sizeof(char*)); List_Add((yyval.l), &((yyvsp[(1) - (1)].c))); @@ -13897,12 +13905,12 @@ yyreduce: break; case 580: -#line 6827 "Gmsh.y" +#line 6835 "Gmsh.y" { List_Add((yyval.l), &((yyvsp[(3) - (3)].c))); ;} break; case 581: -#line 6833 "Gmsh.y" +#line 6841 "Gmsh.y" { char tmpstr[256]; sprintf(tmpstr, "_%d", (int)(yyvsp[(4) - (5)].d)); @@ -13913,7 +13921,7 @@ yyreduce: break; case 582: -#line 6842 "Gmsh.y" +#line 6850 "Gmsh.y" { char tmpstr[256]; sprintf(tmpstr, "_%d", (int)(yyvsp[(4) - (5)].d)); @@ -13924,23 +13932,23 @@ yyreduce: break; case 583: -#line 6855 "Gmsh.y" +#line 6863 "Gmsh.y" { (yyval.c) = (yyvsp[(1) - (1)].c); ;} break; case 584: -#line 6858 "Gmsh.y" +#line 6866 "Gmsh.y" { (yyval.c) = (yyvsp[(1) - (1)].c); ;} break; case 585: -#line 6862 "Gmsh.y" +#line 6870 "Gmsh.y" { (yyval.c) = (yyvsp[(3) - (4)].c); ;} break; /* Line 1267 of yacc.c. */ -#line 13944 "Gmsh.tab.cpp" +#line 13952 "Gmsh.tab.cpp" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -14154,7 +14162,7 @@ yyreturn: } -#line 6865 "Gmsh.y" +#line 6873 "Gmsh.y" void assignVariable(const std::string &name, int index, int assignType, diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y index 9989d313618f739f6c3ee1b62c69f1e45c74675b..5df20b58451c14c0b4d2b33a329e8487aebb8c91 100644 --- a/Parser/Gmsh.y +++ b/Parser/Gmsh.y @@ -2571,7 +2571,15 @@ Transform : | tRotate '{' VExpr ',' VExpr ',' FExpr '}' '{' MultipleShape '}' { if(factory == "OpenCASCADE" && GModel::current()->getOCCInternals()){ - Msg::Error("TODO OCC Rotate"); + std::vector<int> in[4]; + Shape TheShape; + for(int i = 0; i < List_Nbr($10); i++){ + List_Read($10, i, &TheShape); + int dim = TheShape.Type / 100 - 1; + if(dim >= 0 && dim <= 3) in[dim].push_back(TheShape.Num); + } + GModel::current()->getOCCInternals()->rotate(in, $5[0], $5[1], $5[2], + $3[0], $3[1], $3[2], $7); } else{ RotateShapes($3[0], $3[1], $3[2], $5[0], $5[1], $5[2], $7, $10); diff --git a/benchmarks/boolean/transform.geo b/benchmarks/boolean/transform.geo index 9d0ee378c23b97c904d9b8c0c779857602d0bec7..55e7a15272d1b68195f8bba2b88023129e531ca2 100644 --- a/benchmarks/boolean/transform.geo +++ b/benchmarks/boolean/transform.geo @@ -22,6 +22,8 @@ DefineConstant[ Block(1) = {x,y,z, x+dx,y+dy,z+dz}; Block(2) = {x2,y2,z2, x2+dx2,y2+dy2,z2+dz2}; -// f() = BooleanFragments { Volume{1}; Delete; }{ Volume{2}; Delete; }; - Translate{0.2,0.2,0.2}{ Volume{1}; } +Rotate { {1,0,0}, {0,0,0}, Pi/3 } { Volume{1}; } +Rotate { {0,1,0}, {0,0,0}, Pi/3 } { Volume{1}; } + +f() = BooleanFragments { Volume{1}; Delete; }{ Volume{2}; Delete; };