Skip to content

Commit 8536e9e

Browse files
authored
Merge pull request #166 from LIHPC-Computational-Geometry/description-service
Description service
2 parents 1376ace + 48c0063 commit 8536e9e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

71 files changed

+1775
-1941
lines changed

src/Core/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@ find_package (GUIToolkitsVariables REQUIRED)
77
include (${GUIToolkitsVariables_CMAKE_DIR}/python_binding.cmake)
88

99
file (GLOB HEADERS protected/*/*.h)
10-
file (GLOB CPP_SOURCES Internal/*.cpp Geom/*.cpp Topo/*.cpp Mesh/*.cpp Structured/*.cpp Group/*.cpp SysCoord/*.cpp Smoothing/*.cpp )
10+
file (GLOB CPP_SOURCES Internal/*.cpp Geom/*.cpp Topo/*.cpp Mesh/*.cpp Services/*.cpp Structured/*.cpp Group/*.cpp SysCoord/*.cpp Smoothing/*.cpp )
1111

1212
# Répertoire d'en-têtes installés. Certains sont optionnels et ajoutés plus loin.
13-
set (HEADERS_DIRECTORIES protected/Geom protected/Group protected/Internal protected/Mesh protected/Smoothing protected/Structured protected/SysCoord protected/Topo)
13+
set (HEADERS_DIRECTORIES protected/Geom protected/Group protected/Internal protected/Mesh protected/Services protected/Smoothing protected/Structured protected/SysCoord protected/Topo)
1414

1515
# On ajoute les en-têtes aux sources. C'est utile pour cmake dans certains cas,
1616
# par exemple lorsqu'ils doivent être pré-processés (moc, ...).

src/Core/Geom/CommandCreateWithOtherGeomEntities.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ void CommandCreateWithOtherGeomEntities::internalUndo()
3131
AutoReferencedMutex autoMutex (getMutex ( ));
3232

3333
// permute toutes les propriétés internes avec leur sauvegarde
34-
m_memento_manager.permMementos();
34+
m_memento_service.permMementos();
3535

3636
// les entités détruites sont dites créées et inversement
3737
getInfoCommand().permCreatedDeleted();
@@ -50,7 +50,7 @@ void CommandCreateWithOtherGeomEntities::internalRedo()
5050
startingOrcompletionLog (true);
5151

5252
// permute toutes les propriétés internes avec leur sauvegarde
53-
m_memento_manager.permMementos();
53+
m_memento_service.permMementos();
5454

5555
// les entités détruites sont dites créées et inversement
5656
getInfoCommand().permCreatedDeleted();

src/Core/Geom/CommandEditGeom.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,14 +45,14 @@ void CommandEditGeom::internalExecute()
4545
internalSpecificPreExecute();
4646

4747
// on recupere toutes les entites concernes par l'opération géométrique
48-
std::map<GeomEntity*, MementoEntity> mementos_by_entity;
48+
std::map<GeomEntity*, Services::Memento> mementos_by_entity;
4949
std::set<GeomEntity*> to_mem_entities[4];
5050

5151
for(unsigned int i=0;i<4;i++) {
5252
to_mem_entities[i].insert(getRefEntities(i).begin(), getRefEntities(i).end());
5353
to_mem_entities[i].insert(getAdjEntities(i).begin(), getAdjEntities(i).end());
5454
for (GeomEntity* e : to_mem_entities[i]) {
55-
MementoEntity mem = m_memento_manager.createMemento(e);
55+
Services::Memento mem = m_memento_service.createMemento(e);
5656
#ifdef _DEBUG2
5757
std::cerr<<"Memento cree pour "<<e->getName()<<std::endl;
5858
#endif
@@ -119,7 +119,7 @@ void CommandEditGeom::internalExecute()
119119
// Sauvegarde des mementos pour le undo/redo
120120
// Utiliser at en lecture pour avoir une exception si
121121
// la clef est absente (ne pas utiliser l'opérateur [])
122-
std::map<GeomEntity*,MementoEntity> keeped_ref;
122+
std::map<GeomEntity*,Services::Memento> keeped_ref;
123123
for(unsigned int i=0;i<mod_entities.size();i++){
124124
GeomEntity* e = mod_entities[i];
125125
if (mementos_by_entity.find(e) == mementos_by_entity.end())
@@ -161,7 +161,7 @@ void CommandEditGeom::internalUndo()
161161
AutoReferencedMutex autoMutex (getMutex ( ));
162162

163163
// permute toutes les propriétés internes avec leur sauvegarde
164-
m_memento_manager.permMementos();
164+
m_memento_service.permMementos();
165165

166166
// les entités détruites sont dites créées et inversement
167167
getInfoCommand().permCreatedDeleted();
@@ -183,7 +183,7 @@ void CommandEditGeom::internalRedo()
183183
startingOrcompletionLog (true);
184184

185185
// permute toutes les propriétés internes avec leur sauvegarde
186-
m_memento_manager.permMementos();
186+
m_memento_service.permMementos();
187187

188188
// les entités détruites sont dites créées et inversement
189189
getInfoCommand().permCreatedDeleted();
@@ -199,10 +199,10 @@ void CommandEditGeom::internalRedo()
199199
/*----------------------------------------------------------------------------*/
200200
//#define _DEBUG_CANCEL
201201
void CommandEditGeom::
202-
saveMementos(std::map<GeomEntity*,MementoEntity> & candidates)
202+
saveMementos(std::map<GeomEntity*,Services::Memento> & candidates)
203203
{
204204
for (const auto& pair : candidates) {
205-
m_memento_manager.saveMemento(pair.first, pair.second);
205+
m_memento_service.saveMemento(pair.first, pair.second);
206206
#ifdef _DEBUG_CANCEL
207207
std::cout<<"save Memento pour "<<e->getName()<<std::endl;
208208
#endif

src/Core/Geom/CommandNewArcCircle.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ internalExecute()
4141

4242

4343
// sauvegarde des relations (connections topologiques) avant modification
44-
m_memento_manager.saveMemento(m_start);
45-
m_memento_manager.saveMemento(m_end);
44+
m_memento_service.saveMemento(m_start);
45+
m_memento_service.saveMemento(m_end);
4646

4747
Curve* c = EntityFactory(getContext()).newArcCircle(m_center,m_start,m_end,m_direction, m_normal, m_circumCircle);
4848
m_createdEntities.push_back(c);

src/Core/Geom/CommandNewArcEllipse.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ internalExecute()
3737
<<".";
3838

3939
// sauvegarde des relations (connections topologiques) avant modification
40-
m_memento_manager.saveMemento(m_start);
41-
m_memento_manager.saveMemento(m_end);
40+
m_memento_service.saveMemento(m_start);
41+
m_memento_service.saveMemento(m_end);
4242

4343
Curve* c = EntityFactory(getContext()).newArcEllipse(m_center,m_start,m_end,m_direction);
4444
m_createdEntities.push_back(c);

src/Core/Geom/CommandNewCircle.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ internalExecute()
3232
<< *m_p2<< ", p3 "<<*m_p3<<".";
3333

3434
// sauvegarde des relations (connections topologiques) avant modification
35-
m_memento_manager.saveMemento(m_p1);
36-
m_memento_manager.saveMemento(m_p2);
37-
m_memento_manager.saveMemento(m_p3);
35+
m_memento_service.saveMemento(m_p1);
36+
m_memento_service.saveMemento(m_p2);
37+
m_memento_service.saveMemento(m_p3);
3838

3939
Curve* c = EntityFactory(getContext()).newCircle(m_p1,m_p2,m_p3);
4040
m_createdEntities.push_back(c);

src/Core/Geom/CommandNewEllipse.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ internalExecute()
3232
<< *m_p2<< ", center "<<*m_center<<".";
3333

3434
// sauvegarde des relations (connections topologiques) avant modification
35-
m_memento_manager.saveMemento(m_p1);
36-
m_memento_manager.saveMemento(m_p2);
37-
m_memento_manager.saveMemento(m_center);
35+
m_memento_service.saveMemento(m_p1);
36+
m_memento_service.saveMemento(m_p2);
37+
m_memento_service.saveMemento(m_center);
3838

3939
Curve* c = EntityFactory(getContext()).newEllipse(m_p1,m_p2,m_center);
4040
m_createdEntities.push_back(c);

src/Core/Geom/CommandNewSegment.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,8 @@ internalExecute()
6868
<< Utils::Math::MgxNumeric::userRepresentation (m_v2->getZ ( )) << ").";
6969

7070
// sauvegarde des relations (connections topologiques) avant modification
71-
m_memento_manager.saveMemento(m_v1);
72-
m_memento_manager.saveMemento(m_v2);
71+
m_memento_service.saveMemento(m_v1);
72+
m_memento_service.saveMemento(m_v2);
7373

7474
Curve* c = EntityFactory(getContext()).newSegment(m_v1,m_v2);
7575
m_createdEntities.push_back(c);

src/Core/Geom/CommandNewSurface.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ internalExecute()
5555
*/
5656
// sauvegarde des relations (connections topologiques) avant modification
5757
for (uint i=0; i<m_curves.size(); i++)
58-
m_memento_manager.saveMemento(m_curves[i]);
58+
m_memento_service.saveMemento(m_curves[i]);
5959

6060
Surface* s = EntityFactory(getContext()).newSurface(m_curves);
6161
m_createdEntities.push_back(s);

src/Core/Geom/Curve.cpp

Lines changed: 0 additions & 128 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@
88
#include "Geom/EntityFactory.h"
99
#include "Geom/OCCHelper.h"
1010
#include "Geom/GeomProjectImplementation.h"
11-
#include "Topo/CoEdge.h"
12-
#include "Topo/Vertex.h"
1311
#include "Group/Group1D.h"
1412
/*----------------------------------------------------------------------------*/
1513
#include <TkUtil/MemoryError.h>
@@ -115,32 +113,6 @@ bool Curve::isEqual(Geom::Curve* curve)
115113
return true;
116114
}
117115
/*----------------------------------------------------------------------------*/
118-
void Curve::get(std::vector<Topo::CoEdge*>& coedges)
119-
{
120-
const std::vector<Topo::TopoEntity* >& topos = getRefTopo();
121-
122-
for (std::vector<Topo::TopoEntity* >::const_iterator iter = topos.begin();
123-
iter != topos.end(); ++iter)
124-
if ((*iter)->getDim() == 1){
125-
Topo::CoEdge* coedge = dynamic_cast<Topo::CoEdge*>(*iter);
126-
if (coedge)
127-
coedges.push_back(coedge);
128-
}
129-
}
130-
/*----------------------------------------------------------------------------*/
131-
void Curve::get(std::vector<Topo::Vertex*>& vertices)
132-
{
133-
const std::vector<Topo::TopoEntity* >& topos = getRefTopo();
134-
135-
for (std::vector<Topo::TopoEntity* >::const_iterator iter = topos.begin();
136-
iter != topos.end(); ++iter)
137-
if ((*iter)->getDim() == 0){
138-
Topo::Vertex* vertex = dynamic_cast<Topo::Vertex*>(*iter);
139-
if (vertex)
140-
vertices.push_back(vertex);
141-
}
142-
}
143-
/*----------------------------------------------------------------------------*/
144116
void Curve::
145117
getPoint(const double& p, Utils::Math::Point& Pt, const bool in01) const
146118
{
@@ -703,17 +675,6 @@ void Curve::getGroups(std::vector<Group::GroupEntity*>& grp) const
703675
grp.insert(grp.end(), m_groups.begin(), m_groups.end());
704676
}
705677
/*----------------------------------------------------------------------------*/
706-
void Curve::setGroups(std::vector<Group::GroupEntity*>& grp)
707-
{
708-
m_groups.clear();
709-
for (std::vector<Group::GroupEntity*>::iterator iter = grp.begin(); iter != grp.end(); iter++){
710-
Group::Group1D* g1 = dynamic_cast<Group::Group1D*>(*iter);
711-
if (g1 == 0)
712-
throw TkUtil::Exception(TkUtil::UTF8String ("Erreur interne avec conversion en groupe local dans setGroups", TkUtil::Charset::UTF_8));
713-
m_groups.push_back(g1);
714-
}
715-
}
716-
/*----------------------------------------------------------------------------*/
717678
int Curve::getNbGroups() const
718679
{
719680
return m_groups.size();
@@ -772,95 +733,6 @@ bool Curve::isBSpline() const
772733
return false;
773734
}
774735
/*----------------------------------------------------------------------------*/
775-
Utils::SerializedRepresentation* Curve::getDescription (bool alsoComputed) const
776-
{
777-
std::unique_ptr<Utils::SerializedRepresentation> description (
778-
GeomEntity::getDescription (alsoComputed));
779-
CHECK_NULL_PTR_ERROR (description.get ( ))
780-
781-
Utils::SerializedRepresentation propertyGeomDescription (
782-
"Propriétés géométriques", "");
783-
784-
if (true == alsoComputed)
785-
{
786-
//recuperation de la longueur
787-
TkUtil::UTF8String volStr (TkUtil::Charset::UTF_8);
788-
volStr<<getArea();
789-
790-
propertyGeomDescription.addProperty (
791-
Utils::SerializedRepresentation::Property ("Longueur", volStr.ascii()) );
792-
}
793-
794-
#ifdef _DEBUG // Issue#111
795-
// précision OpenCascade
796-
for (uint i=0; i<m_occ_edges.size(); i++){
797-
TkUtil::UTF8String precStr (TkUtil::Charset::UTF_8);
798-
precStr << BRep_Tool::Tolerance(m_occ_edges[i]);
799-
propertyGeomDescription.addProperty (
800-
Utils::SerializedRepresentation::Property ("Précision", precStr.ascii()) );
801-
}
802-
#endif // _DEBUG
803-
804-
// on ajoute des infos du style: c'est une droite, un arc de cercle, une ellipse, une b-spline
805-
TkUtil::UTF8String typeStr (TkUtil::Charset::UTF_8);
806-
bool isABSpline = false;
807-
if (isLinear())
808-
typeStr<<"segment";
809-
else if (isCircle())
810-
typeStr<<"cercle";
811-
else if (isEllipse())
812-
typeStr<<"ellipse";
813-
else if (isBSpline()){
814-
isABSpline = true;
815-
typeStr<<"b-spline";
816-
}
817-
else if (m_occ_edges.size()>1)
818-
typeStr<<"composée";
819-
else
820-
typeStr<<"quelconque";
821-
822-
propertyGeomDescription.addProperty (
823-
Utils::SerializedRepresentation::Property ("Type", typeStr));
824-
825-
#ifdef _DEBUG
826-
if (isABSpline){
827-
TkUtil::UTF8String nbStr1 (TkUtil::Charset::UTF_8);
828-
TkUtil::UTF8String nbStr2 (TkUtil::Charset::UTF_8);
829-
830-
// c'est une spline => une seule représentation de type Edge
831-
TopoDS_Edge edge = m_occ_edges[0];
832-
Standard_Real first_param, last_param;
833-
Handle_Geom_Curve curve = BRep_Tool::Curve(edge, first_param, last_param);
834-
835-
Handle(Geom_BSplineCurve) bspline = Handle(Geom_BSplineCurve)::DownCast(curve);
836-
837-
nbStr1<<(long int)bspline->NbKnots();
838-
nbStr2<<(long int)bspline->NbPoles();
839-
840-
propertyGeomDescription.addProperty (
841-
Utils::SerializedRepresentation::Property ("Nb noeuds", nbStr1.ascii()) );
842-
propertyGeomDescription.addProperty (
843-
Utils::SerializedRepresentation::Property ("Nb poles", nbStr2.ascii()) );
844-
}
845-
846-
// affichage des paramètres extrémas
847-
double first, last;
848-
getParameters(first, last);
849-
TkUtil::UTF8String param1 (TkUtil::Charset::UTF_8);
850-
param1<<first;
851-
TkUtil::UTF8String param2 (TkUtil::Charset::UTF_8);
852-
param2<<last;
853-
propertyGeomDescription.addProperty (
854-
Utils::SerializedRepresentation::Property ("Param first", param1.ascii()) );
855-
propertyGeomDescription.addProperty (
856-
Utils::SerializedRepresentation::Property ("Param last", param2.ascii()) );
857-
#endif
858-
859-
description->addPropertiesSet (propertyGeomDescription);
860-
861-
return description.release ( );
862-
}
863-
/*----------------------------------------------------------------------------*/
864736
} // end namespace Geom
865737
/*----------------------------------------------------------------------------*/
866738
} // end namespace Mgx3D

0 commit comments

Comments
 (0)