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_Application.h"
21 // Open CASCADE Includes
22 #include "Standard_CString.hxx"
24 static CORBA::ORB_var _orb;
27 long Tag_HypothesisRoot = 1;
28 long Tag_AlgorithmsRoot = 2;
30 long Tag_RefOnShape = 1;
31 long Tag_RefOnAppliedHypothesis = 2;
32 long Tag_RefOnAppliedAlgorithms = 3;
34 long Tag_SubMeshOnVertex = 4;
35 long Tag_SubMeshOnEdge = 5;
36 long Tag_SubMeshOnFace = 6;
37 long Tag_SubMeshOnSolid = 7;
38 long Tag_SubMeshOnCompound = 8;
42 static char* IORToString (CORBA::Object_ptr obj)
44 // MESSAGE ( " IORToString " << _orb->object_to_string(obj) )
45 return _orb->object_to_string(obj);
48 CORBA::Object_ptr SMESHGUI_StudyAPI::StringToIOR (const char* IOR)
50 // MESSAGE ( " StringToIOR " << _orb->string_to_object(IOR) )
51 return _orb->string_to_object(IOR);
53 //=======================================================================
55 // purpose : Constructor
56 //=======================================================================
57 SMESHGUI_StudyAPI::SMESHGUI_StudyAPI ()
61 SMESHGUI_StudyAPI::SMESHGUI_StudyAPI ( SALOMEDS::Study_ptr aStudy,
62 SMESH::SMESH_Gen_ptr CompMesh)
65 myStudyBuilder = aStudy->NewBuilder();
69 // NRI : Temporary added
70 if ( myStudy->GetProperties()->IsLocked() ) {
71 QAD_MessageBox::warn1 ( (QWidget*)QAD_Application::getDesktop(),
72 QObject::tr("WARNING"),
73 QObject::tr("WRN_STUDY_LOCKED"),
74 QObject::tr("BUT_OK") );
80 SALOMEDS::SComponent_var father = aStudy->FindComponent("MESH");
81 SALOMEDS::GenericAttribute_var anAttr;
82 SALOMEDS::AttributeName_var aName;
83 SALOMEDS::AttributePixMap_var aPixmap;
85 if (father->_is_nil()) {
86 father = myStudyBuilder->NewComponent("MESH");
87 anAttr = myStudyBuilder->FindOrCreateAttribute(father, "AttributeName");
88 aName = SALOMEDS::AttributeName::_narrow(anAttr);
89 //NRI aName->SetValue(QObject::tr("SMESH_MEN_COMPONENT"));
90 aName->SetValue( QAD_Application::getDesktop()->getComponentUserName( "SMESH" ) );
91 anAttr = myStudyBuilder->FindOrCreateAttribute(father, "AttributePixMap");
92 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
93 aPixmap->SetPixMap( "ICON_OBJBROWSER_SMESH" );
95 myStudyBuilder->DefineComponentInstance(father, CompMesh );
96 mySComponentMesh = SALOMEDS::SComponent::_narrow( father );
99 //=======================================================================
101 // purpose : Destructor
102 //=======================================================================
103 SMESHGUI_StudyAPI::~SMESHGUI_StudyAPI ()
107 //=======================================================================
110 //=======================================================================
111 void SMESHGUI_StudyAPI::Update(SMESH::SMESH_Gen_ptr CompMesh)
113 // NRI : Temporary added
114 if ( myStudy->GetProperties()->IsLocked() ) {
119 SALOMEDS::SComponent_var father = myStudy->FindComponent("MESH");
120 SALOMEDS::GenericAttribute_var anAttr;
121 SALOMEDS::AttributeName_var aName;
122 SALOMEDS::AttributePixMap_var aPixmap;
124 if (father->_is_nil()) {
125 father = myStudyBuilder->NewComponent("MESH");
126 anAttr = myStudyBuilder->FindOrCreateAttribute(father, "AttributeName");
127 aName = SALOMEDS::AttributeName::_narrow(anAttr);
128 //NRI aName->SetValue(QObject::tr("SMESH_MEN_COMPONENT"));
129 aName->SetValue( QAD_Application::getDesktop()->getComponentUserName( "SMESH" ) );
130 anAttr = myStudyBuilder->FindOrCreateAttribute(father, "AttributePixMap");
131 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
132 aPixmap->SetPixMap( "ICON_OBJBROWSER_SMESH" );
134 myStudyBuilder->DefineComponentInstance(father, CompMesh );
135 mySComponentMesh = SALOMEDS::SComponent::_narrow( father );
138 //=======================================================================
139 // function : AddNewMesh
141 //=======================================================================
143 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::AddNewMesh (SMESH::SMESH_Mesh_ptr M)
145 // NRI : Temporary added
146 if ( myStudy->GetProperties()->IsLocked() ) {
147 return SALOMEDS::SObject::_nil();
151 //Find or Create Hypothesis root
152 SALOMEDS::SObject_var HypothesisRoot;
153 SALOMEDS::GenericAttribute_var anAttr;
154 SALOMEDS::AttributeName_var aName;
155 SALOMEDS::AttributeIOR_var anIOR;
156 SALOMEDS::AttributeSelectable_var aSelAttr;
157 SALOMEDS::AttributePixMap_var aPixmap;
159 if (!mySComponentMesh->FindSubObject (Tag_HypothesisRoot, HypothesisRoot)) {
160 HypothesisRoot = myStudyBuilder->NewObjectToTag (mySComponentMesh, Tag_HypothesisRoot);
161 anAttr = myStudyBuilder->FindOrCreateAttribute(HypothesisRoot, "AttributeName");
162 aName = SALOMEDS::AttributeName::_narrow(anAttr);
163 aName->SetValue(QObject::tr("SMESH_MEN_HYPOTHESIS"));
164 anAttr = myStudyBuilder->FindOrCreateAttribute(HypothesisRoot, "AttributePixMap");
165 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
166 aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO" );
167 anAttr = myStudyBuilder->FindOrCreateAttribute(HypothesisRoot, "AttributeSelectable");
168 aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
169 aSelAttr->SetSelectable(false);
172 SALOMEDS::SObject_var AlgorithmsRoot;
173 if (!mySComponentMesh->FindSubObject (Tag_AlgorithmsRoot, AlgorithmsRoot)) {
174 AlgorithmsRoot = myStudyBuilder->NewObjectToTag (mySComponentMesh, Tag_AlgorithmsRoot);
175 anAttr = myStudyBuilder->FindOrCreateAttribute(AlgorithmsRoot, "AttributeName");
176 aName = SALOMEDS::AttributeName::_narrow(anAttr);
177 aName->SetValue(QObject::tr("SMESH_MEN_ALGORITHMS"));
178 anAttr = myStudyBuilder->FindOrCreateAttribute(AlgorithmsRoot, "AttributePixMap");
179 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
180 aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO" );
181 anAttr = myStudyBuilder->FindOrCreateAttribute(AlgorithmsRoot, "AttributeSelectable");
182 aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
183 aSelAttr->SetSelectable(false);
187 SALOMEDS::SObject_var newMesh = myStudyBuilder->NewObject(mySComponentMesh);
188 anAttr = myStudyBuilder->FindOrCreateAttribute(newMesh, "AttributePixMap");
189 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
190 aPixmap->SetPixMap( "ICON_SMESH_TREE_MESH" );
191 anAttr = myStudyBuilder->FindOrCreateAttribute(newMesh, "AttributeIOR");
192 anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
193 anIOR->SetValue(IORToString(M));
194 return SALOMEDS::SObject::_narrow( newMesh );
198 //=======================================================================
199 // function : SetShape
201 //=======================================================================
202 void SMESHGUI_StudyAPI::SetShape (SALOMEDS::SObject_ptr SO_MorSM,
203 SALOMEDS::SObject_ptr SO_GeomShape )
205 // NRI : Temporary added
206 if ( myStudy->GetProperties()->IsLocked() ) {
210 SALOMEDS::SObject_var SO = myStudyBuilder->NewObjectToTag (SO_MorSM, Tag_RefOnShape);
211 myStudyBuilder->Addreference (SO,SO_GeomShape);
214 //=======================================================================
215 // function : GetShapeOnMeshOrSubMesh
217 //=======================================================================
218 GEOM::GEOM_Shape_ptr SMESHGUI_StudyAPI::GetShapeOnMeshOrSubMesh(SALOMEDS::SObject_ptr SO_Mesh_Or_SubMesh)
220 // NRI : Temporary added
221 if ( myStudy->GetProperties()->IsLocked() ) {
222 return GEOM::GEOM_Shape::_nil();
226 GEOM::GEOM_Shape_var Shape;
227 SALOMEDS::SObject_var aSO, aGeom;
228 SALOMEDS::GenericAttribute_var anAttr;
229 SALOMEDS::AttributeIOR_var anIOR;
230 if ( SO_Mesh_Or_SubMesh->FindSubObject( Tag_RefOnShape, aSO ) ) {
231 if ( aSO->ReferencedObject(aGeom) ) {
232 if (aGeom->FindAttribute(anAttr, "AttributeIOR")) {
233 anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
234 return GEOM::GEOM_Shape::_narrow( _orb->string_to_object(anIOR->Value()) );
238 return GEOM::GEOM_Shape::_nil();
241 //=======================================================================
242 // function : AddNewHypothesis
244 //=======================================================================
245 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::AddNewHypothesis (SMESH::SMESH_Hypothesis_ptr H)
247 // NRI : Temporary added
248 if ( myStudy->GetProperties()->IsLocked() ) {
249 return SALOMEDS::SObject::_nil();
253 //Find or Create Hypothesis root
254 SALOMEDS::SObject_var HypothesisRoot;
255 SALOMEDS::GenericAttribute_var anAttr;
256 SALOMEDS::AttributeName_var aName;
257 SALOMEDS::AttributeIOR_var anIOR;
258 SALOMEDS::AttributeSelectable_var aSelAttr;
259 SALOMEDS::AttributePixMap_var aPixmap;
261 if (!mySComponentMesh->FindSubObject (Tag_HypothesisRoot, HypothesisRoot)) {
262 HypothesisRoot = myStudyBuilder->NewObjectToTag (mySComponentMesh, Tag_HypothesisRoot);
263 anAttr = myStudyBuilder->FindOrCreateAttribute(HypothesisRoot, "AttributeName");
264 aName = SALOMEDS::AttributeName::_narrow(anAttr);
265 aName->SetValue(QObject::tr("SMESH_MEN_HYPOTHESIS"));
266 anAttr = myStudyBuilder->FindOrCreateAttribute(HypothesisRoot, "AttributeSelectable");
267 aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
268 aSelAttr->SetSelectable(false);
269 anAttr = myStudyBuilder->FindOrCreateAttribute(HypothesisRoot, "AttributePixMap");
270 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
271 aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO" );
273 // Add New Hypothesis
274 SALOMEDS::SObject_var newHypo = myStudyBuilder->NewObject(HypothesisRoot);
275 anAttr = myStudyBuilder->FindOrCreateAttribute(newHypo, "AttributePixMap");
276 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
277 QString aType = H->GetName();
278 MESSAGE ( " aType " << aType )
279 aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO_" + aType );
280 // if ( aType.compare("LocalLength") == 0 )
281 // aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO_LENGTH" );
282 // else if ( aType.compare("NumberOfSegments") == 0 )
283 // aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO_SEGMENT" );
284 // else if ( aType.compare("MaxElementArea") == 0 )
285 // aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO_AREA" );
286 // else if ( aType.compare("MaxElementVolume") == 0 )
287 // aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO_VOLUME" );
288 anAttr = myStudyBuilder->FindOrCreateAttribute(newHypo, "AttributeIOR");
289 anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
290 anIOR->SetValue(IORToString(H));
291 return SALOMEDS::SObject::_narrow(newHypo);
294 //=======================================================================
295 // function : AddNewAlgorithms
297 //=======================================================================
298 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::AddNewAlgorithms (SMESH::SMESH_Hypothesis_ptr H)
300 // NRI : Temporary added
301 if ( myStudy->GetProperties()->IsLocked() ) {
302 return SALOMEDS::SObject::_nil();
306 //Find or Create Algorithms root
307 SALOMEDS::SObject_var AlgorithmsRoot;
308 SALOMEDS::GenericAttribute_var anAttr;
309 SALOMEDS::AttributeName_var aName;
310 SALOMEDS::AttributeIOR_var anIOR;
311 SALOMEDS::AttributeSelectable_var aSelAttr;
312 SALOMEDS::AttributePixMap_var aPixmap;
314 if (!mySComponentMesh->FindSubObject (Tag_AlgorithmsRoot, AlgorithmsRoot)) {
315 AlgorithmsRoot = myStudyBuilder->NewObjectToTag (mySComponentMesh, Tag_AlgorithmsRoot);
316 anAttr = myStudyBuilder->FindOrCreateAttribute(AlgorithmsRoot, "AttributeName");
317 aName = SALOMEDS::AttributeName::_narrow(anAttr);
318 aName->SetValue(QObject::tr("SMESH_MEN_ALGORITHMS"));
319 anAttr = myStudyBuilder->FindOrCreateAttribute(AlgorithmsRoot, "AttributeSelectable");
320 aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
321 aSelAttr->SetSelectable(false);
322 anAttr = myStudyBuilder->FindOrCreateAttribute(AlgorithmsRoot, "AttributePixMap");
323 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
324 aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO" );
326 // Add New Algorithms
327 SALOMEDS::SObject_var newHypo = myStudyBuilder->NewObject(AlgorithmsRoot);
328 anAttr = myStudyBuilder->FindOrCreateAttribute(newHypo, "AttributePixMap");
329 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
330 QString aType = H->GetName();
331 // if ( aType.compare("Regular_1D") == 0 )
332 aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO_" + aType );
333 // aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO_REGULAR" );
334 // else if ( aType.compare("MEFISTO_2D") == 0 )
335 // aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO_MEFISTO" );
336 // else if ( aType.compare("Quadrangle_2D") == 0 )
337 // aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO_QUAD" );
338 // else if ( aType.compare("Hexa_3D") == 0 )
339 // aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO_HEXA" );
340 anAttr = myStudyBuilder->FindOrCreateAttribute(newHypo, "AttributeIOR");
341 anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
342 anIOR->SetValue(IORToString(H));
343 return SALOMEDS::SObject::_narrow(newHypo);
347 //=======================================================================
348 // function : AddSubMeshOnShape
350 //=======================================================================
351 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::AddSubMeshOnShape (SALOMEDS::SObject_ptr SO_Mesh,
352 SMESH::SMESH_subMesh_ptr SM,
355 // NRI : Temporary added
356 if ( myStudy->GetProperties()->IsLocked() ) {
357 return SALOMEDS::SObject::_nil();
362 Standard_CString Name;
364 if (ST == GEOM::SOLID) {Tag_Shape = Tag_SubMeshOnSolid; Name = strdup(QObject::tr("SMESH_MEN_SubMeshesOnSolid"));}
365 else if (ST == GEOM::FACE) {Tag_Shape = Tag_SubMeshOnFace; Name = strdup(QObject::tr("SMESH_MEN_SubMeshesOnFace"));}
366 else if (ST == GEOM::EDGE) {Tag_Shape = Tag_SubMeshOnEdge; Name = strdup(QObject::tr("SMESH_MEN_SubMeshesOnEdge"));}
367 else if (ST == GEOM::VERTEX){Tag_Shape = Tag_SubMeshOnVertex; Name = strdup(QObject::tr("SMESH_MEN_SubMeshesOnVertex"));}
369 Tag_Shape = Tag_SubMeshOnCompound; Name = strdup(QObject::tr("SMESH_MEN_SubMeshesOnCompound"));
372 SALOMEDS::SObject_var SubmeshesRoot;
373 SALOMEDS::GenericAttribute_var anAttr;
374 SALOMEDS::AttributeName_var aName;
375 SALOMEDS::AttributeIOR_var anIOR;
376 SALOMEDS::AttributeSelectable_var aSelAttr;
378 if (!SO_Mesh->FindSubObject (Tag_Shape,SubmeshesRoot )) {
379 SubmeshesRoot = myStudyBuilder->NewObjectToTag (SO_Mesh, Tag_Shape);
380 anAttr = myStudyBuilder->FindOrCreateAttribute(SubmeshesRoot, "AttributeName");
381 aName = SALOMEDS::AttributeName::_narrow(anAttr);
382 aName->SetValue(Name);
383 anAttr = myStudyBuilder->FindOrCreateAttribute(SubmeshesRoot, "AttributeSelectable");
384 aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
385 aSelAttr->SetSelectable(false);
387 SALOMEDS::SObject_var SO = myStudyBuilder->NewObject (SubmeshesRoot);
388 anAttr = myStudyBuilder->FindOrCreateAttribute(SO, "AttributeIOR");
389 anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
390 anIOR->SetValue(IORToString(SM));
391 return SALOMEDS::SObject::_narrow( SO );
394 //=======================================================================
395 // function : AddSubMeshOnShape
397 //=======================================================================
398 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::AddSubMeshOnShape (SALOMEDS::SObject_ptr SO_Mesh,
399 SALOMEDS::SObject_ptr SO_GeomShape,
400 SMESH::SMESH_subMesh_ptr SM,
403 // NRI : Temporary added
404 if ( myStudy->GetProperties()->IsLocked() ) {
405 return SALOMEDS::SObject::_nil();
409 SALOMEDS::SObject_var SO_SM = AddSubMeshOnShape (SO_Mesh,SM,ST);
410 SetShape (SO_SM,SO_GeomShape);
411 // SetShapeOnSubMesh (SO_SM,SO_GeomShape);
412 return SALOMEDS::SObject::_narrow( SO_SM );
416 //=======================================================================
417 // function : SetHypothesis
419 //=======================================================================
420 void SMESHGUI_StudyAPI::SetHypothesis (SALOMEDS::SObject_ptr SO_MorSM,
421 SALOMEDS::SObject_ptr SO_Hypothesis)
423 // NRI : Temporary added
424 if ( myStudy->GetProperties()->IsLocked() ) {
429 //Find or Create Applied Hypothesis root
430 SALOMEDS::SObject_var AHR;
431 SALOMEDS::GenericAttribute_var anAttr;
432 SALOMEDS::AttributeName_var aName;
433 SALOMEDS::AttributeSelectable_var aSelAttr;
434 SALOMEDS::AttributePixMap_var aPixmap;
436 if (!SO_MorSM->FindSubObject (Tag_RefOnAppliedHypothesis, AHR)) {
437 AHR = myStudyBuilder->NewObjectToTag (SO_MorSM, Tag_RefOnAppliedHypothesis);
438 anAttr = myStudyBuilder->FindOrCreateAttribute(AHR, "AttributeName");
439 aName = SALOMEDS::AttributeName::_narrow(anAttr);
440 aName->SetValue(QObject::tr("SMESH_MEN_APPLIED_HYPOTHESIS"));
441 anAttr = myStudyBuilder->FindOrCreateAttribute(AHR, "AttributeSelectable");
442 aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
443 aSelAttr->SetSelectable(false);
444 anAttr = myStudyBuilder->FindOrCreateAttribute(AHR, "AttributePixMap");
445 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
446 aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO" );
448 SALOMEDS::SObject_var SO = myStudyBuilder->NewObject(AHR);
449 myStudyBuilder->Addreference (SO,SO_Hypothesis);
452 //=======================================================================
453 // function : SetAlgorithms
455 //=======================================================================
456 void SMESHGUI_StudyAPI::SetAlgorithms (SALOMEDS::SObject_ptr SO_MorSM,
457 SALOMEDS::SObject_ptr SO_Algorithms)
459 // NRI : Temporary added
460 if ( myStudy->GetProperties()->IsLocked() ) {
465 //Find or Create Applied Algorithms root
466 SALOMEDS::SObject_var AHR;
467 SALOMEDS::GenericAttribute_var anAttr;
468 SALOMEDS::AttributeName_var aName;
469 SALOMEDS::AttributeSelectable_var aSelAttr;
470 SALOMEDS::AttributePixMap_var aPixmap;
472 if (!SO_MorSM->FindSubObject (Tag_RefOnAppliedAlgorithms, AHR)) {
473 AHR = myStudyBuilder->NewObjectToTag (SO_MorSM, Tag_RefOnAppliedAlgorithms);
474 anAttr = myStudyBuilder->FindOrCreateAttribute(AHR, "AttributeName");
475 aName = SALOMEDS::AttributeName::_narrow(anAttr);
476 aName->SetValue(QObject::tr("SMESH_MEN_APPLIED_ALGORIHTMS"));
477 anAttr = myStudyBuilder->FindOrCreateAttribute(AHR, "AttributeSelectable");
478 aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
479 aSelAttr->SetSelectable(false);
480 anAttr = myStudyBuilder->FindOrCreateAttribute(AHR, "AttributePixMap");
481 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
482 aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO" );
484 SALOMEDS::SObject_var SO = myStudyBuilder->NewObject(AHR);
485 myStudyBuilder->Addreference (SO,SO_Algorithms);
489 //=======================================================================
492 //=======================================================================
493 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::FindMesh (SMESH::SMESH_Mesh_ptr M)
495 // NRI : Temporary added
496 if ( myStudy->GetProperties()->IsLocked() ) {
497 return SALOMEDS::SObject::_nil();
500 return SALOMEDS::SObject::_narrow( myStudy->FindObjectIOR (IORToString(M)) );
503 //=======================================================================
506 //=======================================================================
507 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::FindHypothesisOrAlgorithms (SMESH::SMESH_Hypothesis_ptr H)
509 // NRI : Temporary added
510 if ( myStudy->GetProperties()->IsLocked() ) {
511 return SALOMEDS::SObject::_nil();
514 return SALOMEDS::SObject::_narrow( myStudy->FindObjectIOR (IORToString(H)) );
518 //=======================================================================
521 //=======================================================================
522 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::FindSubMesh (SMESH::SMESH_subMesh_ptr SM)
524 // NRI : Temporary added
525 if ( myStudy->GetProperties()->IsLocked() ) {
526 return SALOMEDS::SObject::_nil();
529 return SALOMEDS::SObject::_narrow( myStudy->FindObjectIOR (IORToString(SM)) );
533 void SMESHGUI_StudyAPI::setOrb()
536 ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance();
537 ASSERT(SINGLETON_<ORB_INIT>::IsAlreadyExisting());
538 _orb = init( 0 , 0 );
540 INFOS("internal error : orb not found");
543 ASSERT(! CORBA::is_nil(_orb));
546 //=======================================================================
549 //=======================================================================
550 void SMESHGUI_StudyAPI::SetTagHypothesisRoot()
552 // NRI : Temporary added
553 if ( myStudy->GetProperties()->IsLocked() ) {
557 SALOMEDS::ChildIterator_var it = myStudy->NewChildIterator(mySComponentMesh);
559 for (; it->More();it->Next()) {
562 Tag_HypothesisRoot = i++;
565 //=======================================================================
568 //=======================================================================
569 void SMESHGUI_StudyAPI::SetName( SALOMEDS::SObject_ptr SO, const char* Name )
571 // NRI : Temporary added
572 if ( myStudy->GetProperties()->IsLocked() ) {
577 SALOMEDS::GenericAttribute_var anAttr;
578 SALOMEDS::AttributeName_var aName;
579 anAttr = myStudyBuilder->FindOrCreateAttribute(SO, "AttributeName");
580 aName = SALOMEDS::AttributeName::_narrow(anAttr);
581 aName->SetValue(Name);
584 //=======================================================================
587 //=======================================================================
588 void SMESHGUI_StudyAPI::UnSetHypothesis (SALOMEDS::SObject_ptr SO_Applied_Hypothesis)
590 // NRI : Temporary added
591 if ( myStudy->GetProperties()->IsLocked() ) {
595 myStudyBuilder->RemoveObject(SO_Applied_Hypothesis);
598 //=======================================================================
601 //=======================================================================
602 void SMESHGUI_StudyAPI::UnSetAlgorithm (SALOMEDS::SObject_ptr SO_Applied_Algorithm)
604 // NRI : Temporary added
605 if ( myStudy->GetProperties()->IsLocked() ) {
609 myStudyBuilder->RemoveObject(SO_Applied_Algorithm);
612 //=======================================================================
615 //=======================================================================
616 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::GetMeshOrSubmesh (SALOMEDS::SObject_ptr SO)
618 // NRI : Temporary added
619 if ( myStudy->GetProperties()->IsLocked() ) {
620 return SALOMEDS::SObject::_nil();
624 SALOMEDS::SObject_var MorSM,SB;
625 SALOMEDS::GenericAttribute_var anAttr;
626 SALOMEDS::AttributeName_var aName;
627 SALOMEDS::AttributeIOR_var anIOR;
629 if (SO->FindAttribute(anAttr, "AttributeIOR")) {
630 anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
631 GEOM::GEOM_Shape_var Shape = GEOM::GEOM_Shape::_narrow( _orb->string_to_object(anIOR->Value()) );
632 if (!Shape->_is_nil()) {
634 MorSM = SO->GetFather();
635 // MESSAGE ( " MorSM shape " << MorSM->GetID() )
636 return SALOMEDS::SObject::_narrow( MorSM);
640 if (SO->ReferencedObject(SB)) {
641 //It's Reference on Hypothesis or Algorithm
642 MorSM = SO->GetFather()->GetFather();
643 // MESSAGE ( " MorSM reference " << MorSM->GetID() )
644 return SALOMEDS::SObject::_narrow( MorSM);
646 // It's SMESH_MEN_APPLIED_HYPOTHESIS or SMESH_MEN_APPLIED_ALGORITHMS or SubMeshesOnFace etc...
647 MorSM = SO->GetFather();
648 // MESSAGE ( " MorSM banniere " << MorSM->GetID() )
649 return SALOMEDS::SObject::_narrow( MorSM);
652 void SMESHGUI_StudyAPI::ModifiedMesh( SALOMEDS::SObject_ptr MorSM, bool right)
654 // NRI : Temporary added
655 if ( myStudy->GetProperties()->IsLocked() ) {
660 SALOMEDS::GenericAttribute_var anAttr;
661 SALOMEDS::AttributePixMap_var aPixmap;
663 anAttr = myStudyBuilder->FindOrCreateAttribute(MorSM, "AttributePixMap");
664 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
666 aPixmap->SetPixMap( "ICON_SMESH_TREE_MESH" );
668 aPixmap->SetPixMap( "ICON_SMESH_TREE_MESH_WARN" );
672 SALOMEDS::ChildIterator_var it = myStudy->NewChildIterator(MorSM);
673 for (; it->More();it->Next()) {
674 SALOMEDS::SObject_var Obj = it->Value();
677 SALOMEDS::ChildIterator_var it1 = myStudy->NewChildIterator(Obj);
678 for (; it1->More();it1->Next()) {
679 SALOMEDS::SObject_var Obj1 = it1->Value();
680 anAttr = myStudyBuilder->FindOrCreateAttribute(Obj1, "AttributePixMap");
681 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
683 aPixmap->SetPixMap( "ICON_SMESH_TREE_MESH" );
685 aPixmap->SetPixMap( "ICON_SMESH_TREE_MESH_WARN" );