From 84704b6a21ca63041d779ee0d70515e55c79ce43 Mon Sep 17 00:00:00 2001 From: Christophe Geuzaine <cgeuzaine@ulg.ac.be> Date: Tue, 1 Jun 2010 08:39:27 +0000 Subject: [PATCH] open .dat files with BDF/Nastran reader --- Common/OpenFile.cpp | 3 ++- Geo/GModel.h | 8 ++++---- Geo/GModelFactory.cpp | 47 ++++++++++++++++++++++--------------------- 3 files changed, 30 insertions(+), 28 deletions(-) diff --git a/Common/OpenFile.cpp b/Common/OpenFile.cpp index f51b50ad1c..98b7480935 100644 --- a/Common/OpenFile.cpp +++ b/Common/OpenFile.cpp @@ -307,7 +307,8 @@ int MergeFile(std::string fileName, bool warnIfMissing) if(status > 1) status = PView::readMED(fileName); #endif } - else if(ext == ".bdf" || ext == ".BDF" || ext == ".nas" || ext == ".NAS"){ + else if(ext == ".bdf" || ext == ".BDF" || ext == ".nas" || ext == ".NAS" || + ext == ".dat" || ext == ".DAT"){ status = GModel::current()->readBDF(fileName); } else if(ext == ".p3d" || ext == ".P3D"){ diff --git a/Geo/GModel.h b/Geo/GModel.h index 6f0ad466df..520f4f1bec 100644 --- a/Geo/GModel.h +++ b/Geo/GModel.h @@ -388,10 +388,10 @@ class GModel GEntity *revolve(GEntity *e, std::vector<double> p1, std::vector<double> p2, double angle); GEntity *extrude(GEntity *e, std::vector<double> p1, std::vector<double> p2); - GEntity *addPipe(GEntity *e, std::vector<GEdge *> edges); - void addRuledFaces (std::vector<std::vector<GEdge *> > edges); - GFace* addFace (std::vector<GEdge *> edges, std::vector< std::vector<double > > points); - GFace* addPlanarFace (std::vector<std::vector<GEdge *> > edges); + GEntity *addPipe(GEntity *e, std::vector<GEdge *> edges); + void addRuledFaces(std::vector<std::vector<GEdge *> > edges); + GFace *addFace(std::vector<GEdge *> edges, std::vector< std::vector<double > > points); + GFace *addPlanarFace(std::vector<std::vector<GEdge *> > edges); // create solid geometry primitives using the factory GEntity *addSphere(double cx, double cy, double cz, double radius); diff --git a/Geo/GModelFactory.cpp b/Geo/GModelFactory.cpp index a77c2d3693..9833b92498 100644 --- a/Geo/GModelFactory.cpp +++ b/Geo/GModelFactory.cpp @@ -519,7 +519,7 @@ void OCCFactory::translate(GModel *gm, std::vector<double> dx, int addToTheModel gm->_occ_internals->buildGModel(gm); } -void OCCFactory::rotate(GModel *gm, std::vector<double> p1,std::vector<double> p2, +void OCCFactory::rotate(GModel *gm, std::vector<double> p1, std::vector<double> p2, double angle, int addToTheModel) { const double x1 = p1[0]; @@ -547,9 +547,9 @@ void OCCFactory::rotate(GModel *gm, std::vector<double> p1,std::vector<double> p gm->_occ_internals->buildGModel(gm); } - -std::vector<GFace *> OCCFactory::addRuledFaces (GModel *gm, std::vector< std::vector<GEdge *> > wires){ - +std::vector<GFace *> OCCFactory::addRuledFaces(GModel *gm, + std::vector< std::vector<GEdge *> > wires) +{ std::vector<GFace*> faces; Standard_Boolean anIsSolid = Standard_False; Standard_Boolean anIsRuled = Standard_True; @@ -583,19 +583,20 @@ std::vector<GFace *> OCCFactory::addRuledFaces (GModel *gm, std::vector< std::ve return faces; } -GFace * OCCFactory::addFace (GModel *gm, std::vector<GEdge *> edges, std::vector< std::vector<double > > points){ - +GFace *OCCFactory::addFace(GModel *gm, std::vector<GEdge *> edges, + std::vector< std::vector<double > > points) +{ BRepOffsetAPI_MakeFilling aGenerator; - for (unsigned i=0;i<edges.size();i++) { + for (unsigned i = 0; i < edges.size(); i++) { GEdge *ge = edges[i]; OCCEdge *occe = dynamic_cast<OCCEdge*>(ge); if (occe){ - aGenerator.Add(occe->getTopoDS_Edge(),GeomAbs_C0); + aGenerator.Add(occe->getTopoDS_Edge(), GeomAbs_C0); } } - for (unsigned i=0;i<points.size();i++) { - gp_Pnt aPnt (points[i][0],points[i][1],points[i][2]); + for (unsigned i = 0; i < points.size(); i++) { + gp_Pnt aPnt(points[i][0], points[i][1], points[i][2]); aGenerator.Add(aPnt); } @@ -607,11 +608,11 @@ GFace * OCCFactory::addFace (GModel *gm, std::vector<GEdge *> edges, std::vector extern void computeMeanPlane(const std::vector<SPoint3> &points, mean_plane &meanPlane); -GFace * OCCFactory::addPlanarFace (GModel *gm, std::vector< std::vector<GEdge *> > wires){ - +GFace *OCCFactory::addPlanarFace(GModel *gm, std::vector< std::vector<GEdge *> > wires) +{ std::set<GVertex*> verts; - for (unsigned i=0;i<wires.size();i++) { - for (unsigned j=0;j<wires[i].size();j++) { + for (unsigned i = 0; i < wires.size(); i++) { + for (unsigned j = 0; j < wires[i].size(); j++) { GEdge *ge = wires[i][j]; verts.insert(ge->getBeginVertex()); verts.insert(ge->getEndVertex()); @@ -620,7 +621,7 @@ GFace * OCCFactory::addPlanarFace (GModel *gm, std::vector< std::vector<GEdge *> std::vector<SPoint3> points; std::set<GVertex*>::iterator it = verts.begin(); for ( ; it != verts.end(); ++it){ - points.push_back(SPoint3((*it)->x(),(*it)->y(),(*it)->z())); + points.push_back(SPoint3((*it)->x(), (*it)->y(), (*it)->z())); } mean_plane meanPlane; computeMeanPlane(points, meanPlane); @@ -628,9 +629,9 @@ GFace * OCCFactory::addPlanarFace (GModel *gm, std::vector< std::vector<GEdge *> gp_Pln aPlane (meanPlane.a,meanPlane.b,meanPlane.c,meanPlane.d); BRepBuilderAPI_MakeFace aGenerator (aPlane); - for (unsigned i=0;i<wires.size();i++) { + for (unsigned i = 0; i < wires.size() ;i++) { BRepBuilderAPI_MakeWire wire_maker; - for (unsigned j=0;j<wires[i].size();j++) { + for (unsigned j = 0; j < wires[i].size(); j++) { GEdge *ge = wires[i][j]; OCCEdge *occe = dynamic_cast<OCCEdge*>(ge); if (occe){ @@ -648,10 +649,10 @@ GFace * OCCFactory::addPlanarFace (GModel *gm, std::vector< std::vector<GEdge *> return gm->_occ_internals->addFaceToModel(gm, TopoDS::Face(aResult)); } -GEntity * OCCFactory::addPipe (GModel *gm, GEntity *base, std::vector<GEdge *> wire){ - +GEntity *OCCFactory::addPipe(GModel *gm, GEntity *base, std::vector<GEdge *> wire) +{ BRepBuilderAPI_MakeWire wire_maker; - for (unsigned j=0;j<wire.size();j++) { + for (unsigned j = 0; j < wire.size(); j++) { GEdge *ge = wire[j]; OCCEdge *occe = dynamic_cast<OCCEdge*>(ge); if (occe){ @@ -663,19 +664,19 @@ GEntity * OCCFactory::addPipe (GModel *gm, GEntity *base, std::vector<GEdge *> w GEntity *ret = 0; if (base->cast2Vertex()){ OCCVertex *occv = dynamic_cast<OCCVertex*>(base); - BRepOffsetAPI_MakePipe myNiceLittlePipe (myWire,occv->getShape()); + BRepOffsetAPI_MakePipe myNiceLittlePipe (myWire, occv->getShape()); TopoDS_Edge result = TopoDS::Edge(myNiceLittlePipe.Shape()); ret = gm->_occ_internals->addEdgeToModel(gm, result); } if (base->cast2Edge()){ OCCEdge *occe = dynamic_cast<OCCEdge*>(base); - BRepOffsetAPI_MakePipe myNiceLittlePipe (myWire,occe->getTopoDS_Edge()); + BRepOffsetAPI_MakePipe myNiceLittlePipe (myWire, occe->getTopoDS_Edge()); TopoDS_Face result = TopoDS::Face(myNiceLittlePipe.Shape()); ret = gm->_occ_internals->addFaceToModel(gm, result); } if (base->cast2Face()){ OCCFace *occf = dynamic_cast<OCCFace*>(base); - BRepOffsetAPI_MakePipe myNiceLittlePipe (myWire,occf->getTopoDS_Face()); + BRepOffsetAPI_MakePipe myNiceLittlePipe (myWire, occf->getTopoDS_Face()); TopoDS_Solid result = TopoDS::Solid(myNiceLittlePipe.Shape()); ret = gm->_occ_internals->addRegionToModel(gm, result); } -- GitLab