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");
109 anAttr = myStudyBuilder->FindOrCreateAttribute(father, "AttributeName");
110 aName = SALOMEDS::AttributeName::_narrow(anAttr);
111 //NRI aName->SetValue(QObject::tr("SMESH_MEN_COMPONENT"));
112 aName->SetValue( QAD_Application::getDesktop()->getComponentUserName( "SMESH" ) );
113 anAttr = myStudyBuilder->FindOrCreateAttribute(father, "AttributePixMap");
114 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
115 aPixmap->SetPixMap( "ICON_OBJBROWSER_SMESH" );
117 myStudyBuilder->DefineComponentInstance(father, CompMesh );
118 mySComponentMesh = SALOMEDS::SComponent::_narrow( father );
121 //=======================================================================
123 // purpose : Destructor
124 //=======================================================================
125 SMESHGUI_StudyAPI::~SMESHGUI_StudyAPI ()
129 //=======================================================================
132 //=======================================================================
133 void SMESHGUI_StudyAPI::Update(SMESH::SMESH_Gen_ptr CompMesh)
135 // NRI : Temporary added
136 if ( myStudy->GetProperties()->IsLocked() ) {
141 SALOMEDS::SComponent_var father = myStudy->FindComponent("MESH");
142 SALOMEDS::GenericAttribute_var anAttr;
143 SALOMEDS::AttributeName_var aName;
144 SALOMEDS::AttributePixMap_var aPixmap;
146 if (father->_is_nil()) {
147 father = myStudyBuilder->NewComponent("MESH");
148 anAttr = myStudyBuilder->FindOrCreateAttribute(father, "AttributeName");
149 aName = SALOMEDS::AttributeName::_narrow(anAttr);
150 //NRI aName->SetValue(QObject::tr("SMESH_MEN_COMPONENT"));
151 aName->SetValue( QAD_Application::getDesktop()->getComponentUserName( "SMESH" ) );
152 anAttr = myStudyBuilder->FindOrCreateAttribute(father, "AttributePixMap");
153 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
154 aPixmap->SetPixMap( "ICON_OBJBROWSER_SMESH" );
156 myStudyBuilder->DefineComponentInstance(father, CompMesh );
157 mySComponentMesh = SALOMEDS::SComponent::_narrow( father );
160 //=======================================================================
161 // function : AddNewMesh
163 //=======================================================================
165 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::AddNewMesh (SMESH::SMESH_Mesh_ptr M)
167 // NRI : Temporary added
168 if ( myStudy->GetProperties()->IsLocked() ) {
169 return SALOMEDS::SObject::_nil();
173 //Find or Create Hypothesis root
174 SALOMEDS::SObject_var HypothesisRoot;
175 SALOMEDS::GenericAttribute_var anAttr;
176 SALOMEDS::AttributeName_var aName;
177 SALOMEDS::AttributeIOR_var anIOR;
178 SALOMEDS::AttributeSelectable_var aSelAttr;
179 SALOMEDS::AttributePixMap_var aPixmap;
181 if (!mySComponentMesh->FindSubObject (Tag_HypothesisRoot, HypothesisRoot)) {
182 HypothesisRoot = myStudyBuilder->NewObjectToTag (mySComponentMesh, Tag_HypothesisRoot);
183 anAttr = myStudyBuilder->FindOrCreateAttribute(HypothesisRoot, "AttributeName");
184 aName = SALOMEDS::AttributeName::_narrow(anAttr);
185 aName->SetValue(QObject::tr("SMESH_MEN_HYPOTHESIS"));
186 anAttr = myStudyBuilder->FindOrCreateAttribute(HypothesisRoot, "AttributePixMap");
187 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
188 aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO" );
189 anAttr = myStudyBuilder->FindOrCreateAttribute(HypothesisRoot, "AttributeSelectable");
190 aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
191 aSelAttr->SetSelectable(false);
194 SALOMEDS::SObject_var AlgorithmsRoot;
195 if (!mySComponentMesh->FindSubObject (Tag_AlgorithmsRoot, AlgorithmsRoot)) {
196 AlgorithmsRoot = myStudyBuilder->NewObjectToTag (mySComponentMesh, Tag_AlgorithmsRoot);
197 anAttr = myStudyBuilder->FindOrCreateAttribute(AlgorithmsRoot, "AttributeName");
198 aName = SALOMEDS::AttributeName::_narrow(anAttr);
199 aName->SetValue(QObject::tr("SMESH_MEN_ALGORITHMS"));
200 anAttr = myStudyBuilder->FindOrCreateAttribute(AlgorithmsRoot, "AttributePixMap");
201 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
202 aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO" );
203 anAttr = myStudyBuilder->FindOrCreateAttribute(AlgorithmsRoot, "AttributeSelectable");
204 aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
205 aSelAttr->SetSelectable(false);
209 SALOMEDS::SObject_var newMesh = myStudyBuilder->NewObject(mySComponentMesh);
210 anAttr = myStudyBuilder->FindOrCreateAttribute(newMesh, "AttributePixMap");
211 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
212 aPixmap->SetPixMap( "ICON_SMESH_TREE_MESH" );
213 anAttr = myStudyBuilder->FindOrCreateAttribute(newMesh, "AttributeIOR");
214 anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
215 anIOR->SetValue(IORToString(M));
216 return SALOMEDS::SObject::_narrow( newMesh );
220 //=======================================================================
221 // function : SetShape
223 //=======================================================================
224 void SMESHGUI_StudyAPI::SetShape (SALOMEDS::SObject_ptr SO_MorSM,
225 SALOMEDS::SObject_ptr SO_GeomShape )
227 // NRI : Temporary added
228 if ( myStudy->GetProperties()->IsLocked() ) {
232 SALOMEDS::SObject_var SO = myStudyBuilder->NewObjectToTag (SO_MorSM, Tag_RefOnShape);
233 myStudyBuilder->Addreference (SO,SO_GeomShape);
236 //=======================================================================
237 // function : GetShapeOnMeshOrSubMesh
239 //=======================================================================
240 GEOM::GEOM_Shape_ptr SMESHGUI_StudyAPI::GetShapeOnMeshOrSubMesh(SALOMEDS::SObject_ptr SO_Mesh_Or_SubMesh)
242 // NRI : Temporary added
243 if ( myStudy->GetProperties()->IsLocked() ) {
244 return GEOM::GEOM_Shape::_nil();
248 GEOM::GEOM_Shape_var Shape;
249 SALOMEDS::SObject_var aSO, aGeom;
250 SALOMEDS::GenericAttribute_var anAttr;
251 SALOMEDS::AttributeIOR_var anIOR;
252 if ( SO_Mesh_Or_SubMesh->FindSubObject( Tag_RefOnShape, aSO ) ) {
253 if ( aSO->ReferencedObject(aGeom) ) {
254 if (aGeom->FindAttribute(anAttr, "AttributeIOR")) {
255 anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
256 return GEOM::GEOM_Shape::_narrow( _orb->string_to_object(anIOR->Value()) );
260 return GEOM::GEOM_Shape::_nil();
263 //=======================================================================
264 // function : AddNewHypothesis
266 //=======================================================================
267 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::AddNewHypothesis (SMESH::SMESH_Hypothesis_ptr H)
269 // NRI : Temporary added
270 if ( myStudy->GetProperties()->IsLocked() ) {
271 return SALOMEDS::SObject::_nil();
275 //Find or Create Hypothesis root
276 SALOMEDS::SObject_var HypothesisRoot;
277 SALOMEDS::GenericAttribute_var anAttr;
278 SALOMEDS::AttributeName_var aName;
279 SALOMEDS::AttributeIOR_var anIOR;
280 SALOMEDS::AttributeSelectable_var aSelAttr;
281 SALOMEDS::AttributePixMap_var aPixmap;
283 if (!mySComponentMesh->FindSubObject (Tag_HypothesisRoot, HypothesisRoot)) {
284 HypothesisRoot = myStudyBuilder->NewObjectToTag (mySComponentMesh, Tag_HypothesisRoot);
285 anAttr = myStudyBuilder->FindOrCreateAttribute(HypothesisRoot, "AttributeName");
286 aName = SALOMEDS::AttributeName::_narrow(anAttr);
287 aName->SetValue(QObject::tr("SMESH_MEN_HYPOTHESIS"));
288 anAttr = myStudyBuilder->FindOrCreateAttribute(HypothesisRoot, "AttributeSelectable");
289 aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
290 aSelAttr->SetSelectable(false);
291 anAttr = myStudyBuilder->FindOrCreateAttribute(HypothesisRoot, "AttributePixMap");
292 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
293 aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO" );
295 // Add New Hypothesis
296 SALOMEDS::SObject_var newHypo = myStudyBuilder->NewObject(HypothesisRoot);
297 anAttr = myStudyBuilder->FindOrCreateAttribute(newHypo, "AttributePixMap");
298 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
299 QString aType = H->GetName();
300 MESSAGE ( " aType " << aType )
301 aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO_" + aType );
302 // if ( aType.compare("LocalLength") == 0 )
303 // aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO_LENGTH" );
304 // else if ( aType.compare("NumberOfSegments") == 0 )
305 // aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO_SEGMENT" );
306 // else if ( aType.compare("MaxElementArea") == 0 )
307 // aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO_AREA" );
308 // else if ( aType.compare("MaxElementVolume") == 0 )
309 // aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO_VOLUME" );
310 anAttr = myStudyBuilder->FindOrCreateAttribute(newHypo, "AttributeIOR");
311 anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
312 anIOR->SetValue(IORToString(H));
313 return SALOMEDS::SObject::_narrow(newHypo);
316 //=======================================================================
317 // function : AddNewAlgorithms
319 //=======================================================================
320 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::AddNewAlgorithms (SMESH::SMESH_Hypothesis_ptr H)
322 // NRI : Temporary added
323 if ( myStudy->GetProperties()->IsLocked() ) {
324 return SALOMEDS::SObject::_nil();
328 //Find or Create Algorithms root
329 SALOMEDS::SObject_var AlgorithmsRoot;
330 SALOMEDS::GenericAttribute_var anAttr;
331 SALOMEDS::AttributeName_var aName;
332 SALOMEDS::AttributeIOR_var anIOR;
333 SALOMEDS::AttributeSelectable_var aSelAttr;
334 SALOMEDS::AttributePixMap_var aPixmap;
336 if (!mySComponentMesh->FindSubObject (Tag_AlgorithmsRoot, AlgorithmsRoot)) {
337 AlgorithmsRoot = myStudyBuilder->NewObjectToTag (mySComponentMesh, Tag_AlgorithmsRoot);
338 anAttr = myStudyBuilder->FindOrCreateAttribute(AlgorithmsRoot, "AttributeName");
339 aName = SALOMEDS::AttributeName::_narrow(anAttr);
340 aName->SetValue(QObject::tr("SMESH_MEN_ALGORITHMS"));
341 anAttr = myStudyBuilder->FindOrCreateAttribute(AlgorithmsRoot, "AttributeSelectable");
342 aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
343 aSelAttr->SetSelectable(false);
344 anAttr = myStudyBuilder->FindOrCreateAttribute(AlgorithmsRoot, "AttributePixMap");
345 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
346 aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO" );
348 // Add New Algorithms
349 SALOMEDS::SObject_var newHypo = myStudyBuilder->NewObject(AlgorithmsRoot);
350 anAttr = myStudyBuilder->FindOrCreateAttribute(newHypo, "AttributePixMap");
351 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
352 QString aType = H->GetName();
353 // if ( aType.compare("Regular_1D") == 0 )
354 aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO_" + aType );
355 // aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO_REGULAR" );
356 // else if ( aType.compare("MEFISTO_2D") == 0 )
357 // aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO_MEFISTO" );
358 // else if ( aType.compare("Quadrangle_2D") == 0 )
359 // aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO_QUAD" );
360 // else if ( aType.compare("Hexa_3D") == 0 )
361 // aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO_HEXA" );
362 anAttr = myStudyBuilder->FindOrCreateAttribute(newHypo, "AttributeIOR");
363 anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
364 anIOR->SetValue(IORToString(H));
365 return SALOMEDS::SObject::_narrow(newHypo);
369 //=======================================================================
370 // function : AddSubMeshOnShape
372 //=======================================================================
373 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::AddSubMeshOnShape (SALOMEDS::SObject_ptr SO_Mesh,
374 SMESH::SMESH_subMesh_ptr SM,
377 // NRI : Temporary added
378 if ( myStudy->GetProperties()->IsLocked() ) {
379 return SALOMEDS::SObject::_nil();
384 Standard_CString Name;
386 if (ST == GEOM::SOLID) {Tag_Shape = Tag_SubMeshOnSolid; Name = strdup(QObject::tr("SMESH_MEN_SubMeshesOnSolid"));}
387 else if (ST == GEOM::FACE) {Tag_Shape = Tag_SubMeshOnFace; Name = strdup(QObject::tr("SMESH_MEN_SubMeshesOnFace"));}
388 else if (ST == GEOM::EDGE) {Tag_Shape = Tag_SubMeshOnEdge; Name = strdup(QObject::tr("SMESH_MEN_SubMeshesOnEdge"));}
389 else if (ST == GEOM::VERTEX){Tag_Shape = Tag_SubMeshOnVertex; Name = strdup(QObject::tr("SMESH_MEN_SubMeshesOnVertex"));}
391 Tag_Shape = Tag_SubMeshOnCompound; Name = strdup(QObject::tr("SMESH_MEN_SubMeshesOnCompound"));
394 SALOMEDS::SObject_var SubmeshesRoot;
395 SALOMEDS::GenericAttribute_var anAttr;
396 SALOMEDS::AttributeName_var aName;
397 SALOMEDS::AttributeIOR_var anIOR;
398 SALOMEDS::AttributeSelectable_var aSelAttr;
400 if (!SO_Mesh->FindSubObject (Tag_Shape,SubmeshesRoot )) {
401 SubmeshesRoot = myStudyBuilder->NewObjectToTag (SO_Mesh, Tag_Shape);
402 anAttr = myStudyBuilder->FindOrCreateAttribute(SubmeshesRoot, "AttributeName");
403 aName = SALOMEDS::AttributeName::_narrow(anAttr);
404 aName->SetValue(Name);
405 anAttr = myStudyBuilder->FindOrCreateAttribute(SubmeshesRoot, "AttributeSelectable");
406 aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
407 aSelAttr->SetSelectable(false);
409 SALOMEDS::SObject_var SO = myStudyBuilder->NewObject (SubmeshesRoot);
410 anAttr = myStudyBuilder->FindOrCreateAttribute(SO, "AttributeIOR");
411 anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
412 anIOR->SetValue(IORToString(SM));
413 return SALOMEDS::SObject::_narrow( SO );
416 //=======================================================================
417 // function : AddSubMeshOnShape
419 //=======================================================================
420 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::AddSubMeshOnShape (SALOMEDS::SObject_ptr SO_Mesh,
421 SALOMEDS::SObject_ptr SO_GeomShape,
422 SMESH::SMESH_subMesh_ptr SM,
425 // NRI : Temporary added
426 if ( myStudy->GetProperties()->IsLocked() ) {
427 return SALOMEDS::SObject::_nil();
431 SALOMEDS::SObject_var SO_SM = AddSubMeshOnShape (SO_Mesh,SM,ST);
432 SetShape (SO_SM,SO_GeomShape);
433 // SetShapeOnSubMesh (SO_SM,SO_GeomShape);
434 return SALOMEDS::SObject::_narrow( SO_SM );
438 //=======================================================================
439 // function : SetHypothesis
441 //=======================================================================
442 void SMESHGUI_StudyAPI::SetHypothesis (SALOMEDS::SObject_ptr SO_MorSM,
443 SALOMEDS::SObject_ptr SO_Hypothesis)
445 // NRI : Temporary added
446 if ( myStudy->GetProperties()->IsLocked() ) {
451 //Find or Create Applied Hypothesis root
452 SALOMEDS::SObject_var AHR;
453 SALOMEDS::GenericAttribute_var anAttr;
454 SALOMEDS::AttributeName_var aName;
455 SALOMEDS::AttributeSelectable_var aSelAttr;
456 SALOMEDS::AttributePixMap_var aPixmap;
458 if (!SO_MorSM->FindSubObject (Tag_RefOnAppliedHypothesis, AHR)) {
459 AHR = myStudyBuilder->NewObjectToTag (SO_MorSM, Tag_RefOnAppliedHypothesis);
460 anAttr = myStudyBuilder->FindOrCreateAttribute(AHR, "AttributeName");
461 aName = SALOMEDS::AttributeName::_narrow(anAttr);
462 aName->SetValue(QObject::tr("SMESH_MEN_APPLIED_HYPOTHESIS"));
463 anAttr = myStudyBuilder->FindOrCreateAttribute(AHR, "AttributeSelectable");
464 aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
465 aSelAttr->SetSelectable(false);
466 anAttr = myStudyBuilder->FindOrCreateAttribute(AHR, "AttributePixMap");
467 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
468 aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO" );
470 SALOMEDS::SObject_var SO = myStudyBuilder->NewObject(AHR);
471 myStudyBuilder->Addreference (SO,SO_Hypothesis);
474 //=======================================================================
475 // function : SetAlgorithms
477 //=======================================================================
478 void SMESHGUI_StudyAPI::SetAlgorithms (SALOMEDS::SObject_ptr SO_MorSM,
479 SALOMEDS::SObject_ptr SO_Algorithms)
481 // NRI : Temporary added
482 if ( myStudy->GetProperties()->IsLocked() ) {
487 //Find or Create Applied Algorithms root
488 SALOMEDS::SObject_var AHR;
489 SALOMEDS::GenericAttribute_var anAttr;
490 SALOMEDS::AttributeName_var aName;
491 SALOMEDS::AttributeSelectable_var aSelAttr;
492 SALOMEDS::AttributePixMap_var aPixmap;
494 if (!SO_MorSM->FindSubObject (Tag_RefOnAppliedAlgorithms, AHR)) {
495 AHR = myStudyBuilder->NewObjectToTag (SO_MorSM, Tag_RefOnAppliedAlgorithms);
496 anAttr = myStudyBuilder->FindOrCreateAttribute(AHR, "AttributeName");
497 aName = SALOMEDS::AttributeName::_narrow(anAttr);
498 aName->SetValue(QObject::tr("SMESH_MEN_APPLIED_ALGORIHTMS"));
499 anAttr = myStudyBuilder->FindOrCreateAttribute(AHR, "AttributeSelectable");
500 aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
501 aSelAttr->SetSelectable(false);
502 anAttr = myStudyBuilder->FindOrCreateAttribute(AHR, "AttributePixMap");
503 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
504 aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO" );
506 SALOMEDS::SObject_var SO = myStudyBuilder->NewObject(AHR);
507 myStudyBuilder->Addreference (SO,SO_Algorithms);
511 //=======================================================================
514 //=======================================================================
515 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::FindMesh (SMESH::SMESH_Mesh_ptr M)
517 // NRI : Temporary added
518 if ( myStudy->GetProperties()->IsLocked() ) {
519 return SALOMEDS::SObject::_nil();
522 return SALOMEDS::SObject::_narrow( myStudy->FindObjectIOR (IORToString(M)) );
525 //=======================================================================
528 //=======================================================================
529 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::FindHypothesisOrAlgorithms (SMESH::SMESH_Hypothesis_ptr H)
531 // NRI : Temporary added
532 if ( myStudy->GetProperties()->IsLocked() ) {
533 return SALOMEDS::SObject::_nil();
536 return SALOMEDS::SObject::_narrow( myStudy->FindObjectIOR (IORToString(H)) );
540 //=======================================================================
543 //=======================================================================
544 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::FindSubMesh (SMESH::SMESH_subMesh_ptr SM)
546 // NRI : Temporary added
547 if ( myStudy->GetProperties()->IsLocked() ) {
548 return SALOMEDS::SObject::_nil();
551 return SALOMEDS::SObject::_narrow( myStudy->FindObjectIOR (IORToString(SM)) );
555 void SMESHGUI_StudyAPI::setOrb()
558 ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance();
559 ASSERT(SINGLETON_<ORB_INIT>::IsAlreadyExisting());
560 _orb = init( 0 , 0 );
562 INFOS("internal error : orb not found");
565 ASSERT(! CORBA::is_nil(_orb));
568 //=======================================================================
571 //=======================================================================
572 void SMESHGUI_StudyAPI::SetTagHypothesisRoot()
574 // NRI : Temporary added
575 if ( myStudy->GetProperties()->IsLocked() ) {
579 SALOMEDS::ChildIterator_var it = myStudy->NewChildIterator(mySComponentMesh);
581 for (; it->More();it->Next()) {
584 Tag_HypothesisRoot = i++;
587 //=======================================================================
590 //=======================================================================
591 void SMESHGUI_StudyAPI::SetName( SALOMEDS::SObject_ptr SO, const char* Name )
593 // NRI : Temporary added
594 if ( myStudy->GetProperties()->IsLocked() ) {
599 SALOMEDS::GenericAttribute_var anAttr;
600 SALOMEDS::AttributeName_var aName;
601 anAttr = myStudyBuilder->FindOrCreateAttribute(SO, "AttributeName");
602 aName = SALOMEDS::AttributeName::_narrow(anAttr);
603 aName->SetValue(Name);
606 //=======================================================================
609 //=======================================================================
610 void SMESHGUI_StudyAPI::UnSetHypothesis (SALOMEDS::SObject_ptr SO_Applied_Hypothesis)
612 // NRI : Temporary added
613 if ( myStudy->GetProperties()->IsLocked() ) {
617 myStudyBuilder->RemoveObject(SO_Applied_Hypothesis);
620 //=======================================================================
623 //=======================================================================
624 void SMESHGUI_StudyAPI::UnSetAlgorithm (SALOMEDS::SObject_ptr SO_Applied_Algorithm)
626 // NRI : Temporary added
627 if ( myStudy->GetProperties()->IsLocked() ) {
631 myStudyBuilder->RemoveObject(SO_Applied_Algorithm);
634 //=======================================================================
637 //=======================================================================
638 SALOMEDS::SObject_ptr SMESHGUI_StudyAPI::GetMeshOrSubmesh (SALOMEDS::SObject_ptr SO)
640 // NRI : Temporary added
641 if ( myStudy->GetProperties()->IsLocked() ) {
642 return SALOMEDS::SObject::_nil();
646 SALOMEDS::SObject_var MorSM,SB;
647 SALOMEDS::GenericAttribute_var anAttr;
648 SALOMEDS::AttributeName_var aName;
649 SALOMEDS::AttributeIOR_var anIOR;
651 if (SO->FindAttribute(anAttr, "AttributeIOR")) {
652 anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
653 GEOM::GEOM_Shape_var Shape = GEOM::GEOM_Shape::_narrow( _orb->string_to_object(anIOR->Value()) );
654 if (!Shape->_is_nil()) {
656 MorSM = SO->GetFather();
657 // MESSAGE ( " MorSM shape " << MorSM->GetID() )
658 return SALOMEDS::SObject::_narrow( MorSM);
662 if (SO->ReferencedObject(SB)) {
663 //It's Reference on Hypothesis or Algorithm
664 MorSM = SO->GetFather()->GetFather();
665 // MESSAGE ( " MorSM reference " << MorSM->GetID() )
666 return SALOMEDS::SObject::_narrow( MorSM);
668 // It's SMESH_MEN_APPLIED_HYPOTHESIS or SMESH_MEN_APPLIED_ALGORITHMS or SubMeshesOnFace etc...
669 MorSM = SO->GetFather();
670 // MESSAGE ( " MorSM banniere " << MorSM->GetID() )
671 return SALOMEDS::SObject::_narrow( MorSM);
674 void SMESHGUI_StudyAPI::ModifiedMesh( SALOMEDS::SObject_ptr MorSM, bool right)
676 // NRI : Temporary added
677 if ( myStudy->GetProperties()->IsLocked() ) {
682 SALOMEDS::GenericAttribute_var anAttr;
683 SALOMEDS::AttributePixMap_var aPixmap;
685 anAttr = myStudyBuilder->FindOrCreateAttribute(MorSM, "AttributePixMap");
686 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
688 aPixmap->SetPixMap( "ICON_SMESH_TREE_MESH" );
690 aPixmap->SetPixMap( "ICON_SMESH_TREE_MESH_WARN" );
694 SALOMEDS::ChildIterator_var it = myStudy->NewChildIterator(MorSM);
695 for (; it->More();it->Next()) {
696 SALOMEDS::SObject_var Obj = it->Value();
699 SALOMEDS::ChildIterator_var it1 = myStudy->NewChildIterator(Obj);
700 for (; it1->More();it1->Next()) {
701 SALOMEDS::SObject_var Obj1 = it1->Value();
702 anAttr = myStudyBuilder->FindOrCreateAttribute(Obj1, "AttributePixMap");
703 aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
705 aPixmap->SetPixMap( "ICON_SMESH_TREE_MESH" );
707 aPixmap->SetPixMap( "ICON_SMESH_TREE_MESH_WARN" );