Skip to content

Commit 1c862dd

Browse files
lelandaisbmpoudot
authored andcommitted
Fix bug: remove a surface on a cube + undo
1 parent 28f2e8c commit 1c862dd

File tree

2 files changed

+19
-13
lines changed

2 files changed

+19
-13
lines changed

src/Core/Geom/GeomModificationBaseClass.cpp

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -89,14 +89,14 @@ void GeomModificationBaseClass::init(Geom::CommandGeomCopy* cmd)
8989
/*----------------------------------------------------------------------------*/
9090
void GeomModificationBaseClass::init(std::vector<GeomEntity*>& es)
9191
{
92-
9392
// pour chacune des entités passées en argument, on ajoute les entités de
9493
// dimension inférieure et supérieure ou égale en référence.
9594
for(unsigned int i=0;i<es.size();i++){
9695
GeomEntity* esi = es[i];
9796
m_init_entities.push_back(esi);
9897
addReference(esi);
9998
addDownIncidentReference(esi);
99+
addUpIncidentReference(esi);
100100
}
101101

102102
for(unsigned int i=0;i<es.size();i++){
@@ -113,7 +113,6 @@ void GeomModificationBaseClass::init(std::vector<GeomEntity*>& es)
113113
m_adj_entities[i].unique();
114114
}
115115

116-
117116
#ifdef _DEBUG2
118117
std::list<GeomEntity*>::iterator adj3_it =m_adj_entities[3].begin();
119118
for(;adj3_it!=m_adj_entities[3].end();adj3_it++) {
@@ -125,7 +124,6 @@ void GeomModificationBaseClass::init(std::vector<GeomEntity*>& es)
125124
std::cout<<"+++ VOL REF = "<<(*adj3_it)->getName()<<std::endl;
126125
}
127126
#endif
128-
129127
}
130128
/*----------------------------------------------------------------------------*/
131129
void GeomModificationBaseClass::initWithAll()
@@ -173,17 +171,17 @@ addDownIncidentReference(GeomEntity* e)
173171
}
174172
/*----------------------------------------------------------------------------*/
175173
void GeomModificationBaseClass::
174+
addUpIncidentReference(GeomEntity* e)
175+
{
176+
GetUpIncidentGeomEntitiesVisitor v;
177+
e->accept(v);
178+
for (auto ei : v.get())
179+
addReference(ei);
180+
}
181+
/*----------------------------------------------------------------------------*/
182+
void GeomModificationBaseClass::
176183
addAdjacencyReference(GeomEntity* e)
177184
{
178-
GetUpIncidentGeomEntitiesVisitor vi;
179-
e->accept(vi);
180-
for (auto ei : vi.get())
181-
{
182-
int dim = ei->getDim();
183-
if(std::find(m_ref_entities[dim].begin(),m_ref_entities[dim].end(),ei)==m_ref_entities[dim].end())
184-
m_adj_entities[dim].push_back(ei);
185-
}
186-
187185
GetAdjacentGeomEntitiesVisitor va;
188186
e->accept(va);
189187
for (auto ei : va.get())

src/Core/protected/Geom/GeomModificationBaseClass.h

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,11 +157,19 @@ class GeomModificationBaseClass{
157157
virtual void addDownIncidentReference(GeomEntity* entity);
158158

159159
/*------------------------------------------------------------------------*/
160-
/** \brief Ajoute les entités filles de entity dans les entités de
160+
/** \brief Ajoute les entités parentes de entity dans les entités de
161161
* référence
162162
*
163163
* \param entity une entité
164164
*/
165+
virtual void addUpIncidentReference(GeomEntity* entity);
166+
167+
/*------------------------------------------------------------------------*/
168+
/** \brief Ajoute les entités adjcentes de entity dans les entités
169+
* adjacentes
170+
*
171+
* \param entity une entité
172+
*/
165173
void addAdjacencyReference(GeomEntity* entity);
166174

167175
/*------------------------------------------------------------------------*/

0 commit comments

Comments
 (0)