diff --git a/Geo/GModelIO_OCC.cpp b/Geo/GModelIO_OCC.cpp index 16f5e4bf3c40089d17ec5e1dd5e5a9ff02d1b979..d4e5b41e72aa49caac18d6ecd6979120e11311e1 100644 --- a/Geo/GModelIO_OCC.cpp +++ b/Geo/GModelIO_OCC.cpp @@ -3636,461 +3636,6 @@ bool OCC_Internals::makeTorusSTL(double x, double y, double z, double r1, double return false; return true; } -/* -void dumpStepLabels(STEPControl_Reader reader) -{ - const Handle(XSControl_WorkSession) &theSession = reader.WS(); - const Handle(Interface_InterfaceModel) &theModel = theSession->Model(); - Standard_Integer nb = theModel->NbEntities(); - for(Standard_Integer i=1; i < ....) { - Handle(StepRepr_Representation) entity = - Handle(StepRepr_Representation)::DownCast(theModel->Value(i)); - if(entity.IsNull()){ - continue; - } - if(entity->Name().IsNull()){ - continue; - } - cout << Name()->ToCString(); - } -} - -void dumpIgesLabels(IGESControl_Reader reader) -{ - const Handle(XSControl_WorkSession) & theSession = reader.WS(); - const Handle(Interface_InterfaceModel) & theModel = theSession->Model(); - Standard_Integer nb = theModel->NbEntities(); - for(Standard_Integer i=1; i<...; i++){ - Handle(IGESData_IGESEntity) entity = - Handle(IGESData_IGESEntity)::DownCast(theModel->Value(i)); - if(entity.IsNull()){ - continue; - } - if(entity->HasName()){ - cout << NameValue()->String().ToCString(); - } - } -} -*/ - -// FIXME ***************** BEGIN WILL BE REMOVED ************************ - -void addSimpleShapes(TopoDS_Shape theShape, TopTools_ListOfShape &theList) -{ - if(theShape.ShapeType() != TopAbs_COMPOUND && - theShape.ShapeType() != TopAbs_COMPSOLID) { - theList.Append(theShape); - return; - } - - TopTools_MapOfShape mapShape; - TopoDS_Iterator It(theShape, Standard_True, Standard_True); - - for(; It.More(); It.Next()) { - TopoDS_Shape aShape_i = It.Value(); - if(mapShape.Add(aShape_i)) { - if(aShape_i.ShapeType() == TopAbs_COMPOUND || - aShape_i.ShapeType() == TopAbs_COMPSOLID) { - addSimpleShapes(aShape_i, theList); - } - else { - theList.Append(aShape_i); - } - } - } -} - -void OCC_Internals::buildLists() -{ - _somap.Clear(); - _shmap.Clear(); - _fmap.Clear(); - _wmap.Clear(); - _emap.Clear(); - _vmap.Clear(); - _addShapeToMaps(_shape); -} - -void OCC_Internals::buildShapeFromGModel(GModel* gm) -{ - _somap.Clear(); - _shmap.Clear(); - _fmap.Clear(); - _wmap.Clear(); - _emap.Clear(); - _vmap.Clear(); - for (GModel::riter it = gm->firstRegion(); it != gm->lastRegion() ; ++it){ - if ((*it)->getNativeType() == GEntity::OpenCascadeModel){ - OCCRegion *occ = static_cast<OCCRegion*> (*it); - if(occ) _addShapeToMaps(occ->getTopoDS_Shape()); - } - } - for (GModel::fiter it = gm->firstFace(); it != gm->lastFace() ; ++it){ - if ((*it)->getNativeType() == GEntity::OpenCascadeModel){ - OCCFace *occ = static_cast<OCCFace*> (*it); - if(occ) _addShapeToMaps(occ->getTopoDS_Face()); - } - } - BRep_Builder B; - TopoDS_Compound C; - B.MakeCompound(C); - for(int i = 1; i <= _vmap.Extent(); i++) B.Add(C, _vmap(i)); - for(int i = 1; i <= _emap.Extent(); i++) B.Add(C, _emap(i)); - for(int i = 1; i <= _wmap.Extent(); i++) B.Add(C, _wmap(i)); - for(int i = 1; i <= _fmap.Extent(); i++) B.Add(C, _fmap(i)); - for(int i = 1; i <= _shmap.Extent(); i++) B.Add(C, _shmap(i)); - for(int i = 1; i <= _somap.Extent(); i++) B.Add(C, _somap(i)); - _shape = C; -} - -void OCC_Internals::buildShapeFromLists(TopoDS_Shape shape) -{ - BRep_Builder B; - TopoDS_Compound C; - B.MakeCompound(C); - - TopTools_ListOfShape theList; - addSimpleShapes(shape, theList); - TopTools_ListIteratorOfListOfShape itSub1(theList); - for (; itSub1.More(); itSub1.Next()) B.Add(C, itSub1.Value()); - - for(int i = 1; i <= _vmap.Extent(); i++) B.Add(C, _vmap(i)); - for(int i = 1; i <= _emap.Extent(); i++) B.Add(C, _emap(i)); - for(int i = 1; i <= _wmap.Extent(); i++) B.Add(C, _wmap(i)); - for(int i = 1; i <= _fmap.Extent(); i++) B.Add(C, _fmap(i)); - for(int i = 1; i <= _shmap.Extent(); i++) B.Add(C, _shmap(i)); - for(int i = 1; i <= _somap.Extent(); i++) B.Add(C, _somap(i)); - _shape = C; -} - -GVertex *OCC_Internals::addVertexToModel(GModel *model, TopoDS_Vertex vertex) -{ - GVertex *gv = getVertexForOCCShape(model, vertex); - if(gv) return gv; - _addShapeToMaps(vertex); - buildShapeFromLists(vertex); - buildGModel(model); - return getVertexForOCCShape(model, vertex); -} - -GEdge *OCC_Internals::addEdgeToModel(GModel *model, TopoDS_Edge edge) -{ - GEdge *ge = getEdgeForOCCShape(model, edge); - if(ge) return ge; - _addShapeToMaps(edge); - buildShapeFromLists(edge); - buildGModel(model); - return getEdgeForOCCShape(model, edge); -} - -GFace* OCC_Internals::addFaceToModel(GModel *model, TopoDS_Face face) -{ - GFace *gf = getFaceForOCCShape(model, face); - if(gf) return gf; - _addShapeToMaps(face); - buildShapeFromLists(face); - buildGModel(model); - return getFaceForOCCShape(model, face); -} - -GRegion* OCC_Internals::addRegionToModel(GModel *model, TopoDS_Solid region) -{ - GRegion *gr = getRegionForOCCShape(model, region); - if(gr) return gr; - - // FIXME THE PREVIOUS IMPLEMENTATION WAS BETTER FOR SOME USERS :-) - buildShapeFromLists(region); - model->destroy(); - buildLists(); - buildGModel(model); - return getRegionForOCCShape(model, region); - // _addShapeToMaps(region); - // buildShapeFromLists(region); - // buildGModel(model); - // return getRegionForOCCShape(model, region); -} - -void OCC_Internals::buildGModel(GModel *model) -{ - // building geom vertices - int numv = model->getMaxElementaryNumber(0) + 1; - for(int i = 1; i <= _vmap.Extent(); i++){ - TopoDS_Vertex vertex = TopoDS::Vertex(_vmap(i)); - if(!getVertexForOCCShape(model, vertex)){ - model->add(new OCCVertex(model, numv, vertex)); - numv++; - } - } - - // building geom edges - int nume = model->getMaxElementaryNumber(1) + 1; - for(int i = 1; i <= _emap.Extent(); i++){ - int i1 = _vmap.FindIndex(TopExp::FirstVertex(TopoDS::Edge(_emap(i)))); - int i2 = _vmap.FindIndex(TopExp::LastVertex(TopoDS::Edge(_emap(i)))); - if(!getEdgeForOCCShape(model, TopoDS::Edge(_emap(i)))){ - GVertex *v1 = getVertexForOCCShape(model, TopoDS::Vertex(_vmap(i1))); - GVertex *v2 = getVertexForOCCShape(model, TopoDS::Vertex(_vmap(i2))); - model->add(new OCCEdge(model, TopoDS::Edge(_emap(i)), nume, v1, v2)); - nume++; - } - } - - // building geom faces - int numf = model->getMaxElementaryNumber(2) + 1; - for(int i = 1; i <= _fmap.Extent(); i++){ - if(!getFaceForOCCShape(model, TopoDS::Face(_fmap(i)))){ - model->add(new OCCFace(model, TopoDS::Face(_fmap(i)), numf)); - numf++; - } - } - - // building geom regions - int numr = model->getMaxElementaryNumber(3) + 1; - for(int i = 1; i <= _somap.Extent(); i++){ - if(!getRegionForOCCShape(model, TopoDS::Solid(_somap(i)))){ - model->add(new OCCRegion(model, TopoDS::Solid(_somap(i)), numr)); - numr++; - } - } -} - -void OCC_Internals::applyBooleanOperator(TopoDS_Shape tool, const BooleanOperator &op) -{ - if(tool.IsNull()) return; - if(_shape.IsNull()){ - _shape = tool; - return; - } - - switch(op){ - case OCC_Internals::Intersection : - { - TopoDS_Shape theNewShape; - BRep_Builder B; - TopoDS_Compound C; - B.MakeCompound(C); - TopTools_ListOfShape listShape1, listShape2; - addSimpleShapes(_shape, listShape1); - addSimpleShapes(tool, listShape2); - Standard_Boolean isCompound = - (listShape1.Extent() > 1 || listShape2.Extent() > 1); - - TopTools_ListIteratorOfListOfShape itSub1(listShape1); - for(; itSub1.More(); itSub1.Next()) { - TopoDS_Shape aValue1 = itSub1.Value(); - TopTools_ListIteratorOfListOfShape itSub2(listShape2); - for(; itSub2.More(); itSub2.Next()) { - TopoDS_Shape aValue2 = itSub2.Value(); - BRepAlgoAPI_Common BO(aValue1, aValue2); - if(!BO.IsDone()) { - Msg::Error("Boolean Intersection Operator can not be performed"); - } - if(isCompound) { - TopoDS_Shape aStepResult = BO.Shape(); - if(aStepResult.ShapeType() == TopAbs_COMPOUND) { - TopoDS_Iterator aCompIter(aStepResult); - for(; aCompIter.More(); aCompIter.Next()) { - B.Add(C, aCompIter.Value()); - } - } - else { - B.Add(C, aStepResult); - } - } - else - theNewShape = BO.Shape(); - } - } - if(isCompound) { - TopTools_ListOfShape listShapeC; - addSimpleShapes(C, listShapeC); - TopTools_ListIteratorOfListOfShape itSubC(listShapeC); - //bool isOnlySolids = true; - for(; itSubC.More(); itSubC.Next()) { - TopoDS_Shape aValueC = itSubC.Value(); - //if(aValueC.ShapeType() != TopAbs_SOLID) isOnlySolids = false; - } - // if(isOnlySolids) - // theNewShape = GlueFaces(C, Precision::Confusion()); - // else - theNewShape = C; - } - _shape = theNewShape; - } - break; - case OCC_Internals::Difference : - { - TopoDS_Shape theNewShape; - BRep_Builder B; - TopoDS_Compound C; - B.MakeCompound(C); - - TopTools_ListOfShape listShapes, listTools; - addSimpleShapes(_shape, listShapes); - addSimpleShapes(tool, listTools); - - Standard_Boolean isCompound = (listShapes.Extent() > 1); - - TopTools_ListIteratorOfListOfShape itSub1(listShapes); - for(; itSub1.More(); itSub1.Next()) { - TopoDS_Shape aCut = itSub1.Value(); - // tools - TopTools_ListIteratorOfListOfShape itSub2(listTools); - for(; itSub2.More(); itSub2.Next()) { - TopoDS_Shape aTool = itSub2.Value(); - BRepAlgoAPI_Cut BO(aCut, aTool); - if(!BO.IsDone()) { - Msg::Error("Cut operation can not be performed on the given shapes"); - return; - } - aCut = BO.Shape(); - } - if(isCompound) { - if(aCut.ShapeType() == TopAbs_COMPOUND) { - TopoDS_Iterator aCompIter(aCut); - for(; aCompIter.More(); aCompIter.Next()) { - B.Add(C, aCompIter.Value()); - } - } - else { - B.Add(C, aCut); - } - } - else - theNewShape = aCut; - } - - if(isCompound) { - TopTools_ListOfShape listShapeC; - addSimpleShapes(C, listShapeC); - TopTools_ListIteratorOfListOfShape itSubC(listShapeC); - //bool isOnlySolids = true; - for(; itSubC.More(); itSubC.Next()) { - TopoDS_Shape aValueC = itSubC.Value(); - //if(aValueC.ShapeType() != TopAbs_SOLID) isOnlySolids = false; - } - // if(isOnlySolids) - // theNewShape = GlueFaces(C, Precision::Confusion()); - // else - theNewShape = C; - } - _shape = theNewShape; - } - break; - case OCC_Internals::Union : - { - TopoDS_Solid solid1, solid2; - int hack = 0; - if(_shape.ShapeType() != TopAbs_SOLID && tool.ShapeType() != TopAbs_SOLID){ - TopExp_Explorer exp0; - for(exp0.Init(_shape, TopAbs_SOLID); exp0.More(); exp0.Next()){ - solid1 = TopoDS::Solid(exp0.Current()); - hack++; - break; - } - for(exp0.Init(tool, TopAbs_SOLID); exp0.More(); exp0.Next()){ - solid2 = TopoDS::Solid(exp0.Current()); - hack++; - break; - } - } - if(hack == 2){ // FIXME: just a temp hack! - Msg::Info("Temporary hack in Fuse :-)"); - BRepAlgoAPI_Fuse BO(solid1, solid2); - if(!BO.IsDone()) { - Msg::Error("Fuse operation can not be performed on the given shapes"); - } - _shape = BO.Shape(); - } - else{ - BRepAlgoAPI_Fuse BO(tool, _shape); - if(!BO.IsDone()) { - Msg::Error("Fuse operation can not be performed on the given shapes"); - } - _shape = BO.Shape(); - } - } - break; - case OCC_Internals::Section : - { - TopoDS_Shape theNewShape; - BRep_Builder B; - TopoDS_Compound C; - B.MakeCompound(C); - - TopTools_ListOfShape listShapes, listTools; - addSimpleShapes(_shape, listShapes); - addSimpleShapes(tool, listTools); - - Standard_Boolean isCompound = (listShapes.Extent() > 1); - TopTools_ListIteratorOfListOfShape itSub1(listShapes); - for(; itSub1.More(); itSub1.Next()) { - TopoDS_Shape aValue1 = itSub1.Value(); - TopTools_ListIteratorOfListOfShape itSub2(listTools); - for(; itSub2.More(); itSub2.Next()) { - TopoDS_Shape aValue2 = itSub2.Value(); - BRepAlgoAPI_Section BO(aValue1, aValue2, Standard_False); - BO.Approximation(Standard_True); - BO.Build(); - if(!BO.IsDone()) { - Msg::Error("Section operation can not be performed on the given shapes"); - return; - } - if(isCompound) { - TopoDS_Shape aStepResult = BO.Shape(); - if(aStepResult.ShapeType() == TopAbs_COMPOUND) { - TopoDS_Iterator aCompIter(aStepResult); - for(; aCompIter.More(); aCompIter.Next()) { - B.Add(C, aCompIter.Value()); - } - } - else { - B.Add(C, aStepResult); - } - } - else - theNewShape = BO.Shape(); - } - } - if(isCompound) - theNewShape = C; - _shape = theNewShape; - } - break; - default : - Msg::Error("Requested boolean operation not implemented"); - break; - } -} - -void OCC_Internals::fillet(std::vector<TopoDS_Edge> &edgesToFillet, - double Radius) -{ - // create a tool for fillet - BRepFilletAPI_MakeFillet fill(_shape); - for(unsigned int i = 0; i < edgesToFillet.size(); ++i){ - fill.Add(edgesToFillet[i]); - } - for(int i = 1; i <= fill.NbContours(); i++){ - fill.SetRadius(Radius, i, 1); - } - fill.Build(); - if(!fill.IsDone()) { - Msg::Error("Fillet can't be computed on the given shape with the given radius"); - return; - } - _shape = fill.Shape(); - - if(_shape.IsNull()) return; - - // Check shape validity - BRepCheck_Analyzer ana(_shape, false); - if(!ana.IsValid()) { - Msg::Error("Fillet algorithm have produced an invalid shape result"); - } -} - -// FIXME ***************** END OF WILL BE REMOVED ************************ #endif diff --git a/Geo/GModelIO_OCC.h b/Geo/GModelIO_OCC.h index 3cd210082c06fa33359f022a9af9dc77496f99ff..ced922d2515ae4b9d70d2638808f0208c07bd9d0 100644 --- a/Geo/GModelIO_OCC.h +++ b/Geo/GModelIO_OCC.h @@ -365,36 +365,6 @@ class OCC_Internals { bool makeTorusSTL(double x, double y, double z, double r1, double r2, double angle, std::vector<SPoint3> &vertices, std::vector<SVector3> &normals, std::vector<int> &triangles); - - // *** FIXME what follows will be removed *** - private: - TopoDS_Shape _shape; - public: - void _addShapeToLists(TopoDS_Shape shape){ _addShapeToMaps(shape); } - void _healGeometry(double tolerance, bool fixdegenerated, - bool fixsmalledges, bool fixspotstripfaces, bool sewfaces, - bool makesolids=false, double scaling=0.0) - { - _healShape(_shape, tolerance, fixdegenerated, fixsmalledges, - fixspotstripfaces, sewfaces, makesolids, scaling); - } - void applyBooleanOperator(TopoDS_Shape tool, const BooleanOperator &op); - TopoDS_Shape getShape () { return _shape; } - void buildLists(); - void buildShapeFromLists(TopoDS_Shape shape); - void fillet(std::vector<TopoDS_Edge> &shapes, double radius); - void buildShapeFromGModel(GModel*); - void buildGModel(GModel *gm); - void loadShape(const TopoDS_Shape *s) - { - std::vector<std::pair<int, int> > outDimTags; - importShapes(s, false, outDimTags); - } - GVertex *addVertexToModel(GModel *model, TopoDS_Vertex v); - GEdge *addEdgeToModel(GModel *model, TopoDS_Edge e); - GFace *addFaceToModel(GModel *model, TopoDS_Face f); - GRegion *addRegionToModel(GModel *model, TopoDS_Solid r); - // *** FIXME end of stuff that will be removed *** }; #else diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp index 27a6c52f61f6181431ebf71ecb63846d551e187e..9b03c85bc7e617f39fd853b01eb7e7bfdf55ebca 100644 --- a/Parser/Gmsh.tab.cpp +++ b/Parser/Gmsh.tab.cpp @@ -1438,45 +1438,45 @@ static const yytype_uint16 yyrline[] = 2067, 2093, 2110, 2126, 2144, 2162, 2192, 2222, 2221, 2251, 2253, 2255, 2257, 2259, 2267, 2269, 2271, 2273, 2281, 2283, 2285, 2293, 2295, 2297, 2299, 2309, 2325, 2341, 2357, 2373, - 2389, 2426, 2448, 2472, 2473, 2478, 2481, 2485, 2506, 2525, - 2546, 2561, 2577, 2595, 2646, 2667, 2689, 2712, 2817, 2833, - 2868, 2890, 2912, 2918, 2933, 2961, 2973, 2982, 2989, 3001, - 3020, 3026, 3032, 3039, 3046, 3053, 3065, 3138, 3156, 3173, - 3188, 3221, 3233, 3257, 3261, 3266, 3273, 3278, 3288, 3293, - 3299, 3307, 3311, 3315, 3324, 3388, 3404, 3421, 3438, 3460, - 3482, 3517, 3525, 3533, 3539, 3546, 3553, 3573, 3599, 3611, - 3622, 3640, 3658, 3677, 3676, 3701, 3700, 3727, 3726, 3751, - 3750, 3773, 3789, 3806, 3823, 3846, 3849, 3855, 3867, 3887, - 3891, 3895, 3899, 3903, 3907, 3911, 3915, 3924, 3937, 3938, - 3939, 3940, 3941, 3945, 3946, 3947, 3948, 3949, 3952, 3976, - 3995, 4018, 4021, 4037, 4040, 4057, 4060, 4066, 4069, 4076, - 4079, 4086, 4103, 4144, 4188, 4227, 4252, 4261, 4291, 4317, - 4343, 4375, 4402, 4428, 4454, 4480, 4506, 4528, 4539, 4587, - 4636, 4648, 4659, 4666, 4681, 4695, 4696, 4697, 4701, 4707, - 4719, 4737, 4765, 4766, 4767, 4768, 4769, 4770, 4771, 4772, - 4773, 4780, 4781, 4782, 4783, 4784, 4785, 4786, 4787, 4788, - 4789, 4790, 4791, 4792, 4793, 4794, 4795, 4796, 4797, 4798, - 4799, 4800, 4801, 4802, 4803, 4804, 4805, 4806, 4807, 4808, - 4809, 4810, 4811, 4812, 4813, 4814, 4815, 4816, 4817, 4826, - 4827, 4828, 4829, 4830, 4831, 4832, 4833, 4834, 4835, 4836, - 4841, 4840, 4848, 4850, 4855, 4860, 4864, 4869, 4874, 4878, - 4882, 4886, 4890, 4894, 4898, 4904, 4920, 4925, 4931, 4937, - 4956, 4977, 5010, 5014, 5019, 5023, 5027, 5031, 5036, 5041, - 5051, 5061, 5066, 5077, 5086, 5091, 5096, 5124, 5125, 5131, - 5132, 5138, 5137, 5160, 5162, 5167, 5176, 5178, 5184, 5185, - 5190, 5194, 5198, 5202, 5206, 5213, 5217, 5221, 5225, 5232, - 5237, 5244, 5249, 5253, 5258, 5262, 5270, 5281, 5285, 5297, - 5305, 5313, 5320, 5330, 5353, 5359, 5370, 5376, 5381, 5391, - 5401, 5411, 5423, 5427, 5432, 5444, 5448, 5452, 5456, 5474, - 5482, 5490, 5519, 5529, 5545, 5556, 5561, 5565, 5569, 5581, - 5585, 5597, 5614, 5624, 5628, 5643, 5648, 5655, 5659, 5664, - 5678, 5694, 5698, 5702, 5706, 5710, 5718, 5724, 5730, 5736, - 5745, 5749, 5753, 5761, 5767, 5773, 5777, 5785, 5793, 5800, - 5809, 5813, 5817, 5832, 5846, 5860, 5872, 5888, 5897, 5906, - 5916, 5927, 5935, 5943, 5947, 5966, 5973, 5979, 5986, 5994, - 5993, 6003, 6027, 6029, 6035, 6040, 6042, 6047, 6052, 6057, - 6059, 6063, 6075, 6089, 6093, 6100, 6108, 6116, 6127, 6129, - 6132 + 2389, 2439, 2461, 2485, 2486, 2491, 2494, 2498, 2519, 2538, + 2559, 2574, 2590, 2608, 2659, 2680, 2702, 2725, 2830, 2846, + 2881, 2903, 2925, 2931, 2946, 2974, 2986, 2995, 3002, 3014, + 3033, 3039, 3045, 3052, 3059, 3066, 3078, 3151, 3169, 3186, + 3201, 3234, 3246, 3270, 3274, 3279, 3286, 3291, 3301, 3306, + 3312, 3320, 3324, 3328, 3337, 3401, 3417, 3434, 3451, 3473, + 3495, 3530, 3538, 3546, 3552, 3559, 3566, 3586, 3612, 3624, + 3635, 3653, 3671, 3690, 3689, 3714, 3713, 3740, 3739, 3764, + 3763, 3786, 3802, 3819, 3836, 3859, 3862, 3868, 3880, 3900, + 3904, 3908, 3912, 3916, 3920, 3924, 3928, 3937, 3950, 3951, + 3952, 3953, 3954, 3958, 3959, 3960, 3961, 3962, 3965, 3989, + 4008, 4031, 4034, 4050, 4053, 4070, 4073, 4079, 4082, 4089, + 4092, 4099, 4116, 4157, 4201, 4240, 4265, 4274, 4304, 4330, + 4356, 4388, 4415, 4441, 4467, 4493, 4519, 4541, 4552, 4600, + 4649, 4661, 4672, 4679, 4694, 4708, 4709, 4710, 4714, 4720, + 4732, 4750, 4778, 4779, 4780, 4781, 4782, 4783, 4784, 4785, + 4786, 4793, 4794, 4795, 4796, 4797, 4798, 4799, 4800, 4801, + 4802, 4803, 4804, 4805, 4806, 4807, 4808, 4809, 4810, 4811, + 4812, 4813, 4814, 4815, 4816, 4817, 4818, 4819, 4820, 4821, + 4822, 4823, 4824, 4825, 4826, 4827, 4828, 4829, 4830, 4839, + 4840, 4841, 4842, 4843, 4844, 4845, 4846, 4847, 4848, 4849, + 4854, 4853, 4861, 4863, 4868, 4873, 4877, 4882, 4887, 4891, + 4895, 4899, 4903, 4907, 4911, 4917, 4933, 4938, 4944, 4950, + 4969, 4990, 5023, 5027, 5032, 5036, 5040, 5044, 5049, 5054, + 5064, 5074, 5079, 5090, 5099, 5104, 5109, 5137, 5138, 5144, + 5145, 5151, 5150, 5173, 5175, 5180, 5189, 5191, 5197, 5198, + 5203, 5207, 5211, 5215, 5219, 5226, 5230, 5234, 5238, 5245, + 5250, 5257, 5262, 5266, 5271, 5275, 5283, 5294, 5298, 5310, + 5318, 5326, 5333, 5343, 5366, 5372, 5383, 5389, 5394, 5404, + 5414, 5424, 5436, 5440, 5445, 5457, 5461, 5465, 5469, 5487, + 5495, 5503, 5532, 5542, 5558, 5569, 5574, 5578, 5582, 5594, + 5598, 5610, 5627, 5637, 5641, 5656, 5661, 5668, 5672, 5677, + 5691, 5707, 5711, 5715, 5719, 5723, 5731, 5737, 5743, 5749, + 5758, 5762, 5766, 5774, 5780, 5786, 5790, 5798, 5806, 5813, + 5822, 5826, 5830, 5845, 5859, 5873, 5885, 5901, 5910, 5919, + 5929, 5940, 5948, 5956, 5960, 5979, 5986, 5992, 5999, 6007, + 6006, 6016, 6040, 6042, 6048, 6053, 6055, 6060, 6065, 6070, + 6072, 6076, 6088, 6102, 6106, 6113, 6121, 6129, 6140, 6142, + 6145 }; #endif @@ -8769,6 +8769,19 @@ yyreduce: (inDimTags, outDimTags, action == "CombinedBoundary", true, action == "PointsOf"); } + else if(action == "DontSaveMesh"){ + // boundary operations are performed directly on GModel, which enables + // to compute the boundary of hybrid CAD models; this also automatically + // binds all boundary entities for OCC models + if(GModel::current()->getOCCInternals() && + GModel::current()->getOCCInternals()->getChanged()) + GModel::current()->getOCCInternals()->synchronize(GModel::current()); + if(GModel::current()->getGEOInternals()->getChanged()) + GModel::current()->getGEOInternals()->synchronize(GModel::current()); + r = GModel::current()->getBoundaryTags + (inDimTags, outDimTags, action == "CombinedBoundary", true, + action == "PointsOf"); + } else{ yymsg(0, "Unknown action on multiple shapes '%s'", (yyvsp[(1) - (4)].c)); } @@ -8779,7 +8792,7 @@ yyreduce: break; case 211: -#line 2427 "Gmsh.y" +#line 2440 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); bool r = true; @@ -8803,7 +8816,7 @@ yyreduce: break; case 212: -#line 2449 "Gmsh.y" +#line 2462 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); bool r = true; @@ -8827,31 +8840,31 @@ yyreduce: break; case 213: -#line 2472 "Gmsh.y" +#line 2485 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; case 214: -#line 2473 "Gmsh.y" +#line 2486 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; case 215: -#line 2478 "Gmsh.y" +#line 2491 "Gmsh.y" { (yyval.l) = List_Create(3, 3, sizeof(Shape)); ;} break; case 216: -#line 2482 "Gmsh.y" +#line 2495 "Gmsh.y" { List_Add((yyval.l), &(yyvsp[(2) - (2)].s)); ;} break; case 217: -#line 2486 "Gmsh.y" +#line 2499 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (6)].l)); i++){ double d; @@ -8870,7 +8883,7 @@ yyreduce: break; case 218: -#line 2507 "Gmsh.y" +#line 2520 "Gmsh.y" { if(List_Nbr((yyvsp[(7) - (8)].l)) == 4){ int t = (int)(yyvsp[(4) - (8)].d); @@ -8892,7 +8905,7 @@ yyreduce: break; case 219: -#line 2526 "Gmsh.y" +#line 2539 "Gmsh.y" { int t = (int)(yyvsp[(4) - (10)].d); if(gLevelset::find(t)){ @@ -8916,7 +8929,7 @@ yyreduce: break; case 220: -#line 2548 "Gmsh.y" +#line 2561 "Gmsh.y" { int t = (int)(yyvsp[(4) - (14)].d); if(gLevelset::find(t)){ @@ -8933,7 +8946,7 @@ yyreduce: break; case 221: -#line 2563 "Gmsh.y" +#line 2576 "Gmsh.y" { int t = (int)(yyvsp[(4) - (16)].d); if(gLevelset::find(t)){ @@ -8951,7 +8964,7 @@ yyreduce: break; case 222: -#line 2578 "Gmsh.y" +#line 2591 "Gmsh.y" { if(List_Nbr((yyvsp[(10) - (12)].l)) == 1){ int t = (int)(yyvsp[(4) - (12)].d); @@ -8972,7 +8985,7 @@ yyreduce: break; case 223: -#line 2597 "Gmsh.y" +#line 2610 "Gmsh.y" { if(List_Nbr((yyvsp[(12) - (14)].l)) == 1){ int t = (int)(yyvsp[(4) - (14)].d); @@ -9025,7 +9038,7 @@ yyreduce: break; case 224: -#line 2648 "Gmsh.y" +#line 2661 "Gmsh.y" { if(List_Nbr((yyvsp[(12) - (14)].l)) == 1){ int t = (int)(yyvsp[(4) - (14)].d); @@ -9048,7 +9061,7 @@ yyreduce: break; case 225: -#line 2669 "Gmsh.y" +#line 2682 "Gmsh.y" { if(List_Nbr((yyvsp[(12) - (14)].l)) == 3){ int t = (int)(yyvsp[(4) - (14)].d); @@ -9072,7 +9085,7 @@ yyreduce: break; case 226: -#line 2691 "Gmsh.y" +#line 2704 "Gmsh.y" { if(List_Nbr((yyvsp[(12) - (14)].l)) == 5){ int t = (int)(yyvsp[(4) - (14)].d); @@ -9097,7 +9110,7 @@ yyreduce: break; case 227: -#line 2713 "Gmsh.y" +#line 2726 "Gmsh.y" { if(!strcmp((yyvsp[(2) - (8)].c), "Union")){ int t = (int)(yyvsp[(4) - (8)].d); @@ -9205,7 +9218,7 @@ yyreduce: break; case 228: -#line 2818 "Gmsh.y" +#line 2831 "Gmsh.y" { if(!strcmp((yyvsp[(2) - (8)].c), "MathEval")){ int t = (int)(yyvsp[(4) - (8)].d); @@ -9224,7 +9237,7 @@ yyreduce: break; case 229: -#line 2834 "Gmsh.y" +#line 2847 "Gmsh.y" { if(!strcmp((yyvsp[(2) - (6)].c), "CutMesh")){ int t = (int)(yyvsp[(4) - (6)].d); @@ -9257,7 +9270,7 @@ yyreduce: break; case 230: -#line 2869 "Gmsh.y" +#line 2882 "Gmsh.y" { std::vector<std::pair<int, int> > dimTags; ListOfShapes2VectorOfPairs((yyvsp[(3) - (4)].l), dimTags); @@ -9282,7 +9295,7 @@ yyreduce: break; case 231: -#line 2891 "Gmsh.y" +#line 2904 "Gmsh.y" { std::vector<std::pair<int, int> > dimTags; ListOfShapes2VectorOfPairs((yyvsp[(4) - (5)].l), dimTags); @@ -9307,7 +9320,7 @@ yyreduce: break; case 232: -#line 2913 "Gmsh.y" +#line 2926 "Gmsh.y" { #if defined(HAVE_MESH) GModel::current()->getFields()->deleteField((int)(yyvsp[(4) - (6)].d)); @@ -9316,7 +9329,7 @@ yyreduce: break; case 233: -#line 2919 "Gmsh.y" +#line 2932 "Gmsh.y" { #if defined(HAVE_POST) if(!strcmp((yyvsp[(2) - (6)].c), "View")){ @@ -9334,7 +9347,7 @@ yyreduce: break; case 234: -#line 2934 "Gmsh.y" +#line 2947 "Gmsh.y" { if(!strcmp((yyvsp[(2) - (3)].c), "Meshes") || !strcmp((yyvsp[(2) - (3)].c), "All")){ ClearProject(); @@ -9365,7 +9378,7 @@ yyreduce: break; case 235: -#line 2962 "Gmsh.y" +#line 2975 "Gmsh.y" { #if defined(HAVE_POST) if(!strcmp((yyvsp[(2) - (4)].c), "Empty") && !strcmp((yyvsp[(3) - (4)].c), "Views")){ @@ -9380,14 +9393,14 @@ yyreduce: break; case 236: -#line 2974 "Gmsh.y" +#line 2987 "Gmsh.y" { gmsh_yynamespaces.clear(); ;} break; case 237: -#line 2983 "Gmsh.y" +#line 2996 "Gmsh.y" { std::vector<std::pair<int, int> > dimTags; ListOfShapes2VectorOfPairs((yyvsp[(4) - (5)].l), dimTags); @@ -9397,7 +9410,7 @@ yyreduce: break; case 238: -#line 2990 "Gmsh.y" +#line 3003 "Gmsh.y" { std::vector<std::pair<int, int> > dimTags; ListOfShapes2VectorOfPairs((yyvsp[(5) - (6)].l), dimTags); @@ -9407,7 +9420,7 @@ yyreduce: break; case 239: -#line 3002 "Gmsh.y" +#line 3015 "Gmsh.y" { std::vector<std::pair<int, int> > dimTags; ListOfShapes2VectorOfPairs((yyvsp[(4) - (5)].l), dimTags); @@ -9424,7 +9437,7 @@ yyreduce: break; case 240: -#line 3021 "Gmsh.y" +#line 3034 "Gmsh.y" { std::string what = (yyvsp[(2) - (3)].c); setVisibility(-1, 1, false); @@ -9433,7 +9446,7 @@ yyreduce: break; case 241: -#line 3027 "Gmsh.y" +#line 3040 "Gmsh.y" { std::string what = (yyvsp[(2) - (3)].c); setVisibility(-1, 0, false); @@ -9442,7 +9455,7 @@ yyreduce: break; case 242: -#line 3033 "Gmsh.y" +#line 3046 "Gmsh.y" { std::vector<std::pair<int, int> > dimTags; ListOfShapes2VectorOfPairs((yyvsp[(3) - (4)].l), dimTags); @@ -9452,7 +9465,7 @@ yyreduce: break; case 243: -#line 3040 "Gmsh.y" +#line 3053 "Gmsh.y" { std::vector<std::pair<int, int> > dimTags; ListOfShapes2VectorOfPairs((yyvsp[(4) - (5)].l), dimTags); @@ -9462,7 +9475,7 @@ yyreduce: break; case 244: -#line 3047 "Gmsh.y" +#line 3060 "Gmsh.y" { std::vector<std::pair<int, int> > dimTags; ListOfShapes2VectorOfPairs((yyvsp[(3) - (4)].l), dimTags); @@ -9472,7 +9485,7 @@ yyreduce: break; case 245: -#line 3054 "Gmsh.y" +#line 3067 "Gmsh.y" { std::vector<std::pair<int, int> > dimTags; ListOfShapes2VectorOfPairs((yyvsp[(4) - (5)].l), dimTags); @@ -9482,7 +9495,7 @@ yyreduce: break; case 246: -#line 3066 "Gmsh.y" +#line 3079 "Gmsh.y" { if(!strcmp((yyvsp[(1) - (3)].c), "Include")){ std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(2) - (3)].c)); @@ -9558,7 +9571,7 @@ yyreduce: break; case 247: -#line 3139 "Gmsh.y" +#line 3152 "Gmsh.y" { int n = List_Nbr((yyvsp[(3) - (5)].l)); if(n == 1){ @@ -9579,7 +9592,7 @@ yyreduce: break; case 248: -#line 3157 "Gmsh.y" +#line 3170 "Gmsh.y" { #if defined(HAVE_POST) if(!strcmp((yyvsp[(1) - (7)].c), "Save") && !strcmp((yyvsp[(2) - (7)].c), "View")){ @@ -9599,7 +9612,7 @@ yyreduce: break; case 249: -#line 3174 "Gmsh.y" +#line 3187 "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")){ @@ -9617,7 +9630,7 @@ yyreduce: break; case 250: -#line 3189 "Gmsh.y" +#line 3202 "Gmsh.y" { if(!strcmp((yyvsp[(1) - (3)].c), "Sleep")){ SleepInSeconds((yyvsp[(2) - (3)].d)); @@ -9653,7 +9666,7 @@ yyreduce: break; case 251: -#line 3222 "Gmsh.y" +#line 3235 "Gmsh.y" { #if defined(HAVE_PLUGINS) try { @@ -9668,7 +9681,7 @@ yyreduce: break; case 252: -#line 3234 "Gmsh.y" +#line 3247 "Gmsh.y" { #if defined(HAVE_POST) if(!strcmp((yyvsp[(2) - (3)].c), "ElementsFromAllViews")) @@ -9695,14 +9708,14 @@ yyreduce: break; case 253: -#line 3258 "Gmsh.y" +#line 3271 "Gmsh.y" { Msg::Exit(0); ;} break; case 254: -#line 3262 "Gmsh.y" +#line 3275 "Gmsh.y" { gmsh_yyerrorstate = 999; // this will be checked when yyparse returns YYABORT; @@ -9710,7 +9723,7 @@ yyreduce: break; case 255: -#line 3267 "Gmsh.y" +#line 3280 "Gmsh.y" { // force sync if(GModel::current()->getOCCInternals()) @@ -9720,7 +9733,7 @@ yyreduce: break; case 256: -#line 3274 "Gmsh.y" +#line 3287 "Gmsh.y" { new GModel(); GModel::current(GModel::list.size() - 1); @@ -9728,7 +9741,7 @@ yyreduce: break; case 257: -#line 3279 "Gmsh.y" +#line 3292 "Gmsh.y" { CTX::instance()->forcedBBox = 0; if(GModel::current()->getOCCInternals() && @@ -9741,7 +9754,7 @@ yyreduce: break; case 258: -#line 3289 "Gmsh.y" +#line 3302 "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)); @@ -9749,7 +9762,7 @@ yyreduce: break; case 259: -#line 3294 "Gmsh.y" +#line 3307 "Gmsh.y" { #if defined(HAVE_OPENGL) drawContext::global()->draw(); @@ -9758,7 +9771,7 @@ yyreduce: break; case 260: -#line 3300 "Gmsh.y" +#line 3313 "Gmsh.y" { #if defined(HAVE_OPENGL) CTX::instance()->mesh.changed = ENT_ALL; @@ -9769,21 +9782,21 @@ yyreduce: break; case 261: -#line 3308 "Gmsh.y" +#line 3321 "Gmsh.y" { GModel::current()->createTopologyFromMesh(); ;} break; case 262: -#line 3312 "Gmsh.y" +#line 3325 "Gmsh.y" { GModel::current()->createTopologyFromMesh(1); ;} break; case 263: -#line 3316 "Gmsh.y" +#line 3329 "Gmsh.y" { if(GModel::current()->getOCCInternals() && GModel::current()->getOCCInternals()->getChanged()) @@ -9795,7 +9808,7 @@ yyreduce: break; case 264: -#line 3326 "Gmsh.y" +#line 3339 "Gmsh.y" { int lock = CTX::instance()->lock; CTX::instance()->lock = 0; @@ -9856,7 +9869,7 @@ yyreduce: break; case 265: -#line 3389 "Gmsh.y" +#line 3402 "Gmsh.y" { #if defined(HAVE_POPPLER) std::vector<int> is; @@ -9871,7 +9884,7 @@ yyreduce: break; case 266: -#line 3405 "Gmsh.y" +#line 3418 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(3) - (6)].d); LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(5) - (6)].d); @@ -9891,7 +9904,7 @@ yyreduce: break; case 267: -#line 3422 "Gmsh.y" +#line 3435 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(3) - (8)].d); LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(5) - (8)].d); @@ -9911,7 +9924,7 @@ yyreduce: break; case 268: -#line 3439 "Gmsh.y" +#line 3452 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(5) - (8)].d); LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(7) - (8)].d); @@ -9936,7 +9949,7 @@ yyreduce: break; case 269: -#line 3461 "Gmsh.y" +#line 3474 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(5) - (10)].d); LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(7) - (10)].d); @@ -9961,7 +9974,7 @@ yyreduce: break; case 270: -#line 3483 "Gmsh.y" +#line 3496 "Gmsh.y" { if(ImbricatedLoop <= 0){ yymsg(0, "Invalid For/EndFor loop"); @@ -9999,7 +10012,7 @@ yyreduce: break; case 271: -#line 3518 "Gmsh.y" +#line 3531 "Gmsh.y" { if(!FunctionManager::Instance()->createFunction (std::string((yyvsp[(2) - (2)].c)), gmsh_yyin, gmsh_yyname, gmsh_yylineno)) @@ -10010,7 +10023,7 @@ yyreduce: break; case 272: -#line 3526 "Gmsh.y" +#line 3539 "Gmsh.y" { if(!FunctionManager::Instance()->createFunction (std::string((yyvsp[(2) - (2)].c)), gmsh_yyin, gmsh_yyname, gmsh_yylineno)) @@ -10021,7 +10034,7 @@ yyreduce: break; case 273: -#line 3534 "Gmsh.y" +#line 3547 "Gmsh.y" { if(!FunctionManager::Instance()->leaveFunction (&gmsh_yyin, gmsh_yyname, gmsh_yylineno)) @@ -10030,7 +10043,7 @@ yyreduce: break; case 274: -#line 3540 "Gmsh.y" +#line 3553 "Gmsh.y" { if(!FunctionManager::Instance()->enterFunction (std::string((yyvsp[(2) - (3)].c)), &gmsh_yyin, gmsh_yyname, gmsh_yylineno)) @@ -10040,7 +10053,7 @@ yyreduce: break; case 275: -#line 3547 "Gmsh.y" +#line 3560 "Gmsh.y" { if(!FunctionManager::Instance()->enterFunction (std::string((yyvsp[(2) - (3)].c)), &gmsh_yyin, gmsh_yyname, gmsh_yylineno)) @@ -10050,7 +10063,7 @@ yyreduce: break; case 276: -#line 3554 "Gmsh.y" +#line 3567 "Gmsh.y" { ImbricatedTest++; if(ImbricatedTest > MAX_RECUR_TESTS-1){ @@ -10073,7 +10086,7 @@ yyreduce: break; case 277: -#line 3574 "Gmsh.y" +#line 3587 "Gmsh.y" { if(ImbricatedTest > 0){ if (statusImbricatedTests[ImbricatedTest]){ @@ -10102,7 +10115,7 @@ yyreduce: break; case 278: -#line 3600 "Gmsh.y" +#line 3613 "Gmsh.y" { if(ImbricatedTest > 0){ if(statusImbricatedTests[ImbricatedTest]){ @@ -10117,7 +10130,7 @@ yyreduce: break; case 279: -#line 3612 "Gmsh.y" +#line 3625 "Gmsh.y" { ImbricatedTest--; if(ImbricatedTest < 0) @@ -10126,7 +10139,7 @@ yyreduce: break; case 280: -#line 3623 "Gmsh.y" +#line 3636 "Gmsh.y" { std::vector<std::pair<int, int> > inDimTags, outDimTags; ListOfShapes2VectorOfPairs((yyvsp[(4) - (5)].l), inDimTags); @@ -10147,7 +10160,7 @@ yyreduce: break; case 281: -#line 3641 "Gmsh.y" +#line 3654 "Gmsh.y" { std::vector<std::pair<int, int> > inDimTags, outDimTags; ListOfShapes2VectorOfPairs((yyvsp[(10) - (11)].l), inDimTags); @@ -10168,7 +10181,7 @@ yyreduce: break; case 282: -#line 3659 "Gmsh.y" +#line 3672 "Gmsh.y" { std::vector<std::pair<int, int> > inDimTags, outDimTags; ListOfShapes2VectorOfPairs((yyvsp[(12) - (13)].l), inDimTags); @@ -10189,7 +10202,7 @@ yyreduce: break; case 283: -#line 3677 "Gmsh.y" +#line 3690 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -10198,7 +10211,7 @@ yyreduce: break; case 284: -#line 3683 "Gmsh.y" +#line 3696 "Gmsh.y" { std::vector<std::pair<int, int> > inDimTags, outDimTags; ListOfShapes2VectorOfPairs((yyvsp[(4) - (7)].l), inDimTags); @@ -10219,7 +10232,7 @@ yyreduce: break; case 285: -#line 3701 "Gmsh.y" +#line 3714 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -10228,7 +10241,7 @@ yyreduce: break; case 286: -#line 3707 "Gmsh.y" +#line 3720 "Gmsh.y" { std::vector<std::pair<int, int> > inDimTags, outDimTags; ListOfShapes2VectorOfPairs((yyvsp[(10) - (13)].l), inDimTags); @@ -10251,7 +10264,7 @@ yyreduce: break; case 287: -#line 3727 "Gmsh.y" +#line 3740 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -10260,7 +10273,7 @@ yyreduce: break; case 288: -#line 3733 "Gmsh.y" +#line 3746 "Gmsh.y" { std::vector<std::pair<int, int> > inDimTags, outDimTags; ListOfShapes2VectorOfPairs((yyvsp[(12) - (15)].l), inDimTags); @@ -10281,7 +10294,7 @@ yyreduce: break; case 289: -#line 3751 "Gmsh.y" +#line 3764 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -10290,7 +10303,7 @@ yyreduce: break; case 290: -#line 3757 "Gmsh.y" +#line 3770 "Gmsh.y" { std::vector<std::pair<int, int> > inDimTags, outDimTags; ListOfShapes2VectorOfPairs((yyvsp[(3) - (6)].l), inDimTags); @@ -10310,7 +10323,7 @@ yyreduce: break; case 291: -#line 3774 "Gmsh.y" +#line 3787 "Gmsh.y" { std::vector<std::pair<int, int> > inDimTags, outDimTags; ListOfShapes2VectorOfPairs((yyvsp[(3) - (9)].l), inDimTags); @@ -10329,7 +10342,7 @@ yyreduce: break; case 292: -#line 3790 "Gmsh.y" +#line 3803 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); bool r = true; @@ -10349,7 +10362,7 @@ yyreduce: break; case 293: -#line 3807 "Gmsh.y" +#line 3820 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); bool r = true; @@ -10369,7 +10382,7 @@ yyreduce: break; case 294: -#line 3824 "Gmsh.y" +#line 3837 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); bool r = true; @@ -10392,19 +10405,19 @@ yyreduce: break; case 295: -#line 3847 "Gmsh.y" +#line 3860 "Gmsh.y" { ;} break; case 296: -#line 3850 "Gmsh.y" +#line 3863 "Gmsh.y" { ;} break; case 297: -#line 3856 "Gmsh.y" +#line 3869 "Gmsh.y" { int n = (int)fabs((yyvsp[(3) - (5)].d)); if(n){ // we accept n==0 to easily disable layers @@ -10419,7 +10432,7 @@ yyreduce: break; case 298: -#line 3868 "Gmsh.y" +#line 3881 "Gmsh.y" { extr.mesh.ExtrudeMesh = true; extr.mesh.NbLayer = List_Nbr((yyvsp[(3) - (7)].l)); @@ -10442,56 +10455,56 @@ yyreduce: break; case 299: -#line 3888 "Gmsh.y" +#line 3901 "Gmsh.y" { extr.mesh.ScaleLast = true; ;} break; case 300: -#line 3892 "Gmsh.y" +#line 3905 "Gmsh.y" { extr.mesh.Recombine = true; ;} break; case 301: -#line 3896 "Gmsh.y" +#line 3909 "Gmsh.y" { extr.mesh.Recombine = (yyvsp[(2) - (3)].d) ? true : false; ;} break; case 302: -#line 3900 "Gmsh.y" +#line 3913 "Gmsh.y" { extr.mesh.QuadToTri = QUADTRI_ADDVERTS_1; ;} break; case 303: -#line 3904 "Gmsh.y" +#line 3917 "Gmsh.y" { extr.mesh.QuadToTri = QUADTRI_ADDVERTS_1_RECOMB; ;} break; case 304: -#line 3908 "Gmsh.y" +#line 3921 "Gmsh.y" { extr.mesh.QuadToTri = QUADTRI_NOVERTS_1; ;} break; case 305: -#line 3912 "Gmsh.y" +#line 3925 "Gmsh.y" { extr.mesh.QuadToTri = QUADTRI_NOVERTS_1_RECOMB; ;} break; case 306: -#line 3916 "Gmsh.y" +#line 3929 "Gmsh.y" { std::vector<int> tags; ListOfDouble2Vector((yyvsp[(6) - (9)].l), tags); int num = (int)(yyvsp[(3) - (9)].d); @@ -10503,7 +10516,7 @@ yyreduce: break; case 307: -#line 3925 "Gmsh.y" +#line 3938 "Gmsh.y" { if(!strcmp((yyvsp[(2) - (6)].c), "Index")) extr.mesh.BoundaryLayerIndex = (yyvsp[(4) - (6)].d); @@ -10514,57 +10527,57 @@ yyreduce: break; case 308: -#line 3937 "Gmsh.y" +#line 3950 "Gmsh.y" { (yyval.i) = OCC_Internals::Union; ;} break; case 309: -#line 3938 "Gmsh.y" +#line 3951 "Gmsh.y" { (yyval.i) = OCC_Internals::Intersection; ;} break; case 310: -#line 3939 "Gmsh.y" +#line 3952 "Gmsh.y" { (yyval.i) = OCC_Internals::Difference; ;} break; case 311: -#line 3940 "Gmsh.y" +#line 3953 "Gmsh.y" { (yyval.i) = OCC_Internals::Section; ;} break; case 312: -#line 3941 "Gmsh.y" +#line 3954 "Gmsh.y" { (yyval.i) = OCC_Internals::Fragments; ;} break; case 313: -#line 3945 "Gmsh.y" +#line 3958 "Gmsh.y" { (yyval.i) = 0; ;} break; case 314: -#line 3946 "Gmsh.y" +#line 3959 "Gmsh.y" { (yyval.i) = 1; ;} break; case 315: -#line 3947 "Gmsh.y" +#line 3960 "Gmsh.y" { (yyval.i) = 2; ;} break; case 316: -#line 3948 "Gmsh.y" +#line 3961 "Gmsh.y" { (yyval.i) = (yyvsp[(2) - (3)].d) ? 1 : 0; ;} break; case 317: -#line 3949 "Gmsh.y" +#line 3962 "Gmsh.y" { (yyval.i) = (yyvsp[(3) - (4)].d) ? 2 : 0; ;} break; case 318: -#line 3954 "Gmsh.y" +#line 3967 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); bool r = true; @@ -10590,7 +10603,7 @@ yyreduce: break; case 319: -#line 3977 "Gmsh.y" +#line 3990 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); bool r = true; @@ -10609,7 +10622,7 @@ yyreduce: break; case 320: -#line 3997 "Gmsh.y" +#line 4010 "Gmsh.y" { bool r = true; if(gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals()){ @@ -10630,14 +10643,14 @@ yyreduce: break; case 321: -#line 4018 "Gmsh.y" +#line 4031 "Gmsh.y" { (yyval.v)[0] = (yyval.v)[1] = 1.; ;} break; case 322: -#line 4022 "Gmsh.y" +#line 4035 "Gmsh.y" { if(!strcmp((yyvsp[(2) - (3)].c), "Progression") || !strcmp((yyvsp[(2) - (3)].c), "Power")) (yyval.v)[0] = 1.; @@ -10653,14 +10666,14 @@ yyreduce: break; case 323: -#line 4037 "Gmsh.y" +#line 4050 "Gmsh.y" { (yyval.i) = -1; // left ;} break; case 324: -#line 4041 "Gmsh.y" +#line 4054 "Gmsh.y" { if(!strcmp((yyvsp[(1) - (1)].c), "Right")) (yyval.i) = 1; @@ -10677,49 +10690,49 @@ yyreduce: break; case 325: -#line 4057 "Gmsh.y" +#line 4070 "Gmsh.y" { (yyval.l) = List_Create(1, 1, sizeof(double)); ;} break; case 326: -#line 4061 "Gmsh.y" +#line 4074 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (2)].l); ;} break; case 327: -#line 4066 "Gmsh.y" +#line 4079 "Gmsh.y" { (yyval.i) = 45; ;} break; case 328: -#line 4070 "Gmsh.y" +#line 4083 "Gmsh.y" { (yyval.i) = (int)(yyvsp[(2) - (2)].d); ;} break; case 329: -#line 4076 "Gmsh.y" +#line 4089 "Gmsh.y" { (yyval.l) = List_Create(1, 1, sizeof(double)); ;} break; case 330: -#line 4080 "Gmsh.y" +#line 4093 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (2)].l); ;} break; case 331: -#line 4087 "Gmsh.y" +#line 4100 "Gmsh.y" { // mesh sizes at vertices are stored in internal CAD data, as they can be // specified during vertex creation and copied around during CAD @@ -10739,7 +10752,7 @@ yyreduce: break; case 332: -#line 4104 "Gmsh.y" +#line 4117 "Gmsh.y" { // transfinite constraints are stored in GEO internals in addition to // GModel, as they can be copied around during GEO operations @@ -10783,7 +10796,7 @@ yyreduce: break; case 333: -#line 4145 "Gmsh.y" +#line 4158 "Gmsh.y" { // transfinite constraints are stored in GEO internals in addition to // GModel, as they can be copied around during GEO operations @@ -10830,7 +10843,7 @@ yyreduce: break; case 334: -#line 4189 "Gmsh.y" +#line 4202 "Gmsh.y" { // transfinite constraints are stored in GEO internals in addition to // GModel, as they can be copied around during GEO operations @@ -10872,7 +10885,7 @@ yyreduce: break; case 335: -#line 4228 "Gmsh.y" +#line 4241 "Gmsh.y" { // transfinite constraints are stored in GEO internals in addition to // GModel, as they can be copied around during GEO operations @@ -10900,7 +10913,7 @@ yyreduce: break; case 336: -#line 4253 "Gmsh.y" +#line 4266 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (8)].l)); i++){ double d; @@ -10912,7 +10925,7 @@ yyreduce: break; case 337: -#line 4262 "Gmsh.y" +#line 4275 "Gmsh.y" { // recombine constraints are stored in GEO internals in addition to // GModel, as they can be copied around during GEO operations @@ -10945,7 +10958,7 @@ yyreduce: break; case 338: -#line 4292 "Gmsh.y" +#line 4305 "Gmsh.y" { // recombine constraints are stored in GEO internals in addition to // GModel, as they can be copied around during GEO operations @@ -10974,7 +10987,7 @@ yyreduce: break; case 339: -#line 4318 "Gmsh.y" +#line 4331 "Gmsh.y" { // smoothing constraints are stored in GEO internals in addition to // GModel, as they can be copied around during GEO operations @@ -11003,7 +11016,7 @@ yyreduce: break; case 340: -#line 4345 "Gmsh.y" +#line 4358 "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 " @@ -11037,7 +11050,7 @@ yyreduce: break; case 341: -#line 4377 "Gmsh.y" +#line 4390 "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 " @@ -11066,7 +11079,7 @@ yyreduce: break; case 342: -#line 4404 "Gmsh.y" +#line 4417 "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 " @@ -11094,7 +11107,7 @@ yyreduce: break; case 343: -#line 4430 "Gmsh.y" +#line 4443 "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 " @@ -11122,7 +11135,7 @@ yyreduce: break; case 344: -#line 4456 "Gmsh.y" +#line 4469 "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 " @@ -11150,7 +11163,7 @@ yyreduce: break; case 345: -#line 4482 "Gmsh.y" +#line 4495 "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 " @@ -11178,7 +11191,7 @@ yyreduce: break; case 346: -#line 4508 "Gmsh.y" +#line 4521 "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 " @@ -11202,7 +11215,7 @@ yyreduce: break; case 347: -#line 4529 "Gmsh.y" +#line 4542 "Gmsh.y" { if (((yyvsp[(6) - (10)].i)==2 || (yyvsp[(6) - (10)].i)==3) && (yyvsp[(1) - (10)].i)<(yyvsp[(6) - (10)].i) ) { std::vector<int> tags; ListOfDouble2Vector((yyvsp[(3) - (10)].l), tags); @@ -11216,7 +11229,7 @@ yyreduce: break; case 348: -#line 4540 "Gmsh.y" +#line 4553 "Gmsh.y" { // reverse mesh constraints are stored in GEO internals in addition to // GModel, as they can be copied around during GEO operations @@ -11267,7 +11280,7 @@ yyreduce: break; case 349: -#line 4588 "Gmsh.y" +#line 4601 "Gmsh.y" { if(!(yyvsp[(3) - (4)].l)){ switch ((yyvsp[(2) - (4)].i)) { @@ -11319,7 +11332,7 @@ yyreduce: break; case 350: -#line 4637 "Gmsh.y" +#line 4650 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){ double dnum; @@ -11334,7 +11347,7 @@ yyreduce: break; case 351: -#line 4649 "Gmsh.y" +#line 4662 "Gmsh.y" { std::vector<int> tags; ListOfDouble2Vector((yyvsp[(3) - (4)].l), tags); GModel::current()->getGEOInternals()->setCompoundMesh((yyvsp[(2) - (4)].i), tags); @@ -11343,7 +11356,7 @@ yyreduce: break; case 352: -#line 4660 "Gmsh.y" +#line 4673 "Gmsh.y" { if(gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals()) GModel::current()->getOCCInternals()->removeAllDuplicates(); @@ -11353,7 +11366,7 @@ yyreduce: break; case 353: -#line 4667 "Gmsh.y" +#line 4680 "Gmsh.y" { if(!strcmp((yyvsp[(2) - (3)].c), "Geometry")){ if(gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals()) @@ -11371,7 +11384,7 @@ yyreduce: break; case 354: -#line 4682 "Gmsh.y" +#line 4695 "Gmsh.y" { std::vector<int> tags; ListOfDouble2Vector((yyvsp[(4) - (6)].l), tags); if(gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals()) @@ -11383,22 +11396,22 @@ yyreduce: break; case 355: -#line 4695 "Gmsh.y" +#line 4708 "Gmsh.y" { (yyval.c) = (char*)"Homology"; ;} break; case 356: -#line 4696 "Gmsh.y" +#line 4709 "Gmsh.y" { (yyval.c) = (char*)"Cohomology"; ;} break; case 357: -#line 4697 "Gmsh.y" +#line 4710 "Gmsh.y" { (yyval.c) = (char*)"Betti"; ;} break; case 358: -#line 4702 "Gmsh.y" +#line 4715 "Gmsh.y" { std::vector<int> domain, subdomain, dim; for(int i = 0; i < 4; i++) dim.push_back(i); @@ -11407,7 +11420,7 @@ yyreduce: break; case 359: -#line 4708 "Gmsh.y" +#line 4721 "Gmsh.y" { std::vector<int> domain, subdomain, dim; for(int i = 0; i < List_Nbr((yyvsp[(3) - (5)].l)); i++){ @@ -11422,7 +11435,7 @@ yyreduce: break; case 360: -#line 4720 "Gmsh.y" +#line 4733 "Gmsh.y" { std::vector<int> domain, subdomain, dim; for(int i = 0; i < List_Nbr((yyvsp[(3) - (7)].l)); i++){ @@ -11443,7 +11456,7 @@ yyreduce: break; case 361: -#line 4738 "Gmsh.y" +#line 4751 "Gmsh.y" { std::vector<int> domain, subdomain, dim; for(int i = 0; i < List_Nbr((yyvsp[(6) - (10)].l)); i++){ @@ -11469,47 +11482,47 @@ yyreduce: break; case 362: -#line 4765 "Gmsh.y" +#line 4778 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (1)].d); ;} break; case 363: -#line 4766 "Gmsh.y" +#line 4779 "Gmsh.y" { (yyval.d) = (yyvsp[(2) - (3)].d); ;} break; case 364: -#line 4767 "Gmsh.y" +#line 4780 "Gmsh.y" { (yyval.d) = -(yyvsp[(2) - (2)].d); ;} break; case 365: -#line 4768 "Gmsh.y" +#line 4781 "Gmsh.y" { (yyval.d) = (yyvsp[(2) - (2)].d); ;} break; case 366: -#line 4769 "Gmsh.y" +#line 4782 "Gmsh.y" { (yyval.d) = !(yyvsp[(2) - (2)].d); ;} break; case 367: -#line 4770 "Gmsh.y" +#line 4783 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) - (yyvsp[(3) - (3)].d); ;} break; case 368: -#line 4771 "Gmsh.y" +#line 4784 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) + (yyvsp[(3) - (3)].d); ;} break; case 369: -#line 4772 "Gmsh.y" +#line 4785 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) * (yyvsp[(3) - (3)].d); ;} break; case 370: -#line 4774 "Gmsh.y" +#line 4787 "Gmsh.y" { if(!(yyvsp[(3) - (3)].d)) yymsg(0, "Division by zero in '%g / %g'", (yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].d)); @@ -11519,257 +11532,257 @@ yyreduce: break; case 371: -#line 4780 "Gmsh.y" +#line 4793 "Gmsh.y" { (yyval.d) = (int)(yyvsp[(1) - (3)].d) | (int)(yyvsp[(3) - (3)].d); ;} break; case 372: -#line 4781 "Gmsh.y" +#line 4794 "Gmsh.y" { (yyval.d) = (int)(yyvsp[(1) - (3)].d) & (int)(yyvsp[(3) - (3)].d); ;} break; case 373: -#line 4782 "Gmsh.y" +#line 4795 "Gmsh.y" { (yyval.d) = (int)(yyvsp[(1) - (3)].d) % (int)(yyvsp[(3) - (3)].d); ;} break; case 374: -#line 4783 "Gmsh.y" +#line 4796 "Gmsh.y" { (yyval.d) = pow((yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].d)); ;} break; case 375: -#line 4784 "Gmsh.y" +#line 4797 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) < (yyvsp[(3) - (3)].d); ;} break; case 376: -#line 4785 "Gmsh.y" +#line 4798 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) > (yyvsp[(3) - (3)].d); ;} break; case 377: -#line 4786 "Gmsh.y" +#line 4799 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) <= (yyvsp[(3) - (3)].d); ;} break; case 378: -#line 4787 "Gmsh.y" +#line 4800 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) >= (yyvsp[(3) - (3)].d); ;} break; case 379: -#line 4788 "Gmsh.y" +#line 4801 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) == (yyvsp[(3) - (3)].d); ;} break; case 380: -#line 4789 "Gmsh.y" +#line 4802 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) != (yyvsp[(3) - (3)].d); ;} break; case 381: -#line 4790 "Gmsh.y" +#line 4803 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) && (yyvsp[(3) - (3)].d); ;} break; case 382: -#line 4791 "Gmsh.y" +#line 4804 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) || (yyvsp[(3) - (3)].d); ;} break; case 383: -#line 4792 "Gmsh.y" +#line 4805 "Gmsh.y" { (yyval.d) = ((int)(yyvsp[(1) - (3)].d) >> (int)(yyvsp[(3) - (3)].d)); ;} break; case 384: -#line 4793 "Gmsh.y" +#line 4806 "Gmsh.y" { (yyval.d) = ((int)(yyvsp[(1) - (3)].d) << (int)(yyvsp[(3) - (3)].d)); ;} break; case 385: -#line 4794 "Gmsh.y" +#line 4807 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (5)].d) ? (yyvsp[(3) - (5)].d) : (yyvsp[(5) - (5)].d); ;} break; case 386: -#line 4795 "Gmsh.y" +#line 4808 "Gmsh.y" { (yyval.d) = exp((yyvsp[(3) - (4)].d)); ;} break; case 387: -#line 4796 "Gmsh.y" +#line 4809 "Gmsh.y" { (yyval.d) = log((yyvsp[(3) - (4)].d)); ;} break; case 388: -#line 4797 "Gmsh.y" +#line 4810 "Gmsh.y" { (yyval.d) = log10((yyvsp[(3) - (4)].d)); ;} break; case 389: -#line 4798 "Gmsh.y" +#line 4811 "Gmsh.y" { (yyval.d) = sqrt((yyvsp[(3) - (4)].d)); ;} break; case 390: -#line 4799 "Gmsh.y" +#line 4812 "Gmsh.y" { (yyval.d) = sin((yyvsp[(3) - (4)].d)); ;} break; case 391: -#line 4800 "Gmsh.y" +#line 4813 "Gmsh.y" { (yyval.d) = asin((yyvsp[(3) - (4)].d)); ;} break; case 392: -#line 4801 "Gmsh.y" +#line 4814 "Gmsh.y" { (yyval.d) = cos((yyvsp[(3) - (4)].d)); ;} break; case 393: -#line 4802 "Gmsh.y" +#line 4815 "Gmsh.y" { (yyval.d) = acos((yyvsp[(3) - (4)].d)); ;} break; case 394: -#line 4803 "Gmsh.y" +#line 4816 "Gmsh.y" { (yyval.d) = tan((yyvsp[(3) - (4)].d)); ;} break; case 395: -#line 4804 "Gmsh.y" +#line 4817 "Gmsh.y" { (yyval.d) = atan((yyvsp[(3) - (4)].d)); ;} break; case 396: -#line 4805 "Gmsh.y" +#line 4818 "Gmsh.y" { (yyval.d) = atan2((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d));;} break; case 397: -#line 4806 "Gmsh.y" +#line 4819 "Gmsh.y" { (yyval.d) = sinh((yyvsp[(3) - (4)].d)); ;} break; case 398: -#line 4807 "Gmsh.y" +#line 4820 "Gmsh.y" { (yyval.d) = cosh((yyvsp[(3) - (4)].d)); ;} break; case 399: -#line 4808 "Gmsh.y" +#line 4821 "Gmsh.y" { (yyval.d) = tanh((yyvsp[(3) - (4)].d)); ;} break; case 400: -#line 4809 "Gmsh.y" +#line 4822 "Gmsh.y" { (yyval.d) = fabs((yyvsp[(3) - (4)].d)); ;} break; case 401: -#line 4810 "Gmsh.y" +#line 4823 "Gmsh.y" { (yyval.d) = std::abs((yyvsp[(3) - (4)].d)); ;} break; case 402: -#line 4811 "Gmsh.y" +#line 4824 "Gmsh.y" { (yyval.d) = floor((yyvsp[(3) - (4)].d)); ;} break; case 403: -#line 4812 "Gmsh.y" +#line 4825 "Gmsh.y" { (yyval.d) = ceil((yyvsp[(3) - (4)].d)); ;} break; case 404: -#line 4813 "Gmsh.y" +#line 4826 "Gmsh.y" { (yyval.d) = floor((yyvsp[(3) - (4)].d) + 0.5); ;} break; case 405: -#line 4814 "Gmsh.y" +#line 4827 "Gmsh.y" { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;} break; case 406: -#line 4815 "Gmsh.y" +#line 4828 "Gmsh.y" { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;} break; case 407: -#line 4816 "Gmsh.y" +#line 4829 "Gmsh.y" { (yyval.d) = sqrt((yyvsp[(3) - (6)].d) * (yyvsp[(3) - (6)].d) + (yyvsp[(5) - (6)].d) * (yyvsp[(5) - (6)].d)); ;} break; case 408: -#line 4817 "Gmsh.y" +#line 4830 "Gmsh.y" { (yyval.d) = (yyvsp[(3) - (4)].d) * (double)rand() / (double)RAND_MAX; ;} break; case 409: -#line 4826 "Gmsh.y" +#line 4839 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (1)].d); ;} break; case 410: -#line 4827 "Gmsh.y" +#line 4840 "Gmsh.y" { (yyval.d) = 3.141592653589793; ;} break; case 411: -#line 4828 "Gmsh.y" +#line 4841 "Gmsh.y" { (yyval.d) = (double)ImbricatedTest; ;} break; case 412: -#line 4829 "Gmsh.y" +#line 4842 "Gmsh.y" { (yyval.d) = Msg::GetCommRank(); ;} break; case 413: -#line 4830 "Gmsh.y" +#line 4843 "Gmsh.y" { (yyval.d) = Msg::GetCommSize(); ;} break; case 414: -#line 4831 "Gmsh.y" +#line 4844 "Gmsh.y" { (yyval.d) = GetGmshMajorVersion(); ;} break; case 415: -#line 4832 "Gmsh.y" +#line 4845 "Gmsh.y" { (yyval.d) = GetGmshMinorVersion(); ;} break; case 416: -#line 4833 "Gmsh.y" +#line 4846 "Gmsh.y" { (yyval.d) = GetGmshPatchVersion(); ;} break; case 417: -#line 4834 "Gmsh.y" +#line 4847 "Gmsh.y" { (yyval.d) = Cpu(); ;} break; case 418: -#line 4835 "Gmsh.y" +#line 4848 "Gmsh.y" { (yyval.d) = GetMemoryUsage()/1024./1024.; ;} break; case 419: -#line 4836 "Gmsh.y" +#line 4849 "Gmsh.y" { (yyval.d) = TotalRam(); ;} break; case 420: -#line 4841 "Gmsh.y" +#line 4854 "Gmsh.y" { init_options(); ;} break; case 421: -#line 4843 "Gmsh.y" +#line 4856 "Gmsh.y" { std::vector<double> val(1, (yyvsp[(3) - (6)].d)); Msg::ExchangeOnelabParameter("", val, floatOptions, charOptions); @@ -11778,12 +11791,12 @@ yyreduce: break; case 422: -#line 4849 "Gmsh.y" +#line 4862 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (1)].d); ;} break; case 423: -#line 4851 "Gmsh.y" +#line 4864 "Gmsh.y" { (yyval.d) = Msg::GetOnelabNumber((yyvsp[(3) - (4)].c)); Free((yyvsp[(3) - (4)].c)); @@ -11791,7 +11804,7 @@ yyreduce: break; case 424: -#line 4856 "Gmsh.y" +#line 4869 "Gmsh.y" { (yyval.d) = Msg::GetOnelabNumber((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].d)); Free((yyvsp[(3) - (6)].c)); @@ -11799,70 +11812,70 @@ yyreduce: break; case 425: -#line 4861 "Gmsh.y" +#line 4874 "Gmsh.y" { (yyval.d) = treat_Struct_FullName_Float((yyvsp[(1) - (1)].c2).char1, (yyvsp[(1) - (1)].c2).char2); ;} break; case 426: -#line 4866 "Gmsh.y" +#line 4879 "Gmsh.y" { (yyval.d) = treat_Struct_FullName_Float(NULL, (yyvsp[(1) - (4)].c), 2, (int)(yyvsp[(3) - (4)].d)); ;} break; case 427: -#line 4871 "Gmsh.y" +#line 4884 "Gmsh.y" { (yyval.d) = treat_Struct_FullName_Float(NULL, (yyvsp[(1) - (4)].c), 2, (int)(yyvsp[(3) - (4)].d)); ;} break; case 428: -#line 4875 "Gmsh.y" +#line 4888 "Gmsh.y" { (yyval.d) = treat_Struct_FullName_Float((yyvsp[(3) - (4)].c2).char1, (yyvsp[(3) - (4)].c2).char2, 1, 0, 0., 1); ;} break; case 429: -#line 4879 "Gmsh.y" +#line 4892 "Gmsh.y" { (yyval.d) = treat_Struct_FullName_dot_tSTRING_Float((yyvsp[(3) - (6)].c2).char1, (yyvsp[(3) - (6)].c2).char2, (yyvsp[(5) - (6)].c), 0, 0., 1); ;} break; case 430: -#line 4883 "Gmsh.y" +#line 4896 "Gmsh.y" { (yyval.d) = treat_Struct_FullName_Float((yyvsp[(3) - (5)].c2).char1, (yyvsp[(3) - (5)].c2).char2, 1, 0, (yyvsp[(4) - (5)].d), 2); ;} break; case 431: -#line 4887 "Gmsh.y" +#line 4900 "Gmsh.y" { (yyval.d) = treat_Struct_FullName_dot_tSTRING_Float((yyvsp[(3) - (7)].c2).char1, (yyvsp[(3) - (7)].c2).char2, (yyvsp[(5) - (7)].c), 0, (yyvsp[(6) - (7)].d), 2); ;} break; case 432: -#line 4891 "Gmsh.y" +#line 4904 "Gmsh.y" { (yyval.d) = treat_Struct_FullName_Float((yyvsp[(3) - (8)].c2).char1, (yyvsp[(3) - (8)].c2).char2, 2, (int)(yyvsp[(5) - (8)].d), (yyvsp[(7) - (8)].d), 2); ;} break; case 433: -#line 4895 "Gmsh.y" +#line 4908 "Gmsh.y" { (yyval.d) = treat_Struct_FullName_dot_tSTRING_Float((yyvsp[(3) - (10)].c2).char1, (yyvsp[(3) - (10)].c2).char2, (yyvsp[(5) - (10)].c), (int)(yyvsp[(7) - (10)].d), (yyvsp[(9) - (10)].d), 2); ;} break; case 434: -#line 4899 "Gmsh.y" +#line 4912 "Gmsh.y" { std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(3) - (4)].c)); (yyval.d) = !StatFile(tmp); @@ -11871,7 +11884,7 @@ yyreduce: break; case 435: -#line 4905 "Gmsh.y" +#line 4918 "Gmsh.y" { if(gmsh_yysymbols.count((yyvsp[(2) - (4)].c))){ gmsh_yysymbol &s(gmsh_yysymbols[(yyvsp[(2) - (4)].c)]); @@ -11889,14 +11902,14 @@ yyreduce: break; case 436: -#line 4921 "Gmsh.y" +#line 4934 "Gmsh.y" { (yyval.d) = treat_Struct_FullName_dot_tSTRING_Float_getDim((yyvsp[(2) - (6)].c2).char1, (yyvsp[(2) - (6)].c2).char2, (yyvsp[(4) - (6)].c)); ;} break; case 437: -#line 4926 "Gmsh.y" +#line 4939 "Gmsh.y" { std::string struct_namespace((yyvsp[(3) - (4)].c)); (yyval.d) = (double)gmsh_yynamespaces[struct_namespace].size(); @@ -11905,7 +11918,7 @@ yyreduce: break; case 438: -#line 4932 "Gmsh.y" +#line 4945 "Gmsh.y" { std::string struct_namespace(std::string("")); (yyval.d) = (double)gmsh_yynamespaces[struct_namespace].size(); @@ -11913,7 +11926,7 @@ yyreduce: break; case 439: -#line 4938 "Gmsh.y" +#line 4951 "Gmsh.y" { if(!gmsh_yysymbols.count((yyvsp[(1) - (2)].c))){ yymsg(0, "Unknown variable '%s'", (yyvsp[(1) - (2)].c)); @@ -11935,7 +11948,7 @@ yyreduce: break; case 440: -#line 4957 "Gmsh.y" +#line 4970 "Gmsh.y" { int index = (int)(yyvsp[(3) - (5)].d); if(!gmsh_yysymbols.count((yyvsp[(1) - (5)].c))){ @@ -11958,7 +11971,7 @@ yyreduce: break; case 441: -#line 4978 "Gmsh.y" +#line 4991 "Gmsh.y" { int index = (int)(yyvsp[(3) - (5)].d); if(!gmsh_yysymbols.count((yyvsp[(1) - (5)].c))){ @@ -11981,49 +11994,49 @@ yyreduce: break; case 442: -#line 5011 "Gmsh.y" +#line 5024 "Gmsh.y" { (yyval.d) = treat_Struct_FullName_dot_tSTRING_Float(NULL, (yyvsp[(1) - (3)].c), (yyvsp[(3) - (3)].c)); ;} break; case 443: -#line 5015 "Gmsh.y" +#line 5028 "Gmsh.y" { (yyval.d) = treat_Struct_FullName_dot_tSTRING_Float((yyvsp[(1) - (5)].c), (yyvsp[(3) - (5)].c), (yyvsp[(5) - (5)].c)); ;} break; case 444: -#line 5020 "Gmsh.y" +#line 5033 "Gmsh.y" { (yyval.d) = treat_Struct_FullName_dot_tSTRING_Float(NULL, (yyvsp[(1) - (6)].c), (yyvsp[(3) - (6)].c), (int)(yyvsp[(5) - (6)].d)); ;} break; case 445: -#line 5024 "Gmsh.y" +#line 5037 "Gmsh.y" { (yyval.d) = treat_Struct_FullName_dot_tSTRING_Float((yyvsp[(1) - (8)].c), (yyvsp[(3) - (8)].c), (yyvsp[(5) - (8)].c), (int)(yyvsp[(7) - (8)].d)); ;} break; case 446: -#line 5028 "Gmsh.y" +#line 5041 "Gmsh.y" { (yyval.d) = treat_Struct_FullName_dot_tSTRING_Float(NULL, (yyvsp[(1) - (6)].c), (yyvsp[(3) - (6)].c), (int)(yyvsp[(5) - (6)].d)); ;} break; case 447: -#line 5032 "Gmsh.y" +#line 5045 "Gmsh.y" { (yyval.d) = treat_Struct_FullName_dot_tSTRING_Float((yyvsp[(1) - (8)].c), (yyvsp[(3) - (8)].c), (yyvsp[(5) - (8)].c), (int)(yyvsp[(7) - (8)].d)); ;} break; case 448: -#line 5037 "Gmsh.y" +#line 5050 "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)); @@ -12031,7 +12044,7 @@ yyreduce: break; case 449: -#line 5042 "Gmsh.y" +#line 5055 "Gmsh.y" { double d = 0.; if(NumberOption(GMSH_GET, (yyvsp[(1) - (4)].c), 0, (yyvsp[(3) - (4)].c), d)){ @@ -12044,7 +12057,7 @@ yyreduce: break; case 450: -#line 5052 "Gmsh.y" +#line 5065 "Gmsh.y" { double d = 0.; if(NumberOption(GMSH_GET, (yyvsp[(1) - (7)].c), (int)(yyvsp[(3) - (7)].d), (yyvsp[(6) - (7)].c), d)){ @@ -12057,7 +12070,7 @@ yyreduce: break; case 451: -#line 5062 "Gmsh.y" +#line 5075 "Gmsh.y" { (yyval.d) = Msg::GetValue((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].d)); Free((yyvsp[(3) - (6)].c)); @@ -12065,7 +12078,7 @@ yyreduce: break; case 452: -#line 5067 "Gmsh.y" +#line 5080 "Gmsh.y" { int matches = 0; for(int i = 0; i < List_Nbr((yyvsp[(3) - (6)].l)); i++){ @@ -12079,7 +12092,7 @@ yyreduce: break; case 453: -#line 5078 "Gmsh.y" +#line 5091 "Gmsh.y" { std::string s((yyvsp[(3) - (6)].c)), substr((yyvsp[(5) - (6)].c)); if(s.find(substr) != std::string::npos) @@ -12091,7 +12104,7 @@ yyreduce: break; case 454: -#line 5087 "Gmsh.y" +#line 5100 "Gmsh.y" { (yyval.d) = strlen((yyvsp[(3) - (4)].c)); Free((yyvsp[(3) - (4)].c)); @@ -12099,7 +12112,7 @@ yyreduce: break; case 455: -#line 5092 "Gmsh.y" +#line 5105 "Gmsh.y" { (yyval.d) = strcmp((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].c)); Free((yyvsp[(3) - (6)].c)); Free((yyvsp[(5) - (6)].c)); @@ -12107,7 +12120,7 @@ yyreduce: break; case 456: -#line 5097 "Gmsh.y" +#line 5110 "Gmsh.y" { int align = 0, font = 0, fontsize = CTX::instance()->glFontSize; if(List_Nbr((yyvsp[(3) - (4)].l)) % 2){ @@ -12134,27 +12147,27 @@ yyreduce: break; case 457: -#line 5124 "Gmsh.y" +#line 5137 "Gmsh.y" { (yyval.d) = 0.; ;} break; case 458: -#line 5126 "Gmsh.y" +#line 5139 "Gmsh.y" { (yyval.d) = (yyvsp[(2) - (2)].d);;} break; case 459: -#line 5131 "Gmsh.y" +#line 5144 "Gmsh.y" { (yyval.c) = NULL; ;} break; case 460: -#line 5133 "Gmsh.y" +#line 5146 "Gmsh.y" { (yyval.c) = (yyvsp[(2) - (2)].c);;} break; case 461: -#line 5138 "Gmsh.y" +#line 5151 "Gmsh.y" { std::string struct_namespace((yyvsp[(2) - (3)].c2).char1? (yyvsp[(2) - (3)].c2).char1 : std::string("")), struct_name((yyvsp[(2) - (3)].c2).char2); @@ -12164,7 +12177,7 @@ yyreduce: break; case 462: -#line 5145 "Gmsh.y" +#line 5158 "Gmsh.y" { std::string struct_namespace((yyvsp[(2) - (7)].c2).char1? (yyvsp[(2) - (7)].c2).char1 : std::string("")), struct_name((yyvsp[(2) - (7)].c2).char2); @@ -12180,105 +12193,105 @@ yyreduce: break; case 463: -#line 5161 "Gmsh.y" +#line 5174 "Gmsh.y" { (yyval.c2).char1 = NULL; (yyval.c2).char2 = (yyvsp[(1) - (1)].c); ;} break; case 464: -#line 5163 "Gmsh.y" +#line 5176 "Gmsh.y" { (yyval.c2).char1 = (yyvsp[(1) - (3)].c); (yyval.c2).char2 = (yyvsp[(3) - (3)].c); ;} break; case 465: -#line 5168 "Gmsh.y" +#line 5181 "Gmsh.y" { (yyval.c) = (yyvsp[(1) - (1)].c); flag_tSTRING_alloc = 1; ;} break; case 466: -#line 5177 "Gmsh.y" +#line 5190 "Gmsh.y" { (yyval.i) = 99; ;} break; case 467: -#line 5179 "Gmsh.y" +#line 5192 "Gmsh.y" { (yyval.i) = (int)(yyvsp[(2) - (2)].d); ;} break; case 468: -#line 5184 "Gmsh.y" +#line 5197 "Gmsh.y" { (yyval.i) = 0; ;} break; case 469: -#line 5186 "Gmsh.y" +#line 5199 "Gmsh.y" { (yyval.i) = (yyvsp[(2) - (3)].i); ;} break; case 470: -#line 5191 "Gmsh.y" +#line 5204 "Gmsh.y" { memcpy((yyval.v), (yyvsp[(1) - (1)].v), 5*sizeof(double)); ;} break; case 471: -#line 5195 "Gmsh.y" +#line 5208 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = -(yyvsp[(2) - (2)].v)[i]; ;} break; case 472: -#line 5199 "Gmsh.y" +#line 5212 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = (yyvsp[(2) - (2)].v)[i]; ;} break; case 473: -#line 5203 "Gmsh.y" +#line 5216 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = (yyvsp[(1) - (3)].v)[i] - (yyvsp[(3) - (3)].v)[i]; ;} break; case 474: -#line 5207 "Gmsh.y" +#line 5220 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = (yyvsp[(1) - (3)].v)[i] + (yyvsp[(3) - (3)].v)[i]; ;} break; case 475: -#line 5214 "Gmsh.y" +#line 5227 "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 476: -#line 5218 "Gmsh.y" +#line 5231 "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 477: -#line 5222 "Gmsh.y" +#line 5235 "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 478: -#line 5226 "Gmsh.y" +#line 5239 "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 479: -#line 5233 "Gmsh.y" +#line 5246 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(List_T*)); List_Add((yyval.l), &((yyvsp[(1) - (1)].l))); @@ -12286,14 +12299,14 @@ yyreduce: break; case 480: -#line 5238 "Gmsh.y" +#line 5251 "Gmsh.y" { List_Add((yyval.l), &((yyvsp[(3) - (3)].l))); ;} break; case 481: -#line 5245 "Gmsh.y" +#line 5258 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); List_Add((yyval.l), &((yyvsp[(1) - (1)].d))); @@ -12301,14 +12314,14 @@ yyreduce: break; case 482: -#line 5250 "Gmsh.y" +#line 5263 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; case 483: -#line 5254 "Gmsh.y" +#line 5267 "Gmsh.y" { // creates an empty list (yyval.l) = List_Create(2, 1, sizeof(double)); @@ -12316,14 +12329,14 @@ yyreduce: break; case 484: -#line 5259 "Gmsh.y" +#line 5272 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (3)].l); ;} break; case 485: -#line 5263 "Gmsh.y" +#line 5276 "Gmsh.y" { (yyval.l) = (yyvsp[(3) - (4)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ @@ -12334,7 +12347,7 @@ yyreduce: break; case 486: -#line 5271 "Gmsh.y" +#line 5284 "Gmsh.y" { (yyval.l) = (yyvsp[(4) - (5)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ @@ -12345,14 +12358,14 @@ yyreduce: break; case 487: -#line 5282 "Gmsh.y" +#line 5295 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; case 488: -#line 5286 "Gmsh.y" +#line 5299 "Gmsh.y" { if(!strcmp((yyvsp[(1) - (1)].c), "*") || !strcmp((yyvsp[(1) - (1)].c), "all")) (yyval.l) = 0; @@ -12364,7 +12377,7 @@ yyreduce: break; case 489: -#line 5298 "Gmsh.y" +#line 5311 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (2)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ @@ -12375,7 +12388,7 @@ yyreduce: break; case 490: -#line 5306 "Gmsh.y" +#line 5319 "Gmsh.y" { (yyval.l) = (yyvsp[(3) - (3)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ @@ -12386,7 +12399,7 @@ yyreduce: break; case 491: -#line 5314 "Gmsh.y" +#line 5327 "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)); @@ -12396,7 +12409,7 @@ yyreduce: break; case 492: -#line 5321 "Gmsh.y" +#line 5334 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!(yyvsp[(5) - (5)].d)){ //|| ($1 < $3 && $5 < 0) || ($1 > $3 && $5 > 0) @@ -12409,7 +12422,7 @@ yyreduce: break; case 493: -#line 5331 "Gmsh.y" +#line 5344 "Gmsh.y" { (yyval.l) = List_Create(3, 1, sizeof(double)); int tag = (int)(yyvsp[(3) - (4)].d); @@ -12435,7 +12448,7 @@ yyreduce: break; case 494: -#line 5354 "Gmsh.y" +#line 5367 "Gmsh.y" { (yyval.l) = List_Create(10, 10, sizeof(double)); getAllElementaryTags((yyvsp[(1) - (2)].i), (yyval.l)); @@ -12444,7 +12457,7 @@ yyreduce: break; case 495: -#line 5360 "Gmsh.y" +#line 5373 "Gmsh.y" { (yyval.l) = List_Create(10, 10, sizeof(double)); if(!(yyvsp[(3) - (3)].l)){ @@ -12458,7 +12471,7 @@ yyreduce: break; case 496: -#line 5372 "Gmsh.y" +#line 5385 "Gmsh.y" { (yyval.l) = List_Create(10, 10, sizeof(double)); getElementaryTagsInBoundingBox((yyvsp[(1) - (16)].i), (yyvsp[(5) - (16)].d), (yyvsp[(7) - (16)].d), (yyvsp[(9) - (16)].d), (yyvsp[(11) - (16)].d), (yyvsp[(13) - (16)].d), (yyvsp[(15) - (16)].d), (yyval.l)); @@ -12466,7 +12479,7 @@ yyreduce: break; case 497: -#line 5377 "Gmsh.y" +#line 5390 "Gmsh.y" { (yyval.l) = List_Create(10, 10, sizeof(double)); getBoundingBox((yyvsp[(2) - (5)].i), (int)(yyvsp[(4) - (5)].d), (yyval.l)); @@ -12474,7 +12487,7 @@ yyreduce: break; case 498: -#line 5382 "Gmsh.y" +#line 5395 "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++){ @@ -12487,7 +12500,7 @@ yyreduce: break; case 499: -#line 5392 "Gmsh.y" +#line 5405 "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++){ @@ -12500,7 +12513,7 @@ yyreduce: break; case 500: -#line 5402 "Gmsh.y" +#line 5415 "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++){ @@ -12513,7 +12526,7 @@ yyreduce: break; case 501: -#line 5412 "Gmsh.y" +#line 5425 "Gmsh.y" { (yyval.l) = List_Create(20, 20, sizeof(double)); if(!gmsh_yysymbols.count((yyvsp[(1) - (3)].c))) @@ -12528,21 +12541,21 @@ yyreduce: break; case 502: -#line 5424 "Gmsh.y" +#line 5437 "Gmsh.y" { (yyval.l) = treat_Struct_FullName_dot_tSTRING_ListOfFloat(NULL, (yyvsp[(1) - (5)].c), (yyvsp[(3) - (5)].c)); ;} break; case 503: -#line 5428 "Gmsh.y" +#line 5441 "Gmsh.y" { (yyval.l) = treat_Struct_FullName_dot_tSTRING_ListOfFloat((yyvsp[(1) - (7)].c), (yyvsp[(3) - (7)].c), (yyvsp[(5) - (7)].c)); ;} break; case 504: -#line 5433 "Gmsh.y" +#line 5446 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!gmsh_yysymbols.count((yyvsp[(3) - (4)].c))) @@ -12557,28 +12570,28 @@ yyreduce: break; case 505: -#line 5445 "Gmsh.y" +#line 5458 "Gmsh.y" { (yyval.l) = (yyvsp[(3) - (4)].l); ;} break; case 506: -#line 5449 "Gmsh.y" +#line 5462 "Gmsh.y" { (yyval.l) = (yyvsp[(3) - (4)].l); ;} break; case 507: -#line 5453 "Gmsh.y" +#line 5466 "Gmsh.y" { (yyval.l) = (yyvsp[(4) - (6)].l); ;} break; case 508: -#line 5457 "Gmsh.y" +#line 5470 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!gmsh_yysymbols.count((yyvsp[(1) - (6)].c))) @@ -12599,7 +12612,7 @@ yyreduce: break; case 509: -#line 5475 "Gmsh.y" +#line 5488 "Gmsh.y" { (yyval.l) = List_Create(20,20,sizeof(double)); for(int i = 0; i < (int)(yyvsp[(7) - (8)].d); i++) { @@ -12610,7 +12623,7 @@ yyreduce: break; case 510: -#line 5483 "Gmsh.y" +#line 5496 "Gmsh.y" { (yyval.l) = List_Create(20,20,sizeof(double)); for(int i = 0; i < (int)(yyvsp[(7) - (8)].d); i++) { @@ -12621,7 +12634,7 @@ yyreduce: break; case 511: -#line 5491 "Gmsh.y" +#line 5504 "Gmsh.y" { Msg::Barrier(); FILE *File; @@ -12653,7 +12666,7 @@ yyreduce: break; case 512: -#line 5520 "Gmsh.y" +#line 5533 "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); @@ -12666,7 +12679,7 @@ yyreduce: break; case 513: -#line 5530 "Gmsh.y" +#line 5543 "Gmsh.y" { std::vector<double> tmp; for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){ @@ -12685,7 +12698,7 @@ yyreduce: break; case 514: -#line 5546 "Gmsh.y" +#line 5559 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){ double *d = (double*)List_Pointer((yyvsp[(3) - (4)].l), i); @@ -12696,7 +12709,7 @@ yyreduce: break; case 515: -#line 5557 "Gmsh.y" +#line 5570 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); List_Add((yyval.l), &((yyvsp[(1) - (1)].d))); @@ -12704,21 +12717,21 @@ yyreduce: break; case 516: -#line 5562 "Gmsh.y" +#line 5575 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; case 517: -#line 5566 "Gmsh.y" +#line 5579 "Gmsh.y" { List_Add((yyval.l), &((yyvsp[(3) - (3)].d))); ;} break; case 518: -#line 5570 "Gmsh.y" +#line 5583 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (3)].l)); i++){ double d; @@ -12730,21 +12743,21 @@ yyreduce: break; case 519: -#line 5582 "Gmsh.y" +#line 5595 "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 520: -#line 5586 "Gmsh.y" +#line 5599 "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 521: -#line 5598 "Gmsh.y" +#line 5611 "Gmsh.y" { int flag = 0; if(gmsh_yystringsymbols.count((yyvsp[(1) - (1)].c))){ @@ -12764,7 +12777,7 @@ yyreduce: break; case 522: -#line 5615 "Gmsh.y" +#line 5628 "Gmsh.y" { unsigned int val = 0; ColorOption(GMSH_GET, (yyvsp[(1) - (5)].c), 0, (yyvsp[(5) - (5)].c), val); @@ -12774,14 +12787,14 @@ yyreduce: break; case 523: -#line 5625 "Gmsh.y" +#line 5638 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (3)].l); ;} break; case 524: -#line 5629 "Gmsh.y" +#line 5642 "Gmsh.y" { (yyval.l) = List_Create(256, 10, sizeof(unsigned int)); GmshColorTable *ct = GetColorTable((int)(yyvsp[(3) - (6)].d)); @@ -12796,7 +12809,7 @@ yyreduce: break; case 525: -#line 5644 "Gmsh.y" +#line 5657 "Gmsh.y" { (yyval.l) = List_Create(256, 10, sizeof(unsigned int)); List_Add((yyval.l), &((yyvsp[(1) - (1)].u))); @@ -12804,21 +12817,21 @@ yyreduce: break; case 526: -#line 5649 "Gmsh.y" +#line 5662 "Gmsh.y" { List_Add((yyval.l), &((yyvsp[(3) - (3)].u))); ;} break; case 527: -#line 5656 "Gmsh.y" +#line 5669 "Gmsh.y" { (yyval.c) = (yyvsp[(1) - (1)].c); ;} break; case 528: -#line 5660 "Gmsh.y" +#line 5673 "Gmsh.y" { // No need to extend to Struct_FullName (a Tag is not a String) (yyval.c) = treat_Struct_FullName_String(NULL, (yyvsp[(1) - (1)].c)); @@ -12826,7 +12839,7 @@ yyreduce: break; case 529: -#line 5665 "Gmsh.y" +#line 5678 "Gmsh.y" { std::string val; int j = (int)(yyvsp[(3) - (4)].d); @@ -12843,7 +12856,7 @@ yyreduce: break; case 530: -#line 5679 "Gmsh.y" +#line 5692 "Gmsh.y" { std::string val; int j = (int)(yyvsp[(3) - (4)].d); @@ -12860,35 +12873,35 @@ yyreduce: break; case 531: -#line 5695 "Gmsh.y" +#line 5708 "Gmsh.y" { (yyval.c) = treat_Struct_FullName_dot_tSTRING_String(NULL, (yyvsp[(1) - (3)].c), (yyvsp[(3) - (3)].c)); ;} break; case 532: -#line 5699 "Gmsh.y" +#line 5712 "Gmsh.y" { (yyval.c) = treat_Struct_FullName_dot_tSTRING_String((yyvsp[(1) - (5)].c), (yyvsp[(3) - (5)].c), (yyvsp[(5) - (5)].c)); ;} break; case 533: -#line 5703 "Gmsh.y" +#line 5716 "Gmsh.y" { (yyval.c) = treat_Struct_FullName_dot_tSTRING_String(NULL, (yyvsp[(1) - (6)].c), (yyvsp[(3) - (6)].c), (int)(yyvsp[(5) - (6)].d)); ;} break; case 534: -#line 5707 "Gmsh.y" +#line 5720 "Gmsh.y" { (yyval.c) = treat_Struct_FullName_dot_tSTRING_String((yyvsp[(1) - (8)].c), (yyvsp[(3) - (8)].c), (yyvsp[(5) - (8)].c), (int)(yyvsp[(7) - (8)].d)); ;} break; case 535: -#line 5711 "Gmsh.y" +#line 5724 "Gmsh.y" { std::string out; StringOption(GMSH_GET, (yyvsp[(1) - (6)].c), (int)(yyvsp[(3) - (6)].d), (yyvsp[(6) - (6)].c), out); @@ -12899,7 +12912,7 @@ yyreduce: break; case 536: -#line 5719 "Gmsh.y" +#line 5732 "Gmsh.y" { std::string name = GModel::current()->getPhysicalName(0, (int)(yyvsp[(4) - (5)].d)); (yyval.c) = (char*)Malloc((name.size() + 1) * sizeof(char)); @@ -12908,7 +12921,7 @@ yyreduce: break; case 537: -#line 5725 "Gmsh.y" +#line 5738 "Gmsh.y" { std::string name = GModel::current()->getPhysicalName(1, (int)(yyvsp[(4) - (5)].d)); (yyval.c) = (char*)Malloc((name.size() + 1) * sizeof(char)); @@ -12917,7 +12930,7 @@ yyreduce: break; case 538: -#line 5731 "Gmsh.y" +#line 5744 "Gmsh.y" { std::string name = GModel::current()->getPhysicalName(2, (int)(yyvsp[(4) - (5)].d)); (yyval.c) = (char*)Malloc((name.size() + 1) * sizeof(char)); @@ -12926,7 +12939,7 @@ yyreduce: break; case 539: -#line 5737 "Gmsh.y" +#line 5750 "Gmsh.y" { std::string name = GModel::current()->getPhysicalName(3, (int)(yyvsp[(4) - (5)].d)); (yyval.c) = (char*)Malloc((name.size() + 1) * sizeof(char)); @@ -12935,21 +12948,21 @@ yyreduce: break; case 540: -#line 5746 "Gmsh.y" +#line 5759 "Gmsh.y" { (yyval.c) = (yyvsp[(1) - (1)].c); ;} break; case 541: -#line 5750 "Gmsh.y" +#line 5763 "Gmsh.y" { (yyval.c) = (yyvsp[(3) - (4)].c); ;} break; case 542: -#line 5754 "Gmsh.y" +#line 5767 "Gmsh.y" { (yyval.c) = (char *)Malloc(32 * sizeof(char)); time_t now; @@ -12960,7 +12973,7 @@ yyreduce: break; case 543: -#line 5762 "Gmsh.y" +#line 5775 "Gmsh.y" { std::string exe = Msg::GetExecutableName(); (yyval.c) = (char *)Malloc(exe.size() + 1); @@ -12969,7 +12982,7 @@ yyreduce: break; case 544: -#line 5768 "Gmsh.y" +#line 5781 "Gmsh.y" { std::string action = Msg::GetOnelabAction(); (yyval.c) = (char *)Malloc(action.size() + 1); @@ -12978,14 +12991,14 @@ yyreduce: break; case 545: -#line 5774 "Gmsh.y" +#line 5787 "Gmsh.y" { (yyval.c) = strsave((char*)"Gmsh"); ;} break; case 546: -#line 5778 "Gmsh.y" +#line 5791 "Gmsh.y" { const char *env = GetEnvironmentVar((yyvsp[(3) - (4)].c)); if(!env) env = ""; @@ -12996,7 +13009,7 @@ yyreduce: break; case 547: -#line 5786 "Gmsh.y" +#line 5799 "Gmsh.y" { std::string s = Msg::GetString((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].c)); (yyval.c) = (char *)Malloc((s.size() + 1) * sizeof(char)); @@ -13007,7 +13020,7 @@ yyreduce: break; case 548: -#line 5794 "Gmsh.y" +#line 5807 "Gmsh.y" { std::string s = Msg::GetOnelabString((yyvsp[(3) - (4)].c)); (yyval.c) = (char *)Malloc((s.size() + 1) * sizeof(char)); @@ -13017,7 +13030,7 @@ yyreduce: break; case 549: -#line 5801 "Gmsh.y" +#line 5814 "Gmsh.y" { std::string s = Msg::GetOnelabString((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].c)); (yyval.c) = (char *)Malloc((s.size() + 1) * sizeof(char)); @@ -13028,21 +13041,21 @@ yyreduce: break; case 550: -#line 5810 "Gmsh.y" +#line 5823 "Gmsh.y" { (yyval.c) = treat_Struct_FullName_String(NULL, (yyvsp[(3) - (5)].c2).char2, 1, 0, (yyvsp[(4) - (5)].c), 2); ;} break; case 551: -#line 5814 "Gmsh.y" +#line 5827 "Gmsh.y" { (yyval.c) = treat_Struct_FullName_dot_tSTRING_String((yyvsp[(3) - (7)].c2).char1, (yyvsp[(3) - (7)].c2).char2, (yyvsp[(5) - (7)].c), 0, (yyvsp[(6) - (7)].c), 2); ;} break; case 552: -#line 5818 "Gmsh.y" +#line 5831 "Gmsh.y" { int size = 1; for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++) @@ -13060,7 +13073,7 @@ yyreduce: break; case 553: -#line 5833 "Gmsh.y" +#line 5846 "Gmsh.y" { (yyval.c) = (char *)Malloc((strlen((yyvsp[(3) - (4)].c)) + 1) * sizeof(char)); int i; @@ -13077,7 +13090,7 @@ yyreduce: break; case 554: -#line 5847 "Gmsh.y" +#line 5860 "Gmsh.y" { (yyval.c) = (char *)Malloc((strlen((yyvsp[(3) - (4)].c)) + 1) * sizeof(char)); int i; @@ -13094,7 +13107,7 @@ yyreduce: break; case 555: -#line 5861 "Gmsh.y" +#line 5874 "Gmsh.y" { std::string input = (yyvsp[(3) - (8)].c); std::string substr_old = (yyvsp[(5) - (8)].c); @@ -13109,7 +13122,7 @@ yyreduce: break; case 556: -#line 5873 "Gmsh.y" +#line 5886 "Gmsh.y" { int size = 1; for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++) @@ -13128,7 +13141,7 @@ yyreduce: break; case 557: -#line 5889 "Gmsh.y" +#line 5902 "Gmsh.y" { int i = 0; while ((yyvsp[(3) - (4)].c)[i]) { @@ -13140,7 +13153,7 @@ yyreduce: break; case 558: -#line 5898 "Gmsh.y" +#line 5911 "Gmsh.y" { int i = 0; while ((yyvsp[(3) - (4)].c)[i]) { @@ -13152,7 +13165,7 @@ yyreduce: break; case 559: -#line 5907 "Gmsh.y" +#line 5920 "Gmsh.y" { int i = 0; while ((yyvsp[(3) - (4)].c)[i]) { @@ -13165,7 +13178,7 @@ yyreduce: break; case 560: -#line 5917 "Gmsh.y" +#line 5930 "Gmsh.y" { if((yyvsp[(3) - (8)].d)){ (yyval.c) = (yyvsp[(5) - (8)].c); @@ -13179,7 +13192,7 @@ yyreduce: break; case 561: -#line 5928 "Gmsh.y" +#line 5941 "Gmsh.y" { std::string in = (yyvsp[(3) - (8)].c); std::string out = in.substr((int)(yyvsp[(5) - (8)].d), (int)(yyvsp[(7) - (8)].d)); @@ -13190,7 +13203,7 @@ yyreduce: break; case 562: -#line 5936 "Gmsh.y" +#line 5949 "Gmsh.y" { std::string in = (yyvsp[(3) - (6)].c); std::string out = in.substr((int)(yyvsp[(5) - (6)].d), std::string::npos); @@ -13201,14 +13214,14 @@ yyreduce: break; case 563: -#line 5944 "Gmsh.y" +#line 5957 "Gmsh.y" { (yyval.c) = (yyvsp[(3) - (4)].c); ;} break; case 564: -#line 5948 "Gmsh.y" +#line 5961 "Gmsh.y" { char tmpstring[5000]; int i = printListOfDouble((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].l), tmpstring); @@ -13230,7 +13243,7 @@ yyreduce: break; case 565: -#line 5967 "Gmsh.y" +#line 5980 "Gmsh.y" { std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(3) - (4)].c)); (yyval.c) = (char*)Malloc((tmp.size() + 1) * sizeof(char)); @@ -13240,7 +13253,7 @@ yyreduce: break; case 566: -#line 5974 "Gmsh.y" +#line 5987 "Gmsh.y" { std::string tmp = SplitFileName(GetAbsolutePath(gmsh_yyname))[0]; (yyval.c) = (char*)Malloc((tmp.size() + 1) * sizeof(char)); @@ -13249,7 +13262,7 @@ yyreduce: break; case 567: -#line 5980 "Gmsh.y" +#line 5993 "Gmsh.y" { std::string tmp = SplitFileName((yyvsp[(3) - (4)].c))[0]; (yyval.c) = (char*)Malloc((tmp.size() + 1) * sizeof(char)); @@ -13259,7 +13272,7 @@ yyreduce: break; case 568: -#line 5987 "Gmsh.y" +#line 6000 "Gmsh.y" { std::string tmp = GetAbsolutePath((yyvsp[(3) - (4)].c)); (yyval.c) = (char*)Malloc((tmp.size() + 1) * sizeof(char)); @@ -13269,12 +13282,12 @@ yyreduce: break; case 569: -#line 5994 "Gmsh.y" +#line 6007 "Gmsh.y" { init_options(); ;} break; case 570: -#line 5996 "Gmsh.y" +#line 6009 "Gmsh.y" { std::string val((yyvsp[(3) - (6)].c)); Msg::ExchangeOnelabParameter("", val, floatOptions, charOptions); @@ -13285,7 +13298,7 @@ yyreduce: break; case 571: -#line 6004 "Gmsh.y" +#line 6017 "Gmsh.y" { std::string out; const std::string * key_struct = NULL; @@ -13309,37 +13322,37 @@ yyreduce: break; case 572: -#line 6028 "Gmsh.y" +#line 6041 "Gmsh.y" { struct_namespace = std::string(""); (yyval.d) = (yyvsp[(2) - (2)].d); ;} break; case 573: -#line 6030 "Gmsh.y" +#line 6043 "Gmsh.y" { struct_namespace = (yyvsp[(1) - (4)].c); Free((yyvsp[(1) - (4)].c)); (yyval.d) = (yyvsp[(4) - (4)].d); ;} break; case 574: -#line 6036 "Gmsh.y" +#line 6049 "Gmsh.y" { (yyval.l) = (yyvsp[(3) - (4)].l); ;} break; case 575: -#line 6041 "Gmsh.y" +#line 6054 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; case 576: -#line 6043 "Gmsh.y" +#line 6056 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; case 577: -#line 6048 "Gmsh.y" +#line 6061 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (3)].l); ;} break; case 578: -#line 6053 "Gmsh.y" +#line 6066 "Gmsh.y" { (yyval.l) = List_Create(20,20,sizeof(char*)); List_Add((yyval.l), &((yyvsp[(1) - (1)].c))); @@ -13347,19 +13360,19 @@ yyreduce: break; case 579: -#line 6058 "Gmsh.y" +#line 6071 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; case 580: -#line 6060 "Gmsh.y" +#line 6073 "Gmsh.y" { List_Add((yyval.l), &((yyvsp[(3) - (3)].c))); ;} break; case 581: -#line 6064 "Gmsh.y" +#line 6077 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (3)].l)); i++){ char* c; @@ -13371,7 +13384,7 @@ yyreduce: break; case 582: -#line 6076 "Gmsh.y" +#line 6089 "Gmsh.y" { (yyval.l) = List_Create(20, 20, sizeof(char *)); if(!gmsh_yystringsymbols.count((yyvsp[(1) - (3)].c))) @@ -13388,21 +13401,21 @@ yyreduce: break; case 583: -#line 6090 "Gmsh.y" +#line 6103 "Gmsh.y" { (yyval.l) = treat_Struct_FullName_dot_tSTRING_ListOfString(NULL, (yyvsp[(1) - (5)].c), (yyvsp[(3) - (5)].c)); ;} break; case 584: -#line 6094 "Gmsh.y" +#line 6107 "Gmsh.y" { (yyval.l) = treat_Struct_FullName_dot_tSTRING_ListOfString((yyvsp[(1) - (7)].c), (yyvsp[(3) - (7)].c), (yyvsp[(5) - (7)].c)); ;} break; case 585: -#line 6101 "Gmsh.y" +#line 6114 "Gmsh.y" { char tmpstr[256]; sprintf(tmpstr, "_%d", (int)(yyvsp[(4) - (5)].d)); @@ -13413,7 +13426,7 @@ yyreduce: break; case 586: -#line 6109 "Gmsh.y" +#line 6122 "Gmsh.y" { char tmpstr[256]; sprintf(tmpstr, "_%d", (int)(yyvsp[(4) - (5)].d)); @@ -13424,7 +13437,7 @@ yyreduce: break; case 587: -#line 6117 "Gmsh.y" +#line 6130 "Gmsh.y" { char tmpstr[256]; sprintf(tmpstr, "_%d", (int)(yyvsp[(7) - (8)].d)); @@ -13435,23 +13448,23 @@ yyreduce: break; case 588: -#line 6128 "Gmsh.y" +#line 6141 "Gmsh.y" { (yyval.c) = (yyvsp[(1) - (1)].c); ;} break; case 589: -#line 6130 "Gmsh.y" +#line 6143 "Gmsh.y" { (yyval.c) = (yyvsp[(1) - (1)].c); ;} break; case 590: -#line 6133 "Gmsh.y" +#line 6146 "Gmsh.y" { (yyval.c) = (yyvsp[(3) - (4)].c); ;} break; /* Line 1267 of yacc.c. */ -#line 13455 "Gmsh.tab.cpp" +#line 13468 "Gmsh.tab.cpp" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -13665,7 +13678,7 @@ yyreturn: } -#line 6136 "Gmsh.y" +#line 6149 "Gmsh.y" void assignVariable(const std::string &name, int index, int assignType, diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y index 0e39b28650e3109ce9a9c5414d2fffac5023d7be..d84a1ad091fb799e74bcd4043a1e6acb1a7348ba 100644 --- a/Parser/Gmsh.y +++ b/Parser/Gmsh.y @@ -2416,6 +2416,19 @@ Transform : (inDimTags, outDimTags, action == "CombinedBoundary", true, action == "PointsOf"); } + else if(action == "DontSaveMesh"){ + // boundary operations are performed directly on GModel, which enables + // to compute the boundary of hybrid CAD models; this also automatically + // binds all boundary entities for OCC models + if(GModel::current()->getOCCInternals() && + GModel::current()->getOCCInternals()->getChanged()) + GModel::current()->getOCCInternals()->synchronize(GModel::current()); + if(GModel::current()->getGEOInternals()->getChanged()) + GModel::current()->getGEOInternals()->synchronize(GModel::current()); + r = GModel::current()->getBoundaryTags + (inDimTags, outDimTags, action == "CombinedBoundary", true, + action == "PointsOf"); + } else{ yymsg(0, "Unknown action on multiple shapes '%s'", $1); }