2 // File : SMESHGUI_StudyAPI.cxx
3 // Created : Fri May 17 15:23:35 CEST 2002
4 // Author : Yves FRICAUD
7 // Copyright : Open CASCADE
10 #include "SMESHGUI_StudyAPI.h"
11 #include "utilities.h"
12 #include "Utils_ORB_INIT.hxx"
13 #include "Utils_SINGLETON.hxx"
15 #include "QAD_MessageBox.h"
16 #include "QAD_Desktop.h"
17 #include "QAD_Application.h"
22 // Open CASCADE Includes
23 #include "Standard_CString.hxx"
25 static CORBA::ORB_var _orb;
28 long Tag_HypothesisRoot = 1;
29 long Tag_AlgorithmsRoot = 2;
31 long Tag_RefOnShape = 1;
32 long Tag_RefOnAppliedHypothesis = 2;
33 long Tag_RefOnAppliedAlgorithms = 3;
35 long Tag_SubMeshOnVertex = 4;
36 long Tag_SubMeshOnEdge = 5;
37 long Tag_SubMeshOnFace = 6;
38 long Tag_SubMeshOnSolid = 7;
39 long Tag_SubMeshOnCompound = 8;
43 static char* IORToString (CORBA::Object_ptr obj)
45 // MESSAGE ( " IORToString " << _orb->object_to_string(obj) )
46 return _orb->object_to_string(obj);
49 CORBA::Object_ptr SMESHGUI_StudyAPI::StringToIOR (const char* IOR)
51 // MESSAGE ( " StringToIOR " << _orb->string_to_object(IOR) )
52 return _orb->string_to_object(IOR);
54 //=======================================================================
56 // purpose : Constructor
57 //=======================================================================
58 SMESHGUI_StudyAPI::SMESHGUI_StudyAPI ()
62 SMESHGUI_StudyAPI::SMESHGUI_StudyAPI ( SALOMEDS::Study_ptr aStudy,
63 SMESH::SMESH_Gen_ptr CompMesh)
66 myStudyBuilder = aStudy->NewBuilder();
70 // NRI : Temporary added
71 if ( myStudy->GetProperties()->IsLocked() ) {
72 QAD_MessageBox::warn1 ( (QWidget*)QAD_Application::getDesktop(),
73 QObject::tr("WARNING"),
74 QObject::tr("WRN_STUDY_LOCKED"),
75 QObject::tr("BUT_OK") );
81 SALOMEDS::SComponent_var father = aStudy->FindComponent("MESH");
82 SALOMEDS::GenericAttribute_var anAttr;
83 SALOMEDS::AttributeName_var aName;
84 SALOMEDS::AttributePixMap_var aPixmap;
86 if (father->_is_nil()) {
87 father = myStudyBuilder->NewComponent("MESH");
88 anAttr = myStudyBuilder->FindOrCreateAttribute(father, "AttributeName");
89 aName = SALOMEDS::AttributeName::_narrow(anAttr);
90 //NRI aName->SetValue(QObject::tr("SMESH_MEN_COMPONENT"));
91 aName->SetValue( QAD_Application::getDesktop()->getComponentUserName( "SMESH" ) );
92 anAttr = myStudyBuilder->FindOrCreateAttribute(father, "AttributePixMap");
93 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
94 aPixmap->SetPixMap( "ICON_OBJBROWSER_SMESH" );
96 myStudyBuilder->DefineComponentInstance(father, CompMesh );
97 mySComponentMesh = SALOMEDS::SComponent::_narrow( father );
100 //=======================================================================
102 // purpose : Destructor
103 //=======================================================================
104 SMESHGUI_StudyAPI::~SMESHGUI_StudyAPI ()
108 //=======================================================================
111 //=======================================================================
112 void SMESHGUI_StudyAPI::Update(SMESH::SMESH_Gen_ptr CompMesh)
114 // NRI : Temporary added
115 if ( myStudy->GetProperties()->IsLocked() ) {
120 SALOMEDS::SComponent_var father = myStudy->FindComponent("MESH");
121 SALOMEDS::GenericAttribute_var anAttr;
122 SALOMEDS::AttributeName_var aName;
123 SALOMEDS::AttributePixMap_var aPixmap;
125 if (father->_is_nil()) {
126 father = myStudyBuilder->NewComponent("MESH");
127 anAttr = myStudyBuilder->FindOrCreateAttribute(father, "AttributeName");
128 aName = SALOMEDS::AttributeName::_narrow(anAttr);
129 //NRI aName->SetValue(QObject::tr("SMESH_MEN_COMPONENT"));
130 aName->SetValue( QAD_Application::getDesktop()->getComponentUserName( "SMESH" ) );
131 anAttr = myStudyBuilder->FindOrCreateAttribute(father, "AttributePixMap");
132 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
133 aPixmap->SetPixMap( "ICON_OBJBROWSER_SMESH" );
135 myStudyBuilder->DefineComponentInstance(father, CompMesh );
136 mySComponentMesh = SALOMEDS::SComponent::_narrow( father );
139 //=======================================================================
140 // function : AddNewMesh
142 //=======================================================================
144 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::AddNewMesh (SMESH::SMESH_Mesh_ptr M)
146 // NRI : Temporary added
147 if ( myStudy->GetProperties()->IsLocked() ) {
148 return SALOMEDS::SObject::_nil();
152 //Find or Create Hypothesis root
153 SALOMEDS::SObject_var HypothesisRoot;
154 SALOMEDS::GenericAttribute_var anAttr;
155 SALOMEDS::AttributeName_var aName;
156 SALOMEDS::AttributeIOR_var anIOR;
157 SALOMEDS::AttributeSelectable_var aSelAttr;
158 SALOMEDS::AttributePixMap_var aPixmap;
160 if (!mySComponentMesh->FindSubObject (Tag_HypothesisRoot, HypothesisRoot)) {
161 HypothesisRoot = myStudyBuilder->NewObjectToTag (mySComponentMesh, Tag_HypothesisRoot);
162 anAttr = myStudyBuilder->FindOrCreateAttribute(HypothesisRoot, "AttributeName");
163 aName = SALOMEDS::AttributeName::_narrow(anAttr);
164 aName->SetValue(QObject::tr("SMESH_MEN_HYPOTHESIS"));
165 anAttr = myStudyBuilder->FindOrCreateAttribute(HypothesisRoot, "AttributePixMap");
166 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
167 aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO" );
168 anAttr = myStudyBuilder->FindOrCreateAttribute(HypothesisRoot, "AttributeSelectable");
169 aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
170 aSelAttr->SetSelectable(false);
173 SALOMEDS::SObject_var AlgorithmsRoot;
174 if (!mySComponentMesh->FindSubObject (Tag_AlgorithmsRoot, AlgorithmsRoot)) {
175 AlgorithmsRoot = myStudyBuilder->NewObjectToTag (mySComponentMesh, Tag_AlgorithmsRoot);
176 anAttr = myStudyBuilder->FindOrCreateAttribute(AlgorithmsRoot, "AttributeName");
177 aName = SALOMEDS::AttributeName::_narrow(anAttr);
178 aName->SetValue(QObject::tr("SMESH_MEN_ALGORITHMS"));
179 anAttr = myStudyBuilder->FindOrCreateAttribute(AlgorithmsRoot, "AttributePixMap");
180 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
181 aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO" );
182 anAttr = myStudyBuilder->FindOrCreateAttribute(AlgorithmsRoot, "AttributeSelectable");
183 aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
184 aSelAttr->SetSelectable(false);
188 SALOMEDS::SObject_var newMesh = myStudyBuilder->NewObject(mySComponentMesh);
189 anAttr = myStudyBuilder->FindOrCreateAttribute(newMesh, "AttributePixMap");
190 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
191 aPixmap->SetPixMap( "ICON_SMESH_TREE_MESH" );
192 anAttr = myStudyBuilder->FindOrCreateAttribute(newMesh, "AttributeIOR");
193 anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
194 anIOR->SetValue(IORToString(M));
195 return SALOMEDS::SObject::_narrow( newMesh );
199 //=======================================================================
200 // function : SetShape
202 //=======================================================================
203 void SMESHGUI_StudyAPI::SetShape (SALOMEDS::SObject_ptr SO_MorSM,
204 SALOMEDS::SObject_ptr SO_GeomShape )
206 // NRI : Temporary added
207 if ( myStudy->GetProperties()->IsLocked() ) {
211 SALOMEDS::SObject_var SO = myStudyBuilder->NewObjectToTag (SO_MorSM, Tag_RefOnShape);
212 myStudyBuilder->Addreference (SO,SO_GeomShape);
215 //=======================================================================
216 // function : GetShapeOnMeshOrSubMesh
218 //=======================================================================
219 GEOM::GEOM_Shape_ptr SMESHGUI_StudyAPI::GetShapeOnMeshOrSubMesh(SALOMEDS::SObject_ptr SO_Mesh_Or_SubMesh)
221 // NRI : Temporary added
222 if ( myStudy->GetProperties()->IsLocked() ) {
223 return GEOM::GEOM_Shape::_nil();
227 GEOM::GEOM_Shape_var Shape;
228 SALOMEDS::SObject_var aSO, aGeom;
229 SALOMEDS::GenericAttribute_var anAttr;
230 SALOMEDS::AttributeIOR_var anIOR;
231 if ( SO_Mesh_Or_SubMesh->FindSubObject( Tag_RefOnShape, aSO ) ) {
232 if ( aSO->ReferencedObject(aGeom) ) {
233 if (aGeom->FindAttribute(anAttr, "AttributeIOR")) {
234 anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
235 return GEOM::GEOM_Shape::_narrow( _orb->string_to_object(anIOR->Value()) );
239 return GEOM::GEOM_Shape::_nil();
242 //=======================================================================
243 // function : AddNewHypothesis
245 //=======================================================================
246 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::AddNewHypothesis (SMESH::SMESH_Hypothesis_ptr H)
248 // NRI : Temporary added
249 if ( myStudy->GetProperties()->IsLocked() ) {
250 return SALOMEDS::SObject::_nil();
254 //Find or Create Hypothesis root
255 SALOMEDS::SObject_var HypothesisRoot;
256 SALOMEDS::GenericAttribute_var anAttr;
257 SALOMEDS::AttributeName_var aName;
258 SALOMEDS::AttributeIOR_var anIOR;
259 SALOMEDS::AttributeSelectable_var aSelAttr;
260 SALOMEDS::AttributePixMap_var aPixmap;
262 if (!mySComponentMesh->FindSubObject (Tag_HypothesisRoot, HypothesisRoot)) {
263 HypothesisRoot = myStudyBuilder->NewObjectToTag (mySComponentMesh, Tag_HypothesisRoot);
264 anAttr = myStudyBuilder->FindOrCreateAttribute(HypothesisRoot, "AttributeName");
265 aName = SALOMEDS::AttributeName::_narrow(anAttr);
266 aName->SetValue(QObject::tr("SMESH_MEN_HYPOTHESIS"));
267 anAttr = myStudyBuilder->FindOrCreateAttribute(HypothesisRoot, "AttributeSelectable");
268 aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
269 aSelAttr->SetSelectable(false);
270 anAttr = myStudyBuilder->FindOrCreateAttribute(HypothesisRoot, "AttributePixMap");
271 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
272 aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO" );
274 // Add New Hypothesis
275 SALOMEDS::SObject_var newHypo = myStudyBuilder->NewObject(HypothesisRoot);
276 anAttr = myStudyBuilder->FindOrCreateAttribute(newHypo, "AttributePixMap");
277 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
278 QString aType = H->GetName();
279 MESSAGE ( " aType " << aType )
280 aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO_" + aType );
281 // if ( aType.compare("LocalLength") == 0 )
282 // aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO_LENGTH" );
283 // else if ( aType.compare("NumberOfSegments") == 0 )
284 // aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO_SEGMENT" );
285 // else if ( aType.compare("MaxElementArea") == 0 )
286 // aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO_AREA" );
287 // else if ( aType.compare("MaxElementVolume") == 0 )
288 // aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO_VOLUME" );
289 anAttr = myStudyBuilder->FindOrCreateAttribute(newHypo, "AttributeIOR");
290 anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
291 anIOR->SetValue(IORToString(H));
292 return SALOMEDS::SObject::_narrow(newHypo);
295 //=======================================================================
296 // function : AddNewAlgorithms
298 //=======================================================================
299 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::AddNewAlgorithms (SMESH::SMESH_Hypothesis_ptr H)
301 // NRI : Temporary added
302 if ( myStudy->GetProperties()->IsLocked() ) {
303 return SALOMEDS::SObject::_nil();
307 //Find or Create Algorithms root
308 SALOMEDS::SObject_var AlgorithmsRoot;
309 SALOMEDS::GenericAttribute_var anAttr;
310 SALOMEDS::AttributeName_var aName;
311 SALOMEDS::AttributeIOR_var anIOR;
312 SALOMEDS::AttributeSelectable_var aSelAttr;
313 SALOMEDS::AttributePixMap_var aPixmap;
315 if (!mySComponentMesh->FindSubObject (Tag_AlgorithmsRoot, AlgorithmsRoot)) {
316 AlgorithmsRoot = myStudyBuilder->NewObjectToTag (mySComponentMesh, Tag_AlgorithmsRoot);
317 anAttr = myStudyBuilder->FindOrCreateAttribute(AlgorithmsRoot, "AttributeName");
318 aName = SALOMEDS::AttributeName::_narrow(anAttr);
319 aName->SetValue(QObject::tr("SMESH_MEN_ALGORITHMS"));
320 anAttr = myStudyBuilder->FindOrCreateAttribute(AlgorithmsRoot, "AttributeSelectable");
321 aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
322 aSelAttr->SetSelectable(false);
323 anAttr = myStudyBuilder->FindOrCreateAttribute(AlgorithmsRoot, "AttributePixMap");
324 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
325 aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO" );
327 // Add New Algorithms
328 SALOMEDS::SObject_var newHypo = myStudyBuilder->NewObject(AlgorithmsRoot);
329 anAttr = myStudyBuilder->FindOrCreateAttribute(newHypo, "AttributePixMap");
330 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
331 QString aType = H->GetName();
332 // if ( aType.compare("Regular_1D") == 0 )
333 aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO_" + aType );
334 // aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO_REGULAR" );
335 // else if ( aType.compare("MEFISTO_2D") == 0 )
336 // aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO_MEFISTO" );
337 // else if ( aType.compare("Quadrangle_2D") == 0 )
338 // aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO_QUAD" );
339 // else if ( aType.compare("Hexa_3D") == 0 )
340 // aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO_HEXA" );
341 anAttr = myStudyBuilder->FindOrCreateAttribute(newHypo, "AttributeIOR");
342 anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
343 anIOR->SetValue(IORToString(H));
344 return SALOMEDS::SObject::_narrow(newHypo);
348 //=======================================================================
349 // function : AddSubMeshOnShape
351 //=======================================================================
352 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::AddSubMeshOnShape (SALOMEDS::SObject_ptr SO_Mesh,
353 SMESH::SMESH_subMesh_ptr SM,
356 // NRI : Temporary added
357 if ( myStudy->GetProperties()->IsLocked() ) {
358 return SALOMEDS::SObject::_nil();
363 Standard_CString Name;
365 if (ST == GEOM::SOLID) {Tag_Shape = Tag_SubMeshOnSolid; Name = strdup(QObject::tr("SMESH_MEN_SubMeshesOnSolid"));}
366 else if (ST == GEOM::FACE) {Tag_Shape = Tag_SubMeshOnFace; Name = strdup(QObject::tr("SMESH_MEN_SubMeshesOnFace"));}
367 else if (ST == GEOM::EDGE) {Tag_Shape = Tag_SubMeshOnEdge; Name = strdup(QObject::tr("SMESH_MEN_SubMeshesOnEdge"));}
368 else if (ST == GEOM::VERTEX){Tag_Shape = Tag_SubMeshOnVertex; Name = strdup(QObject::tr("SMESH_MEN_SubMeshesOnVertex"));}
370 Tag_Shape = Tag_SubMeshOnCompound; Name = strdup(QObject::tr("SMESH_MEN_SubMeshesOnCompound"));
373 SALOMEDS::SObject_var SubmeshesRoot;
374 SALOMEDS::GenericAttribute_var anAttr;
375 SALOMEDS::AttributeName_var aName;
376 SALOMEDS::AttributeIOR_var anIOR;
377 SALOMEDS::AttributeSelectable_var aSelAttr;
379 if (!SO_Mesh->FindSubObject (Tag_Shape,SubmeshesRoot )) {
380 SubmeshesRoot = myStudyBuilder->NewObjectToTag (SO_Mesh, Tag_Shape);
381 anAttr = myStudyBuilder->FindOrCreateAttribute(SubmeshesRoot, "AttributeName");
382 aName = SALOMEDS::AttributeName::_narrow(anAttr);
383 aName->SetValue(Name);
384 anAttr = myStudyBuilder->FindOrCreateAttribute(SubmeshesRoot, "AttributeSelectable");
385 aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
386 aSelAttr->SetSelectable(false);
388 SALOMEDS::SObject_var SO = myStudyBuilder->NewObject (SubmeshesRoot);
389 anAttr = myStudyBuilder->FindOrCreateAttribute(SO, "AttributeIOR");
390 anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
391 anIOR->SetValue(IORToString(SM));
392 return SALOMEDS::SObject::_narrow( SO );
395 //=======================================================================
396 // function : AddSubMeshOnShape
398 //=======================================================================
399 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::AddSubMeshOnShape (SALOMEDS::SObject_ptr SO_Mesh,
400 SALOMEDS::SObject_ptr SO_GeomShape,
401 SMESH::SMESH_subMesh_ptr SM,
404 // NRI : Temporary added
405 if ( myStudy->GetProperties()->IsLocked() ) {
406 return SALOMEDS::SObject::_nil();
410 SALOMEDS::SObject_var SO_SM = AddSubMeshOnShape (SO_Mesh,SM,ST);
411 SetShape (SO_SM,SO_GeomShape);
412 // SetShapeOnSubMesh (SO_SM,SO_GeomShape);
413 return SALOMEDS::SObject::_narrow( SO_SM );
417 //=======================================================================
418 // function : SetHypothesis
420 //=======================================================================
421 void SMESHGUI_StudyAPI::SetHypothesis (SALOMEDS::SObject_ptr SO_MorSM,
422 SALOMEDS::SObject_ptr SO_Hypothesis)
424 // NRI : Temporary added
425 if ( myStudy->GetProperties()->IsLocked() ) {
430 //Find or Create Applied Hypothesis root
431 SALOMEDS::SObject_var AHR;
432 SALOMEDS::GenericAttribute_var anAttr;
433 SALOMEDS::AttributeName_var aName;
434 SALOMEDS::AttributeSelectable_var aSelAttr;
435 SALOMEDS::AttributePixMap_var aPixmap;
437 if (!SO_MorSM->FindSubObject (Tag_RefOnAppliedHypothesis, AHR)) {
438 AHR = myStudyBuilder->NewObjectToTag (SO_MorSM, Tag_RefOnAppliedHypothesis);
439 anAttr = myStudyBuilder->FindOrCreateAttribute(AHR, "AttributeName");
440 aName = SALOMEDS::AttributeName::_narrow(anAttr);
441 aName->SetValue(QObject::tr("SMESH_MEN_APPLIED_HYPOTHESIS"));
442 anAttr = myStudyBuilder->FindOrCreateAttribute(AHR, "AttributeSelectable");
443 aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
444 aSelAttr->SetSelectable(false);
445 anAttr = myStudyBuilder->FindOrCreateAttribute(AHR, "AttributePixMap");
446 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
447 aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO" );
449 SALOMEDS::SObject_var SO = myStudyBuilder->NewObject(AHR);
450 myStudyBuilder->Addreference (SO,SO_Hypothesis);
453 //=======================================================================
454 // function : SetAlgorithms
456 //=======================================================================
457 void SMESHGUI_StudyAPI::SetAlgorithms (SALOMEDS::SObject_ptr SO_MorSM,
458 SALOMEDS::SObject_ptr SO_Algorithms)
460 // NRI : Temporary added
461 if ( myStudy->GetProperties()->IsLocked() ) {
466 //Find or Create Applied Algorithms root
467 SALOMEDS::SObject_var AHR;
468 SALOMEDS::GenericAttribute_var anAttr;
469 SALOMEDS::AttributeName_var aName;
470 SALOMEDS::AttributeSelectable_var aSelAttr;
471 SALOMEDS::AttributePixMap_var aPixmap;
473 if (!SO_MorSM->FindSubObject (Tag_RefOnAppliedAlgorithms, AHR)) {
474 AHR = myStudyBuilder->NewObjectToTag (SO_MorSM, Tag_RefOnAppliedAlgorithms);
475 anAttr = myStudyBuilder->FindOrCreateAttribute(AHR, "AttributeName");
476 aName = SALOMEDS::AttributeName::_narrow(anAttr);
477 aName->SetValue(QObject::tr("SMESH_MEN_APPLIED_ALGORIHTMS"));
478 anAttr = myStudyBuilder->FindOrCreateAttribute(AHR, "AttributeSelectable");
479 aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
480 aSelAttr->SetSelectable(false);
481 anAttr = myStudyBuilder->FindOrCreateAttribute(AHR, "AttributePixMap");
482 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
483 aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO" );
485 SALOMEDS::SObject_var SO = myStudyBuilder->NewObject(AHR);
486 myStudyBuilder->Addreference (SO,SO_Algorithms);
490 //=======================================================================
493 //=======================================================================
494 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::FindMesh (SMESH::SMESH_Mesh_ptr M)
496 // NRI : Temporary added
497 if ( myStudy->GetProperties()->IsLocked() ) {
498 return SALOMEDS::SObject::_nil();
501 return SALOMEDS::SObject::_narrow( myStudy->FindObjectIOR (IORToString(M)) );
504 //=======================================================================
507 //=======================================================================
508 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::FindHypothesisOrAlgorithms (SMESH::SMESH_Hypothesis_ptr H)
510 // NRI : Temporary added
511 if ( myStudy->GetProperties()->IsLocked() ) {
512 return SALOMEDS::SObject::_nil();
515 return SALOMEDS::SObject::_narrow( myStudy->FindObjectIOR (IORToString(H)) );
519 //=======================================================================
522 //=======================================================================
523 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::FindSubMesh (SMESH::SMESH_subMesh_ptr SM)
525 // NRI : Temporary added
526 if ( myStudy->GetProperties()->IsLocked() ) {
527 return SALOMEDS::SObject::_nil();
530 return SALOMEDS::SObject::_narrow( myStudy->FindObjectIOR (IORToString(SM)) );
534 void SMESHGUI_StudyAPI::setOrb()
537 ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance();
538 ASSERT(SINGLETON_<ORB_INIT>::IsAlreadyExisting());
539 _orb = init( 0 , 0 );
541 INFOS("internal error : orb not found");
544 ASSERT(! CORBA::is_nil(_orb));
547 //=======================================================================
550 //=======================================================================
551 void SMESHGUI_StudyAPI::SetTagHypothesisRoot()
553 // NRI : Temporary added
554 if ( myStudy->GetProperties()->IsLocked() ) {
558 SALOMEDS::ChildIterator_var it = myStudy->NewChildIterator(mySComponentMesh);
560 for (; it->More();it->Next()) {
563 Tag_HypothesisRoot = i++;
566 //=======================================================================
569 //=======================================================================
570 void SMESHGUI_StudyAPI::SetName( SALOMEDS::SObject_ptr SO, const char* Name )
572 // NRI : Temporary added
573 if ( myStudy->GetProperties()->IsLocked() ) {
578 SALOMEDS::GenericAttribute_var anAttr;
579 SALOMEDS::AttributeName_var aName;
580 anAttr = myStudyBuilder->FindOrCreateAttribute(SO, "AttributeName");
581 aName = SALOMEDS::AttributeName::_narrow(anAttr);
582 aName->SetValue(Name);
585 //=======================================================================
588 //=======================================================================
589 void SMESHGUI_StudyAPI::UnSetHypothesis (SALOMEDS::SObject_ptr SO_Applied_Hypothesis)
591 // NRI : Temporary added
592 if ( myStudy->GetProperties()->IsLocked() ) {
596 myStudyBuilder->RemoveObject(SO_Applied_Hypothesis);
599 //=======================================================================
602 //=======================================================================
603 void SMESHGUI_StudyAPI::UnSetAlgorithm (SALOMEDS::SObject_ptr SO_Applied_Algorithm)
605 // NRI : Temporary added
606 if ( myStudy->GetProperties()->IsLocked() ) {
610 myStudyBuilder->RemoveObject(SO_Applied_Algorithm);
613 //=======================================================================
616 //=======================================================================
617 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::GetMeshOrSubmesh (SALOMEDS::SObject_ptr SO)
619 // NRI : Temporary added
620 if ( myStudy->GetProperties()->IsLocked() ) {
621 return SALOMEDS::SObject::_nil();
625 SALOMEDS::SObject_var MorSM,SB;
626 SALOMEDS::GenericAttribute_var anAttr;
627 SALOMEDS::AttributeName_var aName;
628 SALOMEDS::AttributeIOR_var anIOR;
630 if (SO->FindAttribute(anAttr, "AttributeIOR")) {
631 anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
632 GEOM::GEOM_Shape_var Shape = GEOM::GEOM_Shape::_narrow( _orb->string_to_object(anIOR->Value()) );
633 if (!Shape->_is_nil()) {
635 MorSM = SO->GetFather();
636 // MESSAGE ( " MorSM shape " << MorSM->GetID() )
637 return SALOMEDS::SObject::_narrow( MorSM);
641 if (SO->ReferencedObject(SB)) {
642 //It's Reference on Hypothesis or Algorithm
643 MorSM = SO->GetFather()->GetFather();
644 // MESSAGE ( " MorSM reference " << MorSM->GetID() )
645 return SALOMEDS::SObject::_narrow( MorSM);
647 // It's SMESH_MEN_APPLIED_HYPOTHESIS or SMESH_MEN_APPLIED_ALGORITHMS or SubMeshesOnFace etc...
648 MorSM = SO->GetFather();
649 // MESSAGE ( " MorSM banniere " << MorSM->GetID() )
650 return SALOMEDS::SObject::_narrow( MorSM);
653 void SMESHGUI_StudyAPI::ModifiedMesh( SALOMEDS::SObject_ptr MorSM, bool right)
655 // NRI : Temporary added
656 if ( myStudy->GetProperties()->IsLocked() ) {
661 SALOMEDS::GenericAttribute_var anAttr;
662 SALOMEDS::AttributePixMap_var aPixmap;
664 anAttr = myStudyBuilder->FindOrCreateAttribute(MorSM, "AttributePixMap");
665 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
667 aPixmap->SetPixMap( "ICON_SMESH_TREE_MESH" );
669 aPixmap->SetPixMap( "ICON_SMESH_TREE_MESH_WARN" );
673 SALOMEDS::ChildIterator_var it = myStudy->NewChildIterator(MorSM);
674 for (; it->More();it->Next()) {
675 SALOMEDS::SObject_var Obj = it->Value();
678 SALOMEDS::ChildIterator_var it1 = myStudy->NewChildIterator(Obj);
679 for (; it1->More();it1->Next()) {
680 SALOMEDS::SObject_var Obj1 = it1->Value();
681 anAttr = myStudyBuilder->FindOrCreateAttribute(Obj1, "AttributePixMap");
682 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
684 aPixmap->SetPixMap( "ICON_SMESH_TREE_MESH" );
686 aPixmap->SetPixMap( "ICON_SMESH_TREE_MESH_WARN" );