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 //NRI aName->SetValue(QObject::tr("SMESH_MEN_COMPONENT"));
111 aName->SetValue( QAD_Application::getDesktop()->getComponentUserName( "SMESH" ) );
112 anAttr = myStudyBuilder->FindOrCreateAttribute(father, "AttributePixMap");
113 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
114 aPixmap->SetPixMap( "ICON_OBJBROWSER_SMESH" );
116 myStudyBuilder->DefineComponentInstance(father, CompMesh );
117 mySComponentMesh = SALOMEDS::SComponent::_narrow( father );
120 //=======================================================================
122 // purpose : Destructor
123 //=======================================================================
124 SMESHGUI_StudyAPI::~SMESHGUI_StudyAPI ()
128 //=======================================================================
131 //=======================================================================
132 void SMESHGUI_StudyAPI::Update(SMESH::SMESH_Gen_ptr CompMesh)
134 // NRI : Temporary added
135 if ( myStudy->GetProperties()->IsLocked() ) {
140 SALOMEDS::SComponent_var father = myStudy->FindComponent("MESH");
141 SALOMEDS::GenericAttribute_var anAttr;
142 SALOMEDS::AttributeName_var aName;
143 SALOMEDS::AttributePixMap_var aPixmap;
145 if (father->_is_nil()) {
146 father = myStudyBuilder->NewComponent("MESH");
147 anAttr = myStudyBuilder->FindOrCreateAttribute(father, "AttributeName");
148 aName = SALOMEDS::AttributeName::_narrow(anAttr);
149 //NRI aName->SetValue(QObject::tr("SMESH_MEN_COMPONENT"));
150 aName->SetValue( QAD_Application::getDesktop()->getComponentUserName( "SMESH" ) );
151 anAttr = myStudyBuilder->FindOrCreateAttribute(father, "AttributePixMap");
152 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
153 aPixmap->SetPixMap( "ICON_OBJBROWSER_SMESH" );
155 myStudyBuilder->DefineComponentInstance(father, CompMesh );
156 mySComponentMesh = SALOMEDS::SComponent::_narrow( father );
159 //=======================================================================
160 // function : AddNewMesh
162 //=======================================================================
164 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::AddNewMesh (SMESH::SMESH_Mesh_ptr M)
166 // NRI : Temporary added
167 if ( myStudy->GetProperties()->IsLocked() ) {
168 return SALOMEDS::SObject::_nil();
172 //Find or Create Hypothesis root
173 SALOMEDS::SObject_var HypothesisRoot;
174 SALOMEDS::GenericAttribute_var anAttr;
175 SALOMEDS::AttributeName_var aName;
176 SALOMEDS::AttributeIOR_var anIOR;
177 SALOMEDS::AttributeSelectable_var aSelAttr;
178 SALOMEDS::AttributePixMap_var aPixmap;
180 if (!mySComponentMesh->FindSubObject (Tag_HypothesisRoot, HypothesisRoot)) {
181 HypothesisRoot = myStudyBuilder->NewObjectToTag (mySComponentMesh, Tag_HypothesisRoot);
182 anAttr = myStudyBuilder->FindOrCreateAttribute(HypothesisRoot, "AttributeName");
183 aName = SALOMEDS::AttributeName::_narrow(anAttr);
184 aName->SetValue(QObject::tr("SMESH_MEN_HYPOTHESIS"));
185 anAttr = myStudyBuilder->FindOrCreateAttribute(HypothesisRoot, "AttributePixMap");
186 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
187 aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO" );
188 anAttr = myStudyBuilder->FindOrCreateAttribute(HypothesisRoot, "AttributeSelectable");
189 aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
190 aSelAttr->SetSelectable(false);
193 SALOMEDS::SObject_var AlgorithmsRoot;
194 if (!mySComponentMesh->FindSubObject (Tag_AlgorithmsRoot, AlgorithmsRoot)) {
195 AlgorithmsRoot = myStudyBuilder->NewObjectToTag (mySComponentMesh, Tag_AlgorithmsRoot);
196 anAttr = myStudyBuilder->FindOrCreateAttribute(AlgorithmsRoot, "AttributeName");
197 aName = SALOMEDS::AttributeName::_narrow(anAttr);
198 aName->SetValue(QObject::tr("SMESH_MEN_ALGORITHMS"));
199 anAttr = myStudyBuilder->FindOrCreateAttribute(AlgorithmsRoot, "AttributePixMap");
200 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
201 aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO" );
202 anAttr = myStudyBuilder->FindOrCreateAttribute(AlgorithmsRoot, "AttributeSelectable");
203 aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
204 aSelAttr->SetSelectable(false);
208 SALOMEDS::SObject_var newMesh = myStudyBuilder->NewObject(mySComponentMesh);
209 anAttr = myStudyBuilder->FindOrCreateAttribute(newMesh, "AttributePixMap");
210 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
211 aPixmap->SetPixMap( "ICON_SMESH_TREE_MESH" );
212 anAttr = myStudyBuilder->FindOrCreateAttribute(newMesh, "AttributeIOR");
213 anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
214 anIOR->SetValue(IORToString(M));
215 return SALOMEDS::SObject::_narrow( newMesh );
219 //=======================================================================
220 // function : SetShape
222 //=======================================================================
223 void SMESHGUI_StudyAPI::SetShape (SALOMEDS::SObject_ptr SO_MorSM,
224 SALOMEDS::SObject_ptr SO_GeomShape )
226 // NRI : Temporary added
227 if ( myStudy->GetProperties()->IsLocked() ) {
231 SALOMEDS::SObject_var SO = myStudyBuilder->NewObjectToTag (SO_MorSM, Tag_RefOnShape);
232 myStudyBuilder->Addreference (SO,SO_GeomShape);
235 //=======================================================================
236 // function : GetShapeOnMeshOrSubMesh
238 //=======================================================================
239 GEOM::GEOM_Shape_ptr SMESHGUI_StudyAPI::GetShapeOnMeshOrSubMesh(SALOMEDS::SObject_ptr SO_Mesh_Or_SubMesh)
241 // NRI : Temporary added
242 if ( myStudy->GetProperties()->IsLocked() ) {
243 return GEOM::GEOM_Shape::_nil();
247 GEOM::GEOM_Shape_var Shape;
248 SALOMEDS::SObject_var aSO, aGeom;
249 SALOMEDS::GenericAttribute_var anAttr;
250 SALOMEDS::AttributeIOR_var anIOR;
251 if ( SO_Mesh_Or_SubMesh->FindSubObject( Tag_RefOnShape, aSO ) ) {
252 if ( aSO->ReferencedObject(aGeom) ) {
253 if (aGeom->FindAttribute(anAttr, "AttributeIOR")) {
254 anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
255 return GEOM::GEOM_Shape::_narrow( _orb->string_to_object(anIOR->Value()) );
259 return GEOM::GEOM_Shape::_nil();
262 //=======================================================================
263 // function : AddNewHypothesis
265 //=======================================================================
266 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::AddNewHypothesis (SMESH::SMESH_Hypothesis_ptr H)
268 // NRI : Temporary added
269 if ( myStudy->GetProperties()->IsLocked() ) {
270 return SALOMEDS::SObject::_nil();
274 //Find or Create Hypothesis root
275 SALOMEDS::SObject_var HypothesisRoot;
276 SALOMEDS::GenericAttribute_var anAttr;
277 SALOMEDS::AttributeName_var aName;
278 SALOMEDS::AttributeIOR_var anIOR;
279 SALOMEDS::AttributeSelectable_var aSelAttr;
280 SALOMEDS::AttributePixMap_var aPixmap;
282 if (!mySComponentMesh->FindSubObject (Tag_HypothesisRoot, HypothesisRoot)) {
283 HypothesisRoot = myStudyBuilder->NewObjectToTag (mySComponentMesh, Tag_HypothesisRoot);
284 anAttr = myStudyBuilder->FindOrCreateAttribute(HypothesisRoot, "AttributeName");
285 aName = SALOMEDS::AttributeName::_narrow(anAttr);
286 aName->SetValue(QObject::tr("SMESH_MEN_HYPOTHESIS"));
287 anAttr = myStudyBuilder->FindOrCreateAttribute(HypothesisRoot, "AttributeSelectable");
288 aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
289 aSelAttr->SetSelectable(false);
290 anAttr = myStudyBuilder->FindOrCreateAttribute(HypothesisRoot, "AttributePixMap");
291 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
292 aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO" );
294 // Add New Hypothesis
295 SALOMEDS::SObject_var newHypo = myStudyBuilder->NewObject(HypothesisRoot);
296 anAttr = myStudyBuilder->FindOrCreateAttribute(newHypo, "AttributePixMap");
297 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
298 QString aType = H->GetName();
299 MESSAGE ( " aType " << aType )
300 aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO_" + aType );
301 // if ( aType.compare("LocalLength") == 0 )
302 // aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO_LENGTH" );
303 // else if ( aType.compare("NumberOfSegments") == 0 )
304 // aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO_SEGMENT" );
305 // else if ( aType.compare("MaxElementArea") == 0 )
306 // aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO_AREA" );
307 // else if ( aType.compare("MaxElementVolume") == 0 )
308 // aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO_VOLUME" );
309 anAttr = myStudyBuilder->FindOrCreateAttribute(newHypo, "AttributeIOR");
310 anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
311 anIOR->SetValue(IORToString(H));
312 return SALOMEDS::SObject::_narrow(newHypo);
315 //=======================================================================
316 // function : AddNewAlgorithms
318 //=======================================================================
319 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::AddNewAlgorithms (SMESH::SMESH_Hypothesis_ptr H)
321 // NRI : Temporary added
322 if ( myStudy->GetProperties()->IsLocked() ) {
323 return SALOMEDS::SObject::_nil();
327 //Find or Create Algorithms root
328 SALOMEDS::SObject_var AlgorithmsRoot;
329 SALOMEDS::GenericAttribute_var anAttr;
330 SALOMEDS::AttributeName_var aName;
331 SALOMEDS::AttributeIOR_var anIOR;
332 SALOMEDS::AttributeSelectable_var aSelAttr;
333 SALOMEDS::AttributePixMap_var aPixmap;
335 if (!mySComponentMesh->FindSubObject (Tag_AlgorithmsRoot, AlgorithmsRoot)) {
336 AlgorithmsRoot = myStudyBuilder->NewObjectToTag (mySComponentMesh, Tag_AlgorithmsRoot);
337 anAttr = myStudyBuilder->FindOrCreateAttribute(AlgorithmsRoot, "AttributeName");
338 aName = SALOMEDS::AttributeName::_narrow(anAttr);
339 aName->SetValue(QObject::tr("SMESH_MEN_ALGORITHMS"));
340 anAttr = myStudyBuilder->FindOrCreateAttribute(AlgorithmsRoot, "AttributeSelectable");
341 aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
342 aSelAttr->SetSelectable(false);
343 anAttr = myStudyBuilder->FindOrCreateAttribute(AlgorithmsRoot, "AttributePixMap");
344 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
345 aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO" );
347 // Add New Algorithms
348 SALOMEDS::SObject_var newHypo = myStudyBuilder->NewObject(AlgorithmsRoot);
349 anAttr = myStudyBuilder->FindOrCreateAttribute(newHypo, "AttributePixMap");
350 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
351 QString aType = H->GetName();
352 // if ( aType.compare("Regular_1D") == 0 )
353 aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO_" + aType );
354 // aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO_REGULAR" );
355 // else if ( aType.compare("MEFISTO_2D") == 0 )
356 // aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO_MEFISTO" );
357 // else if ( aType.compare("Quadrangle_2D") == 0 )
358 // aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO_QUAD" );
359 // else if ( aType.compare("Hexa_3D") == 0 )
360 // aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO_HEXA" );
361 anAttr = myStudyBuilder->FindOrCreateAttribute(newHypo, "AttributeIOR");
362 anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
363 anIOR->SetValue(IORToString(H));
364 return SALOMEDS::SObject::_narrow(newHypo);
368 //=======================================================================
369 // function : AddSubMeshOnShape
371 //=======================================================================
372 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::AddSubMeshOnShape (SALOMEDS::SObject_ptr SO_Mesh,
373 SMESH::SMESH_subMesh_ptr SM,
376 // NRI : Temporary added
377 if ( myStudy->GetProperties()->IsLocked() ) {
378 return SALOMEDS::SObject::_nil();
383 Standard_CString Name;
385 if (ST == GEOM::SOLID) {Tag_Shape = Tag_SubMeshOnSolid; Name = strdup(QObject::tr("SMESH_MEN_SubMeshesOnSolid"));}
386 else if (ST == GEOM::FACE) {Tag_Shape = Tag_SubMeshOnFace; Name = strdup(QObject::tr("SMESH_MEN_SubMeshesOnFace"));}
387 else if (ST == GEOM::EDGE) {Tag_Shape = Tag_SubMeshOnEdge; Name = strdup(QObject::tr("SMESH_MEN_SubMeshesOnEdge"));}
388 else if (ST == GEOM::VERTEX){Tag_Shape = Tag_SubMeshOnVertex; Name = strdup(QObject::tr("SMESH_MEN_SubMeshesOnVertex"));}
390 Tag_Shape = Tag_SubMeshOnCompound; Name = strdup(QObject::tr("SMESH_MEN_SubMeshesOnCompound"));
393 SALOMEDS::SObject_var SubmeshesRoot;
394 SALOMEDS::GenericAttribute_var anAttr;
395 SALOMEDS::AttributeName_var aName;
396 SALOMEDS::AttributeIOR_var anIOR;
397 SALOMEDS::AttributeSelectable_var aSelAttr;
399 if (!SO_Mesh->FindSubObject (Tag_Shape,SubmeshesRoot )) {
400 SubmeshesRoot = myStudyBuilder->NewObjectToTag (SO_Mesh, Tag_Shape);
401 anAttr = myStudyBuilder->FindOrCreateAttribute(SubmeshesRoot, "AttributeName");
402 aName = SALOMEDS::AttributeName::_narrow(anAttr);
403 aName->SetValue(Name);
404 anAttr = myStudyBuilder->FindOrCreateAttribute(SubmeshesRoot, "AttributeSelectable");
405 aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
406 aSelAttr->SetSelectable(false);
408 SALOMEDS::SObject_var SO = myStudyBuilder->NewObject (SubmeshesRoot);
409 anAttr = myStudyBuilder->FindOrCreateAttribute(SO, "AttributeIOR");
410 anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
411 anIOR->SetValue(IORToString(SM));
412 return SALOMEDS::SObject::_narrow( SO );
415 //=======================================================================
416 // function : AddSubMeshOnShape
418 //=======================================================================
419 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::AddSubMeshOnShape (SALOMEDS::SObject_ptr SO_Mesh,
420 SALOMEDS::SObject_ptr SO_GeomShape,
421 SMESH::SMESH_subMesh_ptr SM,
424 // NRI : Temporary added
425 if ( myStudy->GetProperties()->IsLocked() ) {
426 return SALOMEDS::SObject::_nil();
430 SALOMEDS::SObject_var SO_SM = AddSubMeshOnShape (SO_Mesh,SM,ST);
431 SetShape (SO_SM,SO_GeomShape);
432 // SetShapeOnSubMesh (SO_SM,SO_GeomShape);
433 return SALOMEDS::SObject::_narrow( SO_SM );
437 //=======================================================================
438 // function : SetHypothesis
440 //=======================================================================
441 void SMESHGUI_StudyAPI::SetHypothesis (SALOMEDS::SObject_ptr SO_MorSM,
442 SALOMEDS::SObject_ptr SO_Hypothesis)
444 // NRI : Temporary added
445 if ( myStudy->GetProperties()->IsLocked() ) {
450 //Find or Create Applied Hypothesis root
451 SALOMEDS::SObject_var AHR;
452 SALOMEDS::GenericAttribute_var anAttr;
453 SALOMEDS::AttributeName_var aName;
454 SALOMEDS::AttributeSelectable_var aSelAttr;
455 SALOMEDS::AttributePixMap_var aPixmap;
457 if (!SO_MorSM->FindSubObject (Tag_RefOnAppliedHypothesis, AHR)) {
458 AHR = myStudyBuilder->NewObjectToTag (SO_MorSM, Tag_RefOnAppliedHypothesis);
459 anAttr = myStudyBuilder->FindOrCreateAttribute(AHR, "AttributeName");
460 aName = SALOMEDS::AttributeName::_narrow(anAttr);
461 aName->SetValue(QObject::tr("SMESH_MEN_APPLIED_HYPOTHESIS"));
462 anAttr = myStudyBuilder->FindOrCreateAttribute(AHR, "AttributeSelectable");
463 aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
464 aSelAttr->SetSelectable(false);
465 anAttr = myStudyBuilder->FindOrCreateAttribute(AHR, "AttributePixMap");
466 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
467 aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO" );
469 SALOMEDS::SObject_var SO = myStudyBuilder->NewObject(AHR);
470 myStudyBuilder->Addreference (SO,SO_Hypothesis);
473 //=======================================================================
474 // function : SetAlgorithms
476 //=======================================================================
477 void SMESHGUI_StudyAPI::SetAlgorithms (SALOMEDS::SObject_ptr SO_MorSM,
478 SALOMEDS::SObject_ptr SO_Algorithms)
480 // NRI : Temporary added
481 if ( myStudy->GetProperties()->IsLocked() ) {
486 //Find or Create Applied Algorithms root
487 SALOMEDS::SObject_var AHR;
488 SALOMEDS::GenericAttribute_var anAttr;
489 SALOMEDS::AttributeName_var aName;
490 SALOMEDS::AttributeSelectable_var aSelAttr;
491 SALOMEDS::AttributePixMap_var aPixmap;
493 if (!SO_MorSM->FindSubObject (Tag_RefOnAppliedAlgorithms, AHR)) {
494 AHR = myStudyBuilder->NewObjectToTag (SO_MorSM, Tag_RefOnAppliedAlgorithms);
495 anAttr = myStudyBuilder->FindOrCreateAttribute(AHR, "AttributeName");
496 aName = SALOMEDS::AttributeName::_narrow(anAttr);
497 aName->SetValue(QObject::tr("SMESH_MEN_APPLIED_ALGORIHTMS"));
498 anAttr = myStudyBuilder->FindOrCreateAttribute(AHR, "AttributeSelectable");
499 aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
500 aSelAttr->SetSelectable(false);
501 anAttr = myStudyBuilder->FindOrCreateAttribute(AHR, "AttributePixMap");
502 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
503 aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO" );
505 SALOMEDS::SObject_var SO = myStudyBuilder->NewObject(AHR);
506 myStudyBuilder->Addreference (SO,SO_Algorithms);
510 //=======================================================================
513 //=======================================================================
514 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::FindMesh (SMESH::SMESH_Mesh_ptr M)
516 // NRI : Temporary added
517 if ( myStudy->GetProperties()->IsLocked() ) {
518 return SALOMEDS::SObject::_nil();
521 return SALOMEDS::SObject::_narrow( myStudy->FindObjectIOR (IORToString(M)) );
524 //=======================================================================
527 //=======================================================================
528 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::FindHypothesisOrAlgorithms (SMESH::SMESH_Hypothesis_ptr H)
530 // NRI : Temporary added
531 if ( myStudy->GetProperties()->IsLocked() ) {
532 return SALOMEDS::SObject::_nil();
535 return SALOMEDS::SObject::_narrow( myStudy->FindObjectIOR (IORToString(H)) );
539 //=======================================================================
542 //=======================================================================
543 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::FindSubMesh (SMESH::SMESH_subMesh_ptr SM)
545 // NRI : Temporary added
546 if ( myStudy->GetProperties()->IsLocked() ) {
547 return SALOMEDS::SObject::_nil();
550 return SALOMEDS::SObject::_narrow( myStudy->FindObjectIOR (IORToString(SM)) );
554 void SMESHGUI_StudyAPI::setOrb()
557 ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance();
558 ASSERT(SINGLETON_<ORB_INIT>::IsAlreadyExisting());
559 _orb = init( 0 , 0 );
561 INFOS("internal error : orb not found");
564 ASSERT(! CORBA::is_nil(_orb));
567 //=======================================================================
570 //=======================================================================
571 void SMESHGUI_StudyAPI::SetTagHypothesisRoot()
573 // NRI : Temporary added
574 if ( myStudy->GetProperties()->IsLocked() ) {
578 SALOMEDS::ChildIterator_var it = myStudy->NewChildIterator(mySComponentMesh);
580 for (; it->More();it->Next()) {
583 Tag_HypothesisRoot = i++;
586 //=======================================================================
589 //=======================================================================
590 void SMESHGUI_StudyAPI::SetName( SALOMEDS::SObject_ptr SO, const char* Name )
592 // NRI : Temporary added
593 if ( myStudy->GetProperties()->IsLocked() ) {
598 SALOMEDS::GenericAttribute_var anAttr;
599 SALOMEDS::AttributeName_var aName;
600 anAttr = myStudyBuilder->FindOrCreateAttribute(SO, "AttributeName");
601 aName = SALOMEDS::AttributeName::_narrow(anAttr);
602 aName->SetValue(Name);
605 //=======================================================================
608 //=======================================================================
609 void SMESHGUI_StudyAPI::UnSetHypothesis (SALOMEDS::SObject_ptr SO_Applied_Hypothesis)
611 // NRI : Temporary added
612 if ( myStudy->GetProperties()->IsLocked() ) {
616 myStudyBuilder->RemoveObject(SO_Applied_Hypothesis);
619 //=======================================================================
622 //=======================================================================
623 void SMESHGUI_StudyAPI::UnSetAlgorithm (SALOMEDS::SObject_ptr SO_Applied_Algorithm)
625 // NRI : Temporary added
626 if ( myStudy->GetProperties()->IsLocked() ) {
630 myStudyBuilder->RemoveObject(SO_Applied_Algorithm);
633 //=======================================================================
636 //=======================================================================
637 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::GetMeshOrSubmesh (SALOMEDS::SObject_ptr SO)
639 // NRI : Temporary added
640 if ( myStudy->GetProperties()->IsLocked() ) {
641 return SALOMEDS::SObject::_nil();
645 SALOMEDS::SObject_var MorSM,SB;
646 SALOMEDS::GenericAttribute_var anAttr;
647 SALOMEDS::AttributeName_var aName;
648 SALOMEDS::AttributeIOR_var anIOR;
650 if (SO->FindAttribute(anAttr, "AttributeIOR")) {
651 anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
652 GEOM::GEOM_Shape_var Shape = GEOM::GEOM_Shape::_narrow( _orb->string_to_object(anIOR->Value()) );
653 if (!Shape->_is_nil()) {
655 MorSM = SO->GetFather();
656 // MESSAGE ( " MorSM shape " << MorSM->GetID() )
657 return SALOMEDS::SObject::_narrow( MorSM);
661 if (SO->ReferencedObject(SB)) {
662 //It's Reference on Hypothesis or Algorithm
663 MorSM = SO->GetFather()->GetFather();
664 // MESSAGE ( " MorSM reference " << MorSM->GetID() )
665 return SALOMEDS::SObject::_narrow( MorSM);
667 // It's SMESH_MEN_APPLIED_HYPOTHESIS or SMESH_MEN_APPLIED_ALGORITHMS or SubMeshesOnFace etc...
668 MorSM = SO->GetFather();
669 // MESSAGE ( " MorSM banniere " << MorSM->GetID() )
670 return SALOMEDS::SObject::_narrow( MorSM);
673 void SMESHGUI_StudyAPI::ModifiedMesh( SALOMEDS::SObject_ptr MorSM, bool right)
675 // NRI : Temporary added
676 if ( myStudy->GetProperties()->IsLocked() ) {
681 SALOMEDS::GenericAttribute_var anAttr;
682 SALOMEDS::AttributePixMap_var aPixmap;
684 anAttr = myStudyBuilder->FindOrCreateAttribute(MorSM, "AttributePixMap");
685 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
687 aPixmap->SetPixMap( "ICON_SMESH_TREE_MESH" );
689 aPixmap->SetPixMap( "ICON_SMESH_TREE_MESH_WARN" );
693 SALOMEDS::ChildIterator_var it = myStudy->NewChildIterator(MorSM);
694 for (; it->More();it->Next()) {
695 SALOMEDS::SObject_var Obj = it->Value();
698 SALOMEDS::ChildIterator_var it1 = myStudy->NewChildIterator(Obj);
699 for (; it1->More();it1->Next()) {
700 SALOMEDS::SObject_var Obj1 = it1->Value();
701 anAttr = myStudyBuilder->FindOrCreateAttribute(Obj1, "AttributePixMap");
702 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
704 aPixmap->SetPixMap( "ICON_SMESH_TREE_MESH" );
706 aPixmap->SetPixMap( "ICON_SMESH_TREE_MESH_WARN" );