]> SALOME platform Git repositories - modules/hexablock.git/commitdiff
Salome HOME
Quelques bugs (ihm + extrudeQuadsTop)
authorabuhsing <abuhsing>
Fri, 31 Jan 2014 13:02:56 +0000 (13:02 +0000)
committerabuhsing <abuhsing>
Fri, 31 Jan 2014 13:02:56 +0000 (13:02 +0000)
:
: Modified Files:
:  Tag: V7_main
:  HEXABLOCK/HexDocument_v6.cxx HEXABLOCK/HexElements_grid.cxx
:  HEXABLOCK/test_hexa6.cxx HEXABLOCKGUI/HEXABLOCKGUI.cxx
:  HEXABLOCKGUI/HEXABLOCKGUI.hxx
:  HEXABLOCKGUI/HEXABLOCKGUI_Model.cxx
: ----------------------------------------------------------------------

src/HEXABLOCK/HexDocument_v6.cxx
src/HEXABLOCK/HexElements_grid.cxx
src/HEXABLOCK/test_hexa6.cxx
src/HEXABLOCKGUI/HEXABLOCKGUI.cxx
src/HEXABLOCKGUI/HEXABLOCKGUI_Model.cxx

index a8ba2e6aab3eac6e860e663f40e28ca04d6e7d57..28bf301202757de164138ead33dda5fda366132a 100644 (file)
 #include "HexBiCylinder.hxx"
 #include "HexVector.hxx"
 #include "HexQuad.hxx"
+#include "HexHexa.hxx"
 
 #include "HexGlobale.hxx"
 
 BEGIN_NAMESPACE_HEXA
 
 
+// ======================================================== make_normale
+int make_normale (Quads& tquads, double axe[], double& largeur)
+{
+   double lgmoy = 0;
+   Real3  cf, cg, vn;
+   int    nbre = tquads.size();
+   if (nbre==0)
+       return HERR;
+
+   double coeff = 0;
+   for (int nro=0 ; nro<nbre ; ++nro)
+       {
+       Quad* quad = tquads[nro];
+       int nbp    = quad->getNbrParents();
+       if (nbp!=1)
+          return HERR;
+                        // Calcul des cotes
+       for (int nc=0 ; nc<QUAD4 ; ++nc) 
+           lgmoy += quad->getEdge(nc)->getLength ();
+                        // Calcul de la normale sortante
+       Hexa* hexa = quad->getParent (0);
+       hexa->getCenter (cg);
+       quad->getCenter (cf);
+       calc_vecteur (cg, cf, vn);
+       for (int nc=0 ; nc<DIM3 ; ++nc) 
+           axe[nc] = coeff*axe[nc] + vn[nc];
+       coeff = 1;
+       }
+   
+   normer_vecteur (axe);
+   largeur = lgmoy / (4*nbre);
+   return HOK;
+}
 // ======================================================== makeCartesianTop
 Elements* Document::makeCartesianTop (int nx, int ny, int nz)
 {
@@ -749,10 +783,9 @@ Elements* Document::extrudeQuadTop (Quad* start, int nbre)
    double     larg = 1;
    Elements*  grid = new Elements (this);
 
-   tstart.push_back (start);
-
+   tstart.push_back  (start);
    grid->checkQuad   (start);
-   grid->makeNormale (tstart, axe, larg);
+   make_normale (tstart, axe, larg);
    for (int nro=0 ; nro<nbre; ++nro) tlen.push_back ((nro+1)*larg);
 
    if (grid->isValid())
@@ -823,8 +856,8 @@ Elements* Document::extrudeQuadsTop (Quads tstart, int nbre)
    double     larg = 1;
    Elements* grid = new Elements (this);
 
-   grid->checkQuads  (tstart);
-   grid->makeNormale (tstart, axe, larg);
+   grid->checkQuads (tstart);
+   make_normale     (tstart, axe, larg);
    for (int nro=0 ; nro<nbre; ++nro) tlen.push_back ((nro+1)*larg);
 
    if (grid->isValid())
index 4371cb9fad726213638b69b5d2b6f0d90030d14f..df51e9431842652ac2494216e9c48f89fefee898 100755 (executable)
@@ -421,9 +421,7 @@ void Elements::fillCenterOdd ()
 int Elements::makeBasicCylinder (RealVector& tdr, RealVector& tda, 
                                  RealVector& tdh, bool fill)
 {
-   int na = tda.size()-1;
-   PutData (na);
-
+   int na    = tda.size()-1;
    cyl_dispo = CYL_NOFILL;
    if (fill && na > 3)
       {
index 353801799eb8cb9fb26335be5b351d707e69c4d8..d5353adb5cbdce80232e894f3e65c42e67f95c8c 100644 (file)
@@ -101,13 +101,13 @@ void eplucher (Hex::Document* doc, Hex::Elements* grid, string& radical)
 int test_cartesian6 (int nbargs, cpchar tabargs[])
 {
    case_name = "cartesian_top";
+   Hex::Document* doc  = get_document ();
+
+/***********************
    const int size_x = 3;
    const int size_y = 4;
    const int size_z = 5;
 
-   Hex::Document* doc  = get_document ();
-
-/***********************
    Hex::Elements* grid1 = doc->makeCartesianTop (size_x, size_y, size_z);
    grid1->saveVtk ("makeCartesianTop.vtk");
    PutData (grid1->isValid());
@@ -490,6 +490,29 @@ int test_extrude6 (int nbargs, cpchar tabargs[])
    doc->saveVtk ("prisme3.vtk");
    return HOK;
 }
+// ======================================================== test_extrude7
+int test_extrude7 (int nbargs, cpchar tabargs[])
+{
+   const int nr = 2;
+   const int na = 8;
+   const int nh = 3;
+
+   Hex::Document* doc   = get_document ();
+   Hex::Elements* grid1 = doc->makeCylinderTop (nr, na, nh);
+
+   Hex::Quads tquads;
+   for (int k=0 ; k<nh ; k++)
+       {
+       Hex::Quad* quad = grid1->getQuadJK (nr, 0, k);
+       quad->setColor   (5);
+       tquads.push_back (quad);
+       }
+
+   doc->saveVtk ("grid0.vtk");
+   Hex::Elements* grid2 = doc->extrudeQuadsTop (tquads, 4);
+   doc->saveVtk ("grid1.vtk");
+   return HOK;
+}
 // ======================================================== test_revolution6
 int test_revolution6 (int nbargs, cpchar tabargs[])
 {
index 2fa79cb6158e6bac8dae7dc2eda0e335a97db6d4..c5180cf7e62d91f6f4ff415597da2d938c3b6c88 100755 (executable)
@@ -1012,7 +1012,7 @@ void HEXABLOCKGUI::createAndFillDockWidget()
     _dwMesh->setWidget(_meshTreeView);
     _meshTreeView->show();
 
-//    QDockWidget *_dwObjectBrowser = 0;
+    QDockWidget *_dwObjectBrowser = 0;
     QWidget* wid = getApp()->objectBrowser()->treeView();
     QWidget *w   = wid->parentWidget();
     while ( w && !_dwObjectBrowser ) {
index a5d5c474a176923523e2bc831d2183a22162e345..47926d7097b62dff66ccc370e841419e5381bcc0 100755 (executable)
@@ -17,6 +17,7 @@
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
+#include "hexa_base.hxx"
 #include "HEXABLOCKGUI_Model.hxx"
 
 //#define _DEVDEBUG_
@@ -28,6 +29,7 @@ HEXABLOCKGUI_Model::HEXABLOCKGUI_Model(CAM_Module* theModule)
   : SalomeApp_DataModel(theModule)
 {
   DEBTRACE("HEXABLOCKGUI_Model::HEXABLOCKGUI_Model");
+  std::cout <<  "HEXABLOCKGUI_Model::HEXABLOCKGUI_Model" << std::endl;
 }
 
 HEXABLOCKGUI_Model::~HEXABLOCKGUI_Model()
@@ -44,12 +46,13 @@ bool HEXABLOCKGUI_Model::open(const QString& fileName, CAM_Study* study, QString
 bool HEXABLOCKGUI_Model::save(QStringList& listOfFiles)
 {
   DEBTRACE("HEXABLOCKGUI_Model::save");
+  std::cout <<  "HEXABLOCKGUI_Model::save" << std::endl;
   return SalomeApp_DataModel::save(listOfFiles);
 }
 
 bool HEXABLOCKGUI_Model::saveAs(const QString& fileName, CAM_Study* study, QStringList& listOfFiles)
 {
   DEBTRACE("HEXABLOCKGUI_Model::saveAs");
+  std::cout <<  "HEXABLOCKGUI_Model::saveAs" << std::endl;
   return SalomeApp_DataModel::saveAs(fileName, study, listOfFiles);
 }
-