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_Application.h"
41 // Open CASCADE Includes
42 #include "Standard_CString.hxx"
44 static CORBA::ORB_var _orb;
47 long Tag_HypothesisRoot = 1;
48 long Tag_AlgorithmsRoot = 2;
50 long Tag_RefOnShape = 1;
51 long Tag_RefOnAppliedHypothesis = 2;
52 long Tag_RefOnAppliedAlgorithms = 3;
54 long Tag_SubMeshOnVertex = 4;
55 long Tag_SubMeshOnEdge = 5;
56 long Tag_SubMeshOnFace = 6;
57 long Tag_SubMeshOnSolid = 7;
58 long Tag_SubMeshOnCompound = 8;
62 static char* IORToString (CORBA::Object_ptr obj)
64 // MESSAGE ( " IORToString " << _orb->object_to_string(obj) )
65 return _orb->object_to_string(obj);
68 CORBA::Object_ptr SMESHGUI_StudyAPI::StringToIOR (const char* IOR)
70 // MESSAGE ( " StringToIOR " << _orb->string_to_object(IOR) )
71 return _orb->string_to_object(IOR);
73 //=======================================================================
75 // purpose : Constructor
76 //=======================================================================
77 SMESHGUI_StudyAPI::SMESHGUI_StudyAPI ()
81 SMESHGUI_StudyAPI::SMESHGUI_StudyAPI ( SALOMEDS::Study_ptr aStudy,
82 SMESH::SMESH_Gen_ptr CompMesh)
85 myStudyBuilder = aStudy->NewBuilder();
89 // NRI : Temporary added
90 if ( myStudy->GetProperties()->IsLocked() ) {
91 QAD_MessageBox::warn1 ( (QWidget*)QAD_Application::getDesktop(),
92 QObject::tr("WARNING"),
93 QObject::tr("WRN_STUDY_LOCKED"),
94 QObject::tr("BUT_OK") );
100 SALOMEDS::SComponent_var father = aStudy->FindComponent("MESH");
101 SALOMEDS::GenericAttribute_var anAttr;
102 SALOMEDS::AttributeName_var aName;
103 SALOMEDS::AttributePixMap_var aPixmap;
105 if (father->_is_nil()) {
106 father = myStudyBuilder->NewComponent("MESH");
107 anAttr = myStudyBuilder->FindOrCreateAttribute(father, "AttributeName");
108 aName = SALOMEDS::AttributeName::_narrow(anAttr);
109 aName->SetValue(QObject::tr("SMESH_MEN_COMPONENT"));
110 anAttr = myStudyBuilder->FindOrCreateAttribute(father, "AttributePixMap");
111 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
112 aPixmap->SetPixMap( "ICON_OBJBROWSER_SMESH" );
114 myStudyBuilder->DefineComponentInstance(father, CompMesh );
115 mySComponentMesh = SALOMEDS::SComponent::_narrow( father );
118 //=======================================================================
120 // purpose : Destructor
121 //=======================================================================
122 SMESHGUI_StudyAPI::~SMESHGUI_StudyAPI ()
126 //=======================================================================
129 //=======================================================================
130 void SMESHGUI_StudyAPI::Update(SMESH::SMESH_Gen_ptr CompMesh)
132 // NRI : Temporary added
133 if ( myStudy->GetProperties()->IsLocked() ) {
138 SALOMEDS::SComponent_var father = myStudy->FindComponent("MESH");
139 SALOMEDS::GenericAttribute_var anAttr;
140 SALOMEDS::AttributeName_var aName;
141 SALOMEDS::AttributePixMap_var aPixmap;
143 if (father->_is_nil()) {
144 father = myStudyBuilder->NewComponent("MESH");
145 anAttr = myStudyBuilder->FindOrCreateAttribute(father, "AttributeName");
146 aName = SALOMEDS::AttributeName::_narrow(anAttr);
147 aName->SetValue(QObject::tr("SMESH_MEN_COMPONENT"));
148 anAttr = myStudyBuilder->FindOrCreateAttribute(father, "AttributePixMap");
149 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
150 aPixmap->SetPixMap( "ICON_OBJBROWSER_SMESH" );
152 myStudyBuilder->DefineComponentInstance(father, CompMesh );
153 mySComponentMesh = SALOMEDS::SComponent::_narrow( father );
156 //=======================================================================
157 // function : AddNewMesh
159 //=======================================================================
161 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::AddNewMesh (SMESH::SMESH_Mesh_ptr M)
163 // NRI : Temporary added
164 if ( myStudy->GetProperties()->IsLocked() ) {
165 return SALOMEDS::SObject::_nil();
169 //Find or Create Hypothesis root
170 SALOMEDS::SObject_var HypothesisRoot;
171 SALOMEDS::GenericAttribute_var anAttr;
172 SALOMEDS::AttributeName_var aName;
173 SALOMEDS::AttributeIOR_var anIOR;
174 SALOMEDS::AttributeSelectable_var aSelAttr;
175 SALOMEDS::AttributePixMap_var aPixmap;
177 if (!mySComponentMesh->FindSubObject (Tag_HypothesisRoot, HypothesisRoot)) {
178 HypothesisRoot = myStudyBuilder->NewObjectToTag (mySComponentMesh, Tag_HypothesisRoot);
179 anAttr = myStudyBuilder->FindOrCreateAttribute(HypothesisRoot, "AttributeName");
180 aName = SALOMEDS::AttributeName::_narrow(anAttr);
181 aName->SetValue(QObject::tr("SMESH_MEN_HYPOTHESIS"));
182 anAttr = myStudyBuilder->FindOrCreateAttribute(HypothesisRoot, "AttributePixMap");
183 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
184 aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO" );
185 anAttr = myStudyBuilder->FindOrCreateAttribute(HypothesisRoot, "AttributeSelectable");
186 aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
187 aSelAttr->SetSelectable(false);
190 SALOMEDS::SObject_var AlgorithmsRoot;
191 if (!mySComponentMesh->FindSubObject (Tag_AlgorithmsRoot, AlgorithmsRoot)) {
192 AlgorithmsRoot = myStudyBuilder->NewObjectToTag (mySComponentMesh, Tag_AlgorithmsRoot);
193 anAttr = myStudyBuilder->FindOrCreateAttribute(AlgorithmsRoot, "AttributeName");
194 aName = SALOMEDS::AttributeName::_narrow(anAttr);
195 aName->SetValue(QObject::tr("SMESH_MEN_ALGORITHMS"));
196 anAttr = myStudyBuilder->FindOrCreateAttribute(AlgorithmsRoot, "AttributePixMap");
197 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
198 aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO" );
199 anAttr = myStudyBuilder->FindOrCreateAttribute(AlgorithmsRoot, "AttributeSelectable");
200 aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
201 aSelAttr->SetSelectable(false);
205 SALOMEDS::SObject_var newMesh = myStudyBuilder->NewObject(mySComponentMesh);
206 anAttr = myStudyBuilder->FindOrCreateAttribute(newMesh, "AttributePixMap");
207 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
208 aPixmap->SetPixMap( "ICON_SMESH_TREE_MESH" );
209 anAttr = myStudyBuilder->FindOrCreateAttribute(newMesh, "AttributeIOR");
210 anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
211 anIOR->SetValue(IORToString(M));
212 return SALOMEDS::SObject::_narrow( newMesh );
216 //=======================================================================
217 // function : SetShape
219 //=======================================================================
220 void SMESHGUI_StudyAPI::SetShape (SALOMEDS::SObject_ptr SO_MorSM,
221 SALOMEDS::SObject_ptr SO_GeomShape )
223 // NRI : Temporary added
224 if ( myStudy->GetProperties()->IsLocked() ) {
228 SALOMEDS::SObject_var SO = myStudyBuilder->NewObjectToTag (SO_MorSM, Tag_RefOnShape);
229 myStudyBuilder->Addreference (SO,SO_GeomShape);
232 //=======================================================================
233 // function : GetShapeOnMeshOrSubMesh
235 //=======================================================================
236 GEOM::GEOM_Shape_ptr SMESHGUI_StudyAPI::GetShapeOnMeshOrSubMesh(SALOMEDS::SObject_ptr SO_Mesh_Or_SubMesh)
238 // NRI : Temporary added
239 if ( myStudy->GetProperties()->IsLocked() ) {
240 return GEOM::GEOM_Shape::_nil();
244 GEOM::GEOM_Shape_var Shape;
245 SALOMEDS::SObject_var aSO, aGeom;
246 SALOMEDS::GenericAttribute_var anAttr;
247 SALOMEDS::AttributeIOR_var anIOR;
248 if ( SO_Mesh_Or_SubMesh->FindSubObject( Tag_RefOnShape, aSO ) ) {
249 if ( aSO->ReferencedObject(aGeom) ) {
250 if (aGeom->FindAttribute(anAttr, "AttributeIOR")) {
251 anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
252 return GEOM::GEOM_Shape::_narrow( _orb->string_to_object(anIOR->Value()) );
256 return GEOM::GEOM_Shape::_nil();
259 //=======================================================================
260 // function : AddNewHypothesis
262 //=======================================================================
263 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::AddNewHypothesis (SMESH::SMESH_Hypothesis_ptr H)
265 // NRI : Temporary added
266 if ( myStudy->GetProperties()->IsLocked() ) {
267 return SALOMEDS::SObject::_nil();
271 //Find or Create Hypothesis root
272 SALOMEDS::SObject_var HypothesisRoot;
273 SALOMEDS::GenericAttribute_var anAttr;
274 SALOMEDS::AttributeName_var aName;
275 SALOMEDS::AttributeIOR_var anIOR;
276 SALOMEDS::AttributeSelectable_var aSelAttr;
277 SALOMEDS::AttributePixMap_var aPixmap;
279 if (!mySComponentMesh->FindSubObject (Tag_HypothesisRoot, HypothesisRoot)) {
280 HypothesisRoot = myStudyBuilder->NewObjectToTag (mySComponentMesh, Tag_HypothesisRoot);
281 anAttr = myStudyBuilder->FindOrCreateAttribute(HypothesisRoot, "AttributeName");
282 aName = SALOMEDS::AttributeName::_narrow(anAttr);
283 aName->SetValue(QObject::tr("SMESH_MEN_HYPOTHESIS"));
284 anAttr = myStudyBuilder->FindOrCreateAttribute(HypothesisRoot, "AttributeSelectable");
285 aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
286 aSelAttr->SetSelectable(false);
287 anAttr = myStudyBuilder->FindOrCreateAttribute(HypothesisRoot, "AttributePixMap");
288 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
289 aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO" );
291 // Add New Hypothesis
292 SALOMEDS::SObject_var newHypo = myStudyBuilder->NewObject(HypothesisRoot);
293 anAttr = myStudyBuilder->FindOrCreateAttribute(newHypo, "AttributePixMap");
294 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
295 QString aType = H->GetName();
296 MESSAGE ( " aType " << aType )
297 aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO_" + aType );
298 // if ( aType.compare("LocalLength") == 0 )
299 // aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO_LENGTH" );
300 // else if ( aType.compare("NumberOfSegments") == 0 )
301 // aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO_SEGMENT" );
302 // else if ( aType.compare("MaxElementArea") == 0 )
303 // aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO_AREA" );
304 // else if ( aType.compare("MaxElementVolume") == 0 )
305 // aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO_VOLUME" );
306 anAttr = myStudyBuilder->FindOrCreateAttribute(newHypo, "AttributeIOR");
307 anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
308 anIOR->SetValue(IORToString(H));
309 return SALOMEDS::SObject::_narrow(newHypo);
312 //=======================================================================
313 // function : AddNewAlgorithms
315 //=======================================================================
316 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::AddNewAlgorithms (SMESH::SMESH_Hypothesis_ptr H)
318 // NRI : Temporary added
319 if ( myStudy->GetProperties()->IsLocked() ) {
320 return SALOMEDS::SObject::_nil();
324 //Find or Create Algorithms root
325 SALOMEDS::SObject_var AlgorithmsRoot;
326 SALOMEDS::GenericAttribute_var anAttr;
327 SALOMEDS::AttributeName_var aName;
328 SALOMEDS::AttributeIOR_var anIOR;
329 SALOMEDS::AttributeSelectable_var aSelAttr;
330 SALOMEDS::AttributePixMap_var aPixmap;
332 if (!mySComponentMesh->FindSubObject (Tag_AlgorithmsRoot, AlgorithmsRoot)) {
333 AlgorithmsRoot = myStudyBuilder->NewObjectToTag (mySComponentMesh, Tag_AlgorithmsRoot);
334 anAttr = myStudyBuilder->FindOrCreateAttribute(AlgorithmsRoot, "AttributeName");
335 aName = SALOMEDS::AttributeName::_narrow(anAttr);
336 aName->SetValue(QObject::tr("SMESH_MEN_ALGORITHMS"));
337 anAttr = myStudyBuilder->FindOrCreateAttribute(AlgorithmsRoot, "AttributeSelectable");
338 aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
339 aSelAttr->SetSelectable(false);
340 anAttr = myStudyBuilder->FindOrCreateAttribute(AlgorithmsRoot, "AttributePixMap");
341 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
342 aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO" );
344 // Add New Algorithms
345 SALOMEDS::SObject_var newHypo = myStudyBuilder->NewObject(AlgorithmsRoot);
346 anAttr = myStudyBuilder->FindOrCreateAttribute(newHypo, "AttributePixMap");
347 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
348 QString aType = H->GetName();
349 // if ( aType.compare("Regular_1D") == 0 )
350 aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO_" + aType );
351 // aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO_REGULAR" );
352 // else if ( aType.compare("MEFISTO_2D") == 0 )
353 // aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO_MEFISTO" );
354 // else if ( aType.compare("Quadrangle_2D") == 0 )
355 // aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO_QUAD" );
356 // else if ( aType.compare("Hexa_3D") == 0 )
357 // aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO_HEXA" );
358 anAttr = myStudyBuilder->FindOrCreateAttribute(newHypo, "AttributeIOR");
359 anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
360 anIOR->SetValue(IORToString(H));
361 return SALOMEDS::SObject::_narrow(newHypo);
365 //=======================================================================
366 // function : AddSubMeshOnShape
368 //=======================================================================
369 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::AddSubMeshOnShape (SALOMEDS::SObject_ptr SO_Mesh,
370 SMESH::SMESH_subMesh_ptr SM,
373 // NRI : Temporary added
374 if ( myStudy->GetProperties()->IsLocked() ) {
375 return SALOMEDS::SObject::_nil();
380 Standard_CString Name;
382 if (ST == GEOM::SOLID) {Tag_Shape = Tag_SubMeshOnSolid; Name = strdup(QObject::tr("SMESH_MEN_SubMeshesOnSolid"));}
383 else if (ST == GEOM::FACE) {Tag_Shape = Tag_SubMeshOnFace; Name = strdup(QObject::tr("SMESH_MEN_SubMeshesOnFace"));}
384 else if (ST == GEOM::EDGE) {Tag_Shape = Tag_SubMeshOnEdge; Name = strdup(QObject::tr("SMESH_MEN_SubMeshesOnEdge"));}
385 else if (ST == GEOM::VERTEX){Tag_Shape = Tag_SubMeshOnVertex; Name = strdup(QObject::tr("SMESH_MEN_SubMeshesOnVertex"));}
387 Tag_Shape = Tag_SubMeshOnCompound; Name = strdup(QObject::tr("SMESH_MEN_SubMeshesOnCompound"));
390 SALOMEDS::SObject_var SubmeshesRoot;
391 SALOMEDS::GenericAttribute_var anAttr;
392 SALOMEDS::AttributeName_var aName;
393 SALOMEDS::AttributeIOR_var anIOR;
394 SALOMEDS::AttributeSelectable_var aSelAttr;
396 if (!SO_Mesh->FindSubObject (Tag_Shape,SubmeshesRoot )) {
397 SubmeshesRoot = myStudyBuilder->NewObjectToTag (SO_Mesh, Tag_Shape);
398 anAttr = myStudyBuilder->FindOrCreateAttribute(SubmeshesRoot, "AttributeName");
399 aName = SALOMEDS::AttributeName::_narrow(anAttr);
400 aName->SetValue(Name);
401 anAttr = myStudyBuilder->FindOrCreateAttribute(SubmeshesRoot, "AttributeSelectable");
402 aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
403 aSelAttr->SetSelectable(false);
405 SALOMEDS::SObject_var SO = myStudyBuilder->NewObject (SubmeshesRoot);
406 anAttr = myStudyBuilder->FindOrCreateAttribute(SO, "AttributeIOR");
407 anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
408 anIOR->SetValue(IORToString(SM));
409 return SALOMEDS::SObject::_narrow( SO );
412 //=======================================================================
413 // function : AddSubMeshOnShape
415 //=======================================================================
416 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::AddSubMeshOnShape (SALOMEDS::SObject_ptr SO_Mesh,
417 SALOMEDS::SObject_ptr SO_GeomShape,
418 SMESH::SMESH_subMesh_ptr SM,
421 // NRI : Temporary added
422 if ( myStudy->GetProperties()->IsLocked() ) {
423 return SALOMEDS::SObject::_nil();
427 SALOMEDS::SObject_var SO_SM = AddSubMeshOnShape (SO_Mesh,SM,ST);
428 SetShape (SO_SM,SO_GeomShape);
429 // SetShapeOnSubMesh (SO_SM,SO_GeomShape);
430 return SALOMEDS::SObject::_narrow( SO_SM );
434 //=======================================================================
435 // function : SetHypothesis
437 //=======================================================================
438 void SMESHGUI_StudyAPI::SetHypothesis (SALOMEDS::SObject_ptr SO_MorSM,
439 SALOMEDS::SObject_ptr SO_Hypothesis)
441 // NRI : Temporary added
442 if ( myStudy->GetProperties()->IsLocked() ) {
447 //Find or Create Applied Hypothesis root
448 SALOMEDS::SObject_var AHR;
449 SALOMEDS::GenericAttribute_var anAttr;
450 SALOMEDS::AttributeName_var aName;
451 SALOMEDS::AttributeSelectable_var aSelAttr;
452 SALOMEDS::AttributePixMap_var aPixmap;
454 if (!SO_MorSM->FindSubObject (Tag_RefOnAppliedHypothesis, AHR)) {
455 AHR = myStudyBuilder->NewObjectToTag (SO_MorSM, Tag_RefOnAppliedHypothesis);
456 anAttr = myStudyBuilder->FindOrCreateAttribute(AHR, "AttributeName");
457 aName = SALOMEDS::AttributeName::_narrow(anAttr);
458 aName->SetValue(QObject::tr("SMESH_MEN_APPLIED_HYPOTHESIS"));
459 anAttr = myStudyBuilder->FindOrCreateAttribute(AHR, "AttributeSelectable");
460 aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
461 aSelAttr->SetSelectable(false);
462 anAttr = myStudyBuilder->FindOrCreateAttribute(AHR, "AttributePixMap");
463 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
464 aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO" );
466 SALOMEDS::SObject_var SO = myStudyBuilder->NewObject(AHR);
467 myStudyBuilder->Addreference (SO,SO_Hypothesis);
470 //=======================================================================
471 // function : SetAlgorithms
473 //=======================================================================
474 void SMESHGUI_StudyAPI::SetAlgorithms (SALOMEDS::SObject_ptr SO_MorSM,
475 SALOMEDS::SObject_ptr SO_Algorithms)
477 // NRI : Temporary added
478 if ( myStudy->GetProperties()->IsLocked() ) {
483 //Find or Create Applied Algorithms root
484 SALOMEDS::SObject_var AHR;
485 SALOMEDS::GenericAttribute_var anAttr;
486 SALOMEDS::AttributeName_var aName;
487 SALOMEDS::AttributeSelectable_var aSelAttr;
488 SALOMEDS::AttributePixMap_var aPixmap;
490 if (!SO_MorSM->FindSubObject (Tag_RefOnAppliedAlgorithms, AHR)) {
491 AHR = myStudyBuilder->NewObjectToTag (SO_MorSM, Tag_RefOnAppliedAlgorithms);
492 anAttr = myStudyBuilder->FindOrCreateAttribute(AHR, "AttributeName");
493 aName = SALOMEDS::AttributeName::_narrow(anAttr);
494 aName->SetValue(QObject::tr("SMESH_MEN_APPLIED_ALGORIHTMS"));
495 anAttr = myStudyBuilder->FindOrCreateAttribute(AHR, "AttributeSelectable");
496 aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
497 aSelAttr->SetSelectable(false);
498 anAttr = myStudyBuilder->FindOrCreateAttribute(AHR, "AttributePixMap");
499 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
500 aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO" );
502 SALOMEDS::SObject_var SO = myStudyBuilder->NewObject(AHR);
503 myStudyBuilder->Addreference (SO,SO_Algorithms);
507 //=======================================================================
510 //=======================================================================
511 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::FindMesh (SMESH::SMESH_Mesh_ptr M)
513 // NRI : Temporary added
514 if ( myStudy->GetProperties()->IsLocked() ) {
515 return SALOMEDS::SObject::_nil();
518 return SALOMEDS::SObject::_narrow( myStudy->FindObjectIOR (IORToString(M)) );
521 //=======================================================================
524 //=======================================================================
525 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::FindHypothesisOrAlgorithms (SMESH::SMESH_Hypothesis_ptr H)
527 // NRI : Temporary added
528 if ( myStudy->GetProperties()->IsLocked() ) {
529 return SALOMEDS::SObject::_nil();
532 return SALOMEDS::SObject::_narrow( myStudy->FindObjectIOR (IORToString(H)) );
536 //=======================================================================
539 //=======================================================================
540 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::FindSubMesh (SMESH::SMESH_subMesh_ptr SM)
542 // NRI : Temporary added
543 if ( myStudy->GetProperties()->IsLocked() ) {
544 return SALOMEDS::SObject::_nil();
547 return SALOMEDS::SObject::_narrow( myStudy->FindObjectIOR (IORToString(SM)) );
551 void SMESHGUI_StudyAPI::setOrb()
554 ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance();
555 ASSERT(SINGLETON_<ORB_INIT>::IsAlreadyExisting());
556 _orb = init( 0 , 0 );
558 INFOS("internal error : orb not found");
561 ASSERT(! CORBA::is_nil(_orb));
564 //=======================================================================
567 //=======================================================================
568 void SMESHGUI_StudyAPI::SetTagHypothesisRoot()
570 // NRI : Temporary added
571 if ( myStudy->GetProperties()->IsLocked() ) {
575 SALOMEDS::ChildIterator_var it = myStudy->NewChildIterator(mySComponentMesh);
577 for (; it->More();it->Next()) {
580 Tag_HypothesisRoot = i++;
583 //=======================================================================
586 //=======================================================================
587 void SMESHGUI_StudyAPI::SetName( SALOMEDS::SObject_ptr SO, const char* Name )
589 // NRI : Temporary added
590 if ( myStudy->GetProperties()->IsLocked() ) {
595 SALOMEDS::GenericAttribute_var anAttr;
596 SALOMEDS::AttributeName_var aName;
597 anAttr = myStudyBuilder->FindOrCreateAttribute(SO, "AttributeName");
598 aName = SALOMEDS::AttributeName::_narrow(anAttr);
599 aName->SetValue(Name);
602 //=======================================================================
605 //=======================================================================
606 void SMESHGUI_StudyAPI::UnSetHypothesis (SALOMEDS::SObject_ptr SO_Applied_Hypothesis)
608 // NRI : Temporary added
609 if ( myStudy->GetProperties()->IsLocked() ) {
613 myStudyBuilder->RemoveObject(SO_Applied_Hypothesis);
616 //=======================================================================
619 //=======================================================================
620 void SMESHGUI_StudyAPI::UnSetAlgorithm (SALOMEDS::SObject_ptr SO_Applied_Algorithm)
622 // NRI : Temporary added
623 if ( myStudy->GetProperties()->IsLocked() ) {
627 myStudyBuilder->RemoveObject(SO_Applied_Algorithm);
630 //=======================================================================
633 //=======================================================================
634 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::GetMeshOrSubmesh (SALOMEDS::SObject_ptr SO)
636 // NRI : Temporary added
637 if ( myStudy->GetProperties()->IsLocked() ) {
638 return SALOMEDS::SObject::_nil();
642 SALOMEDS::SObject_var MorSM,SB;
643 SALOMEDS::GenericAttribute_var anAttr;
644 SALOMEDS::AttributeName_var aName;
645 SALOMEDS::AttributeIOR_var anIOR;
647 if (SO->FindAttribute(anAttr, "AttributeIOR")) {
648 anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
649 GEOM::GEOM_Shape_var Shape = GEOM::GEOM_Shape::_narrow( _orb->string_to_object(anIOR->Value()) );
650 if (!Shape->_is_nil()) {
652 MorSM = SO->GetFather();
653 // MESSAGE ( " MorSM shape " << MorSM->GetID() )
654 return SALOMEDS::SObject::_narrow( MorSM);
658 if (SO->ReferencedObject(SB)) {
659 //It's Reference on Hypothesis or Algorithm
660 MorSM = SO->GetFather()->GetFather();
661 // MESSAGE ( " MorSM reference " << MorSM->GetID() )
662 return SALOMEDS::SObject::_narrow( MorSM);
664 // It's SMESH_MEN_APPLIED_HYPOTHESIS or SMESH_MEN_APPLIED_ALGORITHMS or SubMeshesOnFace etc...
665 MorSM = SO->GetFather();
666 // MESSAGE ( " MorSM banniere " << MorSM->GetID() )
667 return SALOMEDS::SObject::_narrow( MorSM);
670 void SMESHGUI_StudyAPI::ModifiedMesh( SALOMEDS::SObject_ptr MorSM, bool right)
672 // NRI : Temporary added
673 if ( myStudy->GetProperties()->IsLocked() ) {
678 SALOMEDS::GenericAttribute_var anAttr;
679 SALOMEDS::AttributePixMap_var aPixmap;
681 anAttr = myStudyBuilder->FindOrCreateAttribute(MorSM, "AttributePixMap");
682 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
684 aPixmap->SetPixMap( "ICON_SMESH_TREE_MESH" );
686 aPixmap->SetPixMap( "ICON_SMESH_TREE_MESH_WARN" );
690 SALOMEDS::ChildIterator_var it = myStudy->NewChildIterator(MorSM);
691 for (; it->More();it->Next()) {
692 SALOMEDS::SObject_var Obj = it->Value();
695 SALOMEDS::ChildIterator_var it1 = myStudy->NewChildIterator(Obj);
696 for (; it1->More();it1->Next()) {
697 SALOMEDS::SObject_var Obj1 = it1->Value();
698 anAttr = myStudyBuilder->FindOrCreateAttribute(Obj1, "AttributePixMap");
699 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
701 aPixmap->SetPixMap( "ICON_SMESH_TREE_MESH" );
703 aPixmap->SetPixMap( "ICON_SMESH_TREE_MESH_WARN" );