1 // SMESH SMESHGUI : GUI for SMESH component
3 // Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License.
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 // See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
24 // File : SMESHGUI_StudyAPI.cxx
25 // Author : Yves FRICAUD
30 #include "SMESHGUI_StudyAPI.h"
31 #include "utilities.h"
32 #include "Utils_ORB_INIT.hxx"
33 #include "Utils_SINGLETON.hxx"
35 #include "QAD_MessageBox.h"
36 #include "QAD_Desktop.h"
37 #include "QAD_Application.h"
42 // Open CASCADE Includes
43 #include "Standard_CString.hxx"
45 static CORBA::ORB_var _orb;
48 long Tag_HypothesisRoot = 1;
49 long Tag_AlgorithmsRoot = 2;
51 long Tag_RefOnShape = 1;
52 long Tag_RefOnAppliedHypothesis = 2;
53 long Tag_RefOnAppliedAlgorithms = 3;
55 long Tag_SubMeshOnVertex = 4;
56 long Tag_SubMeshOnEdge = 5;
57 long Tag_SubMeshOnFace = 6;
58 long Tag_SubMeshOnSolid = 7;
59 long Tag_SubMeshOnCompound = 8;
63 static char* IORToString (CORBA::Object_ptr obj)
65 // MESSAGE ( " IORToString " << _orb->object_to_string(obj) )
66 return _orb->object_to_string(obj);
69 CORBA::Object_ptr SMESHGUI_StudyAPI::StringToIOR (const char* IOR)
71 // MESSAGE ( " StringToIOR " << _orb->string_to_object(IOR) )
72 return _orb->string_to_object(IOR);
74 //=======================================================================
76 // purpose : Constructor
77 //=======================================================================
78 SMESHGUI_StudyAPI::SMESHGUI_StudyAPI ()
82 SMESHGUI_StudyAPI::SMESHGUI_StudyAPI ( SALOMEDS::Study_ptr aStudy,
83 SMESH::SMESH_Gen_ptr CompMesh)
86 myStudyBuilder = aStudy->NewBuilder();
90 // NRI : Temporary added
91 if ( myStudy->GetProperties()->IsLocked() ) {
92 QAD_MessageBox::warn1 ( (QWidget*)QAD_Application::getDesktop(),
93 QObject::tr("WARNING"),
94 QObject::tr("WRN_STUDY_LOCKED"),
95 QObject::tr("BUT_OK") );
101 SALOMEDS::SComponent_var father = aStudy->FindComponent("MESH");
102 SALOMEDS::GenericAttribute_var anAttr;
103 SALOMEDS::AttributeName_var aName;
104 SALOMEDS::AttributePixMap_var aPixmap;
106 if (father->_is_nil()) {
107 father = myStudyBuilder->NewComponent("MESH");
108 anAttr = myStudyBuilder->FindOrCreateAttribute(father, "AttributeName");
109 aName = SALOMEDS::AttributeName::_narrow(anAttr);
110 aName->SetValue(QObject::tr("SMESH_MEN_COMPONENT"));
111 anAttr = myStudyBuilder->FindOrCreateAttribute(father, "AttributePixMap");
112 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
113 aPixmap->SetPixMap( "ICON_OBJBROWSER_SMESH" );
115 myStudyBuilder->DefineComponentInstance(father, CompMesh );
116 mySComponentMesh = SALOMEDS::SComponent::_narrow( father );
119 //=======================================================================
121 // purpose : Destructor
122 //=======================================================================
123 SMESHGUI_StudyAPI::~SMESHGUI_StudyAPI ()
127 //=======================================================================
130 //=======================================================================
131 void SMESHGUI_StudyAPI::Update(SMESH::SMESH_Gen_ptr CompMesh)
133 // NRI : Temporary added
134 if ( myStudy->GetProperties()->IsLocked() ) {
139 SALOMEDS::SComponent_var father = myStudy->FindComponent("MESH");
140 SALOMEDS::GenericAttribute_var anAttr;
141 SALOMEDS::AttributeName_var aName;
142 SALOMEDS::AttributePixMap_var aPixmap;
144 if (father->_is_nil()) {
145 father = myStudyBuilder->NewComponent("MESH");
146 anAttr = myStudyBuilder->FindOrCreateAttribute(father, "AttributeName");
147 aName = SALOMEDS::AttributeName::_narrow(anAttr);
148 aName->SetValue(QObject::tr("SMESH_MEN_COMPONENT"));
149 anAttr = myStudyBuilder->FindOrCreateAttribute(father, "AttributePixMap");
150 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
151 aPixmap->SetPixMap( "ICON_OBJBROWSER_SMESH" );
153 myStudyBuilder->DefineComponentInstance(father, CompMesh );
154 mySComponentMesh = SALOMEDS::SComponent::_narrow( father );
157 //=======================================================================
158 // function : AddNewMesh
160 //=======================================================================
162 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::AddNewMesh (SMESH::SMESH_Mesh_ptr M)
164 // NRI : Temporary added
165 if ( myStudy->GetProperties()->IsLocked() ) {
166 return SALOMEDS::SObject::_nil();
170 //Find or Create Hypothesis root
171 SALOMEDS::SObject_var HypothesisRoot;
172 SALOMEDS::GenericAttribute_var anAttr;
173 SALOMEDS::AttributeName_var aName;
174 SALOMEDS::AttributeIOR_var anIOR;
175 SALOMEDS::AttributeSelectable_var aSelAttr;
176 SALOMEDS::AttributePixMap_var aPixmap;
178 if (!mySComponentMesh->FindSubObject (Tag_HypothesisRoot, HypothesisRoot)) {
179 HypothesisRoot = myStudyBuilder->NewObjectToTag (mySComponentMesh, Tag_HypothesisRoot);
180 anAttr = myStudyBuilder->FindOrCreateAttribute(HypothesisRoot, "AttributeName");
181 aName = SALOMEDS::AttributeName::_narrow(anAttr);
182 aName->SetValue(QObject::tr("SMESH_MEN_HYPOTHESIS"));
183 anAttr = myStudyBuilder->FindOrCreateAttribute(HypothesisRoot, "AttributePixMap");
184 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
185 aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO" );
186 anAttr = myStudyBuilder->FindOrCreateAttribute(HypothesisRoot, "AttributeSelectable");
187 aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
188 aSelAttr->SetSelectable(false);
191 SALOMEDS::SObject_var AlgorithmsRoot;
192 if (!mySComponentMesh->FindSubObject (Tag_AlgorithmsRoot, AlgorithmsRoot)) {
193 AlgorithmsRoot = myStudyBuilder->NewObjectToTag (mySComponentMesh, Tag_AlgorithmsRoot);
194 anAttr = myStudyBuilder->FindOrCreateAttribute(AlgorithmsRoot, "AttributeName");
195 aName = SALOMEDS::AttributeName::_narrow(anAttr);
196 aName->SetValue(QObject::tr("SMESH_MEN_ALGORITHMS"));
197 anAttr = myStudyBuilder->FindOrCreateAttribute(AlgorithmsRoot, "AttributePixMap");
198 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
199 aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO" );
200 anAttr = myStudyBuilder->FindOrCreateAttribute(AlgorithmsRoot, "AttributeSelectable");
201 aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
202 aSelAttr->SetSelectable(false);
206 SALOMEDS::SObject_var newMesh = myStudyBuilder->NewObject(mySComponentMesh);
207 anAttr = myStudyBuilder->FindOrCreateAttribute(newMesh, "AttributePixMap");
208 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
209 aPixmap->SetPixMap( "ICON_SMESH_TREE_MESH" );
210 anAttr = myStudyBuilder->FindOrCreateAttribute(newMesh, "AttributeIOR");
211 anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
212 anIOR->SetValue(IORToString(M));
213 return SALOMEDS::SObject::_narrow( newMesh );
217 //=======================================================================
218 // function : SetShape
220 //=======================================================================
221 void SMESHGUI_StudyAPI::SetShape (SALOMEDS::SObject_ptr SO_MorSM,
222 SALOMEDS::SObject_ptr SO_GeomShape )
224 // NRI : Temporary added
225 if ( myStudy->GetProperties()->IsLocked() ) {
229 SALOMEDS::SObject_var SO = myStudyBuilder->NewObjectToTag (SO_MorSM, Tag_RefOnShape);
230 myStudyBuilder->Addreference (SO,SO_GeomShape);
233 //=======================================================================
234 // function : GetShapeOnMeshOrSubMesh
236 //=======================================================================
237 GEOM::GEOM_Shape_ptr SMESHGUI_StudyAPI::GetShapeOnMeshOrSubMesh(SALOMEDS::SObject_ptr SO_Mesh_Or_SubMesh)
239 // NRI : Temporary added
240 if ( myStudy->GetProperties()->IsLocked() ) {
241 return GEOM::GEOM_Shape::_nil();
245 GEOM::GEOM_Shape_var Shape;
246 SALOMEDS::SObject_var aSO, aGeom;
247 SALOMEDS::GenericAttribute_var anAttr;
248 SALOMEDS::AttributeIOR_var anIOR;
249 if ( SO_Mesh_Or_SubMesh->FindSubObject( Tag_RefOnShape, aSO ) ) {
250 if ( aSO->ReferencedObject(aGeom) ) {
251 if (aGeom->FindAttribute(anAttr, "AttributeIOR")) {
252 anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
253 return GEOM::GEOM_Shape::_narrow( _orb->string_to_object(anIOR->Value()) );
257 return GEOM::GEOM_Shape::_nil();
260 //=======================================================================
261 // function : AddNewHypothesis
263 //=======================================================================
264 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::AddNewHypothesis (SMESH::SMESH_Hypothesis_ptr H)
266 // NRI : Temporary added
267 if ( myStudy->GetProperties()->IsLocked() ) {
268 return SALOMEDS::SObject::_nil();
272 //Find or Create Hypothesis root
273 SALOMEDS::SObject_var HypothesisRoot;
274 SALOMEDS::GenericAttribute_var anAttr;
275 SALOMEDS::AttributeName_var aName;
276 SALOMEDS::AttributeIOR_var anIOR;
277 SALOMEDS::AttributeSelectable_var aSelAttr;
278 SALOMEDS::AttributePixMap_var aPixmap;
280 if (!mySComponentMesh->FindSubObject (Tag_HypothesisRoot, HypothesisRoot)) {
281 HypothesisRoot = myStudyBuilder->NewObjectToTag (mySComponentMesh, Tag_HypothesisRoot);
282 anAttr = myStudyBuilder->FindOrCreateAttribute(HypothesisRoot, "AttributeName");
283 aName = SALOMEDS::AttributeName::_narrow(anAttr);
284 aName->SetValue(QObject::tr("SMESH_MEN_HYPOTHESIS"));
285 anAttr = myStudyBuilder->FindOrCreateAttribute(HypothesisRoot, "AttributeSelectable");
286 aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
287 aSelAttr->SetSelectable(false);
288 anAttr = myStudyBuilder->FindOrCreateAttribute(HypothesisRoot, "AttributePixMap");
289 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
290 aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO" );
292 // Add New Hypothesis
293 SALOMEDS::SObject_var newHypo = myStudyBuilder->NewObject(HypothesisRoot);
294 anAttr = myStudyBuilder->FindOrCreateAttribute(newHypo, "AttributePixMap");
295 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
296 QString aType = H->GetName();
297 MESSAGE ( " aType " << aType )
298 aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO_" + aType );
299 // if ( aType.compare("LocalLength") == 0 )
300 // aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO_LENGTH" );
301 // else if ( aType.compare("NumberOfSegments") == 0 )
302 // aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO_SEGMENT" );
303 // else if ( aType.compare("MaxElementArea") == 0 )
304 // aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO_AREA" );
305 // else if ( aType.compare("MaxElementVolume") == 0 )
306 // aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO_VOLUME" );
307 anAttr = myStudyBuilder->FindOrCreateAttribute(newHypo, "AttributeIOR");
308 anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
309 anIOR->SetValue(IORToString(H));
310 return SALOMEDS::SObject::_narrow(newHypo);
313 //=======================================================================
314 // function : AddNewAlgorithms
316 //=======================================================================
317 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::AddNewAlgorithms (SMESH::SMESH_Hypothesis_ptr H)
319 // NRI : Temporary added
320 if ( myStudy->GetProperties()->IsLocked() ) {
321 return SALOMEDS::SObject::_nil();
325 //Find or Create Algorithms root
326 SALOMEDS::SObject_var AlgorithmsRoot;
327 SALOMEDS::GenericAttribute_var anAttr;
328 SALOMEDS::AttributeName_var aName;
329 SALOMEDS::AttributeIOR_var anIOR;
330 SALOMEDS::AttributeSelectable_var aSelAttr;
331 SALOMEDS::AttributePixMap_var aPixmap;
333 if (!mySComponentMesh->FindSubObject (Tag_AlgorithmsRoot, AlgorithmsRoot)) {
334 AlgorithmsRoot = myStudyBuilder->NewObjectToTag (mySComponentMesh, Tag_AlgorithmsRoot);
335 anAttr = myStudyBuilder->FindOrCreateAttribute(AlgorithmsRoot, "AttributeName");
336 aName = SALOMEDS::AttributeName::_narrow(anAttr);
337 aName->SetValue(QObject::tr("SMESH_MEN_ALGORITHMS"));
338 anAttr = myStudyBuilder->FindOrCreateAttribute(AlgorithmsRoot, "AttributeSelectable");
339 aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
340 aSelAttr->SetSelectable(false);
341 anAttr = myStudyBuilder->FindOrCreateAttribute(AlgorithmsRoot, "AttributePixMap");
342 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
343 aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO" );
345 // Add New Algorithms
346 SALOMEDS::SObject_var newHypo = myStudyBuilder->NewObject(AlgorithmsRoot);
347 anAttr = myStudyBuilder->FindOrCreateAttribute(newHypo, "AttributePixMap");
348 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
349 QString aType = H->GetName();
350 // if ( aType.compare("Regular_1D") == 0 )
351 aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO_" + aType );
352 // aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO_REGULAR" );
353 // else if ( aType.compare("MEFISTO_2D") == 0 )
354 // aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO_MEFISTO" );
355 // else if ( aType.compare("Quadrangle_2D") == 0 )
356 // aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO_QUAD" );
357 // else if ( aType.compare("Hexa_3D") == 0 )
358 // aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO_HEXA" );
359 anAttr = myStudyBuilder->FindOrCreateAttribute(newHypo, "AttributeIOR");
360 anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
361 anIOR->SetValue(IORToString(H));
362 return SALOMEDS::SObject::_narrow(newHypo);
366 //=======================================================================
367 // function : AddSubMeshOnShape
369 //=======================================================================
370 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::AddSubMeshOnShape (SALOMEDS::SObject_ptr SO_Mesh,
371 SMESH::SMESH_subMesh_ptr SM,
374 // NRI : Temporary added
375 if ( myStudy->GetProperties()->IsLocked() ) {
376 return SALOMEDS::SObject::_nil();
381 Standard_CString Name;
383 if (ST == GEOM::SOLID) {Tag_Shape = Tag_SubMeshOnSolid; Name = strdup(QObject::tr("SMESH_MEN_SubMeshesOnSolid"));}
384 else if (ST == GEOM::FACE) {Tag_Shape = Tag_SubMeshOnFace; Name = strdup(QObject::tr("SMESH_MEN_SubMeshesOnFace"));}
385 else if (ST == GEOM::EDGE) {Tag_Shape = Tag_SubMeshOnEdge; Name = strdup(QObject::tr("SMESH_MEN_SubMeshesOnEdge"));}
386 else if (ST == GEOM::VERTEX){Tag_Shape = Tag_SubMeshOnVertex; Name = strdup(QObject::tr("SMESH_MEN_SubMeshesOnVertex"));}
388 Tag_Shape = Tag_SubMeshOnCompound; Name = strdup(QObject::tr("SMESH_MEN_SubMeshesOnCompound"));
391 SALOMEDS::SObject_var SubmeshesRoot;
392 SALOMEDS::GenericAttribute_var anAttr;
393 SALOMEDS::AttributeName_var aName;
394 SALOMEDS::AttributeIOR_var anIOR;
395 SALOMEDS::AttributeSelectable_var aSelAttr;
397 if (!SO_Mesh->FindSubObject (Tag_Shape,SubmeshesRoot )) {
398 SubmeshesRoot = myStudyBuilder->NewObjectToTag (SO_Mesh, Tag_Shape);
399 anAttr = myStudyBuilder->FindOrCreateAttribute(SubmeshesRoot, "AttributeName");
400 aName = SALOMEDS::AttributeName::_narrow(anAttr);
401 aName->SetValue(Name);
402 anAttr = myStudyBuilder->FindOrCreateAttribute(SubmeshesRoot, "AttributeSelectable");
403 aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
404 aSelAttr->SetSelectable(false);
406 SALOMEDS::SObject_var SO = myStudyBuilder->NewObject (SubmeshesRoot);
407 anAttr = myStudyBuilder->FindOrCreateAttribute(SO, "AttributeIOR");
408 anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
409 anIOR->SetValue(IORToString(SM));
410 return SALOMEDS::SObject::_narrow( SO );
413 //=======================================================================
414 // function : AddSubMeshOnShape
416 //=======================================================================
417 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::AddSubMeshOnShape (SALOMEDS::SObject_ptr SO_Mesh,
418 SALOMEDS::SObject_ptr SO_GeomShape,
419 SMESH::SMESH_subMesh_ptr SM,
422 // NRI : Temporary added
423 if ( myStudy->GetProperties()->IsLocked() ) {
424 return SALOMEDS::SObject::_nil();
428 SALOMEDS::SObject_var SO_SM = AddSubMeshOnShape (SO_Mesh,SM,ST);
429 SetShape (SO_SM,SO_GeomShape);
430 // SetShapeOnSubMesh (SO_SM,SO_GeomShape);
431 return SALOMEDS::SObject::_narrow( SO_SM );
435 //=======================================================================
436 // function : SetHypothesis
438 //=======================================================================
439 void SMESHGUI_StudyAPI::SetHypothesis (SALOMEDS::SObject_ptr SO_MorSM,
440 SALOMEDS::SObject_ptr SO_Hypothesis)
442 // NRI : Temporary added
443 if ( myStudy->GetProperties()->IsLocked() ) {
448 //Find or Create Applied Hypothesis root
449 SALOMEDS::SObject_var AHR;
450 SALOMEDS::GenericAttribute_var anAttr;
451 SALOMEDS::AttributeName_var aName;
452 SALOMEDS::AttributeSelectable_var aSelAttr;
453 SALOMEDS::AttributePixMap_var aPixmap;
455 if (!SO_MorSM->FindSubObject (Tag_RefOnAppliedHypothesis, AHR)) {
456 AHR = myStudyBuilder->NewObjectToTag (SO_MorSM, Tag_RefOnAppliedHypothesis);
457 anAttr = myStudyBuilder->FindOrCreateAttribute(AHR, "AttributeName");
458 aName = SALOMEDS::AttributeName::_narrow(anAttr);
459 aName->SetValue(QObject::tr("SMESH_MEN_APPLIED_HYPOTHESIS"));
460 anAttr = myStudyBuilder->FindOrCreateAttribute(AHR, "AttributeSelectable");
461 aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
462 aSelAttr->SetSelectable(false);
463 anAttr = myStudyBuilder->FindOrCreateAttribute(AHR, "AttributePixMap");
464 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
465 aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO" );
467 SALOMEDS::SObject_var SO = myStudyBuilder->NewObject(AHR);
468 myStudyBuilder->Addreference (SO,SO_Hypothesis);
471 //=======================================================================
472 // function : SetAlgorithms
474 //=======================================================================
475 void SMESHGUI_StudyAPI::SetAlgorithms (SALOMEDS::SObject_ptr SO_MorSM,
476 SALOMEDS::SObject_ptr SO_Algorithms)
478 // NRI : Temporary added
479 if ( myStudy->GetProperties()->IsLocked() ) {
484 //Find or Create Applied Algorithms root
485 SALOMEDS::SObject_var AHR;
486 SALOMEDS::GenericAttribute_var anAttr;
487 SALOMEDS::AttributeName_var aName;
488 SALOMEDS::AttributeSelectable_var aSelAttr;
489 SALOMEDS::AttributePixMap_var aPixmap;
491 if (!SO_MorSM->FindSubObject (Tag_RefOnAppliedAlgorithms, AHR)) {
492 AHR = myStudyBuilder->NewObjectToTag (SO_MorSM, Tag_RefOnAppliedAlgorithms);
493 anAttr = myStudyBuilder->FindOrCreateAttribute(AHR, "AttributeName");
494 aName = SALOMEDS::AttributeName::_narrow(anAttr);
495 aName->SetValue(QObject::tr("SMESH_MEN_APPLIED_ALGORIHTMS"));
496 anAttr = myStudyBuilder->FindOrCreateAttribute(AHR, "AttributeSelectable");
497 aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
498 aSelAttr->SetSelectable(false);
499 anAttr = myStudyBuilder->FindOrCreateAttribute(AHR, "AttributePixMap");
500 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
501 aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO" );
503 SALOMEDS::SObject_var SO = myStudyBuilder->NewObject(AHR);
504 myStudyBuilder->Addreference (SO,SO_Algorithms);
508 //=======================================================================
511 //=======================================================================
512 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::FindMesh (SMESH::SMESH_Mesh_ptr M)
514 // NRI : Temporary added
515 if ( myStudy->GetProperties()->IsLocked() ) {
516 return SALOMEDS::SObject::_nil();
519 return SALOMEDS::SObject::_narrow( myStudy->FindObjectIOR (IORToString(M)) );
522 //=======================================================================
525 //=======================================================================
526 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::FindHypothesisOrAlgorithms (SMESH::SMESH_Hypothesis_ptr H)
528 // NRI : Temporary added
529 if ( myStudy->GetProperties()->IsLocked() ) {
530 return SALOMEDS::SObject::_nil();
533 return SALOMEDS::SObject::_narrow( myStudy->FindObjectIOR (IORToString(H)) );
537 //=======================================================================
540 //=======================================================================
541 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::FindSubMesh (SMESH::SMESH_subMesh_ptr SM)
543 // NRI : Temporary added
544 if ( myStudy->GetProperties()->IsLocked() ) {
545 return SALOMEDS::SObject::_nil();
548 return SALOMEDS::SObject::_narrow( myStudy->FindObjectIOR (IORToString(SM)) );
552 void SMESHGUI_StudyAPI::setOrb()
555 ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance();
556 ASSERT(SINGLETON_<ORB_INIT>::IsAlreadyExisting());
557 _orb = init( 0 , 0 );
559 INFOS("internal error : orb not found");
562 ASSERT(! CORBA::is_nil(_orb));
565 //=======================================================================
568 //=======================================================================
569 void SMESHGUI_StudyAPI::SetTagHypothesisRoot()
571 // NRI : Temporary added
572 if ( myStudy->GetProperties()->IsLocked() ) {
576 SALOMEDS::ChildIterator_var it = myStudy->NewChildIterator(mySComponentMesh);
578 for (; it->More();it->Next()) {
581 Tag_HypothesisRoot = i++;
584 //=======================================================================
587 //=======================================================================
588 void SMESHGUI_StudyAPI::SetName( SALOMEDS::SObject_ptr SO, const char* Name )
590 // NRI : Temporary added
591 if ( myStudy->GetProperties()->IsLocked() ) {
596 SALOMEDS::GenericAttribute_var anAttr;
597 SALOMEDS::AttributeName_var aName;
598 anAttr = myStudyBuilder->FindOrCreateAttribute(SO, "AttributeName");
599 aName = SALOMEDS::AttributeName::_narrow(anAttr);
600 aName->SetValue(Name);
603 //=======================================================================
606 //=======================================================================
607 void SMESHGUI_StudyAPI::UnSetHypothesis (SALOMEDS::SObject_ptr SO_Applied_Hypothesis)
609 // NRI : Temporary added
610 if ( myStudy->GetProperties()->IsLocked() ) {
614 myStudyBuilder->RemoveObject(SO_Applied_Hypothesis);
617 //=======================================================================
620 //=======================================================================
621 void SMESHGUI_StudyAPI::UnSetAlgorithm (SALOMEDS::SObject_ptr SO_Applied_Algorithm)
623 // NRI : Temporary added
624 if ( myStudy->GetProperties()->IsLocked() ) {
628 myStudyBuilder->RemoveObject(SO_Applied_Algorithm);
631 //=======================================================================
634 //=======================================================================
635 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::GetMeshOrSubmesh (SALOMEDS::SObject_ptr SO)
637 // NRI : Temporary added
638 if ( myStudy->GetProperties()->IsLocked() ) {
639 return SALOMEDS::SObject::_nil();
643 SALOMEDS::SObject_var MorSM,SB;
644 SALOMEDS::GenericAttribute_var anAttr;
645 SALOMEDS::AttributeName_var aName;
646 SALOMEDS::AttributeIOR_var anIOR;
648 if (SO->FindAttribute(anAttr, "AttributeIOR")) {
649 anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
650 GEOM::GEOM_Shape_var Shape = GEOM::GEOM_Shape::_narrow( _orb->string_to_object(anIOR->Value()) );
651 if (!Shape->_is_nil()) {
653 MorSM = SO->GetFather();
654 // MESSAGE ( " MorSM shape " << MorSM->GetID() )
655 return SALOMEDS::SObject::_narrow( MorSM);
659 if (SO->ReferencedObject(SB)) {
660 //It's Reference on Hypothesis or Algorithm
661 MorSM = SO->GetFather()->GetFather();
662 // MESSAGE ( " MorSM reference " << MorSM->GetID() )
663 return SALOMEDS::SObject::_narrow( MorSM);
665 // It's SMESH_MEN_APPLIED_HYPOTHESIS or SMESH_MEN_APPLIED_ALGORITHMS or SubMeshesOnFace etc...
666 MorSM = SO->GetFather();
667 // MESSAGE ( " MorSM banniere " << MorSM->GetID() )
668 return SALOMEDS::SObject::_narrow( MorSM);
671 void SMESHGUI_StudyAPI::ModifiedMesh( SALOMEDS::SObject_ptr MorSM, bool right)
673 // NRI : Temporary added
674 if ( myStudy->GetProperties()->IsLocked() ) {
679 SALOMEDS::GenericAttribute_var anAttr;
680 SALOMEDS::AttributePixMap_var aPixmap;
682 anAttr = myStudyBuilder->FindOrCreateAttribute(MorSM, "AttributePixMap");
683 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
685 aPixmap->SetPixMap( "ICON_SMESH_TREE_MESH" );
687 aPixmap->SetPixMap( "ICON_SMESH_TREE_MESH_WARN" );
691 SALOMEDS::ChildIterator_var it = myStudy->NewChildIterator(MorSM);
692 for (; it->More();it->Next()) {
693 SALOMEDS::SObject_var Obj = it->Value();
696 SALOMEDS::ChildIterator_var it1 = myStudy->NewChildIterator(Obj);
697 for (; it1->More();it1->Next()) {
698 SALOMEDS::SObject_var Obj1 = it1->Value();
699 anAttr = myStudyBuilder->FindOrCreateAttribute(Obj1, "AttributePixMap");
700 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
702 aPixmap->SetPixMap( "ICON_SMESH_TREE_MESH" );
704 aPixmap->SetPixMap( "ICON_SMESH_TREE_MESH_WARN" );