]> SALOME platform Git repositories - modules/geom.git/blob - src/GEOM_I_Superv/GEOM_Superv_i.cc
Salome HOME
Update copyright information
[modules/geom.git] / src / GEOM_I_Superv / GEOM_Superv_i.cc
1 //  Copyright (C) 2007-2008  CEA/DEN, EDF R&D, OPEN CASCADE
2 //
3 //  Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 //  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
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.
10 //
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.
15 //
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
19 //
20 //  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22 #include "GEOM_Superv_i.hh"
23 #include "SALOME_LifeCycleCORBA.hxx"
24
25 #include CORBA_SERVER_HEADER(SALOME_Session)
26 #include "SALOMEDSClient_ClientFactory.hxx"
27
28 #define isNewStudy(a,b) (a > 0 && a != b)
29
30 using namespace std;
31 //=============================================================================
32 //  constructor:
33 //=============================================================================
34 GEOM_Superv_i::GEOM_Superv_i(CORBA::ORB_ptr orb,
35                              PortableServer::POA_ptr poa,
36                              PortableServer::ObjectId * contId, 
37                              const char *instanceName, 
38                              const char *interfaceName) :
39   Engines_Component_i(orb, poa, contId, instanceName, interfaceName)
40 {
41   MESSAGE("GEOM_Superv_i::GEOM_Superv_i");
42
43   _thisObj = this ;
44   _id = _poa->activate_object(_thisObj);
45   name_service = new SALOME_NamingService(_orb);
46   //get RootPOA (the default)
47   //myPOA = PortableServer::RefCountServantBase::_default_POA();
48   CORBA::Object_var anObj = _orb->resolve_initial_references("RootPOA");
49   myPOA = PortableServer::POA::_narrow(anObj);
50
51   setGeomEngine();
52
53   myStudyID = -1;
54   myLastStudyID = -1;
55
56   myBasicOp = GEOM::GEOM_IBasicOperations::_nil();
57   my3DPrimOp = GEOM::GEOM_I3DPrimOperations::_nil();
58   myBoolOp = GEOM::GEOM_IBooleanOperations::_nil();
59   myInsOp = GEOM::GEOM_IInsertOperations::_nil();
60   myTransfOp = GEOM::GEOM_ITransformOperations::_nil();
61   myShapesOp = GEOM::GEOM_IShapesOperations::_nil();
62   myBlocksOp = GEOM::GEOM_IBlocksOperations::_nil();
63   myCurvesOp = GEOM::GEOM_ICurvesOperations::_nil();
64   myLocalOp = GEOM::GEOM_ILocalOperations::_nil();
65   myGroupOp = GEOM::GEOM_IGroupOperations::_nil();
66 }
67
68 //=============================================================================
69 //  destructor
70 //=============================================================================
71 GEOM_Superv_i::~GEOM_Superv_i()
72 {
73   MESSAGE("GEOM_Superv_i::~GEOM_Superv_i");
74   if (!CORBA::is_nil(myBasicOp))
75     myBasicOp->Destroy();
76   if (!CORBA::is_nil(myBoolOp))
77     myBoolOp->Destroy();
78   if (!CORBA::is_nil(my3DPrimOp))
79     my3DPrimOp->Destroy();
80   delete name_service;
81 }
82
83 //============================================================================
84 // function : register() 
85 // purpose  : register 'name' in 'name_service'
86 //============================================================================
87 void GEOM_Superv_i::register_name(char * name)
88 {
89   GEOM::GEOM_Superv_var g = _this();
90   name_service->Register(g, name); 
91 }
92
93 //=============================================================================
94 //  setGEOMEngine:
95 //=============================================================================
96 void GEOM_Superv_i::setGeomEngine()
97 {
98   if ( !CORBA::is_nil(myGeomEngine) ) 
99     return;
100
101   // get GEOM_Gen engine
102   Engines::Container_var cont=GetContainerRef();
103   CORBA::String_var container_name=cont->name();
104   std::string shortName=container_name.in();
105   shortName=shortName.substr(12); // substract "/Containers/"
106   SALOME_LifeCycleCORBA* lcc = new SALOME_LifeCycleCORBA( name_service );
107   Engines::Component_var comp = lcc->FindOrLoad_Component( shortName.c_str(), "GEOM" );
108   delete lcc;
109
110   myGeomEngine = GEOM::GEOM_Gen::_narrow(comp);
111 }
112
113 //=============================================================================
114 //  SetStudyID:
115 //=============================================================================
116 void GEOM_Superv_i::SetStudyID( CORBA::Long theId )
117 {
118   // mkr : PAL10770 -->
119   myLastStudyID = myStudyID;
120
121   CORBA::Object_ptr anObject = name_service->Resolve("/Kernel/Session");
122   if ( !CORBA::is_nil(anObject) ) {
123     SALOME::Session_var aSession = SALOME::Session::_narrow(anObject);
124     if ( !CORBA::is_nil(aSession) ) {
125       int aStudyID = aSession->GetActiveStudyId();
126       if ( theId != aStudyID && aStudyID > 0) { // mkr : IPAL12128
127         MESSAGE("Warning : given study ID theId="<<theId<<" is wrong and will be replaced by the value "<<aStudyID);
128         myStudyID = aStudyID;
129       }
130       else
131         myStudyID = theId; // mkr : IPAL12128
132     }
133   }
134   
135   if ( isNewStudy(myLastStudyID,myStudyID) ) {
136     if (CORBA::is_nil(myGeomEngine)) setGeomEngine();
137     string anEngine = _orb->object_to_string( myGeomEngine );
138     
139     CORBA::Object_var anObj = name_service->Resolve("/myStudyManager");
140     if ( !CORBA::is_nil(anObj) ) {
141       SALOMEDS::StudyManager_var aStudyManager = SALOMEDS::StudyManager::_narrow(anObj);
142       if ( !CORBA::is_nil(aStudyManager) ) {
143         _PTR(Study) aDSStudy = ClientFactory::Study(aStudyManager->GetStudyByID(myStudyID));
144         if ( aDSStudy ) {
145           _PTR(SComponent) aSCO = aDSStudy->FindComponent(myGeomEngine->ComponentDataType());
146           if ( aSCO ) {
147             _PTR(StudyBuilder) aBuilder = aDSStudy->NewBuilder();
148             if ( aBuilder ) aBuilder->LoadWith( aSCO, anEngine );
149           }
150         }
151       }
152     }
153   }
154   // mkr : PAL10770 <--
155 }
156
157 //=============================================================================
158 //  CreateListOfGO:
159 //=============================================================================
160 GEOM::GEOM_List_ptr GEOM_Superv_i::CreateListOfGO()
161 {
162   MESSAGE("GEOM_Superv_i::CreateListOfGO()");
163   GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>();
164   return aListPtr->_this();
165 }
166
167 //=============================================================================
168 //  AddItemToListOfGO:
169 //=============================================================================
170 void GEOM_Superv_i::AddItemToListOfGO(GEOM::GEOM_List_ptr& theList, 
171                                       GEOM::GEOM_Object_ptr    theObject)
172 {
173   MESSAGE("GEOM_Superv_i::AddItemToListOfGO(...)");
174   if (GEOM_List_i<GEOM::ListOfGO>* aList = 
175       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theList, myPOA).in())) {
176     aList->AddObject(theObject);
177     MESSAGE(" NewLength = "<<aList->GetList().length());
178   }
179 }
180
181 //=============================================================================
182 //  CreateListOfLong:
183 //=============================================================================
184 GEOM::GEOM_List_ptr GEOM_Superv_i::CreateListOfLong()
185 {
186   MESSAGE("GEOM_Superv_i::CreateListOfLong()");
187   GEOM_List_i<GEOM::ListOfLong>* aListPtr = new GEOM_List_i<GEOM::ListOfLong>();
188   return aListPtr->_this();
189 }
190
191 //=============================================================================
192 //  AddItemToListOfLong:
193 //=============================================================================
194 void GEOM_Superv_i::AddItemToListOfLong(GEOM::GEOM_List_ptr& theList, 
195                                         CORBA::Long theObject)
196 {
197   MESSAGE("GEOM_Superv_i::AddItemToListOfLong(...)");
198   if (GEOM_List_i<GEOM::ListOfLong>* aList = 
199       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theList, myPOA).in())) {
200     aList->AddObject(theObject);
201     MESSAGE(" NewLength = "<<aList->GetList().length());
202   }
203 }
204
205 //=============================================================================
206 //  CreateListOfDouble:
207 //=============================================================================
208 GEOM::GEOM_List_ptr GEOM_Superv_i::CreateListOfDouble()
209 {
210   MESSAGE("GEOM_Superv_i::CreateListOfDouble()");
211   GEOM_List_i<GEOM::ListOfDouble>* aListPtr = new GEOM_List_i<GEOM::ListOfDouble>();
212   return aListPtr->_this();
213 }
214
215 //=============================================================================
216 //  AddItemToListOfDouble:
217 //=============================================================================
218 void GEOM_Superv_i::AddItemToListOfDouble(GEOM::GEOM_List_ptr& theList, 
219                                           CORBA::Double theObject)
220 {
221   MESSAGE("GEOM_Superv_i::AddItemToListOfDouble(...)");
222   if (GEOM_List_i<GEOM::ListOfDouble>* aList = 
223       dynamic_cast<GEOM_List_i<GEOM::ListOfDouble>*>(GetServant(theList, myPOA).in())) {
224     aList->AddObject(theObject);
225     MESSAGE(" NewLength = "<<aList->GetList().length());
226   }
227 }
228
229 //=============================================================================
230 //  getBasicOp:
231 //=============================================================================
232 void GEOM_Superv_i::getBasicOp()
233 {
234   if (CORBA::is_nil(myGeomEngine))
235     setGeomEngine();
236   // get GEOM_IBasicOperations interface
237   if (CORBA::is_nil(myBasicOp) || isNewStudy(myLastStudyID,myStudyID))
238     myBasicOp = myGeomEngine->GetIBasicOperations(myStudyID);
239 }
240
241 //=============================================================================
242 //  get3DPrimOp:
243 //=============================================================================
244 void GEOM_Superv_i::get3DPrimOp()
245 {
246   if (CORBA::is_nil(myGeomEngine))
247     setGeomEngine();
248   // get GEOM_I3DPrimOperations interface
249   if (CORBA::is_nil(my3DPrimOp) || isNewStudy(myLastStudyID,myStudyID))
250     my3DPrimOp = myGeomEngine->GetI3DPrimOperations(myStudyID);
251 }
252
253 //=============================================================================
254 //  getBoolOp:
255 //=============================================================================
256 void GEOM_Superv_i::getBoolOp()
257 {
258   if (CORBA::is_nil(myGeomEngine))
259     setGeomEngine();
260   // get GEOM_IBooleanOperations interface
261   if (CORBA::is_nil(myBoolOp) || isNewStudy(myLastStudyID,myStudyID))
262     myBoolOp = myGeomEngine->GetIBooleanOperations(myStudyID);
263 }
264
265 //=============================================================================
266 //  getInsOp:
267 //=============================================================================
268 void GEOM_Superv_i::getInsOp()
269 {
270   if (CORBA::is_nil(myGeomEngine))
271     setGeomEngine();
272   // get GEOM_IInsertOperations interface
273   if (CORBA::is_nil(myInsOp) || isNewStudy(myLastStudyID,myStudyID))
274     myInsOp = myGeomEngine->GetIInsertOperations(myStudyID);
275 }
276
277 //=============================================================================
278 //  getTransfOp:
279 //=============================================================================
280 void GEOM_Superv_i::getTransfOp()
281 {
282   if (CORBA::is_nil(myGeomEngine))
283     setGeomEngine();
284   // get GEOM_ITransformOperations interface
285   if (CORBA::is_nil(myTransfOp) || isNewStudy(myLastStudyID,myStudyID))
286     myTransfOp = myGeomEngine->GetITransformOperations(myStudyID);
287 }
288
289 //=============================================================================
290 //  getShapesOp:
291 //=============================================================================
292 void GEOM_Superv_i::getShapesOp()
293 {
294   if (CORBA::is_nil(myGeomEngine))
295     setGeomEngine();
296   // get GEOM_IShapesOperations interface
297   if (CORBA::is_nil(myShapesOp) || isNewStudy(myLastStudyID,myStudyID))
298     myShapesOp = myGeomEngine->GetIShapesOperations(myStudyID);
299 }
300
301 //=============================================================================
302 //  getBlocksOp:
303 //=============================================================================
304 void GEOM_Superv_i::getBlocksOp()
305 {
306   if (CORBA::is_nil(myGeomEngine))
307     setGeomEngine();
308   // get GEOM_IBlocksOperations interface
309   if (CORBA::is_nil(myBlocksOp) || isNewStudy(myLastStudyID,myStudyID))
310     myBlocksOp = myGeomEngine->GetIBlocksOperations(myStudyID);
311 }
312
313 //=============================================================================
314 //  getCurvesOp:
315 //=============================================================================
316 void GEOM_Superv_i::getCurvesOp()
317 {
318   if (CORBA::is_nil(myGeomEngine))
319     setGeomEngine();
320   // get GEOM_ICurvesOperations interface
321   if (CORBA::is_nil(myCurvesOp) || isNewStudy(myLastStudyID,myStudyID))
322     myCurvesOp = myGeomEngine->GetICurvesOperations(myStudyID);
323 }
324
325 //=============================================================================
326 //  getLocalOp:
327 //=============================================================================
328 void GEOM_Superv_i::getLocalOp()
329 {
330   if (CORBA::is_nil(myGeomEngine))
331     setGeomEngine();
332   // get GEOM_ILocalOperations interface
333   if (CORBA::is_nil(myLocalOp) || isNewStudy(myLastStudyID,myStudyID))
334     myLocalOp = myGeomEngine->GetILocalOperations(myStudyID);
335 }
336
337 //=============================================================================
338 //  getGroupOp:
339 //=============================================================================
340 void GEOM_Superv_i::getGroupOp()
341 {
342   if (CORBA::is_nil(myGeomEngine))
343     setGeomEngine();
344   // get GEOM_IGroupOperations interface
345   if (CORBA::is_nil(myGroupOp) || isNewStudy(myLastStudyID,myStudyID))
346     myGroupOp = myGeomEngine->GetIGroupOperations(myStudyID);
347 }
348
349 //=============================================================================
350 //  GetServant:
351 //=============================================================================
352 PortableServer::ServantBase_var GEOM_Superv_i::GetServant(CORBA::Object_ptr       theObject,
353                                                           PortableServer::POA_ptr thePOA)
354 {
355   if(CORBA::is_nil(theObject))  return NULL;
356   PortableServer::Servant aServant = thePOA->reference_to_servant(theObject);
357   return aServant;
358 }
359
360 //============================================================================
361 // function : Save()
362 // purpose  : save OCAF/Geom document
363 //============================================================================
364 SALOMEDS::TMPFile* GEOM_Superv_i::Save(SALOMEDS::SComponent_ptr theComponent,
365                                        const char* theURL,
366                                        CORBA::Boolean isMultiFile)
367 {
368   SALOMEDS::TMPFile_var aStreamFile;
369   return aStreamFile._retn();
370 }
371
372 //============================================================================
373 // function : SaveASCII()
374 // purpose  :
375 //============================================================================ 
376 SALOMEDS::TMPFile* GEOM_Superv_i::SaveASCII(SALOMEDS::SComponent_ptr theComponent,
377                                             const char* theURL,
378                                             CORBA::Boolean isMultiFile)
379 {
380   SALOMEDS::TMPFile_var aStreamFile;
381   return aStreamFile._retn();
382 }
383
384 //============================================================================
385 // function : Load()
386 // purpose  :
387 //============================================================================ 
388 CORBA::Boolean GEOM_Superv_i::Load(SALOMEDS::SComponent_ptr theComponent,
389                                    const SALOMEDS::TMPFile& theStream,
390                                    const char* theURL,
391                                    CORBA::Boolean isMultiFile)
392 {
393   return false;
394 }
395
396 //============================================================================
397 // function : LoadASCII()
398 // purpose  :
399 //============================================================================ 
400 CORBA::Boolean GEOM_Superv_i::LoadASCII(SALOMEDS::SComponent_ptr theComponent,
401                                         const SALOMEDS::TMPFile& theStream,
402                                         const char* theURL,
403                                         CORBA::Boolean isMultiFile)
404 {
405   return false;
406 }
407
408 //============================================================================
409 // function : Close()
410 // purpose  :
411 //============================================================================
412 void GEOM_Superv_i::Close(SALOMEDS::SComponent_ptr theComponent)
413 {
414 }
415
416 //============================================================================
417 // function : ComponentDataType()
418 // purpose  :
419 //============================================================================
420 char* GEOM_Superv_i::ComponentDataType()
421 {
422   return 0;
423 }
424
425 //============================================================================
426 // function : IORToLocalPersistentID()
427 // purpose  :
428 //============================================================================
429 char* GEOM_Superv_i::IORToLocalPersistentID(SALOMEDS::SObject_ptr theSObject,
430                                             const char* IORString,
431                                             CORBA::Boolean isMultiFile,
432                                             CORBA::Boolean isASCII)
433 {
434   return 0;
435 }
436
437 //============================================================================
438 // function : LocalPersistentIDToIOR()
439 // purpose  : Create/Load CORBA object from a persistent ref (an entry)
440 //          : Used when a study is loaded
441 //          : The IOR (IORName) of object created is returned
442 //============================================================================
443 char* GEOM_Superv_i::LocalPersistentIDToIOR(SALOMEDS::SObject_ptr theSObject,
444                                             const char* aLocalPersistentID,
445                                             CORBA::Boolean isMultiFile,
446                                             CORBA::Boolean isASCII)
447 {
448   return 0;
449 }
450
451 //============================================================================
452 // function : CanPublishInStudy
453 // purpose  : 
454 //============================================================================
455 CORBA::Boolean GEOM_Superv_i::CanPublishInStudy(CORBA::Object_ptr theIOR)
456 {
457   if (CORBA::is_nil(myGeomEngine))
458     setGeomEngine();
459   return myGeomEngine->CanPublishInStudy(theIOR);
460 }
461
462 //============================================================================
463 // function : PublishInStudy
464 // purpose  : 
465 //============================================================================
466 SALOMEDS::SObject_ptr GEOM_Superv_i::PublishInStudy(SALOMEDS::Study_ptr theStudy,
467                                                     SALOMEDS::SObject_ptr theSObject,
468                                                     CORBA::Object_ptr theObject,
469                                                     const char* theName) throw (SALOME::SALOME_Exception)
470 {
471   if (CORBA::is_nil(myGeomEngine))
472     setGeomEngine();
473   return myGeomEngine->PublishInStudy(theStudy, theSObject, theObject, theName);
474 }
475
476 //============================================================================
477 // function : CanCopy()
478 // purpose  :
479 //============================================================================
480 CORBA::Boolean GEOM_Superv_i::CanCopy(SALOMEDS::SObject_ptr theObject)
481 {
482   return false;
483 }
484
485 //============================================================================
486 // function : CopyFrom()
487 // purpose  :
488 //============================================================================
489 SALOMEDS::TMPFile* GEOM_Superv_i::CopyFrom(SALOMEDS::SObject_ptr theObject, CORBA::Long& theObjectID)
490 {
491   SALOMEDS::TMPFile_var aStreamFile;
492   return aStreamFile._retn();
493 }
494
495 //============================================================================
496 // function : CanPaste()
497 // purpose  :
498 //============================================================================
499 CORBA::Boolean GEOM_Superv_i::CanPaste(const char* theComponentName, CORBA::Long theObjectID)
500 {
501   return false;
502 }
503
504 //============================================================================
505 // function : PasteInto()
506 // purpose  :
507 //============================================================================
508 SALOMEDS::SObject_ptr GEOM_Superv_i::PasteInto(const SALOMEDS::TMPFile& theStream,
509                                                CORBA::Long theObjectID,
510                                                SALOMEDS::SObject_ptr theObject)
511 {
512   SALOMEDS::SObject_var aNewSO;
513   return aNewSO._retn();
514 }
515
516 //================= Primitives Construction : BasicOperations =================
517 //=============================================================================
518 //  MakePointXYZ:
519 //=============================================================================
520 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointXYZ(CORBA::Double theX,
521                                                   CORBA::Double theY,
522                                                   CORBA::Double theZ)
523 {
524   beginService( " GEOM_Superv_i::MakePointXYZ" );
525   MESSAGE("GEOM_Superv_i::MakePointXYZ");
526   getBasicOp();
527   // make vertex and return
528   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePointXYZ(theX, theY, theZ);
529   endService( " GEOM_Superv_i::MakePointXYZ" );
530   return anObj;
531 }
532
533 //=============================================================================
534 //  MakePointWithReference:
535 //=============================================================================
536 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointWithReference (GEOM::GEOM_Object_ptr theReference,
537                                                              CORBA::Double theX, 
538                                                              CORBA::Double theY, 
539                                                              CORBA::Double theZ)
540 {
541   beginService( " GEOM_Superv_i::MakePointWithReference" );
542   MESSAGE("GEOM_Superv_i::MakePointWithReference");
543   getBasicOp();
544   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePointWithReference(theReference, theX, theY, theZ);
545   endService( " GEOM_Superv_i::MakePointWithReference" );
546   return anObj;
547 }
548
549 //=============================================================================
550 //  MakePointOnCurve:
551 //=============================================================================
552 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointOnCurve (GEOM::GEOM_Object_ptr theRefCurve,
553                                                        CORBA::Double theParameter)
554 {
555   beginService( " GEOM_Superv_i::MakePointOnCurve" );
556   MESSAGE("GEOM_Superv_i::MakePointOnCurve");
557   getBasicOp();
558   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePointOnCurve(theRefCurve, theParameter);
559   endService( " GEOM_Superv_i::MakePointOnCurve" );
560   return anObj;
561 }
562
563 //=============================================================================
564 //  MakePointOnLinesIntersection:
565 //=============================================================================
566 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointOnLinesIntersection (GEOM::GEOM_Object_ptr theRefLine1,
567                                                                    GEOM::GEOM_Object_ptr theRefLine2)
568 {
569   beginService( " GEOM_Superv_i::MakePointOnLinesIntersection" );
570   MESSAGE("GEOM_Superv_i::MakePointOnLinesIntersection");
571   getBasicOp();
572   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePointOnLinesIntersection(theRefLine1, theRefLine2);
573   endService( " GEOM_Superv_i::MakePointOnLinesIntersection" );
574   return anObj;
575 }
576
577 //=============================================================================
578 //  MakeTangentOnCurve:
579 //=============================================================================
580 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeTangentOnCurve (GEOM::GEOM_Object_ptr theRefCurve,
581                                                          CORBA::Double theParameter)
582 {
583   beginService( " GEOM_Superv_i::MakeTangentOnCurve" );
584   MESSAGE("GEOM_Superv_i::MakeTangentOnCurve");
585   getBasicOp();
586   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeTangentOnCurve(theRefCurve, theParameter);
587   endService( " GEOM_Superv_i::MakeTangentOnCurve" );
588   return anObj;
589 }
590
591 //=============================================================================
592 //  MakeVectorDXDYDZ:
593 //=============================================================================
594 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeVectorDXDYDZ (CORBA::Double theDX,
595                                                        CORBA::Double theDY,
596                                                        CORBA::Double theDZ)
597 {
598   beginService( " GEOM_Superv_i::MakeVectorDXDYDZ" );
599   MESSAGE("GEOM_Superv_i::MakeVectorDXDYDZ");
600   getBasicOp();
601   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeVectorDXDYDZ(theDX, theDY, theDZ);
602   endService( " GEOM_Superv_i::MakeVectorDXDYDZ" );
603   return anObj;
604 }
605
606 //=============================================================================
607 //  MakeVectorTwoPnt:
608 //=============================================================================
609 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeVectorTwoPnt (GEOM::GEOM_Object_ptr thePnt1,
610                                                        GEOM::GEOM_Object_ptr thePnt2)
611 {
612   beginService( " GEOM_Superv_i::MakeVectorTwoPnt" );
613   MESSAGE("GEOM_Superv_i::MakeVector");
614   getBasicOp();
615   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeVectorTwoPnt(thePnt1, thePnt2);
616   endService( " GEOM_Superv_i::MakeVectorTwoPnt" );
617   return anObj;
618 }
619
620 //=============================================================================
621 //  MakeLineTwoPnt:
622 //=============================================================================
623 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeLineTwoPnt (GEOM::GEOM_Object_ptr thePnt1,
624                                                      GEOM::GEOM_Object_ptr thePnt2)
625 {
626   beginService( " GEOM_Superv_i::MakeLineTwoPnt");
627   MESSAGE("GEOM_Superv_i::MakeLineTwoPnt");
628   getBasicOp();
629   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeLineTwoPnt(thePnt1, thePnt2);
630   endService( " GEOM_Superv_i::MakeLineTwoPnt");
631   return anObj;
632 }
633
634 //=============================================================================
635 //  MakeLineTwoFaces:
636 //=============================================================================
637 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeLineTwoFaces (GEOM::GEOM_Object_ptr theFace1,
638                                                        GEOM::GEOM_Object_ptr theFace2)
639 {
640   beginService( " GEOM_Superv_i::MakeLineTwoFaces");
641   MESSAGE("GEOM_Superv_i::MakeLineTwoFaces");
642   getBasicOp();
643   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeLineTwoFaces(theFace1, theFace2);
644   endService( " GEOM_Superv_i::MakeLineTwoFaces");
645   return anObj;
646 }
647
648 //=============================================================================
649 //  MakePlaneThreePnt:
650 //=============================================================================
651 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePlaneThreePnt (GEOM::GEOM_Object_ptr thePnt1,
652                                                         GEOM::GEOM_Object_ptr thePnt2,
653                                                         GEOM::GEOM_Object_ptr thePnt3,
654                                                         CORBA::Double theTrimSize)
655 {
656   beginService( " GEOM_Superv_i::MakePlaneThreePnt");
657   MESSAGE("GEOM_Superv_i::MakePlaneThreePnt");
658   getBasicOp();
659   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePlaneThreePnt(thePnt1, thePnt2, thePnt3, theTrimSize);
660   endService( " GEOM_Superv_i::MakePlaneThreePnt");
661   return anObj;
662 }
663
664 //=============================================================================
665 //  MakePlanePntVec:
666 //=============================================================================
667 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePlanePntVec (GEOM::GEOM_Object_ptr thePnt,
668                                                       GEOM::GEOM_Object_ptr theVec,
669                                                       CORBA::Double theTrimSize)
670
671   beginService( " GEOM_Superv_i::MakePlanePntVec" );
672   MESSAGE("GEOM_Superv_i::MakePlanePntVec");
673   getBasicOp();
674   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePlanePntVec(thePnt, theVec, theTrimSize);
675   endService( " GEOM_Superv_i::MakePlanePntVec" );
676   return anObj;
677 }
678
679 //=============================================================================
680 //  MakePlaneFace:
681 //=============================================================================
682 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePlaneFace (GEOM::GEOM_Object_ptr theFace,
683                                                     CORBA::Double theTrimSize)
684 {
685   beginService( " GEOM_Superv_i::MakePlaneFace" );
686   MESSAGE("GEOM_Superv_i::MakePlaneFace");
687   getBasicOp();
688   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePlaneFace(theFace, theTrimSize);
689   endService( " GEOM_Superv_i::MakePlaneFace" );
690   return anObj;
691 }
692
693 //=============================================================================
694 //  MakeMarker:
695 //=============================================================================
696 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeMarker 
697 (CORBA::Double theOX , CORBA::Double theOY , CORBA::Double theOZ,
698  CORBA::Double theXDX, CORBA::Double theXDY, CORBA::Double theXDZ,
699  CORBA::Double theYDX, CORBA::Double theYDY, CORBA::Double theYDZ)
700 {
701   beginService( " GEOM_Superv_i::MakeMarker" );
702   MESSAGE("GEOM_Superv_i::MakeMarker");
703   getBasicOp();
704   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeMarker(theOX, theOY, theOZ, theXDX, theXDY, theXDZ, theYDX, theYDY, theYDZ);
705   endService( " GEOM_Superv_i::MakeMarker" );
706   return anObj;
707 }
708
709 //=============================================================================
710 //  MakeTangentPlaneOnFace:
711 //=============================================================================
712 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeTangentPlaneOnFace (GEOM::GEOM_Object_ptr theFace, 
713                                                  CORBA::Double theParameterU,
714                                                  CORBA::Double theParameterV,
715                                                  CORBA::Double theTrimSize)
716 {
717   beginService( " GEOM_Superv_i::MakeTangentPlaneOnFace" );
718   MESSAGE("GEOM_Superv_i::MakeTangentPlaneOnFace");
719   getBasicOp();
720   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeTangentPlaneOnFace(theFace, theParameterU,theParameterV,theTrimSize);
721   endService( " GEOM_Superv_i::MakeTangentPlaneOnFace" );
722   return anObj;
723 }
724
725 //================= Primitives Construction : 3DPrimOperations ================
726 //=============================================================================
727 //  MakeBox:
728 //=============================================================================
729 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeBox (CORBA::Double theX1,
730                                               CORBA::Double theY1,
731                                               CORBA::Double theZ1,
732                                               CORBA::Double theX2,
733                                               CORBA::Double theY2,
734                                               CORBA::Double theZ2)
735 {
736   beginService( " GEOM_Superv_i::MakeBox" );
737   MESSAGE("GEOM_Superv_i::MakeBox");
738   getBasicOp();
739   get3DPrimOp();
740   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeBoxTwoPnt(myBasicOp->MakePointXYZ(theX1, theY1, theZ1),
741                                                           myBasicOp->MakePointXYZ(theX2, theY2, theZ2));
742   endService( " GEOM_Superv_i::MakeBox" );
743   return anObj;
744 }
745
746 //=============================================================================
747 //  MakeBoxDXDYDZ:
748 //=============================================================================
749 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeBoxDXDYDZ (CORBA::Double theDX, 
750                                                     CORBA::Double theDY, 
751                                                     CORBA::Double theDZ)
752 {
753   beginService( " GEOM_Superv_i::MakeBoxDXDYDZ" );
754   MESSAGE("GEOM_Superv_i::MakeBoxDXDYDZ");
755   get3DPrimOp();
756   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeBoxDXDYDZ(theDX, theDY, theDZ);
757   endService( " GEOM_Superv_i::MakeBoxDXDYDZ" );
758   return anObj;
759 }
760
761 //=============================================================================
762 //  MakeBoxTwoPnt:
763 //=============================================================================
764 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeBoxTwoPnt (GEOM::GEOM_Object_ptr thePnt1, 
765                                                     GEOM::GEOM_Object_ptr thePnt2)
766 {
767   beginService( " GEOM_Superv_i::MakeBoxTwoPnt" );
768   MESSAGE("GEOM_Superv_i::MakeBoxTwoPnt");
769   get3DPrimOp();
770   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeBoxTwoPnt(thePnt1, thePnt2);
771   endService( " GEOM_Superv_i::MakeBoxTwoPnt" );
772   return anObj;
773 }
774
775 //=============================================================================
776 //  MakeFaceHW:
777 //=============================================================================
778 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFaceHW (CORBA::Double theH,
779                                                  CORBA::Double theW,
780                                                  CORBA::Short  theOrientation)
781 {
782   beginService( " GEOM_Superv_i::MakeFaceHW" );
783   MESSAGE("GEOM_Superv_i::MakeFaceHW");
784   get3DPrimOp();
785   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeFaceHW(theH, theW, theOrientation);
786   endService( " GEOM_Superv_i::MakeFaceHW" );
787   return anObj;
788 }
789
790 //=============================================================================
791 //  MakeFaceObjHW:
792 //=============================================================================
793 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFaceObjHW (GEOM::GEOM_Object_ptr theObj, 
794                                                     CORBA::Double theH,
795                                                     CORBA::Double theW)
796 {
797   beginService( " GEOM_Superv_i::MakeFaceObjHW" );
798   MESSAGE("GEOM_Superv_i::MakeFaceObjHW");
799   get3DPrimOp();
800   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeFaceObjHW(theObj, theH, theW);
801   endService( " GEOM_Superv_i::MakeFaceObjHW" );
802   return anObj;
803 }
804
805 //=============================================================================
806 //  MakeDiskPntVecR:
807 //=============================================================================
808 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeDiskPntVecR (GEOM::GEOM_Object_ptr theCenter,
809                                                       GEOM::GEOM_Object_ptr theVector,
810                                                       CORBA::Double theR)
811 {
812   beginService( " GEOM_Superv_i::MakeDiskPntVecR" );
813   MESSAGE("GEOM_Superv_i::MakeDiskPntVecR");
814   get3DPrimOp();
815   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeDiskPntVecR(theCenter, theVector, theR);
816   endService( " GEOM_Superv_i::MakeDiskPntVecR" );
817   return anObj;
818 }
819
820 //=============================================================================
821 //  MakeDiskThreePnt:
822 //=============================================================================
823 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeDiskThreePnt (GEOM::GEOM_Object_ptr thePnt1,
824                                                        GEOM::GEOM_Object_ptr thePnt2,
825                                                        GEOM::GEOM_Object_ptr thePnt3)
826 {
827   beginService( " GEOM_Superv_i::MakeDiskThreePnt" );
828   MESSAGE("GEOM_Superv_i::MakeDiskThreePnt");
829   get3DPrimOp();
830   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeDiskThreePnt(thePnt1, thePnt2, thePnt3);
831   endService( " GEOM_Superv_i::MakeDiskThreePnt" );
832   return anObj;
833 }
834
835 //=============================================================================
836 //  MakeDiskR:
837 //=============================================================================
838 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeDiskR (CORBA::Double theR,
839                                                 CORBA::Short  theOrientation)
840 {
841   beginService( " GEOM_Superv_i::MakeDiskR" );
842   MESSAGE("GEOM_Superv_i::MakeDiskR");
843   get3DPrimOp();
844   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeDiskR(theR, theOrientation);
845   endService( " GEOM_Superv_i::MakeDiskR" );
846   return anObj;
847 }
848
849 //=============================================================================
850 //  MakeCylinderPntVecRH:
851 //=============================================================================
852 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCylinderPntVecRH (GEOM::GEOM_Object_ptr thePnt,
853                                                            GEOM::GEOM_Object_ptr theAxis,
854                                                            CORBA::Double theRadius,
855                                                            CORBA::Double theHeight)
856 {
857   beginService( " GEOM_Superv_i::MakeCylinderPntVecRH" );
858   MESSAGE("GEOM_Superv_i::MakeCylinderPntVecRH");
859   get3DPrimOp();
860   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeCylinderPntVecRH(thePnt, theAxis, theRadius, theHeight);
861   endService( " GEOM_Superv_i::MakeCylinderPntVecRH" );
862   return anObj;
863 }
864
865 //=============================================================================
866 //  MakeCylinderRH:
867 //=============================================================================
868 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCylinderRH (CORBA::Double theR, 
869                                                      CORBA::Double theH)
870 {
871   beginService( " GEOM_Superv_i::MakeCylinderRH" );
872   MESSAGE("GEOM_Superv_i::MakeCylinderRH");
873   get3DPrimOp();
874   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeCylinderRH(theR, theH);
875   endService( " GEOM_Superv_i::MakeCylinderRH" );
876   return anObj; 
877 }
878
879 //=============================================================================
880 //  MakeSphere:
881 //=============================================================================
882 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSphere  (CORBA::Double theX,
883                                                   CORBA::Double theY,
884                                                   CORBA::Double theZ,
885                                                   CORBA::Double theRadius)
886 {
887   beginService( " GEOM_Superv_i::MakeSphepe" );
888   MESSAGE("GEOM_Superv_i::MakeSphepe");
889   getBasicOp();
890   get3DPrimOp();
891   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeSpherePntR(myBasicOp->MakePointXYZ(theX, theY, theZ), theRadius);
892   endService( " GEOM_Superv_i::MakeSphepe" );
893   return anObj;
894 }
895
896 //=============================================================================
897 //  MakeSphereR:
898 //=============================================================================
899 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSphereR (CORBA::Double theR)
900 {
901   beginService( " GEOM_Superv_i::MakeSphereR" );
902   MESSAGE("GEOM_Superv_i::MakeSphereR");
903   get3DPrimOp();
904   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeSphereR(theR);
905   endService( " GEOM_Superv_i::MakeSphereR" );
906   return anObj;
907 }
908
909 //=============================================================================
910 //  MakeSpherePntR:
911 //=============================================================================
912 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSpherePntR (GEOM::GEOM_Object_ptr thePnt, 
913                                                      CORBA::Double theR)
914 {
915   beginService( " GEOM_Superv_i::MakeSpherePntR" );
916   MESSAGE("GEOM_Superv_i::MakeSpherePntR");
917   get3DPrimOp();
918   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeSpherePntR(thePnt, theR);
919   endService( " GEOM_Superv_i::MakeSpherePntR" );
920   return anObj;
921 }
922
923 //=============================================================================
924 //  MakeTorusPntVecRR:
925 //=============================================================================
926 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeTorusPntVecRR (GEOM::GEOM_Object_ptr thePnt,
927                                                         GEOM::GEOM_Object_ptr theVec,
928                                                         CORBA::Double theRMajor,
929                                                         CORBA::Double theRMinor)
930 {
931   beginService( " GEOM_Superv_i::MakeTorusPntVecRR" );
932   MESSAGE("GEOM_Superv_i::MakeTorusPntVecRR");
933   get3DPrimOp();
934   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeTorusPntVecRR(thePnt, theVec, theRMajor, theRMinor);
935   endService( " GEOM_Superv_i::MakeTorusPntVecRR" );
936   return anObj;
937 }
938
939 //=============================================================================
940 //  MakeTorusRR:
941 //=============================================================================
942 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeTorusRR (CORBA::Double theRMajor,
943                                                   CORBA::Double theRMinor)
944 {
945   beginService( " GEOM_Superv_i::MakeTorusRR" );
946   MESSAGE("GEOM_Superv_i::MakeTorusRR");
947   get3DPrimOp();
948   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeTorusRR(theRMajor, theRMinor);
949   endService( " GEOM_Superv_i::MakeTorusRR" );
950   return anObj;
951 }
952
953 //=============================================================================
954 //  MakeConePntVecR1R2H:
955 //=============================================================================
956 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeConePntVecR1R2H (GEOM::GEOM_Object_ptr thePnt,
957                                                           GEOM::GEOM_Object_ptr theAxis,
958                                                           CORBA::Double theR1,
959                                                           CORBA::Double theR2,
960                                                           CORBA::Double theHeight)
961 {
962   beginService( " GEOM_Superv_i::MakeConePntVecR1R2H" );
963   MESSAGE("GEOM_Superv_i::MakeConePntVecR1R2H");
964   get3DPrimOp();
965   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeConePntVecR1R2H(thePnt, theAxis, theR1, theR2, theHeight);
966   endService( " GEOM_Superv_i::MakeConePntVecR1R2H" );
967   return anObj;
968 }
969
970 //=============================================================================
971 //  MakeConeR1R2H:
972 //=============================================================================
973 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeConeR1R2H (CORBA::Double theR1, 
974                                                     CORBA::Double theR2, 
975                                                     CORBA::Double theHeight)
976 {
977   beginService( " GEOM_Superv_i::MakeConeR1R2H" );
978   MESSAGE("GEOM_Superv_i::MakeConeR1R2H");
979   get3DPrimOp();
980   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeConeR1R2H(theR1, theR2, theHeight);
981   endService( " GEOM_Superv_i::MakeConeR1R2H" );
982   return anObj;
983 }
984
985 //=============================================================================
986 //  MakePrismVecH:
987 //=============================================================================
988 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismVecH (GEOM::GEOM_Object_ptr theBase,
989                                                     GEOM::GEOM_Object_ptr theVec,
990                                                     CORBA::Double         theH)
991 {
992   beginService( " GEOM_Superv_i::MakePrismVecH" );
993   MESSAGE("GEOM_Superv_i::MakePrismVecH");
994   get3DPrimOp();
995   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismVecH(theBase, theVec, theH);
996   endService( " GEOM_Superv_i::MakePrismVecH" );
997   return anObj;
998 }
999
1000 //=============================================================================
1001 //  MakePrismVecH2Ways:
1002 //=============================================================================
1003 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismVecH2Ways (GEOM::GEOM_Object_ptr theBase,
1004                                                          GEOM::GEOM_Object_ptr theVec,
1005                                                          CORBA::Double         theH)
1006 {
1007   beginService( " GEOM_Superv_i::MakePrismVecH2Ways" );
1008   MESSAGE("GEOM_Superv_i::MakePrismVecH2Ways");
1009   get3DPrimOp();
1010   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismVecH2Ways(theBase, theVec, theH);
1011   endService( " GEOM_Superv_i::MakePrismVecH2Ways" );
1012   return anObj;
1013 }
1014
1015 //=============================================================================
1016 //  MakePrismTwoPnt:
1017 //=============================================================================
1018 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismTwoPnt (GEOM::GEOM_Object_ptr theBase,
1019                                                       GEOM::GEOM_Object_ptr thePoint1,
1020                                                       GEOM::GEOM_Object_ptr thePoint2)
1021 {
1022   beginService( " GEOM_Superv_i::MakePrismTwoPnt" );
1023   MESSAGE("GEOM_Superv_i::MakePrismTwoPnt");
1024   get3DPrimOp();
1025   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismTwoPnt(theBase, thePoint1, thePoint2);
1026   endService( " GEOM_Superv_i::MakePrismTwoPnt" );
1027   return anObj;
1028 }
1029
1030 //=============================================================================
1031 //  MakePrismTwoPnt2Ways:
1032 //=============================================================================
1033 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismTwoPnt2Ways (GEOM::GEOM_Object_ptr theBase,
1034                                                            GEOM::GEOM_Object_ptr thePoint1,
1035                                                            GEOM::GEOM_Object_ptr thePoint2)
1036 {
1037   beginService( " GEOM_Superv_i::MakePrismTwoPnt2Ways" );
1038   MESSAGE("GEOM_Superv_i::MakePrismTwoPnt2Ways");
1039   get3DPrimOp();
1040   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismTwoPnt2Ways(theBase, thePoint1, thePoint2);
1041   endService( " GEOM_Superv_i::MakePrismTwoPnt2Ways" );
1042   return anObj;
1043 }
1044
1045 //=============================================================================
1046 //  MakePrismDXDYDZ:
1047 //=============================================================================
1048 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismDXDYDZ (GEOM::GEOM_Object_ptr theBase,
1049                       CORBA::Double theDX, CORBA::Double theDY, CORBA::Double theDZ)
1050 {
1051   beginService( " GEOM_Superv_i::MakePrismDXDYDZ" );
1052   MESSAGE("GEOM_Superv_i::MakePrismDXDYDZ");
1053   get3DPrimOp();
1054   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismDXDYDZ(theBase, theDX, theDY, theDZ);
1055   endService( " GEOM_Superv_i::MakePrismDXDYDZ" );
1056   return anObj;
1057 }
1058
1059 //=============================================================================
1060 //  MakePrismDXDYDZ:
1061 //=============================================================================
1062 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismDXDYDZ2Ways (GEOM::GEOM_Object_ptr theBase,
1063                       CORBA::Double theDX, CORBA::Double theDY, CORBA::Double theDZ)
1064 {
1065   beginService( " GEOM_Superv_i::MakePrismDXDYDZ2Ways" );
1066   MESSAGE("GEOM_Superv_i::MakePrismDXDYDZ2Ways");
1067   get3DPrimOp();
1068   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismDXDYDZ2Ways(theBase, theDX, theDY, theDZ);
1069   endService( " GEOM_Superv_i::MakePrismDXDYDZ2Ways" );
1070   return anObj;
1071 }
1072
1073 //=============================================================================
1074 //  MakePipe:
1075 //=============================================================================
1076 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipe (GEOM::GEOM_Object_ptr theBase, 
1077                                                GEOM::GEOM_Object_ptr thePath)
1078 {
1079   beginService( " GEOM_Superv_i::MakePipe" );
1080   MESSAGE("GEOM_Superv_i::MakePipe");
1081   get3DPrimOp();
1082   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePipe(theBase, thePath);
1083   endService( " GEOM_Superv_i::MakePipe" );
1084   return anObj;
1085 }
1086
1087 //=============================================================================
1088 //  MakeRevolutionAxisAngle:
1089 //=============================================================================
1090 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeRevolutionAxisAngle (GEOM::GEOM_Object_ptr theBase,
1091                                                               GEOM::GEOM_Object_ptr theAxis,
1092                                                               CORBA::Double theAngle)
1093 {
1094   beginService( " GEOM_Superv_i::MakeRevolutionAxisAngle" );
1095   MESSAGE("GEOM_Superv_i::MakeRevolutionAxisAngle");
1096   get3DPrimOp();
1097   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeRevolutionAxisAngle(theBase, theAxis, theAngle);
1098   endService( " GEOM_Superv_i::MakeRevolutionAxisAngle" );
1099   return anObj;
1100 }
1101
1102 //=============================================================================
1103 //  MakeRevolutionAxisAngle:
1104 //=============================================================================
1105 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeRevolutionAxisAngle2Ways (GEOM::GEOM_Object_ptr theBase,
1106                                                                    GEOM::GEOM_Object_ptr theAxis,
1107                                                                    CORBA::Double theAngle)
1108 {
1109   beginService( " GEOM_Superv_i::MakeRevolutionAxisAngle2Ways" );
1110   MESSAGE("GEOM_Superv_i::MakeRevolutionAxisAngle2Ways");
1111   get3DPrimOp();
1112   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeRevolutionAxisAngle2Ways(theBase, theAxis, theAngle);
1113   endService( " GEOM_Superv_i::MakeRevolutionAxisAngle2Ways" );
1114   return anObj;
1115 }
1116
1117 //=============================================================================
1118 //  MakeFilling:
1119 //=============================================================================
1120 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilling (GEOM::GEOM_Object_ptr theShape,
1121                                                   CORBA::Long theMinDeg, CORBA::Long theMaxDeg,
1122                                                   CORBA::Double theTol2D, CORBA::Double theTol3D,
1123                                                   CORBA::Long theNbIter, CORBA::Boolean theApprox)
1124 {
1125   beginService( " GEOM_Superv_i::MakeFilling" );
1126   MESSAGE("GEOM_Superv_i::MakeFilling");
1127   get3DPrimOp();
1128   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeFilling(theShape, theMinDeg, theMaxDeg, theTol2D, theTol3D, theNbIter, theApprox);
1129   endService( " GEOM_Superv_i::MakeFilling" );
1130   return anObj;
1131 }
1132
1133 //============================= BooleanOperations =============================
1134 //=============================================================================
1135 //  MakeBoolean:
1136 //=============================================================================
1137 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeBoolean (GEOM::GEOM_Object_ptr theShape1,
1138                                                   GEOM::GEOM_Object_ptr theShape2,
1139                                                   CORBA::Long theOperation)
1140 {
1141   beginService( " GEOM_Superv_i::MakeBoolean" );
1142   // theOperation indicates the operation to be done:
1143   // 1 - Common, 2 - Cut, 3 - Fuse, 4 - Section
1144   MESSAGE("GEOM_Superv_i::MakeBoolean");
1145   getBoolOp();
1146   GEOM::GEOM_Object_ptr anObj = myBoolOp->MakeBoolean(theShape1, theShape2, theOperation);
1147   endService( " GEOM_Superv_i::MakeBoolean" );
1148   return anObj;
1149 }
1150
1151 //=============================================================================
1152 //  MakeThruSections:
1153 //=============================================================================
1154 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeThruSections(const GEOM::ListOfGO& theSeqSections,
1155                                          CORBA::Boolean theModeSolid,
1156                                          CORBA::Double thePreci,
1157                                          CORBA::Boolean theRuled)
1158 {
1159   beginService( " GEOM_Superv_i::MakeThruSections" );
1160   MESSAGE("GEOM_Superv_i::MakeThruSections");
1161   get3DPrimOp();
1162   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeThruSections(theSeqSections, theModeSolid,thePreci,theRuled);
1163   endService( " GEOM_Superv_i::MakeThruSections" );
1164   return anObj;
1165 }
1166
1167 //=============================================================================
1168 //  MakePipe:
1169 //=============================================================================
1170 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipeWithDifferentSections
1171                      (const GEOM::ListOfGO& theBases,
1172                       const GEOM::ListOfGO& theLocations,
1173                       GEOM::GEOM_Object_ptr thePath,
1174                       CORBA::Boolean theWithContact,
1175                       CORBA::Boolean theWithCorrections)
1176 {
1177   beginService( " GEOM_Superv_i::MakePipeWithDifferentSections" );
1178   MESSAGE("GEOM_Superv_i::MakePipeWithDifferentSections");
1179   get3DPrimOp();
1180   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePipeWithDifferentSections(theBases,theLocations, thePath,theWithContact,theWithCorrections);
1181   endService( " GEOM_Superv_i::MakePipeWithDifferentSections" );
1182   return anObj;
1183 }
1184
1185
1186 //=============================================================================
1187 //  MakePipe:
1188 //=============================================================================
1189 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipeWithShellSections
1190                    (const GEOM::ListOfGO& theBases,
1191                     const GEOM::ListOfGO& theSubBases,
1192                     const GEOM::ListOfGO& theLocations,
1193                     GEOM::GEOM_Object_ptr thePath,
1194                     CORBA::Boolean theWithContact,
1195                     CORBA::Boolean theWithCorrections)
1196 {
1197   beginService( " GEOM_Superv_i::MakePipeWithShellSections" );
1198   MESSAGE("GEOM_Superv_i::MakePipeWithShellSections");
1199   get3DPrimOp();
1200   GEOM::GEOM_Object_ptr anObj =
1201     my3DPrimOp->MakePipeWithShellSections(theBases, theSubBases,
1202                                           theLocations, thePath,
1203                                           theWithContact, theWithCorrections);
1204   endService( " GEOM_Superv_i::MakePipeWithShellSections" );
1205   return anObj;
1206 }
1207
1208
1209 //=============================================================================
1210 //  MakePipe:
1211 //=============================================================================
1212 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipeShellsWithoutPath
1213                    (const GEOM::ListOfGO& theBases,
1214                     const GEOM::ListOfGO& theLocations)
1215 {
1216   beginService( " GEOM_Superv_i::MakePipeShellsWithoutPath" );
1217   MESSAGE("GEOM_Superv_i::MakePipeShellsWithoutPath");
1218   get3DPrimOp();
1219   GEOM::GEOM_Object_ptr anObj =
1220     my3DPrimOp->MakePipeShellsWithoutPath(theBases,theLocations);
1221   endService( " GEOM_Superv_i::MakePipeShellsWithoutPath" );
1222   return anObj;
1223 }
1224
1225
1226 //=============================================================================
1227 //  MakePipe:
1228 //=============================================================================
1229 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipeBiNormalAlongVector 
1230                                                 (GEOM::GEOM_Object_ptr theBase, 
1231                                                  GEOM::GEOM_Object_ptr thePath, 
1232                                                  GEOM::GEOM_Object_ptr theVec)
1233 {
1234   beginService( " GEOM_Superv_i::MakePipeBiNormalAlongVector" );
1235   MESSAGE("GEOM_Superv_i::MakePipeBiNormalAlongVector");
1236   get3DPrimOp();
1237   GEOM::GEOM_Object_ptr anObj = 
1238     my3DPrimOp->MakePipeBiNormalAlongVector(theBase, thePath, theVec);
1239   endService( " GEOM_Superv_i::MakePipeBiNormalAlongVector" );
1240   return anObj;
1241 }
1242
1243
1244 //=============================================================================
1245 //  MakeFuse:
1246 //=============================================================================
1247 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFuse (GEOM::GEOM_Object_ptr theShape1,
1248                                                GEOM::GEOM_Object_ptr theShape2)
1249 {
1250   beginService( " GEOM_Superv_i::MakeFuse" );
1251   MESSAGE("GEOM_Superv_i::MakeFuse");
1252   getBoolOp();
1253   GEOM::GEOM_Object_ptr anObj = myBoolOp->MakeBoolean(theShape1, theShape2, 3);
1254   endService( " GEOM_Superv_i::MakeFuse" );
1255   return anObj;
1256 }
1257
1258 //=============================================================================
1259 //  MakePartition:
1260 //=============================================================================
1261 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePartition (GEOM::GEOM_List_ptr   theShapes,
1262                                                     GEOM::GEOM_List_ptr   theTools,
1263                                                     GEOM::GEOM_List_ptr   theKeepInside,
1264                                                     GEOM::GEOM_List_ptr   theRemoveInside,
1265                                                     CORBA::Short      theLimit,
1266                                                     CORBA::Boolean    theRemoveWebs,
1267                                                     GEOM::GEOM_List_ptr theMaterials,
1268                                                     CORBA::Short theKeepNonlimitShapes)
1269 {
1270   beginService( " GEOM_Superv_i::MakePartition" );
1271   MESSAGE("GEOM_Superv_i::MakePartition");
1272   GEOM_List_i<GEOM::ListOfGO>* aListImplS = 
1273     dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theShapes, myPOA).in());
1274   GEOM_List_i<GEOM::ListOfGO>* aListImplT = 
1275     dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theTools, myPOA).in());
1276   GEOM_List_i<GEOM::ListOfGO>* aListImplKI = 
1277     dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theKeepInside, myPOA).in());
1278   GEOM_List_i<GEOM::ListOfGO>* aListImplRI = 
1279     dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theRemoveInside, myPOA).in());
1280   GEOM_List_i<GEOM::ListOfLong>* aListImplM = 
1281     dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theMaterials, myPOA).in());
1282   if (aListImplS && aListImplT && aListImplKI && aListImplRI && aListImplM) {
1283     getBoolOp();
1284     GEOM::GEOM_Object_ptr anObj =
1285       myBoolOp->MakePartition(aListImplS->GetList(), aListImplT->GetList(), 
1286                               aListImplKI->GetList(), aListImplRI->GetList(),
1287                               theLimit, theRemoveWebs, aListImplM->GetList(),
1288                               theKeepNonlimitShapes);
1289     endService( " GEOM_Superv_i::MakePartition" );
1290     return anObj;
1291   }
1292   endService( " GEOM_Superv_i::MakePartition" );
1293   return NULL;
1294 }
1295
1296 //=============================================================================
1297 //  MakeHalfPartition:
1298 //=============================================================================
1299 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeHalfPartition (GEOM::GEOM_Object_ptr theShape,
1300                                                         GEOM::GEOM_Object_ptr thePlane)
1301 {
1302   beginService( " GEOM_Superv_i::MakeHalfPartition" );
1303   MESSAGE("GEOM_Superv_i::MakeHalfPartition");
1304   getBoolOp();
1305   GEOM::GEOM_Object_ptr anObj = myBoolOp->MakeHalfPartition(theShape, thePlane);
1306   endService( " GEOM_Superv_i::MakeHalfPartition" );
1307   return anObj;
1308 }
1309
1310 //============================== InsertOperations =============================
1311 //=============================================================================
1312 //  MakeCopy:
1313 //=============================================================================
1314 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCopy (GEOM::GEOM_Object_ptr theOriginal)
1315 {
1316   beginService( " GEOM_Superv_i::MakeCopy" );
1317   MESSAGE("GEOM_Superv_i::MakeCopy");
1318   getInsOp();
1319   GEOM::GEOM_Object_ptr anObj = myInsOp->MakeCopy(theOriginal);
1320   endService( " GEOM_Superv_i::MakeCopy" );
1321   return anObj;
1322 }
1323
1324 //=============================================================================
1325 //  Export:
1326 //=============================================================================
1327 void GEOM_Superv_i::Export (GEOM::GEOM_Object_ptr theObject, 
1328                             const char*           theFileName, 
1329                             const char*           theFormatName)
1330 {
1331   beginService( " GEOM_Superv_i::Export" );
1332   MESSAGE("GEOM_Superv_i::Export");
1333   getInsOp();
1334   myInsOp->Export(theObject, theFileName, theFormatName);
1335   endService( " GEOM_Superv_i::Export" );
1336 }
1337
1338 //=============================================================================
1339 //  Import:
1340 //=============================================================================
1341 GEOM::GEOM_Object_ptr GEOM_Superv_i::Import (const char* theFileName, 
1342                                              const char* theFormatName)
1343 {
1344   beginService( " GEOM_Superv_i::Import" );
1345   MESSAGE("GEOM_Superv_i::Import");
1346   getInsOp();
1347   GEOM::GEOM_Object_ptr anObj = myInsOp->Import(theFileName, theFormatName);
1348   endService( " GEOM_Superv_i::Import" );
1349   return anObj;
1350 }
1351
1352 //=============================================================================
1353 //  ImportTranslators:
1354 //=============================================================================
1355 void GEOM_Superv_i::ImportTranslators (GEOM::string_array_out theFormats,
1356                                        GEOM::string_array_out thePatterns)
1357 {
1358   beginService( " GEOM_Superv_i::ImportTranslators" );
1359   MESSAGE("GEOM_Superv_i::ImportTranslators");
1360   getInsOp();
1361   myInsOp->ImportTranslators(theFormats, thePatterns);
1362   endService( " GEOM_Superv_i::ImportTranslators" );
1363 }
1364
1365 //=============================================================================
1366 //  ExportTranslators:
1367 //=============================================================================
1368 void GEOM_Superv_i::ExportTranslators (GEOM::string_array_out theFormats,
1369                                        GEOM::string_array_out thePatterns)
1370 {
1371   beginService( " GEOM_Superv_i::ExportTranslators" );
1372   MESSAGE("GEOM_Superv_i::ExportTranslators");
1373   getInsOp();
1374   myInsOp->ExportTranslators(theFormats, thePatterns);
1375   endService( " GEOM_Superv_i::ExportTranslators" );
1376 }
1377
1378 //============================= TransformOperations ===========================
1379 //=============================================================================
1380 //  TranslateTwoPoints:
1381 //=============================================================================
1382 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateTwoPoints (GEOM::GEOM_Object_ptr theObject,
1383                                                          GEOM::GEOM_Object_ptr thePoint1,
1384                                                          GEOM::GEOM_Object_ptr thePoint2)
1385 {
1386   beginService( " GEOM_Superv_i::TranslateTwoPoints" );
1387   MESSAGE("GEOM_Superv_i::TranslateTwoPoints");
1388   getTransfOp();
1389   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateTwoPoints(theObject, thePoint1, thePoint2);
1390   endService( " GEOM_Superv_i::TranslateTwoPoints" );
1391   return anObj;
1392 }
1393
1394 //=============================================================================
1395 //  TranslateTwoPointsCopy:
1396 //=============================================================================
1397 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateTwoPointsCopy (GEOM::GEOM_Object_ptr theObject,
1398                                                              GEOM::GEOM_Object_ptr thePoint1,
1399                                                              GEOM::GEOM_Object_ptr thePoint2)
1400 {
1401   beginService( " GEOM_Superv_i::TranslateTwoPointsCopy" );
1402   MESSAGE("GEOM_Superv_i::TranslateTwoPointsCopy");
1403   getTransfOp();
1404   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateTwoPointsCopy(theObject, thePoint1, thePoint2);
1405   endService( " GEOM_Superv_i::TranslateTwoPointsCopy" );
1406   return anObj;
1407 }
1408
1409 //=============================================================================
1410 //  TranslateDXDYDZ:
1411 //=============================================================================
1412 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateDXDYDZ (GEOM::GEOM_Object_ptr theObject,
1413                                                       CORBA::Double theDX, 
1414                                                       CORBA::Double theDY, 
1415                                                       CORBA::Double theDZ)
1416 {
1417   beginService( " GEOM_Superv_i::TranslateDXDYDZ" );
1418   MESSAGE("GEOM_Superv_i::TranslateDXDYDZ");
1419   getTransfOp();
1420   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateDXDYDZ(theObject, theDX, theDY, theDZ);
1421   endService( " GEOM_Superv_i::TranslateDXDYDZ" );
1422   return anObj;
1423 }
1424
1425 //=============================================================================
1426 //  TranslateDXDYDZCopy:
1427 //=============================================================================
1428 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateDXDYDZCopy (GEOM::GEOM_Object_ptr theObject,
1429                                                           CORBA::Double theDX, 
1430                                                           CORBA::Double theDY, 
1431                                                           CORBA::Double theDZ)
1432 {
1433   beginService( " GEOM_Superv_i::TranslateDXDYDZCopy" );
1434   MESSAGE("GEOM_Superv_i::TranslateDXDYDZCopy");
1435   getTransfOp();
1436   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateDXDYDZCopy(theObject, theDX, theDY, theDZ);
1437   endService( " GEOM_Superv_i::TranslateDXDYDZCopy" );
1438   return anObj;
1439 }
1440
1441 //=============================================================================
1442 //  TranslateVector:
1443 //=============================================================================
1444 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateVector (GEOM::GEOM_Object_ptr theObject,
1445                                                       GEOM::GEOM_Object_ptr theVector)
1446 {
1447   beginService( " GEOM_Superv_i::TranslateVector" );
1448   MESSAGE("GEOM_Superv_i::TranslateVector");
1449   getTransfOp();
1450   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateVector(theObject, theVector);
1451   endService( " GEOM_Superv_i::TranslateVector" );
1452   return anObj;
1453 }
1454
1455 //=============================================================================
1456 //  TranslateVectorCopy:
1457 //=============================================================================
1458 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateVectorCopy (GEOM::GEOM_Object_ptr theObject,
1459                                                           GEOM::GEOM_Object_ptr theVector)
1460 {
1461   beginService( " GEOM_Superv_i::TranslateVectorCopy" );
1462   MESSAGE("GEOM_Superv_i::TranslateVectorCopy");
1463   getTransfOp();
1464   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateVectorCopy(theObject, theVector);
1465   endService( " GEOM_Superv_i::TranslateVectorCopy" );
1466   return anObj;
1467 }
1468
1469 //=============================================================================
1470 //  TranslateVectorDistance:
1471 //=============================================================================
1472 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateVectorDistance (GEOM::GEOM_Object_ptr theObject,
1473                                                               GEOM::GEOM_Object_ptr theVector,
1474                                                               CORBA::Double theDistance,
1475                                                               CORBA::Boolean theCopy)
1476 {
1477   beginService( " GEOM_Superv_i::TranslateVectorDistance" );
1478   MESSAGE("GEOM_Superv_i::TranslateVectorDistance");
1479   getTransfOp();
1480   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateVectorDistance(theObject, 
1481                                                                     theVector, theDistance, theCopy);
1482   endService( " GEOM_Superv_i::TranslateVectorDistance" );
1483   return anObj;
1484 }
1485
1486 //=============================================================================
1487 //  MultiTranslate1D:
1488 //=============================================================================
1489 GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiTranslate1D (GEOM::GEOM_Object_ptr theObject,
1490                                                        GEOM::GEOM_Object_ptr theVector,
1491                                                        CORBA::Double theStep,
1492                                                        CORBA::Long theNbTimes)
1493 {
1494   beginService( " GEOM_Superv_i::MultiTranslate1D" );
1495   MESSAGE("GEOM_Superv_i::MultiTranslate1D");
1496   getTransfOp();
1497   GEOM::GEOM_Object_ptr anObj = myTransfOp->MultiTranslate1D(theObject, theVector, theStep, theNbTimes);
1498   endService( " GEOM_Superv_i::MultiTranslate1D" );
1499   return anObj;
1500 }
1501
1502 //=============================================================================
1503 //  MultiTranslate2D:
1504 //=============================================================================
1505 GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiTranslate2D (GEOM::GEOM_Object_ptr theObject,
1506                                                        GEOM::GEOM_Object_ptr theVector1,
1507                                                        CORBA::Double theStep1,
1508                                                        CORBA::Long theNbTimes1,
1509                                                        GEOM::GEOM_Object_ptr theVector2,
1510                                                        CORBA::Double theStep2,
1511                                                        CORBA::Long theNbTimes2)
1512 {
1513   beginService( " GEOM_Superv_i::MultiTranslate2D" );
1514   MESSAGE("GEOM_Superv_i::MultiTranslate2D");
1515   getTransfOp();
1516   GEOM::GEOM_Object_ptr anObj = myTransfOp->MultiTranslate2D(theObject, theVector1, theStep1, theNbTimes1,
1517                                                              theVector2, theStep2, theNbTimes2);
1518   endService( " GEOM_Superv_i::MultiTranslate2D" );
1519   return anObj;
1520 }
1521
1522 //=============================================================================
1523 //  Rotate:
1524 //=============================================================================
1525 GEOM::GEOM_Object_ptr GEOM_Superv_i::Rotate (GEOM::GEOM_Object_ptr theObject,
1526                                              GEOM::GEOM_Object_ptr theAxis,
1527                                              CORBA::Double theAngle)
1528 {
1529   beginService( " GEOM_Superv_i::Rotate" );
1530   MESSAGE("GEOM_Superv_i::Rotate");
1531   getTransfOp();
1532   GEOM::GEOM_Object_ptr anObj = myTransfOp->Rotate(theObject, theAxis, theAngle);
1533   endService( " GEOM_Superv_i::Rotate" );
1534   return anObj;
1535 }
1536
1537 //=============================================================================
1538 //  RotateCopy:
1539 //=============================================================================
1540 GEOM::GEOM_Object_ptr GEOM_Superv_i::RotateCopy (GEOM::GEOM_Object_ptr theObject,
1541                                                  GEOM::GEOM_Object_ptr theAxis,
1542                                                  CORBA::Double theAngle)
1543 {
1544   beginService( " GEOM_Superv_i::RotateCopy" );
1545   MESSAGE("GEOM_Superv_i::RotateCopy");
1546   getTransfOp();
1547   GEOM::GEOM_Object_ptr anObj = myTransfOp->RotateCopy(theObject, theAxis, theAngle);
1548   endService( " GEOM_Superv_i::RotateCopy" );
1549   return anObj;
1550 }
1551 //=============================================================================
1552 //  RotateThreePoints:
1553 //=============================================================================
1554 GEOM::GEOM_Object_ptr GEOM_Superv_i::RotateThreePoints (GEOM::GEOM_Object_ptr theObject,
1555                                                         GEOM::GEOM_Object_ptr theCentPoint,
1556                                                         GEOM::GEOM_Object_ptr thePoint1,
1557                                                         GEOM::GEOM_Object_ptr thePoint2)
1558 {
1559   beginService( " GEOM_Superv_i::RotateThreePoints" );
1560   MESSAGE("GEOM_Superv_i::RotateThreePoints");
1561   getTransfOp();
1562   GEOM::GEOM_Object_ptr anObj = myTransfOp->RotateThreePoints(theObject, theCentPoint, thePoint1, thePoint2);
1563   endService( " GEOM_Superv_i::RotateThreePoints" );
1564   return anObj;
1565 }
1566
1567 //=============================================================================
1568 //  RotateThreePointsCopy:
1569 //=============================================================================
1570 GEOM::GEOM_Object_ptr GEOM_Superv_i::RotateThreePointsCopy (GEOM::GEOM_Object_ptr theObject,
1571                                                             GEOM::GEOM_Object_ptr theCentPoint,
1572                                                             GEOM::GEOM_Object_ptr thePoint1,
1573                                                             GEOM::GEOM_Object_ptr thePoint2)
1574 {
1575   beginService( " GEOM_Superv_i::RotateThreePointsCopy" );
1576   MESSAGE("GEOM_Superv_i::RotateThreePointsCopy");
1577   getTransfOp();
1578   GEOM::GEOM_Object_ptr anObj = myTransfOp->RotateThreePointsCopy(theObject, theCentPoint, thePoint1, thePoint2);
1579   endService( " GEOM_Superv_i::RotateThreePointsCopy" );
1580   return anObj;
1581 }
1582
1583 //=============================================================================
1584 //  MultiRotate1D:
1585 //=============================================================================
1586 GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiRotate1D (GEOM::GEOM_Object_ptr theObject,
1587                                                     GEOM::GEOM_Object_ptr theAxis,
1588                                                     CORBA::Long theNbTimes)
1589 {
1590   beginService( " GEOM_Superv_i::MultiRotate1D" );
1591   MESSAGE("GEOM_Superv_i::MultiRotate1D");
1592   getTransfOp();
1593   GEOM::GEOM_Object_ptr anObj = myTransfOp->MultiRotate1D(theObject, theAxis, theNbTimes);
1594   endService( " GEOM_Superv_i::MultiRotate1D" );
1595   return anObj;
1596 }
1597
1598 //=============================================================================
1599 //  MultiRotate2D:
1600 //=============================================================================
1601 GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiRotate2D (GEOM::GEOM_Object_ptr theObject,
1602                                                     GEOM::GEOM_Object_ptr theAxis,
1603                                                     CORBA::Double theAngle,
1604                                                     CORBA::Long theNbTimes1,
1605                                                     CORBA::Double theStep,
1606                                                     CORBA::Long theNbTimes2)
1607 {
1608   beginService( " GEOM_Superv_i::MultiRotate2D" );
1609   MESSAGE("GEOM_Superv_i::MultiRotate2D");
1610   getTransfOp();
1611   GEOM::GEOM_Object_ptr anObj = myTransfOp->MultiRotate2D(theObject, theAxis, theAngle, theNbTimes1, theStep, theNbTimes2);
1612   endService( " GEOM_Superv_i::MultiRotate2D" );
1613   return anObj;
1614 }
1615
1616 //=============================================================================
1617 //  MirrorPlane:
1618 //=============================================================================
1619 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPlane (GEOM::GEOM_Object_ptr theObject, 
1620                                                   GEOM::GEOM_Object_ptr thePlane)
1621 {
1622   beginService( " GEOM_Superv_i::MirrorPlane" );
1623   MESSAGE("GEOM_Superv_i::MirrorPlane");
1624   getTransfOp();
1625   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorPlane(theObject, thePlane);
1626   endService( " GEOM_Superv_i::MirrorPlane" );
1627   return anObj;
1628 }
1629
1630 //=============================================================================
1631 //  MirrorPlaneCopy:
1632 //=============================================================================
1633 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPlaneCopy (GEOM::GEOM_Object_ptr theObject, 
1634                                                       GEOM::GEOM_Object_ptr thePlane)
1635 {
1636   beginService( " GEOM_Superv_i::MirrorPlaneCopy" );
1637   MESSAGE("GEOM_Superv_i::MirrorPlaneCopy");
1638   getTransfOp();
1639   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorPlaneCopy(theObject, thePlane);
1640   endService( " GEOM_Superv_i::MirrorPlaneCopy" );
1641   return anObj;
1642 }
1643
1644 //=============================================================================
1645 //  MirrorAxis:
1646 //=============================================================================
1647 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorAxis (GEOM::GEOM_Object_ptr theObject, 
1648                                                  GEOM::GEOM_Object_ptr theAxis)
1649 {
1650   beginService( " GEOM_Superv_i::MirrorAxis" );
1651   MESSAGE("GEOM_Superv_i::MirrorAxis");
1652   getTransfOp();
1653   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorAxis(theObject, theAxis);
1654   endService( " GEOM_Superv_i::MirrorAxis" );
1655   return anObj;
1656 }
1657
1658 //=============================================================================
1659 //  MirrorAxisCopy:
1660 //=============================================================================
1661 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorAxisCopy (GEOM::GEOM_Object_ptr theObject, 
1662                                                      GEOM::GEOM_Object_ptr theAxis)
1663 {
1664   beginService( " GEOM_Superv_i::MirrorAxisCopy" );
1665   MESSAGE("GEOM_Superv_i::MirrorAxisCopy");
1666   getTransfOp();
1667   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorAxisCopy(theObject, theAxis);
1668   endService( " GEOM_Superv_i::MirrorAxisCopy" );
1669   return anObj;
1670 }
1671
1672 //=============================================================================
1673 //  MirrorPoint:
1674 //=============================================================================
1675 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPoint (GEOM::GEOM_Object_ptr theObject, 
1676                                                   GEOM::GEOM_Object_ptr thePoint)
1677 {
1678   beginService( " GEOM_Superv_i::MirrorPoint" );
1679   MESSAGE("GEOM_Superv_i::MirrorPoint");
1680   getTransfOp();
1681   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorPoint(theObject, thePoint);
1682   endService( " GEOM_Superv_i::MirrorPoint" );
1683   return anObj;
1684 }
1685
1686 //=============================================================================
1687 //  MirrorPointCopy:
1688 //=============================================================================
1689 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPointCopy (GEOM::GEOM_Object_ptr theObject, 
1690                                                       GEOM::GEOM_Object_ptr thePoint)
1691 {
1692   beginService( " GEOM_Superv_i::MirrorPoint" );
1693   MESSAGE("GEOM_Superv_i::MirrorPointCopy");
1694   getTransfOp();
1695   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorPointCopy(theObject, thePoint);
1696   endService( " GEOM_Superv_i::MirrorPoint" );
1697   return anObj;
1698 }
1699
1700 //=============================================================================
1701 //  OffsetShape:
1702 //=============================================================================
1703 GEOM::GEOM_Object_ptr GEOM_Superv_i::OffsetShape (GEOM::GEOM_Object_ptr theObject, 
1704                                                   CORBA::Double theOffset)
1705 {
1706   beginService( " GEOM_Superv_i::OffsetShape" );
1707   MESSAGE("GEOM_Superv_i::OffsetShape");
1708   getTransfOp();
1709   GEOM::GEOM_Object_ptr anObj = myTransfOp->OffsetShape(theObject, theOffset);
1710   endService( " GEOM_Superv_i::OffsetShape" );
1711   return anObj;
1712 }
1713
1714 //=============================================================================
1715 //  OffsetShapeCopy:
1716 //=============================================================================
1717 GEOM::GEOM_Object_ptr GEOM_Superv_i::OffsetShapeCopy (GEOM::GEOM_Object_ptr theObject, 
1718                                                       CORBA::Double theOffset)
1719 {
1720   beginService( " GEOM_Superv_i::OffsetShapeCopy" );
1721   MESSAGE("GEOM_Superv_i::OffsetShapeCopy");
1722   getTransfOp();
1723   GEOM::GEOM_Object_ptr anObj = myTransfOp->OffsetShapeCopy(theObject, theOffset);
1724   endService( " GEOM_Superv_i::OffsetShapeCopy" );
1725   return anObj;
1726 }
1727
1728 //=============================================================================
1729 //  ScaleShape:
1730 //=============================================================================
1731 GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShape (GEOM::GEOM_Object_ptr theObject, 
1732                                                  GEOM::GEOM_Object_ptr thePoint,
1733                                                  CORBA::Double theFactor)
1734 {
1735   beginService( " GEOM_Superv_i::ScaleShape" );
1736   MESSAGE("GEOM_Superv_i::ScaleShape");
1737   getTransfOp();
1738   GEOM::GEOM_Object_ptr anObj = myTransfOp->ScaleShape(theObject, thePoint, theFactor);
1739   endService( " GEOM_Superv_i::ScaleShape" );
1740   return anObj;
1741 }
1742
1743 //=============================================================================
1744 //  ScaleShapeCopy:
1745 //=============================================================================
1746 GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShapeCopy (GEOM::GEOM_Object_ptr theObject, 
1747                                                      GEOM::GEOM_Object_ptr thePoint,
1748                                                      CORBA::Double theFactor)
1749 {
1750   beginService( " GEOM_Superv_i::ScaleShapeCopy" );
1751   MESSAGE("GEOM_Superv_i::ScaleShapeCopy");
1752   getTransfOp();
1753   GEOM::GEOM_Object_ptr anObj = myTransfOp->ScaleShapeCopy(theObject, thePoint, theFactor);
1754   endService( " GEOM_Superv_i::ScaleShapeCopy" );
1755   return anObj;
1756 }
1757
1758 //=============================================================================
1759 //  ScaleShapeAlongAxes:
1760 //=============================================================================
1761 GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShapeAlongAxes (GEOM::GEOM_Object_ptr theObject,
1762                                                           GEOM::GEOM_Object_ptr thePoint,
1763                                                           CORBA::Double theFactorX,
1764                                                           CORBA::Double theFactorY,
1765                                                           CORBA::Double theFactorZ)
1766 {
1767   beginService( " GEOM_Superv_i::ScaleShapeAlongAxes" );
1768   MESSAGE("GEOM_Superv_i::ScaleShapeAlongAxes");
1769   getTransfOp();
1770   GEOM::GEOM_Object_ptr anObj = myTransfOp->ScaleShapeAlongAxes
1771     (theObject, thePoint, theFactorX, theFactorY, theFactorZ);
1772   endService( " GEOM_Superv_i::ScaleShapeAlongAxes" );
1773   return anObj;
1774 }
1775
1776 //=============================================================================
1777 //  ScaleShapeAlongAxesCopy:
1778 //=============================================================================
1779 GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShapeAlongAxesCopy (GEOM::GEOM_Object_ptr theObject,
1780                                                               GEOM::GEOM_Object_ptr thePoint,
1781                                                               CORBA::Double theFactorX,
1782                                                               CORBA::Double theFactorY,
1783                                                               CORBA::Double theFactorZ)
1784 {
1785   beginService( " GEOM_Superv_i::ScaleShapeAlongAxesCopy" );
1786   MESSAGE("GEOM_Superv_i::ScaleShapeAlongAxesCopy");
1787   getTransfOp();
1788   GEOM::GEOM_Object_ptr anObj = myTransfOp->ScaleShapeAlongAxesCopy
1789     (theObject, thePoint, theFactorX, theFactorY, theFactorZ);
1790   endService( " GEOM_Superv_i::ScaleShapeAlongAxesCopy" );
1791   return anObj;
1792 }
1793
1794 //=============================================================================
1795 //  PositionShape:
1796 //=============================================================================
1797 GEOM::GEOM_Object_ptr GEOM_Superv_i::PositionShape (GEOM::GEOM_Object_ptr theObject,
1798                                                     GEOM::GEOM_Object_ptr theStartLCS,
1799                                                     GEOM::GEOM_Object_ptr theEndLCS)
1800 {
1801   beginService( " GEOM_Superv_i::PositionShape" );
1802   MESSAGE("GEOM_Superv_i::PositionShape");
1803   getTransfOp();
1804   GEOM::GEOM_Object_ptr anObj = myTransfOp->PositionShape(theObject, theStartLCS, theEndLCS);
1805   endService( " GEOM_Superv_i::PositionShape" );
1806   return anObj;
1807 }
1808
1809 //=============================================================================
1810 //  PositionShapeCopy:
1811 //=============================================================================
1812 GEOM::GEOM_Object_ptr GEOM_Superv_i::PositionShapeCopy (GEOM::GEOM_Object_ptr theObject,
1813                                                         GEOM::GEOM_Object_ptr theStartLCS,
1814                                                         GEOM::GEOM_Object_ptr theEndLCS)
1815 {
1816   beginService( " GEOM_Superv_i::PositionShapeCopy" );
1817   MESSAGE("GEOM_Superv_i::PositionShapeCopy");
1818   getTransfOp();
1819   GEOM::GEOM_Object_ptr anObj = myTransfOp->PositionShapeCopy(theObject, theStartLCS, theEndLCS);
1820   endService( " GEOM_Superv_i::PositionShapeCopy" );
1821   return anObj;
1822 }
1823
1824 //=============================== ShapesOperations ============================
1825 //=============================================================================
1826 //  Make:
1827 //=============================================================================
1828 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeEdge (GEOM::GEOM_Object_ptr thePnt1,
1829                                                GEOM::GEOM_Object_ptr thePnt2)
1830 {
1831   beginService( " GEOM_Superv_i::MakeEdge" );
1832   MESSAGE("GEOM_Superv_i::MakeEdge");
1833   getShapesOp();
1834   GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeEdge(thePnt1, thePnt2);
1835   endService( " GEOM_Superv_i::MakeEdge" );
1836   return anObj;
1837 }
1838
1839 //=============================================================================
1840 //  MakeWire:
1841 //=============================================================================
1842 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeWire (GEOM::GEOM_List_ptr theEdgesAndWires)
1843 {
1844   beginService( " GEOM_Superv_i::MakeWire" );
1845   MESSAGE("GEOM_Superv_i::MakeWire");
1846   if (GEOM_List_i<GEOM::ListOfGO>* aListImplEW = 
1847       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theEdgesAndWires, myPOA).in())) {
1848     getShapesOp();
1849     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeWire(aListImplEW->GetList());
1850     endService( " GEOM_Superv_i::MakeWire" );
1851     return anObj;
1852   }
1853   endService( " GEOM_Superv_i::MakeWire" );
1854   return NULL;
1855 }
1856
1857 //=============================================================================
1858 //  MakeFace:
1859 //=============================================================================
1860 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFace (GEOM::GEOM_Object_ptr theWire,
1861                                                CORBA::Boolean isPlanarWanted)
1862 {
1863   beginService( " GEOM_Superv_i::MakeFace" );
1864   MESSAGE("GEOM_Superv_i::MakeFace");
1865   getShapesOp();
1866   GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeFace(theWire, isPlanarWanted);
1867   endService( " GEOM_Superv_i::MakeFace" );
1868   return anObj;
1869 }
1870
1871 //=============================================================================
1872 //  MakeFaceWires:
1873 //=============================================================================
1874 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFaceWires (GEOM::GEOM_List_ptr theWires,
1875                                                     CORBA::Boolean isPlanarWanted)
1876 {
1877   beginService( " GEOM_Superv_i::MakeFaceWires" );
1878   MESSAGE("GEOM_Superv_i::MakeFaceWires");
1879   if (GEOM_List_i<GEOM::ListOfGO>* aListImplW = 
1880       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theWires, myPOA).in())) {
1881     getShapesOp();
1882     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeFaceWires(aListImplW->GetList(), isPlanarWanted);
1883     endService( " GEOM_Superv_i::MakeFaceWires" );
1884     return anObj;
1885   }
1886   endService( " GEOM_Superv_i::MakeFaceWires" );
1887   return NULL;
1888 }
1889
1890 //=============================================================================
1891 //  MakeShell:
1892 //=============================================================================
1893 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeShell (GEOM::GEOM_List_ptr theFacesAndShells)
1894 {
1895   beginService( " GEOM_Superv_i::MakeShell" );
1896   MESSAGE("GEOM_Superv_i::MakeShell");
1897   if (GEOM_List_i<GEOM::ListOfGO>* aListImplFS = 
1898       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theFacesAndShells, myPOA).in())) {
1899     getShapesOp();
1900     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeShell(aListImplFS->GetList());
1901     endService( " GEOM_Superv_i::MakeShell" );
1902     return anObj;
1903   }
1904   endService( " GEOM_Superv_i::MakeShell" );
1905   return NULL;
1906 }
1907
1908 //=============================================================================
1909 //  MakeSolidShell:
1910 //=============================================================================
1911 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSolidShell (GEOM::GEOM_Object_ptr theShell)
1912 {
1913   beginService( " GEOM_Superv_i::MakeSolidShell" );
1914   MESSAGE("GEOM_Superv_i::MakeSolidShell");
1915   getShapesOp();
1916   GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeSolidShell(theShell);
1917   endService( " GEOM_Superv_i::MakeSolidShell" );
1918   return anObj;
1919 }
1920
1921 //=============================================================================
1922 //  MakeSolidShells:
1923 //=============================================================================
1924 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSolidShells (GEOM::GEOM_List_ptr theShells)
1925 {
1926   beginService( " GEOM_Superv_i::MakeSolidShells" );
1927   MESSAGE("GEOM_Superv_i::MakeSolidShells");
1928   if (GEOM_List_i<GEOM::ListOfGO>* aListImplS = 
1929       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theShells, myPOA).in())) {
1930     getShapesOp();
1931     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeSolidShells(aListImplS->GetList());
1932     endService( " GEOM_Superv_i::MakeSolidShells" );
1933     return anObj;
1934   }
1935   endService( " GEOM_Superv_i::MakeSolidShells" );
1936   return NULL;
1937 }
1938
1939 //=============================================================================
1940 //  MakeCompound:
1941 //=============================================================================
1942 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCompound (GEOM::GEOM_List_ptr theShapes)
1943 {
1944   beginService( " GEOM_Superv_i::MakeCompound" );
1945   MESSAGE("GEOM_Superv_i::MakeCompound");
1946   if (GEOM_List_i<GEOM::ListOfGO>* aListImpl = 
1947       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theShapes, myPOA).in())) {
1948     getShapesOp();
1949     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeCompound(aListImpl->GetList());
1950     endService( " GEOM_Superv_i::MakeCompound" );
1951     return anObj;
1952   }
1953   endService( " GEOM_Superv_i::MakeCompound" );
1954   return NULL;
1955 }
1956
1957 //=============================================================================
1958 //  MakeGlueFaces:
1959 //=============================================================================
1960 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeGlueFaces (GEOM::GEOM_Object_ptr theShape,
1961                                                     CORBA::Double   theTolerance,
1962                                                     CORBA::Boolean doKeepNonSolids)
1963 {
1964   beginService( " GEOM_Superv_i::MakeGlueFaces" );
1965   MESSAGE("GEOM_Superv_i::MakeGlueFaces");
1966   getShapesOp();
1967   GEOM::GEOM_Object_ptr anObj =
1968     myShapesOp->MakeGlueFaces(theShape, theTolerance, doKeepNonSolids);
1969   endService( " GEOM_Superv_i::MakeGlueFaces" );
1970   return anObj;
1971 }
1972
1973 //=============================================================================
1974 //  GetGlueFaces:
1975 //=============================================================================
1976 GEOM::GEOM_List_ptr GEOM_Superv_i::GetGlueFaces (GEOM::GEOM_Object_ptr theShape,
1977                                                  CORBA::Double theTolerance)
1978 {
1979   beginService( " GEOM_Superv_i::GetGlueFaces" );
1980   MESSAGE("GEOM_Superv_i::GetGlueFaces");
1981   getShapesOp();
1982   GEOM::ListOfGO* aList = myShapesOp->GetGlueFaces(theShape, theTolerance);
1983   GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aList));
1984   MESSAGE(" List of "<<aListPtr->GetList().length()<<" element(s)");
1985   endService( " GEOM_Superv_i::GetGlueFaces" );
1986   return aListPtr->_this();
1987 }
1988
1989 //=============================================================================
1990 //  MakeGlueFacesByList:
1991 //=============================================================================
1992 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeGlueFacesByList (GEOM::GEOM_Object_ptr theShape,
1993                                                           CORBA::Double theTolerance,
1994                                                           const GEOM::ListOfGO& theFaces,
1995                                                           CORBA::Boolean doKeepNonSolids)
1996 {
1997   beginService( " GEOM_Superv_i::MakeGlueFacesByList" );
1998   MESSAGE("GEOM_Superv_i::MakeGlueFacesByList");
1999   getShapesOp();
2000   GEOM::GEOM_Object_ptr anObj =
2001     myShapesOp->MakeGlueFacesByList(theShape, theTolerance, theFaces, doKeepNonSolids);
2002   endService( " GEOM_Superv_i::MakeGlueFacesByList" );
2003   return anObj;
2004 }
2005
2006 //=============================================================================
2007 //  MakeExplode:
2008 //=============================================================================
2009 GEOM::GEOM_List_ptr GEOM_Superv_i::MakeExplode (GEOM::GEOM_Object_ptr theShape,
2010                                                     CORBA::Long theShapeType,
2011                                                     CORBA::Boolean isSorted)
2012 {
2013   beginService( " GEOM_Superv_i::MakeExplode" );
2014   MESSAGE("GEOM_Superv_i::MakeExplode");
2015   getShapesOp();
2016
2017   GEOM::ListOfGO* aList = myShapesOp->MakeExplode(theShape, theShapeType, isSorted);
2018   GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aList));
2019   MESSAGE(" List of "<<aListPtr->GetList().length()<<" element(s)");
2020   endService( " GEOM_Superv_i::MakeExplode" );
2021   return aListPtr->_this();
2022 }
2023
2024 //=============================================================================
2025 //  NumberOfFaces:
2026 //=============================================================================
2027 CORBA::Long GEOM_Superv_i::NumberOfFaces (GEOM::GEOM_Object_ptr theShape)
2028 {
2029   beginService( " GEOM_Superv_i::NumberOfFaces" );
2030   MESSAGE("GEOM_Superv_i::NumberOfFaces");
2031   getShapesOp();
2032   CORBA::Long aRes = myShapesOp->NumberOfFaces(theShape);
2033   endService( " GEOM_Superv_i::NumberOfFaces" );
2034   return aRes;
2035 }
2036
2037 //=============================================================================
2038 //  NumberOfEdges:
2039 //=============================================================================
2040 CORBA::Long GEOM_Superv_i::NumberOfEdges (GEOM::GEOM_Object_ptr theShape)
2041 {
2042   beginService( " GEOM_Superv_i::NumberOfEdges" );
2043   MESSAGE("GEOM_Superv_i::NumberOfEdges");
2044   getShapesOp();
2045   CORBA::Long aRes = myShapesOp->NumberOfEdges(theShape);
2046   endService( " GEOM_Superv_i::NumberOfEdges" );
2047   return aRes;
2048 }
2049
2050
2051 //=============================================================================
2052 //  ChangeOrientation:
2053 //=============================================================================
2054 GEOM::GEOM_Object_ptr GEOM_Superv_i::ChangeOrientation (GEOM::GEOM_Object_ptr theShape)
2055 {
2056   beginService( " GEOM_Superv_i::ChangeOrientation" );
2057   MESSAGE("GEOM_Superv_i::ChangeOrientation");
2058   getShapesOp();
2059   GEOM::GEOM_Object_ptr anObj = myShapesOp->ChangeOrientation(theShape);
2060   endService( " GEOM_Superv_i::ChangeOrientation" );
2061   return anObj;
2062 }
2063
2064
2065 //=============================================================================
2066 //  GetShapesOnShape:
2067 //=============================================================================
2068 GEOM::GEOM_List_ptr GEOM_Superv_i::GetShapesOnShape
2069                                           (GEOM::GEOM_Object_ptr theCheckShape,
2070                                            GEOM::GEOM_Object_ptr theShape,
2071                                            CORBA::Short theShapeType,
2072                                            GEOM::shape_state theState)
2073 {
2074   beginService( " GEOM_Superv_i::GetShapesOnShape" );
2075   MESSAGE("GEOM_Superv_i::GetShapesOnShape");
2076   getShapesOp();
2077   GEOM::ListOfGO* aList =
2078     myShapesOp->GetShapesOnShape(theCheckShape, theShape, theShapeType, theState);
2079   GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aList));
2080   MESSAGE(" List of "<<aListPtr->GetList().length()<<" element(s)");
2081   endService( " GEOM_Superv_i::GetShapesOnShape" );
2082   return aListPtr->_this();
2083 }
2084
2085
2086 //=============================================================================
2087 //  GetShapesOnShapeAsCompound:
2088 //=============================================================================
2089 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetShapesOnShapeAsCompound
2090                                           (GEOM::GEOM_Object_ptr theCheckShape,
2091                                            GEOM::GEOM_Object_ptr theShape,
2092                                            CORBA::Short theShapeType,
2093                                            GEOM::shape_state theState)
2094 {
2095   beginService( " GEOM_Superv_i::GetShapesOnShapeAsCompound" );
2096   MESSAGE("GEOM_Superv_i::GetShapesOnShapeAsCompound");
2097   getShapesOp();
2098   GEOM::GEOM_Object_ptr anObj = 
2099     myShapesOp->GetShapesOnShapeAsCompound(theCheckShape, theShape, theShapeType, theState);
2100   endService( " GEOM_Superv_i::GetShapesOnShapeAsCompound" );
2101   return anObj;
2102 }
2103
2104
2105 //=============================== BlocksOperations ============================
2106 //=============================================================================
2107 //  MakeQuad4Vertices:
2108 //=============================================================================
2109 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeQuad4Vertices (GEOM::GEOM_Object_ptr thePnt1,
2110                                                         GEOM::GEOM_Object_ptr thePnt2,
2111                                                         GEOM::GEOM_Object_ptr thePnt3,
2112                                                         GEOM::GEOM_Object_ptr thePnt4)
2113 {
2114   beginService( " GEOM_Superv_i::MakeQuad4Vertices" );
2115   MESSAGE("GEOM_Superv_i::MakeQuad4Vertices");
2116   getBlocksOp();
2117   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeQuad4Vertices(thePnt1, thePnt2, thePnt3, thePnt4);
2118   endService( " GEOM_Superv_i::MakeQuad4Vertices" );
2119   return anObj;
2120 }
2121
2122 //=============================================================================
2123 //  MakeQuad:
2124 //=============================================================================
2125 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeQuad (GEOM::GEOM_Object_ptr theEdge1,
2126                                                GEOM::GEOM_Object_ptr theEdge2,
2127                                                GEOM::GEOM_Object_ptr theEdge3,
2128                                                GEOM::GEOM_Object_ptr theEdge4)
2129 {
2130   beginService( " GEOM_Superv_i::MakeQuad" );
2131   MESSAGE("GEOM_Superv_i::MakeQuad");
2132   getBlocksOp();
2133   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeQuad(theEdge1, theEdge2, theEdge3, theEdge4);
2134   endService( " GEOM_Superv_i::MakeQuad" );
2135   return anObj;
2136 }
2137
2138 //=============================================================================
2139 //  MakeQuad2Edges:
2140 //=============================================================================
2141 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeQuad2Edges (GEOM::GEOM_Object_ptr theEdge1,
2142                                                      GEOM::GEOM_Object_ptr theEdge2)
2143 {
2144   beginService( " GEOM_Superv_i::MakeQuad2Edges" );
2145   MESSAGE("GEOM_Superv_i::MakeQuad2Edges");
2146   getBlocksOp();
2147   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeQuad2Edges(theEdge1, theEdge2);
2148   endService( " GEOM_Superv_i::MakeQuad2Edges" );
2149   return anObj;
2150 }
2151
2152 //=============================================================================
2153 //  MakeHexa:
2154 //=============================================================================
2155 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeHexa (GEOM::GEOM_Object_ptr theFace1,
2156                                                GEOM::GEOM_Object_ptr theFace2,
2157                                                GEOM::GEOM_Object_ptr theFace3,
2158                                                GEOM::GEOM_Object_ptr theFace4,
2159                                                GEOM::GEOM_Object_ptr theFace5,
2160                                                GEOM::GEOM_Object_ptr theFace6)
2161 {
2162   beginService( " GEOM_Superv_i::MakeHexa" );
2163   MESSAGE("GEOM_Superv_i::MakeHexa");
2164   getBlocksOp();
2165   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeHexa(theFace1, theFace2, theFace3, theFace4, theFace5, theFace6);
2166   endService( " GEOM_Superv_i::MakeHexa" );
2167   return anObj;
2168 }
2169
2170 //=============================================================================
2171 //  MakeHexa2Faces:
2172 //=============================================================================
2173 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeHexa2Faces (GEOM::GEOM_Object_ptr theFace1,
2174                                                      GEOM::GEOM_Object_ptr theFace2)
2175 {
2176   beginService( " GEOM_Superv_i::MakeHexa2Faces" );
2177   MESSAGE("GEOM_Superv_i::MakeHexa2Faces");
2178   getBlocksOp();
2179   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeHexa2Faces(theFace1, theFace2);
2180   endService( " GEOM_Superv_i::MakeHexa2Faces" );
2181   return anObj;
2182 }
2183
2184 //=============================================================================
2185 //  GetPoint:
2186 //=============================================================================
2187 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetPoint (GEOM::GEOM_Object_ptr theShape,
2188                                                CORBA::Double   theX,
2189                                                CORBA::Double   theY,
2190                                                CORBA::Double   theZ,
2191                                                CORBA::Double   theEpsilon)
2192 {
2193   beginService( " GEOM_Superv_i::GetPoint" );
2194   MESSAGE("GEOM_Superv_i::GetPoint");
2195   getBlocksOp();
2196   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetPoint(theShape, theX, theY, theZ, theEpsilon);
2197   endService( " GEOM_Superv_i::GetPoint" );
2198   return anObj;
2199 }
2200
2201 //=============================================================================
2202 //  GetEdge:
2203 //=============================================================================
2204 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetEdge (GEOM::GEOM_Object_ptr theShape,
2205                                               GEOM::GEOM_Object_ptr thePoint1,
2206                                               GEOM::GEOM_Object_ptr thePoint2)
2207 {
2208   beginService( " GEOM_Superv_i::GetEdge" );
2209   MESSAGE("GEOM_Superv_i::GetEdge");
2210   getBlocksOp();
2211   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetEdge(theShape, thePoint1, thePoint2);
2212   endService( " GEOM_Superv_i::GetEdge" );
2213   return anObj;
2214 }
2215
2216 //=============================================================================
2217 //  GetEdgeNearPoint:
2218 //=============================================================================
2219 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetEdgeNearPoint (GEOM::GEOM_Object_ptr theShape,
2220                                                        GEOM::GEOM_Object_ptr thePoint)
2221 {
2222   beginService( " GEOM_Superv_i::GetEdgeNearPoint" );
2223   MESSAGE("GEOM_Superv_i::GetEdgeNearPoint");
2224   getBlocksOp();
2225   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetEdgeNearPoint(theShape, thePoint);
2226   endService( " GEOM_Superv_i::GetEdgeNearPoint" );
2227   return anObj;
2228 }
2229
2230 //=============================================================================
2231 //  GetFaceByPoints:
2232 //=============================================================================
2233 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceByPoints (GEOM::GEOM_Object_ptr theShape,
2234                                                       GEOM::GEOM_Object_ptr thePoint1,
2235                                                       GEOM::GEOM_Object_ptr thePoint2,
2236                                                       GEOM::GEOM_Object_ptr thePoint3,
2237                                                       GEOM::GEOM_Object_ptr thePoint4)
2238 {
2239   beginService( " GEOM_Superv_i::GetFaceByPoints" );
2240   MESSAGE("GEOM_Superv_i::GetFaceByPoints");
2241   getBlocksOp();
2242   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetFaceByPoints(theShape, thePoint1, thePoint2, thePoint3, thePoint4);
2243   endService( " GEOM_Superv_i::GetFaceByPoints" );
2244   return anObj;
2245 }
2246
2247 //=============================================================================
2248 //  GetFaceByEdges:
2249 //=============================================================================
2250 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceByEdges (GEOM::GEOM_Object_ptr theShape,
2251                                                      GEOM::GEOM_Object_ptr theEdge1,
2252                                                      GEOM::GEOM_Object_ptr theEdge2)
2253 {
2254   beginService( " GEOM_Superv_i::GetFaceByEdges" );
2255   MESSAGE("GEOM_Superv_i::GetFaceByEdges");
2256   getBlocksOp();
2257   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetFaceByEdges(theShape, theEdge1, theEdge2);
2258   endService( " GEOM_Superv_i::GetFaceByEdges" );
2259   return anObj;
2260 }
2261
2262 //=============================================================================
2263 //  GetOppositeFace:
2264 //=============================================================================
2265 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetOppositeFace (GEOM::GEOM_Object_ptr theBlock,
2266                                                       GEOM::GEOM_Object_ptr theFace)
2267 {
2268   beginService( " GEOM_Superv_i::GetOppositeFace" );
2269   MESSAGE("GEOM_Superv_i::GetOppositeFace");
2270   getBlocksOp();
2271   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetOppositeFace(theBlock, theFace);
2272   endService( " GEOM_Superv_i::GetOppositeFace" );
2273   return anObj;
2274 }
2275
2276 //=============================================================================
2277 //  GetFaceNearPoint:
2278 //=============================================================================
2279 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceNearPoint (GEOM::GEOM_Object_ptr theShape,
2280                                                        GEOM::GEOM_Object_ptr thePoint)
2281 {
2282   beginService( " GEOM_Superv_i::GetFaceNearPoint" );
2283   MESSAGE("GEOM_Superv_i::GetFaceNearPoint");
2284   getBlocksOp();
2285   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetFaceNearPoint(theShape, thePoint);
2286   endService( " GEOM_Superv_i::GetFaceNearPoint" );
2287   return anObj;
2288 }
2289
2290 //=============================================================================
2291 //  GetFaceByNormale:
2292 //=============================================================================
2293 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceByNormale (GEOM::GEOM_Object_ptr theBlock,
2294                                                        GEOM::GEOM_Object_ptr theVector)
2295 {
2296   beginService( " GEOM_Superv_i::GetFaceByNormale" );
2297   MESSAGE("GEOM_Superv_i::GetFaceByNormale");
2298   getBlocksOp();
2299   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetFaceByNormale(theBlock, theVector);
2300   endService( " GEOM_Superv_i::GetFaceByNormale" );
2301   return anObj;
2302 }
2303
2304 //=============================================================================
2305 //  IsCompoundOfBlocks:
2306 //=============================================================================
2307 CORBA::Boolean GEOM_Superv_i::IsCompoundOfBlocks (GEOM::GEOM_Object_ptr theCompound,
2308                                                   CORBA::Long     theMinNbFaces,
2309                                                   CORBA::Long     theMaxNbFaces,
2310                                                   CORBA::Long&          theNbBlocks)
2311 {
2312   beginService( " GEOM_Superv_i::IsCompoundOfBlocks" );
2313   MESSAGE("GEOM_Superv_i::IsCompoundOfBlocks");
2314   getBlocksOp();
2315   CORBA::Boolean aRes = myBlocksOp->IsCompoundOfBlocks(theCompound, theMinNbFaces, theMaxNbFaces, theNbBlocks);
2316   endService( " GEOM_Superv_i::IsCompoundOfBlocks" );
2317   return aRes;
2318 }
2319
2320 //=============================================================================
2321 //  CheckCompoundOfBlocks:
2322 //=============================================================================
2323 CORBA::Boolean GEOM_Superv_i::CheckCompoundOfBlocks 
2324 (GEOM::GEOM_Object_ptr theCompound,
2325  GEOM::GEOM_IBlocksOperations::BCErrors_out theErrors)
2326 {
2327   beginService( " GEOM_Superv_i::CheckCompoundOfBlocks" );
2328   MESSAGE("GEOM_Superv_i::CheckCompoundOfBlocks");
2329   getBlocksOp();
2330   CORBA::Boolean aRes = myBlocksOp->CheckCompoundOfBlocks(theCompound, theErrors);
2331   endService( " GEOM_Superv_i::CheckCompoundOfBlocks" );
2332   return aRes;
2333 }
2334
2335 //=============================================================================
2336 //  PrintBCErrors:
2337 //=============================================================================
2338 char* GEOM_Superv_i::PrintBCErrors (GEOM::GEOM_Object_ptr theCompound,
2339                                     const GEOM::GEOM_IBlocksOperations::BCErrors& theErrors)
2340 {
2341   beginService( " GEOM_Superv_i::PrintBCErrors" );
2342   MESSAGE("GEOM_Superv_i::PrintBCErrors");
2343   getBlocksOp();
2344   char* anErrors = myBlocksOp->PrintBCErrors(theCompound, theErrors);
2345   endService( " GEOM_Superv_i::PrintBCErrors" );
2346   return anErrors;
2347 }
2348
2349 //=============================================================================
2350 //  ExplodeCompoundOfBlocks:
2351 //=============================================================================
2352 GEOM::GEOM_List_ptr GEOM_Superv_i::ExplodeCompoundOfBlocks (GEOM::GEOM_Object_ptr theCompound,
2353                                                                 CORBA::Long     theMinNbFaces,
2354                                                                 CORBA::Long     theMaxNbFaces)
2355 {
2356   beginService( " GEOM_Superv_i::ExplodeCompoundOfBlocks" );
2357   MESSAGE("GEOM_Superv_i::ExplodeCompoundOfBlocks");
2358   getBlocksOp();
2359   GEOM::ListOfGO* aBlocks = myBlocksOp->ExplodeCompoundOfBlocks(theCompound, theMinNbFaces, theMaxNbFaces);
2360   GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aBlocks));
2361   endService( " GEOM_Superv_i::ExplodeCompoundOfBlocks" );
2362   return aListPtr->_this();
2363 }
2364
2365 //=============================================================================
2366 //  GetBlockNearPoint:
2367 //=============================================================================
2368 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetBlockNearPoint (GEOM::GEOM_Object_ptr theCompound,
2369                                                         GEOM::GEOM_Object_ptr thePoint)
2370 {
2371   beginService( " GEOM_Superv_i::GetBlockNearPoint" );
2372   MESSAGE("GEOM_Superv_i::GetBlockNearPoint");
2373   getBlocksOp();
2374   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetBlockNearPoint(theCompound, thePoint);
2375   endService( " GEOM_Superv_i::GetBlockNearPoint" );
2376   return anObj;
2377 }
2378
2379 //=============================================================================
2380 //  GetBlockByParts:
2381 //=============================================================================
2382 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetBlockByParts (GEOM::GEOM_Object_ptr theCompound,
2383                                                       GEOM::GEOM_List_ptr theParts)
2384 {
2385   beginService( " GEOM_Superv_i::GetBlockByParts" );
2386   MESSAGE("GEOM_Superv_i::GetBlockByParts");
2387   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP = 
2388       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theParts, myPOA).in())) {
2389     getBlocksOp();
2390     GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetBlockByParts(theCompound, aListImplP->GetList());
2391     endService( " GEOM_Superv_i::GetBlockByParts" );
2392     return anObj;
2393   }
2394   endService( " GEOM_Superv_i::GetBlockByParts" );
2395   return NULL;
2396 }
2397
2398 //=============================================================================
2399 //  GetBlocksByParts:
2400 //=============================================================================
2401 GEOM::GEOM_List_ptr GEOM_Superv_i::GetBlocksByParts (GEOM::GEOM_Object_ptr theCompound,
2402                                                          GEOM::GEOM_List_ptr theParts)
2403 {
2404   beginService( " GEOM_Superv_i::GetBlocksByParts" );
2405   MESSAGE("GEOM_Superv_i::GetBlocksByParts");
2406   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP = 
2407       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theParts, myPOA).in())) {
2408     getBlocksOp();
2409     
2410     GEOM::ListOfGO* aBlocks = myBlocksOp->GetBlocksByParts(theCompound, aListImplP->GetList());
2411     GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aBlocks));
2412     endService( " GEOM_Superv_i::GetBlocksByParts" );
2413     return aListPtr->_this();
2414   }
2415   endService( " GEOM_Superv_i::GetBlocksByParts" );
2416   return NULL;
2417 }
2418
2419 //=============================================================================
2420 //  MakeMultiTransformation1D:
2421 //=============================================================================
2422 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeMultiTransformation1D (GEOM::GEOM_Object_ptr theBlock,
2423                                                                 CORBA::Long     theDirFace1,
2424                                                                 CORBA::Long     theDirFace2,
2425                                                                 CORBA::Long     theNbTimes)
2426 {
2427   beginService( " GEOM_Superv_i::MakeMultiTransformation1D" );
2428   MESSAGE("GEOM_Superv_i::MakeMultiTransformation1D");
2429   getBlocksOp();
2430   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeMultiTransformation1D(theBlock, theDirFace1, theDirFace2, theNbTimes);
2431   endService( " GEOM_Superv_i::MakeMultiTransformation1D" );
2432   return anObj;
2433 }
2434
2435 //=============================================================================
2436 //  MakeMultiTransformation2D:
2437 //=============================================================================
2438 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeMultiTransformation2D 
2439 (GEOM::GEOM_Object_ptr theBlock,
2440  CORBA::Long     theDirFace1U,
2441  CORBA::Long     theDirFace2U,
2442  CORBA::Long     theNbTimesU,
2443  CORBA::Long     theDirFace1V,
2444  CORBA::Long     theDirFace2V,
2445  CORBA::Long     theNbTimesV)
2446 {
2447   beginService( " GEOM_Superv_i::MakeMultiTransformation2D" );
2448   MESSAGE("GEOM_Superv_i::MakeMultiTransformation2D");
2449   getBlocksOp();
2450   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeMultiTransformation2D(theBlock, 
2451                                                                       theDirFace1U, theDirFace2U, theNbTimesU,
2452                                                                       theDirFace1V, theDirFace2V, theNbTimesV);
2453   endService( " GEOM_Superv_i::MakeMultiTransformation2D" );
2454   return anObj;
2455 }
2456
2457 //=============================== CurvesOperations ============================
2458 //=============================================================================
2459 //  MakeCirclePntVecR:
2460 //=============================================================================
2461 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCirclePntVecR (GEOM::GEOM_Object_ptr theCenter,
2462                                                         GEOM::GEOM_Object_ptr theVector,
2463                                                         CORBA::Double theR)
2464 {
2465   beginService( " GEOM_Superv_i::MakeCirclePntVecR" );
2466   MESSAGE("GEOM_Superv_i::MakeCirclePntVecR");
2467   getCurvesOp();
2468   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeCirclePntVecR(theCenter, theVector, theR);
2469   endService( " GEOM_Superv_i::MakeCirclePntVecR" );
2470   return anObj;
2471 }
2472
2473 //=============================================================================
2474 //  MakeCircleThreePnt:
2475 //=============================================================================
2476 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCircleThreePnt (GEOM::GEOM_Object_ptr thePnt1,
2477                                                          GEOM::GEOM_Object_ptr thePnt2,
2478                                                          GEOM::GEOM_Object_ptr thePnt3)
2479 {
2480   beginService( " GEOM_Superv_i::MakeCircleThreePnt" );
2481   MESSAGE("GEOM_Superv_i::MakeCircleThreePnt");
2482   getCurvesOp();
2483   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeCircleThreePnt(thePnt1, thePnt2, thePnt3);
2484   endService( " GEOM_Superv_i::MakeCircleThreePnt" );
2485   return anObj;
2486 }
2487 //=============================================================================
2488 //  MakeCircleCenter2Pnt:
2489 //=============================================================================
2490 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCircleCenter2Pnt (GEOM::GEOM_Object_ptr thePnt1,
2491                                                            GEOM::GEOM_Object_ptr thePnt2,
2492                                                            GEOM::GEOM_Object_ptr thePnt3)
2493 {
2494   beginService( " GEOM_Superv_i::MakeCircleCenter2Pnt" );
2495   MESSAGE("GEOM_Superv_i::MakeCircleCenter2Pnt");
2496   getCurvesOp();
2497   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeCircleCenter2Pnt(thePnt1, thePnt2, thePnt3);
2498   endService( " GEOM_Superv_i::MakeCircleCenter2Pnt" );
2499   return anObj;
2500 }
2501
2502 //=============================================================================
2503 //  MakeEllipse:
2504 //=============================================================================
2505 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeEllipse (GEOM::GEOM_Object_ptr theCenter,
2506                                                   GEOM::GEOM_Object_ptr theVector,
2507                                                   CORBA::Double theRMajor, 
2508                                                   CORBA::Double theRMinor)
2509 {
2510   beginService( " GEOM_Superv_i::MakeEllipse" );
2511   MESSAGE("GEOM_Superv_i::MakeEllipse");
2512   getCurvesOp();
2513   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeEllipse(theCenter, theVector, theRMajor, theRMinor);
2514   endService( " GEOM_Superv_i::MakeEllipse" );
2515   return anObj;
2516 }
2517
2518 //=============================================================================
2519 //  MakeArc:
2520 //=============================================================================
2521 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArc (GEOM::GEOM_Object_ptr thePnt1,
2522                                               GEOM::GEOM_Object_ptr thePnt2,
2523                                               GEOM::GEOM_Object_ptr thePnt3)
2524 {
2525   beginService( " GEOM_Superv_i::MakeArc" );
2526   MESSAGE("GEOM_Superv_i::MakeArc");
2527   getCurvesOp();
2528   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeArc(thePnt1, thePnt2, thePnt3);
2529   endService( " GEOM_Superv_i::MakeArc" );
2530   return anObj;
2531 }
2532
2533 //=============================================================================
2534 //  MakeArcCenter:
2535 //=============================================================================
2536 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArcCenter (GEOM::GEOM_Object_ptr theCenter,
2537                                                     GEOM::GEOM_Object_ptr thePnt1,
2538                                                     GEOM::GEOM_Object_ptr thePnt2,
2539                                                     CORBA::Boolean theSense)
2540 {
2541   beginService( " GEOM_Superv_i::MakeArcCenter" );
2542   MESSAGE("GEOM_Superv_i::MakeArcCenter");
2543   getCurvesOp();
2544   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeArcCenter(theCenter, thePnt1, thePnt2,theSense);
2545   endService( " GEOM_Superv_i::MakeArcCenter" );
2546   return anObj;
2547 }
2548
2549 //=============================================================================
2550 //  MakePolyline:
2551 //=============================================================================
2552 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePolyline (GEOM::GEOM_List_ptr thePoints)
2553 {
2554   beginService( " GEOM_Superv_i::MakePolyline" );
2555   MESSAGE("GEOM_Superv_i::MakePolyline");
2556   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP = 
2557       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(thePoints, myPOA).in())) {
2558     getCurvesOp();
2559     GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakePolyline(aListImplP->GetList());
2560     endService( " GEOM_Superv_i::MakePolyline" );
2561     return anObj;
2562   }
2563   endService( " GEOM_Superv_i::MakePolyline" );
2564   return NULL;
2565 }
2566
2567 //=============================================================================
2568 //  MakeSplineBezier:
2569 //=============================================================================
2570 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSplineBezier (GEOM::GEOM_List_ptr thePoints)
2571 {
2572   beginService( " GEOM_Superv_i::MakeSplineBezier" );
2573   MESSAGE("GEOM_Superv_i::MakeSplineBezier");
2574   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP = 
2575       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(thePoints, myPOA).in())) {
2576     getCurvesOp();
2577     GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeSplineBezier(aListImplP->GetList());
2578     endService( " GEOM_Superv_i::MakeSplineBezier" );
2579     return anObj;
2580   }
2581   endService( " GEOM_Superv_i::MakeSplineBezier" );
2582   return NULL;
2583 }
2584
2585 //=============================================================================
2586 //  MakeSplineInterpolation:
2587 //=============================================================================
2588 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSplineInterpolation (GEOM::GEOM_List_ptr thePoints)
2589 {
2590   beginService( " GEOM_Superv_i::MakeSplineInterpolation" );
2591   MESSAGE("GEOM_Superv_i::MakeSplineInterpolation");
2592   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP = 
2593       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(thePoints, myPOA).in())) {
2594     getCurvesOp();
2595     GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeSplineInterpolation(aListImplP->GetList());
2596     endService( " GEOM_Superv_i::MakeSplineInterpolation" );
2597     return anObj;
2598   }
2599   endService( " GEOM_Superv_i::MakeSplineInterpolation" );
2600   return NULL;
2601 }
2602
2603 //=============================================================================
2604 //  MakeSketcher:
2605 //=============================================================================
2606 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSketcher (const char* theCommand, 
2607                                                    GEOM::GEOM_List_ptr theWorkingPlane)
2608 {
2609   beginService( " GEOM_Superv_i::MakeSketcher" );
2610   MESSAGE("GEOM_Superv_i::MakeSketcher");
2611   if (GEOM_List_i<GEOM::ListOfDouble>* aListImplWP = 
2612       dynamic_cast<GEOM_List_i<GEOM::ListOfDouble>*>(GetServant(theWorkingPlane, myPOA).in())) {
2613     getCurvesOp();
2614     GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeSketcher(theCommand, aListImplWP->GetList());
2615     endService( " GEOM_Superv_i::MakeSketcher" );
2616     return anObj;
2617   }
2618   endService( " GEOM_Superv_i::MakeSketcher" );
2619   return NULL;
2620 }
2621
2622 //=============================== LocalOperations =============================
2623 //=============================================================================
2624 //  MakeFilletAll:
2625 //=============================================================================
2626 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletAll (GEOM::GEOM_Object_ptr theShape,
2627                                                     CORBA::Double theR)
2628 {
2629   beginService( " GEOM_Superv_i::MakeFilletAll" );
2630   MESSAGE("GEOM_Superv_i::MakeFilletAllMakeSketcher");
2631   getLocalOp();
2632   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletAll(theShape, theR);
2633   endService( " GEOM_Superv_i::MakeFilletAll" );
2634   return anObj;
2635 }
2636
2637 //=============================================================================
2638 //  MakeFilletEdges:
2639 //=============================================================================
2640 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletEdges (GEOM::GEOM_Object_ptr theShape, 
2641                                                       CORBA::Double theR,
2642                                                       GEOM::GEOM_List_ptr theEdges)
2643 {
2644   beginService( " GEOM_Superv_i::MakeFilletEdges" );
2645   MESSAGE("GEOM_Superv_i::MakeFilletEdges");
2646   if (GEOM_List_i<GEOM::ListOfLong>* aListImplE = 
2647       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theEdges, myPOA).in())) {
2648     getLocalOp();
2649     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletEdges(theShape, theR, aListImplE->GetList());
2650     endService( " GEOM_Superv_i::MakeFilletEdges" );
2651     return anObj;
2652   }
2653   endService( " GEOM_Superv_i::MakeFilletEdges" );
2654   return NULL;
2655 }
2656
2657 //=============================================================================
2658 //  MakeFilletEdges R1 R2:
2659 //=============================================================================
2660 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletEdgesR1R2 (GEOM::GEOM_Object_ptr theShape, 
2661                                                           CORBA::Double theR1,
2662                                                           CORBA::Double theR2,
2663                                                           GEOM::GEOM_List_ptr theEdges)
2664 {
2665   beginService( " GEOM_Superv_i::MakeFilletEdgesR1R2" );
2666   MESSAGE("GEOM_Superv_i::MakeFilletEdgesR1R2");
2667   if (GEOM_List_i<GEOM::ListOfLong>* aListImplE = 
2668       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theEdges, myPOA).in())) {
2669     getLocalOp();
2670     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletEdgesR1R2(theShape, theR1,
2671                                                                  theR2, aListImplE->GetList());
2672     endService( " GEOM_Superv_i::MakeFilletEdgesR1R2" );
2673     return anObj;
2674   }
2675   endService( " GEOM_Superv_i::MakeFilletEdgesR1R2" );
2676   return NULL;
2677 }
2678
2679 //=============================================================================
2680 //  MakeFilletFaces:
2681 //=============================================================================
2682 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletFaces (GEOM::GEOM_Object_ptr theShape, 
2683                                                       CORBA::Double theR,
2684                                                       GEOM::GEOM_List_ptr theFaces)
2685 {
2686   beginService( " GEOM_Superv_i::MakeFilletFaces" );
2687   MESSAGE("GEOM_Superv_i::MakeFilletFaces");
2688   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF = 
2689       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theFaces, myPOA).in())) {
2690     getLocalOp();
2691     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletFaces(theShape, theR, aListImplF->GetList());
2692     endService( " GEOM_Superv_i::MakeFilletFaces" );
2693     return anObj;
2694   }
2695   endService( " GEOM_Superv_i::MakeFilletFaces" );
2696   return NULL;
2697 }
2698
2699 //=============================================================================
2700 //  MakeFilletFaces R1 R2:
2701 //=============================================================================
2702 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletFacesR1R2 (GEOM::GEOM_Object_ptr theShape, 
2703                                                           CORBA::Double theR1,
2704                                                           CORBA::Double theR2,
2705                                                           GEOM::GEOM_List_ptr theFaces)
2706 {
2707   beginService( " GEOM_Superv_i::MakeFilletFacesR1R2" );
2708   MESSAGE("GEOM_Superv_i::MakeFilletFacesR1R2");
2709   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF = 
2710       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theFaces, myPOA).in())) {
2711     getLocalOp();
2712     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletFacesR1R2(theShape, theR1, theR2,
2713                                                                  aListImplF->GetList());
2714     endService( " GEOM_Superv_i::MakeFilletFacesR1R2" );
2715     return anObj;
2716   }
2717   endService( " GEOM_Superv_i::MakeFilletFacesR1R2" );
2718   return NULL;
2719 }
2720
2721 //=============================================================================
2722 //  MakeChamferAll:
2723 //=============================================================================
2724 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferAll (GEOM::GEOM_Object_ptr theShape, CORBA::Double theD)
2725 {
2726   beginService( " GEOM_Superv_i::MakeChamferAll" );
2727   MESSAGE("GEOM_Superv_i::MakeChamferAll");
2728   getLocalOp();
2729   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferAll(theShape, theD);
2730   endService( " GEOM_Superv_i::MakeChamferAll" );
2731   return anObj;
2732 }
2733   
2734 //=============================================================================
2735 //  MakeChamferEdge:
2736 //=============================================================================
2737 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdge (GEOM::GEOM_Object_ptr theShape,
2738                                                       CORBA::Double theD1, CORBA::Double theD2,
2739                                                       CORBA::Long theFace1, CORBA::Long theFace2)
2740 {
2741   beginService( " GEOM_Superv_i::MakeChamferEdge" );
2742   MESSAGE("GEOM_Superv_i::MakeChamferEdge");
2743   getLocalOp();
2744   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferEdge(theShape, theD1, theD2, theFace1, theFace2);
2745   endService( " GEOM_Superv_i::MakeChamferEdge" );
2746   return anObj;
2747 }
2748
2749 //=============================================================================
2750 //  MakeChamferEdgeAD:
2751 //=============================================================================
2752 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdgeAD (GEOM::GEOM_Object_ptr theShape,
2753                                                         CORBA::Double theD, CORBA::Double theAngle,
2754                                                         CORBA::Long theFace1, CORBA::Long theFace2)
2755 {
2756   beginService( " GEOM_Superv_i::MakeChamferEdgeAD" );
2757   MESSAGE("GEOM_Superv_i::MakeChamferEdgeAD");
2758   getLocalOp();
2759   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferEdgeAD(theShape, theD, theAngle, theFace1, theFace2);
2760   endService( " GEOM_Superv_i::MakeChamferEdgeAD" );
2761   return anObj;
2762 }
2763
2764 //=============================================================================
2765 //  MakeChamferFaces:
2766 //=============================================================================
2767 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferFaces (GEOM::GEOM_Object_ptr theShape,
2768                                                        CORBA::Double theD1, CORBA::Double theD2,
2769                                                        GEOM::GEOM_List_ptr theFaces)
2770 {
2771   beginService( " GEOM_Superv_i::MakeChamferFaces" );
2772   MESSAGE("GEOM_Superv_i::MakeChamferFaces");
2773   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF = 
2774       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theFaces, myPOA).in())) {
2775     getLocalOp();
2776     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferFaces(theShape, theD1, theD2, aListImplF->GetList());
2777     endService( " GEOM_Superv_i::MakeChamferFaces" );
2778     return anObj;
2779   }
2780   endService( " GEOM_Superv_i::MakeChamferFaces" );
2781   return NULL;
2782 }
2783
2784 //=============================================================================
2785 //  MakeChamferFacesAD:
2786 //=============================================================================
2787 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferFacesAD (GEOM::GEOM_Object_ptr theShape,
2788                                                          CORBA::Double theD, CORBA::Double theAngle,
2789                                                          GEOM::GEOM_List_ptr theFaces)
2790 {
2791   beginService( " GEOM_Superv_i::MakeChamferFacesAD" );
2792   MESSAGE("GEOM_Superv_i::MakeChamferFacesAD");
2793   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF = 
2794       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theFaces, myPOA).in())) {
2795     getLocalOp();
2796     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferFacesAD(theShape, theD, theAngle, aListImplF->GetList());
2797     endService( " GEOM_Superv_i::MakeChamferFacesAD" );
2798     return anObj;
2799   }
2800   endService( " GEOM_Superv_i::MakeChamferFacesAD" );
2801   return NULL;
2802 }
2803
2804 //=============================================================================
2805 //  MakeChamferEdges:
2806 //=============================================================================
2807 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdges (GEOM::GEOM_Object_ptr theShape,
2808                                                        CORBA::Double theD1, CORBA::Double theD2,
2809                                                        GEOM::GEOM_List_ptr theEdges)
2810 {
2811   beginService( " GEOM_Superv_i::MakeChamferEdges" );
2812   MESSAGE("GEOM_Superv_i::MakeChamferEdges");
2813   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF = 
2814       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theEdges, myPOA).in())) {
2815     getLocalOp();
2816     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferEdges(theShape, theD1, theD2, aListImplF->GetList());
2817     endService( " GEOM_Superv_i::MakeChamferEdges" );
2818     return anObj;
2819   }
2820   endService( " GEOM_Superv_i::MakeChamferEdges" );
2821   return NULL;
2822 }
2823
2824 //=============================================================================
2825 //  MakeChamferEdgesAD:
2826 //=============================================================================
2827 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdgesAD (GEOM::GEOM_Object_ptr theShape,
2828                                                          CORBA::Double theD, CORBA::Double theAngle,
2829                                                          GEOM::GEOM_List_ptr theEdges)
2830 {
2831   beginService( " GEOM_Superv_i::MakeChamferEdgesAD" );
2832   MESSAGE("GEOM_Superv_i::MakeChamferEdgesAD");
2833   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF = 
2834       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theEdges, myPOA).in())) {
2835     getLocalOp();
2836     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferEdgesAD(theShape, theD, theAngle, aListImplF->GetList());
2837     endService( " GEOM_Superv_i::MakeChamferEdgesAD" );
2838     return anObj;
2839   }
2840   endService( " GEOM_Superv_i::MakeChamferEdgesAD" );
2841   return NULL;
2842 }
2843
2844 //=============================================================================
2845 //  MakeArchimede:
2846 //=============================================================================
2847 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArchimede (GEOM::GEOM_Object_ptr theShape,
2848                                                     CORBA::Double theWeight,
2849                                                     CORBA::Double theWaterDensity,
2850                                                     CORBA::Double theMeshingDeflection)
2851 {
2852   beginService( " GEOM_Superv_i::MakeArchimede" );
2853   MESSAGE("GEOM_Superv_i::MakeArchimede");
2854   getLocalOp();
2855   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeArchimede(theShape, theWeight, theWaterDensity, theMeshingDeflection);
2856   endService( " GEOM_Superv_i::MakeArchimede" );
2857   return anObj;
2858 }
2859
2860 //=============================================================================
2861 //  GetSubShapeIndexMakeFilletAll:
2862 //=============================================================================
2863 CORBA::Long GEOM_Superv_i::GetSubShapeIndex (GEOM::GEOM_Object_ptr theShape,
2864                                              GEOM::GEOM_Object_ptr theSubShape)
2865 {
2866   beginService( " GEOM_Superv_i::GetSubShapeIndex" );
2867   MESSAGE("GEOM_Superv_i::GetSubShapeIndexMakeArchimede");
2868   getLocalOp();
2869   CORBA::Long aRes = myLocalOp->GetSubShapeIndex(theShape, theSubShape);
2870   endService( " GEOM_Superv_i::GetSubShapeIndex" );
2871   return aRes;
2872 }
2873
2874 //=============================== GroupOperations =============================
2875 //=============================================================================
2876 //  CreateGroup:
2877 //=============================================================================
2878 GEOM::GEOM_Object_ptr GEOM_Superv_i::CreateGroup (GEOM::GEOM_Object_ptr theMainShape, 
2879                                                   CORBA::Long theShapeType)
2880 {
2881   beginService( " GEOM_Superv_i::CreateGroup" );
2882   MESSAGE("GEOM_Superv_i::CreateGroup");
2883   getGroupOp();
2884   GEOM::GEOM_Object_ptr anObj = myGroupOp->CreateGroup(theMainShape, theShapeType);
2885   endService( " GEOM_Superv_i::CreateGroup" );
2886   return anObj;
2887 }
2888
2889 //=============================================================================
2890 //  AddObject:
2891 //=============================================================================
2892 void GEOM_Superv_i::AddObject (GEOM::GEOM_Object_ptr theGroup, 
2893                                CORBA::Long theSubShapeId)
2894 {
2895   beginService( " GEOM_Superv_i::AddObject" );
2896   MESSAGE("GEOM_Superv_i::AddObject");
2897   getGroupOp();
2898   myGroupOp->AddObject(theGroup, theSubShapeId);
2899   endService( " GEOM_Superv_i::AddObject" );
2900 }
2901
2902 //=============================================================================
2903 //  RemoveObject:
2904 //=============================================================================
2905 void GEOM_Superv_i::RemoveObject (GEOM::GEOM_Object_ptr theGroup, 
2906                                   CORBA::Long theSubShapeId)
2907 {
2908   beginService( " GEOM_Superv_i::RemoveObject" );
2909   MESSAGE("GEOM_Superv_i::RemoveObject");
2910   getGroupOp();
2911   myGroupOp->RemoveObject(theGroup, theSubShapeId);
2912   endService( " GEOM_Superv_i::RemoveObject" );
2913 }
2914
2915 //=============================================================================
2916 //  GetType:
2917 //=============================================================================
2918 CORBA::Long GEOM_Superv_i::GetType (GEOM::GEOM_Object_ptr theGroup)
2919 {
2920   beginService( " GEOM_Superv_i::GetType" );
2921   MESSAGE("GEOM_Superv_i::GetType");
2922   getGroupOp();
2923   CORBA::Long aResult = myGroupOp->GetType(theGroup);
2924   endService( " GEOM_Superv_i::GetType" );
2925   return aResult;
2926 }
2927
2928 //=============================================================================
2929 //  GetMainShape:
2930 //=============================================================================
2931 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetMainShape (GEOM::GEOM_Object_ptr theGroup)
2932 {
2933   beginService( " GEOM_Superv_i::GetMainShape" );
2934   MESSAGE("GEOM_Superv_i::GetMainShape");
2935   getGroupOp();
2936   GEOM::GEOM_Object_ptr anObj = myGroupOp->GetMainShape(theGroup);
2937   endService( " GEOM_Superv_i::GetMainShape" );
2938   return anObj;
2939 }
2940
2941 //=============================================================================
2942 //  GetObjects:
2943 //=============================================================================
2944 GEOM::GEOM_List_ptr GEOM_Superv_i::GetObjects (GEOM::GEOM_Object_ptr theGroup)
2945 {
2946   beginService( " GEOM_Superv_i::GetObjects" );
2947   MESSAGE("GEOM_Superv_i::GetObjects");
2948   getGroupOp();
2949
2950   GEOM::ListOfLong* aList = myGroupOp->GetObjects(theGroup);
2951   GEOM_List_i<GEOM::ListOfLong>* aListPtr = new GEOM_List_i<GEOM::ListOfLong>(*(aList));
2952   MESSAGE(" List of "<<aListPtr->GetList().length()<<" element(s)");
2953   endService( " GEOM_Superv_i::GetObjects" );
2954   return aListPtr->_this();
2955 }
2956
2957 //=====================================================================================
2958 // EXPORTED METHODS
2959 //=====================================================================================
2960 extern "C"
2961 {
2962   PortableServer::ObjectId * GEOM_SupervEngine_factory(CORBA::ORB_ptr orb,
2963                                                       PortableServer::POA_ptr poa, 
2964                                                       PortableServer::ObjectId * contId,
2965                                                       const char *instanceName, 
2966                                                       const char * interfaceName)
2967   {
2968     GEOM_Superv_i * myGEOM_Superv_i = new GEOM_Superv_i(orb, poa, contId, instanceName, interfaceName);
2969     //Don't understand the reason why this component is registered ???
2970 //    myGEOM_Superv_i->register_name("/myGEOM_Superv");
2971     return myGEOM_Superv_i->getId() ;
2972   }
2973 }