Salome HOME
a59d9b8c1f292bcbc5ab83e9e8c87c5070c3048b
[plugins/ghs3dplugin.git] / src / GHS3DPlugin / GHS3DPlugin_GHS3D_i.cxx
1 // Copyright (C) 2004-2023  CEA, EDF
2 //
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License, or (at your option) any later version.
7 //
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 // Lesser General Public License for more details.
12 //
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 //
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 //
19
20 //  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
21 //  File   : GHS3DPlugin_GHS3D_i.cxx
22 //  Author : Edward AGAPOV
23 //  Module : GHS3DPlugin
24 //  $Header$
25 //
26 #include "GHS3DPlugin_GHS3D_i.hxx"
27
28 #include "GHS3DPlugin_GHS3D.hxx"
29 #include "GHS3DPlugin_Optimizer.hxx"
30
31 #include <SMESH_Gen.hxx>
32 #include <SMESH_Gen_i.hxx>
33 #include <SMESH_Mesh_i.hxx>
34 #include <SMESH_PythonDump.hxx>
35
36 #include <utilities.h>
37 #include <cstring>
38
39 //=============================================================================
40 /*!
41  *  GHS3DPlugin_GHS3D_i::GHS3DPlugin_GHS3D_i
42  *
43  *  Constructor
44  */
45 //=============================================================================
46
47 GHS3DPlugin_GHS3D_i::GHS3DPlugin_GHS3D_i (PortableServer::POA_ptr thePOA,
48                                           ::SMESH_Gen*            theGenImpl )
49      : SALOME::GenericObj_i( thePOA ), 
50        SMESH_Hypothesis_i( thePOA ), 
51        SMESH_Algo_i( thePOA ),
52        SMESH_3D_Algo_i( thePOA )
53 {
54   myBaseImpl = new ::GHS3DPlugin_GHS3D (theGenImpl->GetANewId(),
55                                         theGenImpl );
56 }
57
58 //=============================================================================
59 /*!
60  *  GHS3DPlugin_GHS3D_i::~GHS3DPlugin_GHS3D_i
61  *
62  *  Destructor
63  */
64 //=============================================================================
65
66 GHS3DPlugin_GHS3D_i::~GHS3DPlugin_GHS3D_i()
67 {
68 }
69
70 //=============================================================================
71 /*!
72  *  GHS3DPlugin_GHS3D_i::GetImpl
73  *
74  *  Get implementation
75  */
76 //=============================================================================
77
78 ::GHS3DPlugin_GHS3D* GHS3DPlugin_GHS3D_i::GetImpl()
79 {
80   return ( ::GHS3DPlugin_GHS3D* )myBaseImpl;
81 }
82
83 //=============================================================================
84 /*!
85  *  GHS3DPlugin_GHS3D_i::~GHS3DPlugin_GHS3D_i
86  *
87  *  Destructor
88  */
89 //=============================================================================
90
91 SMESH::SMESH_Mesh_ptr GHS3DPlugin_GHS3D_i::importGMFMesh(const char* theGMFFileName)
92 {
93   SMESH_Gen_i* smeshGen = SMESH_Gen_i::GetSMESHGen();
94   SMESH::SMESH_Mesh_ptr theMesh = smeshGen->CreateEmptyMesh();
95   smeshGen->RemoveLastFromPythonScript();
96   SALOMEDS::SObject_ptr theSMesh = smeshGen->ObjectToSObject(theMesh);
97 #ifdef WINNT
98 #define SEP '\\'
99 #else
100 #define SEP '/'
101 #endif
102   std::string strFileName (theGMFFileName);
103   strFileName = strFileName.substr(strFileName.rfind(SEP)+1);
104   strFileName.erase(strFileName.rfind('.'));
105   smeshGen->SetName(theSMesh, strFileName.c_str());
106   SMESH_Mesh_i* meshServant = dynamic_cast<SMESH_Mesh_i*>( smeshGen->GetServant( theMesh ).in() );
107   ASSERT( meshServant );
108   if ( meshServant ) {
109     if (GetImpl()->importGMFMesh(theGMFFileName, meshServant->GetImpl()))
110       SMESH::TPythonDump() << theSMesh << " = " << _this() << ".importGMFMesh( \"" << theGMFFileName << "\")";
111   }
112   return theMesh;
113 }
114
115 //=============================================================================
116 /*!
117  *  GHS3DPlugin_Optimizer_i::GHS3DPlugin_Optimizer_i
118  *
119  *  Constructor
120  */
121 //=============================================================================
122
123 GHS3DPlugin_Optimizer_i::GHS3DPlugin_Optimizer_i (PortableServer::POA_ptr thePOA,
124                                                   ::SMESH_Gen*            theGenImpl )
125   : SALOME::GenericObj_i( thePOA ),
126     SMESH_Hypothesis_i( thePOA ),
127     SMESH_Algo_i( thePOA ),
128     SMESH_3D_Algo_i( thePOA )
129 {
130   myBaseImpl = new ::GHS3DPlugin_Optimizer (theGenImpl->GetANewId(),
131                                             theGenImpl );
132 }
133