From: vsr Date: Fri, 24 Jul 2009 05:36:59 +0000 (+0000) Subject: Issue 0020436: [ CEA 348 ] Update plugin BLSURF (2.7 -> 2.8) X-Git-Tag: V5_1_3rc1~14 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=d5a3a1bae7ce19e01d16e312df838f573241a6b3;p=plugins%2Fblsurfplugin.git Issue 0020436: [ CEA 348 ] Update plugin BLSURF (2.7 -> 2.8) --- diff --git a/src/BLSURFPlugin/BLSURFPlugin_BLSURF.cxx b/src/BLSURFPlugin/BLSURFPlugin_BLSURF.cxx index a6036a3..ca2fc05 100644 --- a/src/BLSURFPlugin/BLSURFPlugin_BLSURF.cxx +++ b/src/BLSURFPlugin/BLSURFPlugin_BLSURF.cxx @@ -33,10 +33,6 @@ #include #include -#include -#include -#include - #include #include @@ -47,25 +43,15 @@ #include #include #include -#include #include #include -extern "C"{ -#include -} - #include #include #include #include #include #include -#include -#include -#include -#include -#include #include #include #include @@ -570,6 +556,7 @@ void BLSURFPlugin_BLSURF::SetParameters(const BLSURFPlugin_Hypothesis* hyp, blsu } blsurf_set_param(bls, "hphydef", to_string(_phySize).c_str()); blsurf_set_param(bls, "hgeo_flag", to_string(_geometricMesh).c_str()); + blsurf_set_param(bls, "relax_size", _decimesh ? "0": to_string(_geometricMesh).c_str()); blsurf_set_param(bls, "angle_meshs", to_string(_angleMeshS).c_str()); blsurf_set_param(bls, "angle_meshc", to_string(_angleMeshC).c_str()); blsurf_set_param(bls, "gradation", to_string(_gradation).c_str()); @@ -835,11 +822,11 @@ bool BLSURFPlugin_BLSURF::Compute(SMESH_Mesh& aMesh, const TopoDS_Shape& aShape) mesh_get_edge_tag(msh, it, &tag); if (tags[vtx[0]]) { - meshDS->SetNodeOnEdge(nodes[vtx[0]], TopoDS::Edge(emap(tag))); + Set_NodeOnEdge(meshDS, nodes[vtx[0]], emap(tag)); tags[vtx[0]] = false; }; if (tags[vtx[1]]) { - meshDS->SetNodeOnEdge(nodes[vtx[1]], TopoDS::Edge(emap(tag))); + Set_NodeOnEdge(meshDS, nodes[vtx[1]], emap(tag)); tags[vtx[1]] = false; }; meshDS->SetMeshElementOnShape(edg, TopoDS::Edge(emap(tag))); @@ -909,6 +896,32 @@ bool BLSURFPlugin_BLSURF::Compute(SMESH_Mesh& aMesh, const TopoDS_Shape& aShape) return true; } +//============================================================================= +/*! + * SetNodeOnEdge + */ +//============================================================================= + +void BLSURFPlugin_BLSURF::Set_NodeOnEdge(SMESHDS_Mesh* meshDS, SMDS_MeshNode* node, const TopoDS_Shape& ed) { + const TopoDS_Edge edge = TopoDS::Edge(ed); + + gp_Pnt pnt(node->X(), node->Y(), node->Z()); + + Standard_Real p0 = 0.0; + Standard_Real p1 = 1.0; + Handle(Geom_Curve) curve = BRep_Tool::Curve(edge, p0, p1); + + GeomAPI_ProjectPointOnCurve proj(pnt, curve); + + double pa = (double)proj.Parameter(1); + + GProp_GProps LProps; + BRepGProp::LinearProperties(ed, LProps); + double lg = (double)LProps.Mass(); + + meshDS->SetNodeOnEdge(node, edge, pa); +} + //============================================================================= /*! * diff --git a/src/BLSURFPlugin/BLSURFPlugin_BLSURF.hxx b/src/BLSURFPlugin/BLSURFPlugin_BLSURF.hxx index 5c9bc67..bb81452 100644 --- a/src/BLSURFPlugin/BLSURFPlugin_BLSURF.hxx +++ b/src/BLSURFPlugin/BLSURFPlugin_BLSURF.hxx @@ -26,20 +26,31 @@ #ifndef _BLSURFPlugin_BLSURF_HXX_ #define _BLSURFPlugin_BLSURF_HXX_ +#include +#include +#include +#include +#include +#include + #include #include "SMESH_2D_Algo.hxx" #include "SMESH_Mesh.hxx" +#include +#include +#include #include #include #include CORBA_CLIENT_HEADER(SALOMEDS) #include CORBA_CLIENT_HEADER(GEOM_Gen) #include "Utils_SALOME_Exception.hxx" + extern "C"{ +#include "distene/blsurf.h" #include "distene/api.h" } class BLSURFPlugin_Hypothesis; -class TopoDS_Shape; class BLSURFPlugin_BLSURF: public SMESH_2D_Algo { public: @@ -68,6 +79,9 @@ class BLSURFPlugin_BLSURF: public SMESH_2D_Algo { protected: const BLSURFPlugin_Hypothesis* _hypothesis; + private: + void Set_NodeOnEdge(SMESHDS_Mesh* meshDS, SMDS_MeshNode* node, const TopoDS_Shape& ed); + private: PyObject * main_mod; PyObject * main_dict;