Skip to content

Commit e69dae6

Browse files
committed
Dedicated class for group management to prevent from code duplication
1 parent f92e745 commit e69dae6

File tree

61 files changed

+694
-1257
lines changed

Some content is hidden

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

61 files changed

+694
-1257
lines changed

src/Core/Geom/CommandCreateGeom.cpp

Lines changed: 8 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ namespace Geom {
3232
/*----------------------------------------------------------------------------*/
3333
CommandCreateGeom::CommandCreateGeom(Internal::Context& c, std::string name,
3434
const std::string& groupName)
35-
: Internal::CommandInternal (c, name)
35+
: Internal::CommandInternal (c, name)
36+
, m_group_helper(getInfoCommand(), c.getGroupManager())
3637
, m_group_name(groupName)
3738
, m_dim_new_group(3)
3839
, m_isPreview(false)
@@ -153,15 +154,15 @@ split(Volume* v)
153154

154155
for(unsigned int i=0;i<surfaces.size();i++){
155156
store(surfaces[i]);
156-
addToGroup(surfaces[i], true);
157+
m_group_helper.addToGroup("", surfaces[i]);
157158
}
158159
for(unsigned int i=0;i<curves.size();i++){
159160
store(curves[i]);
160-
addToGroup(curves[i], true);
161+
m_group_helper.addToGroup("", curves[i]);
161162
}
162163
for(unsigned int i=0;i<vertices.size();i++){
163164
store(vertices[i]);
164-
addToGroup(vertices[i], true);
165+
m_group_helper.addToGroup("", vertices[i]);
165166
}
166167
}
167168
/*----------------------------------------------------------------------------*/
@@ -183,11 +184,11 @@ split(Surface* s)
183184

184185
for(unsigned int i=0;i<curves.size();i++){
185186
store(curves[i]);
186-
addToGroup(curves[i], true);
187+
m_group_helper.addToGroup("", curves[i]);
187188
}
188189
for(unsigned int i=0;i<vertices.size();i++){
189190
store(vertices[i]);
190-
addToGroup(vertices[i], true);
191+
m_group_helper.addToGroup("", vertices[i]);
191192
}
192193
}
193194
/*----------------------------------------------------------------------------*/
@@ -209,7 +210,7 @@ split(Curve* c)
209210

210211
for(unsigned int i=0;i<vertices.size();i++){
211212
store(vertices[i]);
212-
addToGroup(vertices[i], true);
213+
m_group_helper.addToGroup("", vertices[i]);
213214
}
214215
}
215216
/*----------------------------------------------------------------------------*/
@@ -273,59 +274,6 @@ store(std::vector<GeomEntity*>& e){
273274
}
274275
/*----------------------------------------------------------------------------*/
275276
void CommandCreateGeom::
276-
addToGroup(GeomEntity* e, bool use_default_name)
277-
{
278-
#ifdef _DEBUG2
279-
std::cout<<"CommandCreateGeom::addToGroup("<<e->getName()<<", "<<use_default_name<<") avec m_group_name "<<m_group_name<<std::endl;
280-
#endif
281-
if(e->getDim()==0)
282-
addToGroup(dynamic_cast<Vertex*>(e), use_default_name);
283-
else if(e->getDim()==1)
284-
addToGroup(dynamic_cast<Curve*>(e), use_default_name);
285-
else if(e->getDim()==2)
286-
addToGroup(dynamic_cast<Surface*>(e), use_default_name);
287-
else
288-
addToGroup(dynamic_cast<Volume*>(e), use_default_name);
289-
290-
}
291-
/*----------------------------------------------------------------------------*/
292-
void CommandCreateGeom::
293-
addToGroup(Volume* v, bool use_default_name)
294-
{
295-
Group::Group3D* group = getContext().getGroupManager().getNewGroup3D(use_default_name?"":m_group_name, &getInfoCommand());
296-
v->add(group);
297-
group->add(v);
298-
getInfoCommand().addGroupInfoEntity(group,Internal::InfoCommand::DISPMODIFIED);
299-
}
300-
/*----------------------------------------------------------------------------*/
301-
void CommandCreateGeom::
302-
addToGroup(Surface* s, bool use_default_name)
303-
{
304-
Group::Group2D* group = getContext().getGroupManager().getNewGroup2D(use_default_name?"":m_group_name, &getInfoCommand());
305-
s->add(group);
306-
group->add(s);
307-
getInfoCommand().addGroupInfoEntity(group,Internal::InfoCommand::DISPMODIFIED);
308-
}
309-
/*----------------------------------------------------------------------------*/
310-
void CommandCreateGeom::
311-
addToGroup(Curve* c, bool use_default_name)
312-
{
313-
Group::Group1D* group = getContext().getGroupManager().getNewGroup1D(use_default_name?"":m_group_name, &getInfoCommand());
314-
c->add(group);
315-
group->add(c);
316-
getInfoCommand().addGroupInfoEntity(group,Internal::InfoCommand::DISPMODIFIED);
317-
}
318-
/*----------------------------------------------------------------------------*/
319-
void CommandCreateGeom::
320-
addToGroup(Vertex* v, bool use_default_name)
321-
{
322-
Group::Group0D* group = getContext().getGroupManager().getNewGroup0D(use_default_name?"":m_group_name, &getInfoCommand());
323-
v->add(group);
324-
group->add(v);
325-
getInfoCommand().addGroupInfoEntity(group,Internal::InfoCommand::DISPMODIFIED);
326-
}
327-
/*----------------------------------------------------------------------------*/
328-
void CommandCreateGeom::
329277
updateDimensionGroup(std::vector<GeomEntity*>& entities)
330278
{
331279
m_dim_new_group = 0;

src/Core/Geom/CommandEditGeom.cpp

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -219,9 +219,7 @@ void CommandEditGeom::copyGroups(GeomEntity* ge1, GeomEntity* ge2)
219219
iter != grp.end(); ++iter){
220220
Group::Group3D* grp = dynamic_cast<Group::Group3D*>(*iter);
221221
if (res && grp && !res->find(grp)){
222-
grp->add(res);
223-
res->add(grp);
224-
//std::cout<<"grp : "<<grp->getInfos()<<std::endl;
222+
m_group_helper.addToGroup(grp->getName(), res);
225223
}
226224
}
227225
}
@@ -233,8 +231,7 @@ void CommandEditGeom::copyGroups(GeomEntity* ge1, GeomEntity* ge2)
233231
iter != grp.end(); ++iter){
234232
Group::Group2D* grp = dynamic_cast<Group::Group2D*>(*iter);
235233
if (res && grp && !res->find(grp)){
236-
grp->add(res);
237-
res->add(grp);
234+
m_group_helper.addToGroup(grp->getName(), res);
238235
}
239236
}
240237
}
@@ -246,21 +243,15 @@ void CommandEditGeom::copyGroups(GeomEntity* ge1, GeomEntity* ge2)
246243
iter != grp.end(); ++iter){
247244
Group::Group1D* grp = dynamic_cast<Group::Group1D*>(*iter);
248245
if (res && grp && !res->find(grp)){
249-
grp->add(res);
250-
res->add(grp);
246+
m_group_helper.addToGroup(grp->getName(), res);
251247
}
252248
}
253249
}
254250
else if (ge1->getDim() == 0 && ge2->getDim() == 0){
255-
std::vector<Group::GroupEntity*> grp;
256-
ge1->getGroups(grp);
257251
Vertex* res = dynamic_cast<Vertex*>(ge2);
258-
for (std::vector<Group::GroupEntity*>::iterator iter = grp.begin();
259-
iter != grp.end(); ++iter){
260-
Group::Group0D* grp = dynamic_cast<Group::Group0D*>(*iter);
252+
for (Group::Group0D* grp : res->getGroups()) {
261253
if (res && grp && !res->find(grp)){
262-
grp->add(res);
263-
res->add(grp);
254+
m_group_helper.addToGroup(grp->getName(), res);
264255
}
265256
}
266257
}
@@ -294,14 +285,14 @@ void CommandEditGeom::updateGroups()
294285
}
295286
}
296287

297-
// on utilise le groupe m_group_name (suivant la dimention)
288+
// on utilise le groupe m_group_name (suivant la dimension)
298289
std::vector<GeomEntity*>& newEntities = getNewEntities();
299290
for (std::vector<GeomEntity*>::iterator iter = newEntities.begin();
300291
iter != newEntities.end(); ++iter){
301292
GeomEntity* ge = *iter;
302293
if (filtre_ge[ge] == 0){
303-
bool use_group_name = (ge->getDim() == m_dim_new_group); // && (filtre_ge[ge] == 0)
304-
addToGroup(ge, !use_group_name);
294+
std::string group_name = (ge->getDim() == m_dim_new_group ? m_group_name : ""); // && (filtre_ge[ge] == 0)
295+
m_group_helper.addToGroup(group_name, ge);
305296
#ifdef _DEBUG2
306297
std::cout<<" addToGroup de "<<ge->getName()<<" avec groupe: "<<(use_group_name?m_group_name:"")<<std::endl;
307298
#endif

src/Core/Geom/CommandExtrudeDirection.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ internalExecute()
116116
GeomEntity* ge = new_entities[i];
117117
if (ge->getNbGroups() == 0)
118118
// ajoute à un groupe par défaut
119-
addToGroup(ge);
119+
m_group_helper.addToGroup("", ge);
120120
}
121121
}
122122
/*----------------------------------------------------------------------------*/

src/Core/Geom/CommandExtrudeRevolution.cpp

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -88,16 +88,13 @@ internalExecute()
8888
GeomEntity* ge = new_entities[i];
8989
if (ge->getNbGroups() == 0)
9090
// ajoute à un groupe par défaut
91-
addToGroup(ge);
91+
m_group_helper.addToGroup("", ge);
9292
}
9393
}
9494
/*----------------------------------------------------------------------------*/
9595
void CommandExtrudeRevolution::
9696
addGroupOnAxis()
9797
{
98-
// le groupe pour les courbes sur l'axe
99-
Group::Group1D* grp = getContext().getGroupManager().getNewGroup1D("AXE", &getInfoCommand());
100-
10198
// on commence par identifier les sommets sur l'axe, on les marque à 2, sinon 1
10299
std::map<Geom::Vertex* ,uint> filtre_vertices;
103100

@@ -125,8 +122,7 @@ addGroupOnAxis()
125122
&& crv1->isLinear())
126123
{
127124
//std::cout<<crv1->getName()<< " sur l'axe, et donne "<<crv2->getName()<<std::endl;
128-
crv2->add(grp);
129-
grp->add(crv2);
125+
m_group_helper.addToGroup("AXE", crv2);
130126
}
131127
}
132128

src/Core/Geom/CommandExtrusion.cpp

Lines changed: 7 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -162,9 +162,7 @@ groups2DTo3D()
162162
if (i == 0 && nom == getContext().getGroupManager().getDefaultName(2))
163163
nom = getContext().getGroupManager().getDefaultName(3);
164164

165-
Group::Group3D* new_grp = getContext().getGroupManager().getNewGroup3D(nom, &getInfoCommand());
166-
new_grp->add(vol);
167-
vol->add(new_grp);
165+
Group::Group3D* new_grp = m_group_helper.addToGroup(nom, vol);
168166
new_grp->setLevel(grp[i]->getLevel());
169167
}
170168
}
@@ -183,9 +181,7 @@ groups2DTo3D()
183181
if (i == 0 && nom == getContext().getGroupManager().getDefaultName(1))
184182
nom = getContext().getGroupManager().getDefaultName(2);
185183

186-
Group::Group2D* new_grp = getContext().getGroupManager().getNewGroup2D(nom, &getInfoCommand());
187-
new_grp->add(surf);
188-
surf->add(new_grp);
184+
Group::Group2D* new_grp = m_group_helper.addToGroup(nom, surf);
189185
new_grp->setLevel(grp[i]->getLevel());
190186
}
191187
}
@@ -204,9 +200,7 @@ groups2DTo3D()
204200
if (i == 0 && nom == getContext().getGroupManager().getDefaultName(0))
205201
nom = getContext().getGroupManager().getDefaultName(1);
206202

207-
Group::Group1D* new_grp = getContext().getGroupManager().getNewGroup1D(nom, &getInfoCommand());
208-
new_grp->add(curve);
209-
curve->add(new_grp);
203+
Group::Group1D* new_grp = m_group_helper.addToGroup(nom, curve);
210204
new_grp->setLevel(grp[i]->getLevel());
211205
}
212206
}
@@ -219,8 +213,6 @@ void CommandExtrusion::prefixGroupsName(const std::string& pre,
219213
std::map<Geom::Surface*,Geom::Surface*>& s2s)
220214
{
221215
// le groupe commun pour toutes les surfaces
222-
Group::Group2D* grp_comm = getContext().getGroupManager().getNewGroup2D(pre, &getInfoCommand());
223-
224216
for (std::map<Geom::Surface*,Geom::Surface*>::iterator iter = s2s.begin();
225217
iter != s2s.end(); ++iter){
226218
Geom::Surface* surf1 = iter->first;
@@ -231,14 +223,11 @@ void CommandExtrusion::prefixGroupsName(const std::string& pre,
231223
surf1->getGroupsName(gn);
232224
for (uint i=0; i<gn.size(); i++){
233225
std::string& nom = gn[i];
234-
Group::Group2D* grp = getContext().getGroupManager().getNewGroup2D(pre + "_" + nom, &getInfoCommand());
235-
grp->add(surf2);
236-
surf2->add(grp);
226+
m_group_helper.addToGroup(pre + "_" + nom, surf2);
237227
}
238228

239229
// ajoute la surface dans le groupe / plan de sym
240-
grp_comm->add(surf2);
241-
surf2->add(grp_comm);
230+
m_group_helper.addToGroup(pre, surf2);
242231
}
243232
}
244233

@@ -252,9 +241,7 @@ void CommandExtrusion::prefixGroupsName(const std::string& pre,
252241
crv1->getGroupsName(gn);
253242
for (uint i=0; i<gn.size(); i++){
254243
std::string& nom = gn[i];
255-
Group::Group1D* grp = getContext().getGroupManager().getNewGroup1D(pre + "_" + nom, &getInfoCommand());
256-
grp->add(crv2);
257-
crv2->add(grp);
244+
m_group_helper.addToGroup(pre + "_" + nom, crv2);
258245
}
259246
}
260247
}
@@ -269,9 +256,7 @@ void CommandExtrusion::prefixGroupsName(const std::string& pre,
269256
vtx1->getGroupsName(gn);
270257
for (uint i=0; i<gn.size(); i++){
271258
std::string& nom = gn[i];
272-
Group::Group0D* grp = getContext().getGroupManager().getNewGroup0D(pre + "_" + nom, &getInfoCommand());
273-
grp->add(vtx2);
274-
vtx2->add(grp);
259+
m_group_helper.addToGroup(pre + "_" + nom, vtx2);
275260
}
276261
}
277262
}

src/Core/Geom/CommandImportCATIA.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,7 @@ internalExecute()
3434
m_impl->perform(m_createdEntities);
3535

3636
for(unsigned int i=0; i<m_createdEntities.size();i++)
37-
addToGroup(m_createdEntities[i]);
38-
37+
m_group_helper.addToGroup(m_group_name, m_createdEntities[i]);
3938
}
4039
/*----------------------------------------------------------------------------*/
4140
} // end namespace Geom

src/Core/Geom/CommandImportIGES.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ internalExecute()
4646

4747
//gestion de l'appartenance aux groupes
4848
for(unsigned int i=0;i<m_createdEntities.size();i++)
49-
addToGroup(m_createdEntities[i]);
49+
m_group_helper.addToGroup(m_group_name, m_createdEntities[i]);
5050
}
5151
/*----------------------------------------------------------------------------*/
5252
IGESHeader::IGESHeader ( )

src/Core/Geom/CommandImportSTL.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ internalExecute()
3838

3939
//gestion de l'appartenance aux groupes
4040
for(unsigned int i=0;i<m_createdEntities.size();i++)
41-
addToGroup(m_createdEntities[i]);
41+
m_group_helper.addToGroup(m_group_name, m_createdEntities[i]);
4242
}
4343
/*----------------------------------------------------------------------------*/
4444
} // end namespace Geom

src/Core/Geom/CommandJoinCurves.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -144,10 +144,8 @@ internalSpecificExecute()
144144
// reprise des groupes de la première courbe
145145
std::vector<Group::GroupEntity*> grp;
146146
m_entities[0]->getGroups(grp);
147-
newCurve->setGroups(grp);
148147
for (uint i=0; i<grp.size(); i++){
149-
Group::Group1D* group = getContext().getGroupManager().getNewGroup1D(grp[i]->getName(), &getInfoCommand());
150-
group->add(newCurve);
148+
m_group_helper.addToGroup(grp[i]->getName(), newCurve);
151149
}
152150

153151
// destruction des anciennes courbes

src/Core/Geom/CommandJoinSurfaces.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -109,10 +109,8 @@ void CommandJoinSurfaces::internalSpecificExecute()
109109
// reprise des groupes de la première surface
110110
std::vector<Group::GroupEntity*> grp;
111111
m_entities[0]->getGroups(grp);
112-
newSurface->setGroups(grp);
113112
for (uint i=0; i<grp.size(); i++){
114-
Group::Group2D* group = getContext().getGroupManager().getNewGroup2D(grp[i]->getName(), &getInfoCommand());
115-
group->add(newSurface);
113+
m_group_helper.addToGroup(grp[i]->getName(), newSurface);
116114
}
117115

118116
// destruction des anciennes surfaces

0 commit comments

Comments
 (0)