Salome HOME
f749b86412baffd9a17fde301d1b2824dbb8ce44
[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 : PublishNamedShapesInStudy
478 // purpose  : 
479 //============================================================================
480 GEOM::ListOfGO*
481 GEOM_Superv_i::PublishNamedShapesInStudy(SALOMEDS::Study_ptr theStudy,
482                                          //SALOMEDS::SObject_ptr theSObject,
483                                          CORBA::Object_ptr theObject)
484 {
485   if (CORBA::is_nil(myGeomEngine))
486     setGeomEngine();
487   return myGeomEngine->PublishNamedShapesInStudy(theStudy, theObject);
488 }
489
490 //============================================================================
491 // function : CanCopy()
492 // purpose  :
493 //============================================================================
494 CORBA::Boolean GEOM_Superv_i::CanCopy(SALOMEDS::SObject_ptr theObject)
495 {
496   return false;
497 }
498
499 //============================================================================
500 // function : CopyFrom()
501 // purpose  :
502 //============================================================================
503 SALOMEDS::TMPFile* GEOM_Superv_i::CopyFrom(SALOMEDS::SObject_ptr theObject, CORBA::Long& theObjectID)
504 {
505   SALOMEDS::TMPFile_var aStreamFile;
506   return aStreamFile._retn();
507 }
508
509 //============================================================================
510 // function : CanPaste()
511 // purpose  :
512 //============================================================================
513 CORBA::Boolean GEOM_Superv_i::CanPaste(const char* theComponentName, CORBA::Long theObjectID)
514 {
515   return false;
516 }
517
518 //============================================================================
519 // function : PasteInto()
520 // purpose  :
521 //============================================================================
522 SALOMEDS::SObject_ptr GEOM_Superv_i::PasteInto(const SALOMEDS::TMPFile& theStream,
523                                                CORBA::Long theObjectID,
524                                                SALOMEDS::SObject_ptr theObject)
525 {
526   SALOMEDS::SObject_var aNewSO;
527   return aNewSO._retn();
528 }
529
530 //================= Primitives Construction : BasicOperations =================
531 //=============================================================================
532 //  MakePointXYZ:
533 //=============================================================================
534 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointXYZ(CORBA::Double theX,
535                                                   CORBA::Double theY,
536                                                   CORBA::Double theZ)
537 {
538   beginService( " GEOM_Superv_i::MakePointXYZ" );
539   MESSAGE("GEOM_Superv_i::MakePointXYZ");
540   getBasicOp();
541   // make vertex and return
542   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePointXYZ(theX, theY, theZ);
543   endService( " GEOM_Superv_i::MakePointXYZ" );
544   return anObj;
545 }
546
547 //=============================================================================
548 //  MakePointWithReference:
549 //=============================================================================
550 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointWithReference (GEOM::GEOM_Object_ptr theReference,
551                                                              CORBA::Double theX, 
552                                                              CORBA::Double theY, 
553                                                              CORBA::Double theZ)
554 {
555   beginService( " GEOM_Superv_i::MakePointWithReference" );
556   MESSAGE("GEOM_Superv_i::MakePointWithReference");
557   getBasicOp();
558   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePointWithReference(theReference, theX, theY, theZ);
559   endService( " GEOM_Superv_i::MakePointWithReference" );
560   return anObj;
561 }
562
563 //=============================================================================
564 //  MakePointOnCurve:
565 //=============================================================================
566 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointOnCurve (GEOM::GEOM_Object_ptr theRefCurve,
567                                                        CORBA::Double theParameter)
568 {
569   beginService( " GEOM_Superv_i::MakePointOnCurve" );
570   MESSAGE("GEOM_Superv_i::MakePointOnCurve");
571   getBasicOp();
572   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePointOnCurve(theRefCurve, theParameter);
573   endService( " GEOM_Superv_i::MakePointOnCurve" );
574   return anObj;
575 }
576
577 //=============================================================================
578 //  MakePointOnLinesIntersection:
579 //=============================================================================
580 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointOnLinesIntersection (GEOM::GEOM_Object_ptr theRefLine1,
581                                                                    GEOM::GEOM_Object_ptr theRefLine2)
582 {
583   beginService( " GEOM_Superv_i::MakePointOnLinesIntersection" );
584   MESSAGE("GEOM_Superv_i::MakePointOnLinesIntersection");
585   getBasicOp();
586   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePointOnLinesIntersection(theRefLine1, theRefLine2);
587   endService( " GEOM_Superv_i::MakePointOnLinesIntersection" );
588   return anObj;
589 }
590
591 //=============================================================================
592 //  MakeTangentOnCurve:
593 //=============================================================================
594 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeTangentOnCurve (GEOM::GEOM_Object_ptr theRefCurve,
595                                                          CORBA::Double theParameter)
596 {
597   beginService( " GEOM_Superv_i::MakeTangentOnCurve" );
598   MESSAGE("GEOM_Superv_i::MakeTangentOnCurve");
599   getBasicOp();
600   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeTangentOnCurve(theRefCurve, theParameter);
601   endService( " GEOM_Superv_i::MakeTangentOnCurve" );
602   return anObj;
603 }
604
605 //=============================================================================
606 //  MakeVectorDXDYDZ:
607 //=============================================================================
608 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeVectorDXDYDZ (CORBA::Double theDX,
609                                                        CORBA::Double theDY,
610                                                        CORBA::Double theDZ)
611 {
612   beginService( " GEOM_Superv_i::MakeVectorDXDYDZ" );
613   MESSAGE("GEOM_Superv_i::MakeVectorDXDYDZ");
614   getBasicOp();
615   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeVectorDXDYDZ(theDX, theDY, theDZ);
616   endService( " GEOM_Superv_i::MakeVectorDXDYDZ" );
617   return anObj;
618 }
619
620 //=============================================================================
621 //  MakeVectorTwoPnt:
622 //=============================================================================
623 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeVectorTwoPnt (GEOM::GEOM_Object_ptr thePnt1,
624                                                        GEOM::GEOM_Object_ptr thePnt2)
625 {
626   beginService( " GEOM_Superv_i::MakeVectorTwoPnt" );
627   MESSAGE("GEOM_Superv_i::MakeVector");
628   getBasicOp();
629   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeVectorTwoPnt(thePnt1, thePnt2);
630   endService( " GEOM_Superv_i::MakeVectorTwoPnt" );
631   return anObj;
632 }
633
634 //=============================================================================
635 //  MakeLineTwoPnt:
636 //=============================================================================
637 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeLineTwoPnt (GEOM::GEOM_Object_ptr thePnt1,
638                                                      GEOM::GEOM_Object_ptr thePnt2)
639 {
640   beginService( " GEOM_Superv_i::MakeLineTwoPnt");
641   MESSAGE("GEOM_Superv_i::MakeLineTwoPnt");
642   getBasicOp();
643   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeLineTwoPnt(thePnt1, thePnt2);
644   endService( " GEOM_Superv_i::MakeLineTwoPnt");
645   return anObj;
646 }
647
648 //=============================================================================
649 //  MakeLineTwoFaces:
650 //=============================================================================
651 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeLineTwoFaces (GEOM::GEOM_Object_ptr theFace1,
652                                                        GEOM::GEOM_Object_ptr theFace2)
653 {
654   beginService( " GEOM_Superv_i::MakeLineTwoFaces");
655   MESSAGE("GEOM_Superv_i::MakeLineTwoFaces");
656   getBasicOp();
657   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeLineTwoFaces(theFace1, theFace2);
658   endService( " GEOM_Superv_i::MakeLineTwoFaces");
659   return anObj;
660 }
661
662 //=============================================================================
663 //  MakePlaneThreePnt:
664 //=============================================================================
665 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePlaneThreePnt (GEOM::GEOM_Object_ptr thePnt1,
666                                                         GEOM::GEOM_Object_ptr thePnt2,
667                                                         GEOM::GEOM_Object_ptr thePnt3,
668                                                         CORBA::Double theTrimSize)
669 {
670   beginService( " GEOM_Superv_i::MakePlaneThreePnt");
671   MESSAGE("GEOM_Superv_i::MakePlaneThreePnt");
672   getBasicOp();
673   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePlaneThreePnt(thePnt1, thePnt2, thePnt3, theTrimSize);
674   endService( " GEOM_Superv_i::MakePlaneThreePnt");
675   return anObj;
676 }
677
678 //=============================================================================
679 //  MakePlanePntVec:
680 //=============================================================================
681 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePlanePntVec (GEOM::GEOM_Object_ptr thePnt,
682                                                       GEOM::GEOM_Object_ptr theVec,
683                                                       CORBA::Double theTrimSize)
684
685   beginService( " GEOM_Superv_i::MakePlanePntVec" );
686   MESSAGE("GEOM_Superv_i::MakePlanePntVec");
687   getBasicOp();
688   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePlanePntVec(thePnt, theVec, theTrimSize);
689   endService( " GEOM_Superv_i::MakePlanePntVec" );
690   return anObj;
691 }
692
693 //=============================================================================
694 //  MakePlaneFace:
695 //=============================================================================
696 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePlaneFace (GEOM::GEOM_Object_ptr theFace,
697                                                     CORBA::Double theTrimSize)
698 {
699   beginService( " GEOM_Superv_i::MakePlaneFace" );
700   MESSAGE("GEOM_Superv_i::MakePlaneFace");
701   getBasicOp();
702   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePlaneFace(theFace, theTrimSize);
703   endService( " GEOM_Superv_i::MakePlaneFace" );
704   return anObj;
705 }
706
707 //=============================================================================
708 //  MakePlane2Vec:
709 //=============================================================================
710 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePlane2Vec (GEOM::GEOM_Object_ptr theVec1,
711                                                     GEOM::GEOM_Object_ptr theVec2,
712                                                     CORBA::Double theTrimSize)
713
714   beginService( " GEOM_Superv_i::MakePlane2Vec" );
715   MESSAGE("GEOM_Superv_i::MakePlane2Vec");
716   getBasicOp();
717   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePlane2Vec(theVec1, theVec2, theTrimSize);
718   endService( " GEOM_Superv_i::MakePlane2Vec" );
719   return anObj;
720 }
721
722 //=============================================================================
723 //  MakePlaneLCS:
724 //=============================================================================
725 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePlaneLCS (GEOM::GEOM_Object_ptr theLCS,
726                                                    CORBA::Double theTrimSize,
727                                                    CORBA::Double theOrientation)
728
729   beginService( " GEOM_Superv_i::MakePlaneLCS" );
730   MESSAGE("GEOM_Superv_i::MakePlaneLCS");
731   getBasicOp();
732   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePlaneLCS(theLCS, theTrimSize, theOrientation);
733   endService( " GEOM_Superv_i::MakePlaneLCS" );
734   return anObj;
735 }
736
737 //=============================================================================
738 //  MakeMarker:
739 //=============================================================================
740 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeMarker 
741 (CORBA::Double theOX , CORBA::Double theOY , CORBA::Double theOZ,
742  CORBA::Double theXDX, CORBA::Double theXDY, CORBA::Double theXDZ,
743  CORBA::Double theYDX, CORBA::Double theYDY, CORBA::Double theYDZ)
744 {
745   beginService( " GEOM_Superv_i::MakeMarker" );
746   MESSAGE("GEOM_Superv_i::MakeMarker");
747   getBasicOp();
748   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeMarker(theOX, theOY, theOZ, theXDX, theXDY, theXDZ, theYDX, theYDY, theYDZ);
749   endService( " GEOM_Superv_i::MakeMarker" );
750   return anObj;
751 }
752
753 //=============================================================================
754 //  MakeTangentPlaneOnFace:
755 //=============================================================================
756 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeTangentPlaneOnFace (GEOM::GEOM_Object_ptr theFace, 
757                                                  CORBA::Double theParameterU,
758                                                  CORBA::Double theParameterV,
759                                                  CORBA::Double theTrimSize)
760 {
761   beginService( " GEOM_Superv_i::MakeTangentPlaneOnFace" );
762   MESSAGE("GEOM_Superv_i::MakeTangentPlaneOnFace");
763   getBasicOp();
764   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeTangentPlaneOnFace(theFace, theParameterU,theParameterV,theTrimSize);
765   endService( " GEOM_Superv_i::MakeTangentPlaneOnFace" );
766   return anObj;
767 }
768
769 //================= Primitives Construction : 3DPrimOperations ================
770 //=============================================================================
771 //  MakeBox:
772 //=============================================================================
773 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeBox (CORBA::Double theX1,
774                                               CORBA::Double theY1,
775                                               CORBA::Double theZ1,
776                                               CORBA::Double theX2,
777                                               CORBA::Double theY2,
778                                               CORBA::Double theZ2)
779 {
780   beginService( " GEOM_Superv_i::MakeBox" );
781   MESSAGE("GEOM_Superv_i::MakeBox");
782   getBasicOp();
783   get3DPrimOp();
784   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeBoxTwoPnt(myBasicOp->MakePointXYZ(theX1, theY1, theZ1),
785                                                           myBasicOp->MakePointXYZ(theX2, theY2, theZ2));
786   endService( " GEOM_Superv_i::MakeBox" );
787   return anObj;
788 }
789
790 //=============================================================================
791 //  MakeBoxDXDYDZ:
792 //=============================================================================
793 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeBoxDXDYDZ (CORBA::Double theDX, 
794                                                     CORBA::Double theDY, 
795                                                     CORBA::Double theDZ)
796 {
797   beginService( " GEOM_Superv_i::MakeBoxDXDYDZ" );
798   MESSAGE("GEOM_Superv_i::MakeBoxDXDYDZ");
799   get3DPrimOp();
800   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeBoxDXDYDZ(theDX, theDY, theDZ);
801   endService( " GEOM_Superv_i::MakeBoxDXDYDZ" );
802   return anObj;
803 }
804
805 //=============================================================================
806 //  MakeBoxTwoPnt:
807 //=============================================================================
808 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeBoxTwoPnt (GEOM::GEOM_Object_ptr thePnt1, 
809                                                     GEOM::GEOM_Object_ptr thePnt2)
810 {
811   beginService( " GEOM_Superv_i::MakeBoxTwoPnt" );
812   MESSAGE("GEOM_Superv_i::MakeBoxTwoPnt");
813   get3DPrimOp();
814   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeBoxTwoPnt(thePnt1, thePnt2);
815   endService( " GEOM_Superv_i::MakeBoxTwoPnt" );
816   return anObj;
817 }
818
819 //=============================================================================
820 //  MakeFaceHW:
821 //=============================================================================
822 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFaceHW (CORBA::Double theH,
823                                                  CORBA::Double theW,
824                                                  CORBA::Short  theOrientation)
825 {
826   beginService( " GEOM_Superv_i::MakeFaceHW" );
827   MESSAGE("GEOM_Superv_i::MakeFaceHW");
828   get3DPrimOp();
829   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeFaceHW(theH, theW, theOrientation);
830   endService( " GEOM_Superv_i::MakeFaceHW" );
831   return anObj;
832 }
833
834 //=============================================================================
835 //  MakeFaceObjHW:
836 //=============================================================================
837 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFaceObjHW (GEOM::GEOM_Object_ptr theObj, 
838                                                     CORBA::Double theH,
839                                                     CORBA::Double theW)
840 {
841   beginService( " GEOM_Superv_i::MakeFaceObjHW" );
842   MESSAGE("GEOM_Superv_i::MakeFaceObjHW");
843   get3DPrimOp();
844   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeFaceObjHW(theObj, theH, theW);
845   endService( " GEOM_Superv_i::MakeFaceObjHW" );
846   return anObj;
847 }
848
849 //=============================================================================
850 //  MakeDiskPntVecR:
851 //=============================================================================
852 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeDiskPntVecR (GEOM::GEOM_Object_ptr theCenter,
853                                                       GEOM::GEOM_Object_ptr theVector,
854                                                       CORBA::Double theR)
855 {
856   beginService( " GEOM_Superv_i::MakeDiskPntVecR" );
857   MESSAGE("GEOM_Superv_i::MakeDiskPntVecR");
858   get3DPrimOp();
859   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeDiskPntVecR(theCenter, theVector, theR);
860   endService( " GEOM_Superv_i::MakeDiskPntVecR" );
861   return anObj;
862 }
863
864 //=============================================================================
865 //  MakeDiskThreePnt:
866 //=============================================================================
867 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeDiskThreePnt (GEOM::GEOM_Object_ptr thePnt1,
868                                                        GEOM::GEOM_Object_ptr thePnt2,
869                                                        GEOM::GEOM_Object_ptr thePnt3)
870 {
871   beginService( " GEOM_Superv_i::MakeDiskThreePnt" );
872   MESSAGE("GEOM_Superv_i::MakeDiskThreePnt");
873   get3DPrimOp();
874   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeDiskThreePnt(thePnt1, thePnt2, thePnt3);
875   endService( " GEOM_Superv_i::MakeDiskThreePnt" );
876   return anObj;
877 }
878
879 //=============================================================================
880 //  MakeDiskR:
881 //=============================================================================
882 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeDiskR (CORBA::Double theR,
883                                                 CORBA::Short  theOrientation)
884 {
885   beginService( " GEOM_Superv_i::MakeDiskR" );
886   MESSAGE("GEOM_Superv_i::MakeDiskR");
887   get3DPrimOp();
888   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeDiskR(theR, theOrientation);
889   endService( " GEOM_Superv_i::MakeDiskR" );
890   return anObj;
891 }
892
893 //=============================================================================
894 //  MakeCylinderPntVecRH:
895 //=============================================================================
896 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCylinderPntVecRH (GEOM::GEOM_Object_ptr thePnt,
897                                                            GEOM::GEOM_Object_ptr theAxis,
898                                                            CORBA::Double theRadius,
899                                                            CORBA::Double theHeight)
900 {
901   beginService( " GEOM_Superv_i::MakeCylinderPntVecRH" );
902   MESSAGE("GEOM_Superv_i::MakeCylinderPntVecRH");
903   get3DPrimOp();
904   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeCylinderPntVecRH(thePnt, theAxis, theRadius, theHeight);
905   endService( " GEOM_Superv_i::MakeCylinderPntVecRH" );
906   return anObj;
907 }
908
909 //=============================================================================
910 //  MakeCylinderRH:
911 //=============================================================================
912 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCylinderRH (CORBA::Double theR, 
913                                                      CORBA::Double theH)
914 {
915   beginService( " GEOM_Superv_i::MakeCylinderRH" );
916   MESSAGE("GEOM_Superv_i::MakeCylinderRH");
917   get3DPrimOp();
918   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeCylinderRH(theR, theH);
919   endService( " GEOM_Superv_i::MakeCylinderRH" );
920   return anObj; 
921 }
922
923 //=============================================================================
924 //  MakeSphere:
925 //=============================================================================
926 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSphere  (CORBA::Double theX,
927                                                   CORBA::Double theY,
928                                                   CORBA::Double theZ,
929                                                   CORBA::Double theRadius)
930 {
931   beginService( " GEOM_Superv_i::MakeSphepe" );
932   MESSAGE("GEOM_Superv_i::MakeSphepe");
933   getBasicOp();
934   get3DPrimOp();
935   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeSpherePntR(myBasicOp->MakePointXYZ(theX, theY, theZ), theRadius);
936   endService( " GEOM_Superv_i::MakeSphepe" );
937   return anObj;
938 }
939
940 //=============================================================================
941 //  MakeSphereR:
942 //=============================================================================
943 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSphereR (CORBA::Double theR)
944 {
945   beginService( " GEOM_Superv_i::MakeSphereR" );
946   MESSAGE("GEOM_Superv_i::MakeSphereR");
947   get3DPrimOp();
948   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeSphereR(theR);
949   endService( " GEOM_Superv_i::MakeSphereR" );
950   return anObj;
951 }
952
953 //=============================================================================
954 //  MakeSpherePntR:
955 //=============================================================================
956 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSpherePntR (GEOM::GEOM_Object_ptr thePnt, 
957                                                      CORBA::Double theR)
958 {
959   beginService( " GEOM_Superv_i::MakeSpherePntR" );
960   MESSAGE("GEOM_Superv_i::MakeSpherePntR");
961   get3DPrimOp();
962   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeSpherePntR(thePnt, theR);
963   endService( " GEOM_Superv_i::MakeSpherePntR" );
964   return anObj;
965 }
966
967 //=============================================================================
968 //  MakeTorusPntVecRR:
969 //=============================================================================
970 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeTorusPntVecRR (GEOM::GEOM_Object_ptr thePnt,
971                                                         GEOM::GEOM_Object_ptr theVec,
972                                                         CORBA::Double theRMajor,
973                                                         CORBA::Double theRMinor)
974 {
975   beginService( " GEOM_Superv_i::MakeTorusPntVecRR" );
976   MESSAGE("GEOM_Superv_i::MakeTorusPntVecRR");
977   get3DPrimOp();
978   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeTorusPntVecRR(thePnt, theVec, theRMajor, theRMinor);
979   endService( " GEOM_Superv_i::MakeTorusPntVecRR" );
980   return anObj;
981 }
982
983 //=============================================================================
984 //  MakeTorusRR:
985 //=============================================================================
986 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeTorusRR (CORBA::Double theRMajor,
987                                                   CORBA::Double theRMinor)
988 {
989   beginService( " GEOM_Superv_i::MakeTorusRR" );
990   MESSAGE("GEOM_Superv_i::MakeTorusRR");
991   get3DPrimOp();
992   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeTorusRR(theRMajor, theRMinor);
993   endService( " GEOM_Superv_i::MakeTorusRR" );
994   return anObj;
995 }
996
997 //=============================================================================
998 //  MakeConePntVecR1R2H:
999 //=============================================================================
1000 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeConePntVecR1R2H (GEOM::GEOM_Object_ptr thePnt,
1001                                                           GEOM::GEOM_Object_ptr theAxis,
1002                                                           CORBA::Double theR1,
1003                                                           CORBA::Double theR2,
1004                                                           CORBA::Double theHeight)
1005 {
1006   beginService( " GEOM_Superv_i::MakeConePntVecR1R2H" );
1007   MESSAGE("GEOM_Superv_i::MakeConePntVecR1R2H");
1008   get3DPrimOp();
1009   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeConePntVecR1R2H(thePnt, theAxis, theR1, theR2, theHeight);
1010   endService( " GEOM_Superv_i::MakeConePntVecR1R2H" );
1011   return anObj;
1012 }
1013
1014 //=============================================================================
1015 //  MakeConeR1R2H:
1016 //=============================================================================
1017 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeConeR1R2H (CORBA::Double theR1, 
1018                                                     CORBA::Double theR2, 
1019                                                     CORBA::Double theHeight)
1020 {
1021   beginService( " GEOM_Superv_i::MakeConeR1R2H" );
1022   MESSAGE("GEOM_Superv_i::MakeConeR1R2H");
1023   get3DPrimOp();
1024   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeConeR1R2H(theR1, theR2, theHeight);
1025   endService( " GEOM_Superv_i::MakeConeR1R2H" );
1026   return anObj;
1027 }
1028
1029 //=============================================================================
1030 //  MakePrismVecH:
1031 //=============================================================================
1032 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismVecH (GEOM::GEOM_Object_ptr theBase,
1033                                                     GEOM::GEOM_Object_ptr theVec,
1034                                                     CORBA::Double         theH)
1035 {
1036   beginService( " GEOM_Superv_i::MakePrismVecH" );
1037   MESSAGE("GEOM_Superv_i::MakePrismVecH");
1038   get3DPrimOp();
1039   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismVecH(theBase, theVec, theH);
1040   endService( " GEOM_Superv_i::MakePrismVecH" );
1041   return anObj;
1042 }
1043
1044 //=============================================================================
1045 //  MakePrismVecH2Ways:
1046 //=============================================================================
1047 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismVecH2Ways (GEOM::GEOM_Object_ptr theBase,
1048                                                          GEOM::GEOM_Object_ptr theVec,
1049                                                          CORBA::Double         theH)
1050 {
1051   beginService( " GEOM_Superv_i::MakePrismVecH2Ways" );
1052   MESSAGE("GEOM_Superv_i::MakePrismVecH2Ways");
1053   get3DPrimOp();
1054   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismVecH2Ways(theBase, theVec, theH);
1055   endService( " GEOM_Superv_i::MakePrismVecH2Ways" );
1056   return anObj;
1057 }
1058
1059 //=============================================================================
1060 //  MakePrismTwoPnt:
1061 //=============================================================================
1062 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismTwoPnt (GEOM::GEOM_Object_ptr theBase,
1063                                                       GEOM::GEOM_Object_ptr thePoint1,
1064                                                       GEOM::GEOM_Object_ptr thePoint2)
1065 {
1066   beginService( " GEOM_Superv_i::MakePrismTwoPnt" );
1067   MESSAGE("GEOM_Superv_i::MakePrismTwoPnt");
1068   get3DPrimOp();
1069   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismTwoPnt(theBase, thePoint1, thePoint2);
1070   endService( " GEOM_Superv_i::MakePrismTwoPnt" );
1071   return anObj;
1072 }
1073
1074 //=============================================================================
1075 //  MakePrismTwoPnt2Ways:
1076 //=============================================================================
1077 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismTwoPnt2Ways (GEOM::GEOM_Object_ptr theBase,
1078                                                            GEOM::GEOM_Object_ptr thePoint1,
1079                                                            GEOM::GEOM_Object_ptr thePoint2)
1080 {
1081   beginService( " GEOM_Superv_i::MakePrismTwoPnt2Ways" );
1082   MESSAGE("GEOM_Superv_i::MakePrismTwoPnt2Ways");
1083   get3DPrimOp();
1084   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismTwoPnt2Ways(theBase, thePoint1, thePoint2);
1085   endService( " GEOM_Superv_i::MakePrismTwoPnt2Ways" );
1086   return anObj;
1087 }
1088
1089 //=============================================================================
1090 //  MakePrismDXDYDZ:
1091 //=============================================================================
1092 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismDXDYDZ (GEOM::GEOM_Object_ptr theBase,
1093                       CORBA::Double theDX, CORBA::Double theDY, CORBA::Double theDZ)
1094 {
1095   beginService( " GEOM_Superv_i::MakePrismDXDYDZ" );
1096   MESSAGE("GEOM_Superv_i::MakePrismDXDYDZ");
1097   get3DPrimOp();
1098   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismDXDYDZ(theBase, theDX, theDY, theDZ);
1099   endService( " GEOM_Superv_i::MakePrismDXDYDZ" );
1100   return anObj;
1101 }
1102
1103 //=============================================================================
1104 //  MakePrismDXDYDZ:
1105 //=============================================================================
1106 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismDXDYDZ2Ways (GEOM::GEOM_Object_ptr theBase,
1107                       CORBA::Double theDX, CORBA::Double theDY, CORBA::Double theDZ)
1108 {
1109   beginService( " GEOM_Superv_i::MakePrismDXDYDZ2Ways" );
1110   MESSAGE("GEOM_Superv_i::MakePrismDXDYDZ2Ways");
1111   get3DPrimOp();
1112   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismDXDYDZ2Ways(theBase, theDX, theDY, theDZ);
1113   endService( " GEOM_Superv_i::MakePrismDXDYDZ2Ways" );
1114   return anObj;
1115 }
1116
1117 //=============================================================================
1118 //  MakePipe:
1119 //=============================================================================
1120 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipe (GEOM::GEOM_Object_ptr theBase, 
1121                                                GEOM::GEOM_Object_ptr thePath)
1122 {
1123   beginService( " GEOM_Superv_i::MakePipe" );
1124   MESSAGE("GEOM_Superv_i::MakePipe");
1125   get3DPrimOp();
1126   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePipe(theBase, thePath);
1127   endService( " GEOM_Superv_i::MakePipe" );
1128   return anObj;
1129 }
1130
1131 //=============================================================================
1132 //  MakeRevolutionAxisAngle:
1133 //=============================================================================
1134 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeRevolutionAxisAngle (GEOM::GEOM_Object_ptr theBase,
1135                                                               GEOM::GEOM_Object_ptr theAxis,
1136                                                               CORBA::Double theAngle)
1137 {
1138   beginService( " GEOM_Superv_i::MakeRevolutionAxisAngle" );
1139   MESSAGE("GEOM_Superv_i::MakeRevolutionAxisAngle");
1140   get3DPrimOp();
1141   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeRevolutionAxisAngle(theBase, theAxis, theAngle);
1142   endService( " GEOM_Superv_i::MakeRevolutionAxisAngle" );
1143   return anObj;
1144 }
1145
1146 //=============================================================================
1147 //  MakeRevolutionAxisAngle:
1148 //=============================================================================
1149 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeRevolutionAxisAngle2Ways (GEOM::GEOM_Object_ptr theBase,
1150                                                                    GEOM::GEOM_Object_ptr theAxis,
1151                                                                    CORBA::Double theAngle)
1152 {
1153   beginService( " GEOM_Superv_i::MakeRevolutionAxisAngle2Ways" );
1154   MESSAGE("GEOM_Superv_i::MakeRevolutionAxisAngle2Ways");
1155   get3DPrimOp();
1156   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeRevolutionAxisAngle2Ways(theBase, theAxis, theAngle);
1157   endService( " GEOM_Superv_i::MakeRevolutionAxisAngle2Ways" );
1158   return anObj;
1159 }
1160
1161 //=============================================================================
1162 //  MakeFilling:
1163 //=============================================================================
1164 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilling (GEOM::GEOM_Object_ptr theShape,
1165                                                   CORBA::Long theMinDeg, CORBA::Long theMaxDeg,
1166                                                   CORBA::Double theTol2D, CORBA::Double theTol3D,
1167                                                   CORBA::Long theNbIter, CORBA::Boolean theApprox)
1168 {
1169   beginService( " GEOM_Superv_i::MakeFilling" );
1170   MESSAGE("GEOM_Superv_i::MakeFilling");
1171   get3DPrimOp();
1172   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeFilling(theShape, theMinDeg, theMaxDeg, theTol2D, theTol3D, theNbIter, theApprox);
1173   endService( " GEOM_Superv_i::MakeFilling" );
1174   return anObj;
1175 }
1176
1177 //============================= BooleanOperations =============================
1178 //=============================================================================
1179 //  MakeBoolean:
1180 //=============================================================================
1181 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeBoolean (GEOM::GEOM_Object_ptr theShape1,
1182                                                   GEOM::GEOM_Object_ptr theShape2,
1183                                                   CORBA::Long theOperation)
1184 {
1185   beginService( " GEOM_Superv_i::MakeBoolean" );
1186   // theOperation indicates the operation to be done:
1187   // 1 - Common, 2 - Cut, 3 - Fuse, 4 - Section
1188   MESSAGE("GEOM_Superv_i::MakeBoolean");
1189   getBoolOp();
1190   GEOM::GEOM_Object_ptr anObj = myBoolOp->MakeBoolean(theShape1, theShape2, theOperation);
1191   endService( " GEOM_Superv_i::MakeBoolean" );
1192   return anObj;
1193 }
1194
1195 //=============================================================================
1196 //  MakeThruSections:
1197 //=============================================================================
1198 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeThruSections(const GEOM::ListOfGO& theSeqSections,
1199                                          CORBA::Boolean theModeSolid,
1200                                          CORBA::Double thePreci,
1201                                          CORBA::Boolean theRuled)
1202 {
1203   beginService( " GEOM_Superv_i::MakeThruSections" );
1204   MESSAGE("GEOM_Superv_i::MakeThruSections");
1205   get3DPrimOp();
1206   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeThruSections(theSeqSections, theModeSolid,thePreci,theRuled);
1207   endService( " GEOM_Superv_i::MakeThruSections" );
1208   return anObj;
1209 }
1210
1211 //=============================================================================
1212 //  MakePipe:
1213 //=============================================================================
1214 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipeWithDifferentSections
1215                      (const GEOM::ListOfGO& theBases,
1216                       const GEOM::ListOfGO& theLocations,
1217                       GEOM::GEOM_Object_ptr thePath,
1218                       CORBA::Boolean theWithContact,
1219                       CORBA::Boolean theWithCorrections)
1220 {
1221   beginService( " GEOM_Superv_i::MakePipeWithDifferentSections" );
1222   MESSAGE("GEOM_Superv_i::MakePipeWithDifferentSections");
1223   get3DPrimOp();
1224   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePipeWithDifferentSections(theBases,theLocations, thePath,theWithContact,theWithCorrections);
1225   endService( " GEOM_Superv_i::MakePipeWithDifferentSections" );
1226   return anObj;
1227 }
1228
1229
1230 //=============================================================================
1231 //  MakePipe:
1232 //=============================================================================
1233 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipeWithShellSections
1234                    (const GEOM::ListOfGO& theBases,
1235                     const GEOM::ListOfGO& theSubBases,
1236                     const GEOM::ListOfGO& theLocations,
1237                     GEOM::GEOM_Object_ptr thePath,
1238                     CORBA::Boolean theWithContact,
1239                     CORBA::Boolean theWithCorrections)
1240 {
1241   beginService( " GEOM_Superv_i::MakePipeWithShellSections" );
1242   MESSAGE("GEOM_Superv_i::MakePipeWithShellSections");
1243   get3DPrimOp();
1244   GEOM::GEOM_Object_ptr anObj =
1245     my3DPrimOp->MakePipeWithShellSections(theBases, theSubBases,
1246                                           theLocations, thePath,
1247                                           theWithContact, theWithCorrections);
1248   endService( " GEOM_Superv_i::MakePipeWithShellSections" );
1249   return anObj;
1250 }
1251
1252
1253 //=============================================================================
1254 //  MakePipe:
1255 //=============================================================================
1256 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipeShellsWithoutPath
1257                    (const GEOM::ListOfGO& theBases,
1258                     const GEOM::ListOfGO& theLocations)
1259 {
1260   beginService( " GEOM_Superv_i::MakePipeShellsWithoutPath" );
1261   MESSAGE("GEOM_Superv_i::MakePipeShellsWithoutPath");
1262   get3DPrimOp();
1263   GEOM::GEOM_Object_ptr anObj =
1264     my3DPrimOp->MakePipeShellsWithoutPath(theBases,theLocations);
1265   endService( " GEOM_Superv_i::MakePipeShellsWithoutPath" );
1266   return anObj;
1267 }
1268
1269
1270 //=============================================================================
1271 //  MakePipe:
1272 //=============================================================================
1273 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipeBiNormalAlongVector 
1274                                                 (GEOM::GEOM_Object_ptr theBase, 
1275                                                  GEOM::GEOM_Object_ptr thePath, 
1276                                                  GEOM::GEOM_Object_ptr theVec)
1277 {
1278   beginService( " GEOM_Superv_i::MakePipeBiNormalAlongVector" );
1279   MESSAGE("GEOM_Superv_i::MakePipeBiNormalAlongVector");
1280   get3DPrimOp();
1281   GEOM::GEOM_Object_ptr anObj = 
1282     my3DPrimOp->MakePipeBiNormalAlongVector(theBase, thePath, theVec);
1283   endService( " GEOM_Superv_i::MakePipeBiNormalAlongVector" );
1284   return anObj;
1285 }
1286
1287
1288 //=============================================================================
1289 //  MakeFuse:
1290 //=============================================================================
1291 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFuse (GEOM::GEOM_Object_ptr theShape1,
1292                                                GEOM::GEOM_Object_ptr theShape2)
1293 {
1294   beginService( " GEOM_Superv_i::MakeFuse" );
1295   MESSAGE("GEOM_Superv_i::MakeFuse");
1296   getBoolOp();
1297   GEOM::GEOM_Object_ptr anObj = myBoolOp->MakeBoolean(theShape1, theShape2, 3);
1298   endService( " GEOM_Superv_i::MakeFuse" );
1299   return anObj;
1300 }
1301
1302 //=============================================================================
1303 //  MakePartition:
1304 //=============================================================================
1305 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePartition (GEOM::GEOM_List_ptr   theShapes,
1306                                                     GEOM::GEOM_List_ptr   theTools,
1307                                                     GEOM::GEOM_List_ptr   theKeepInside,
1308                                                     GEOM::GEOM_List_ptr   theRemoveInside,
1309                                                     CORBA::Short      theLimit,
1310                                                     CORBA::Boolean    theRemoveWebs,
1311                                                     GEOM::GEOM_List_ptr theMaterials,
1312                                                     CORBA::Short theKeepNonlimitShapes)
1313 {
1314   beginService( " GEOM_Superv_i::MakePartition" );
1315   MESSAGE("GEOM_Superv_i::MakePartition");
1316   GEOM_List_i<GEOM::ListOfGO>* aListImplS = 
1317     dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theShapes, myPOA).in());
1318   GEOM_List_i<GEOM::ListOfGO>* aListImplT = 
1319     dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theTools, myPOA).in());
1320   GEOM_List_i<GEOM::ListOfGO>* aListImplKI = 
1321     dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theKeepInside, myPOA).in());
1322   GEOM_List_i<GEOM::ListOfGO>* aListImplRI = 
1323     dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theRemoveInside, myPOA).in());
1324   GEOM_List_i<GEOM::ListOfLong>* aListImplM = 
1325     dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theMaterials, myPOA).in());
1326   if (aListImplS && aListImplT && aListImplKI && aListImplRI && aListImplM) {
1327     getBoolOp();
1328     GEOM::GEOM_Object_ptr anObj =
1329       myBoolOp->MakePartition(aListImplS->GetList(), aListImplT->GetList(), 
1330                               aListImplKI->GetList(), aListImplRI->GetList(),
1331                               theLimit, theRemoveWebs, aListImplM->GetList(),
1332                               theKeepNonlimitShapes);
1333     endService( " GEOM_Superv_i::MakePartition" );
1334     return anObj;
1335   }
1336   endService( " GEOM_Superv_i::MakePartition" );
1337   return NULL;
1338 }
1339
1340 //=============================================================================
1341 //  MakeHalfPartition:
1342 //=============================================================================
1343 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeHalfPartition (GEOM::GEOM_Object_ptr theShape,
1344                                                         GEOM::GEOM_Object_ptr thePlane)
1345 {
1346   beginService( " GEOM_Superv_i::MakeHalfPartition" );
1347   MESSAGE("GEOM_Superv_i::MakeHalfPartition");
1348   getBoolOp();
1349   GEOM::GEOM_Object_ptr anObj = myBoolOp->MakeHalfPartition(theShape, thePlane);
1350   endService( " GEOM_Superv_i::MakeHalfPartition" );
1351   return anObj;
1352 }
1353
1354 //============================== InsertOperations =============================
1355 //=============================================================================
1356 //  MakeCopy:
1357 //=============================================================================
1358 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCopy (GEOM::GEOM_Object_ptr theOriginal)
1359 {
1360   beginService( " GEOM_Superv_i::MakeCopy" );
1361   MESSAGE("GEOM_Superv_i::MakeCopy");
1362   getInsOp();
1363   GEOM::GEOM_Object_ptr anObj = myInsOp->MakeCopy(theOriginal);
1364   endService( " GEOM_Superv_i::MakeCopy" );
1365   return anObj;
1366 }
1367
1368 //=============================================================================
1369 //  Export:
1370 //=============================================================================
1371 void GEOM_Superv_i::Export (GEOM::GEOM_Object_ptr theObject, 
1372                             const char*           theFileName, 
1373                             const char*           theFormatName)
1374 {
1375   beginService( " GEOM_Superv_i::Export" );
1376   MESSAGE("GEOM_Superv_i::Export");
1377   getInsOp();
1378   myInsOp->Export(theObject, theFileName, theFormatName);
1379   endService( " GEOM_Superv_i::Export" );
1380 }
1381
1382 //=============================================================================
1383 //  Import:
1384 //=============================================================================
1385 GEOM::GEOM_Object_ptr GEOM_Superv_i::Import (const char* theFileName, 
1386                                              const char* theFormatName)
1387 {
1388   beginService( " GEOM_Superv_i::Import" );
1389   MESSAGE("GEOM_Superv_i::Import");
1390   getInsOp();
1391   GEOM::GEOM_Object_ptr anObj = myInsOp->Import(theFileName, theFormatName);
1392   endService( " GEOM_Superv_i::Import" );
1393   return anObj;
1394 }
1395
1396 //=============================================================================
1397 //  ImportTranslators:
1398 //=============================================================================
1399 void GEOM_Superv_i::ImportTranslators (GEOM::string_array_out theFormats,
1400                                        GEOM::string_array_out thePatterns)
1401 {
1402   beginService( " GEOM_Superv_i::ImportTranslators" );
1403   MESSAGE("GEOM_Superv_i::ImportTranslators");
1404   getInsOp();
1405   myInsOp->ImportTranslators(theFormats, thePatterns);
1406   endService( " GEOM_Superv_i::ImportTranslators" );
1407 }
1408
1409 //=============================================================================
1410 //  ExportTranslators:
1411 //=============================================================================
1412 void GEOM_Superv_i::ExportTranslators (GEOM::string_array_out theFormats,
1413                                        GEOM::string_array_out thePatterns)
1414 {
1415   beginService( " GEOM_Superv_i::ExportTranslators" );
1416   MESSAGE("GEOM_Superv_i::ExportTranslators");
1417   getInsOp();
1418   myInsOp->ExportTranslators(theFormats, thePatterns);
1419   endService( " GEOM_Superv_i::ExportTranslators" );
1420 }
1421
1422 //============================= TransformOperations ===========================
1423 //=============================================================================
1424 //  TranslateTwoPoints:
1425 //=============================================================================
1426 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateTwoPoints (GEOM::GEOM_Object_ptr theObject,
1427                                                          GEOM::GEOM_Object_ptr thePoint1,
1428                                                          GEOM::GEOM_Object_ptr thePoint2)
1429 {
1430   beginService( " GEOM_Superv_i::TranslateTwoPoints" );
1431   MESSAGE("GEOM_Superv_i::TranslateTwoPoints");
1432   getTransfOp();
1433   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateTwoPoints(theObject, thePoint1, thePoint2);
1434   endService( " GEOM_Superv_i::TranslateTwoPoints" );
1435   return anObj;
1436 }
1437
1438 //=============================================================================
1439 //  TranslateTwoPointsCopy:
1440 //=============================================================================
1441 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateTwoPointsCopy (GEOM::GEOM_Object_ptr theObject,
1442                                                              GEOM::GEOM_Object_ptr thePoint1,
1443                                                              GEOM::GEOM_Object_ptr thePoint2)
1444 {
1445   beginService( " GEOM_Superv_i::TranslateTwoPointsCopy" );
1446   MESSAGE("GEOM_Superv_i::TranslateTwoPointsCopy");
1447   getTransfOp();
1448   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateTwoPointsCopy(theObject, thePoint1, thePoint2);
1449   endService( " GEOM_Superv_i::TranslateTwoPointsCopy" );
1450   return anObj;
1451 }
1452
1453 //=============================================================================
1454 //  TranslateDXDYDZ:
1455 //=============================================================================
1456 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateDXDYDZ (GEOM::GEOM_Object_ptr theObject,
1457                                                       CORBA::Double theDX, 
1458                                                       CORBA::Double theDY, 
1459                                                       CORBA::Double theDZ)
1460 {
1461   beginService( " GEOM_Superv_i::TranslateDXDYDZ" );
1462   MESSAGE("GEOM_Superv_i::TranslateDXDYDZ");
1463   getTransfOp();
1464   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateDXDYDZ(theObject, theDX, theDY, theDZ);
1465   endService( " GEOM_Superv_i::TranslateDXDYDZ" );
1466   return anObj;
1467 }
1468
1469 //=============================================================================
1470 //  TranslateDXDYDZCopy:
1471 //=============================================================================
1472 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateDXDYDZCopy (GEOM::GEOM_Object_ptr theObject,
1473                                                           CORBA::Double theDX, 
1474                                                           CORBA::Double theDY, 
1475                                                           CORBA::Double theDZ)
1476 {
1477   beginService( " GEOM_Superv_i::TranslateDXDYDZCopy" );
1478   MESSAGE("GEOM_Superv_i::TranslateDXDYDZCopy");
1479   getTransfOp();
1480   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateDXDYDZCopy(theObject, theDX, theDY, theDZ);
1481   endService( " GEOM_Superv_i::TranslateDXDYDZCopy" );
1482   return anObj;
1483 }
1484
1485 //=============================================================================
1486 //  TranslateVector:
1487 //=============================================================================
1488 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateVector (GEOM::GEOM_Object_ptr theObject,
1489                                                       GEOM::GEOM_Object_ptr theVector)
1490 {
1491   beginService( " GEOM_Superv_i::TranslateVector" );
1492   MESSAGE("GEOM_Superv_i::TranslateVector");
1493   getTransfOp();
1494   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateVector(theObject, theVector);
1495   endService( " GEOM_Superv_i::TranslateVector" );
1496   return anObj;
1497 }
1498
1499 //=============================================================================
1500 //  TranslateVectorCopy:
1501 //=============================================================================
1502 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateVectorCopy (GEOM::GEOM_Object_ptr theObject,
1503                                                           GEOM::GEOM_Object_ptr theVector)
1504 {
1505   beginService( " GEOM_Superv_i::TranslateVectorCopy" );
1506   MESSAGE("GEOM_Superv_i::TranslateVectorCopy");
1507   getTransfOp();
1508   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateVectorCopy(theObject, theVector);
1509   endService( " GEOM_Superv_i::TranslateVectorCopy" );
1510   return anObj;
1511 }
1512
1513 //=============================================================================
1514 //  TranslateVectorDistance:
1515 //=============================================================================
1516 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateVectorDistance (GEOM::GEOM_Object_ptr theObject,
1517                                                               GEOM::GEOM_Object_ptr theVector,
1518                                                               CORBA::Double theDistance,
1519                                                               CORBA::Boolean theCopy)
1520 {
1521   beginService( " GEOM_Superv_i::TranslateVectorDistance" );
1522   MESSAGE("GEOM_Superv_i::TranslateVectorDistance");
1523   getTransfOp();
1524   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateVectorDistance(theObject, 
1525                                                                     theVector, theDistance, theCopy);
1526   endService( " GEOM_Superv_i::TranslateVectorDistance" );
1527   return anObj;
1528 }
1529
1530 //=============================================================================
1531 //  MultiTranslate1D:
1532 //=============================================================================
1533 GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiTranslate1D (GEOM::GEOM_Object_ptr theObject,
1534                                                        GEOM::GEOM_Object_ptr theVector,
1535                                                        CORBA::Double theStep,
1536                                                        CORBA::Long theNbTimes)
1537 {
1538   beginService( " GEOM_Superv_i::MultiTranslate1D" );
1539   MESSAGE("GEOM_Superv_i::MultiTranslate1D");
1540   getTransfOp();
1541   GEOM::GEOM_Object_ptr anObj = myTransfOp->MultiTranslate1D(theObject, theVector, theStep, theNbTimes);
1542   endService( " GEOM_Superv_i::MultiTranslate1D" );
1543   return anObj;
1544 }
1545
1546 //=============================================================================
1547 //  MultiTranslate2D:
1548 //=============================================================================
1549 GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiTranslate2D (GEOM::GEOM_Object_ptr theObject,
1550                                                        GEOM::GEOM_Object_ptr theVector1,
1551                                                        CORBA::Double theStep1,
1552                                                        CORBA::Long theNbTimes1,
1553                                                        GEOM::GEOM_Object_ptr theVector2,
1554                                                        CORBA::Double theStep2,
1555                                                        CORBA::Long theNbTimes2)
1556 {
1557   beginService( " GEOM_Superv_i::MultiTranslate2D" );
1558   MESSAGE("GEOM_Superv_i::MultiTranslate2D");
1559   getTransfOp();
1560   GEOM::GEOM_Object_ptr anObj = myTransfOp->MultiTranslate2D(theObject, theVector1, theStep1, theNbTimes1,
1561                                                              theVector2, theStep2, theNbTimes2);
1562   endService( " GEOM_Superv_i::MultiTranslate2D" );
1563   return anObj;
1564 }
1565
1566 //=============================================================================
1567 //  Rotate:
1568 //=============================================================================
1569 GEOM::GEOM_Object_ptr GEOM_Superv_i::Rotate (GEOM::GEOM_Object_ptr theObject,
1570                                              GEOM::GEOM_Object_ptr theAxis,
1571                                              CORBA::Double theAngle)
1572 {
1573   beginService( " GEOM_Superv_i::Rotate" );
1574   MESSAGE("GEOM_Superv_i::Rotate");
1575   getTransfOp();
1576   GEOM::GEOM_Object_ptr anObj = myTransfOp->Rotate(theObject, theAxis, theAngle);
1577   endService( " GEOM_Superv_i::Rotate" );
1578   return anObj;
1579 }
1580
1581 //=============================================================================
1582 //  RotateCopy:
1583 //=============================================================================
1584 GEOM::GEOM_Object_ptr GEOM_Superv_i::RotateCopy (GEOM::GEOM_Object_ptr theObject,
1585                                                  GEOM::GEOM_Object_ptr theAxis,
1586                                                  CORBA::Double theAngle)
1587 {
1588   beginService( " GEOM_Superv_i::RotateCopy" );
1589   MESSAGE("GEOM_Superv_i::RotateCopy");
1590   getTransfOp();
1591   GEOM::GEOM_Object_ptr anObj = myTransfOp->RotateCopy(theObject, theAxis, theAngle);
1592   endService( " GEOM_Superv_i::RotateCopy" );
1593   return anObj;
1594 }
1595 //=============================================================================
1596 //  RotateThreePoints:
1597 //=============================================================================
1598 GEOM::GEOM_Object_ptr GEOM_Superv_i::RotateThreePoints (GEOM::GEOM_Object_ptr theObject,
1599                                                         GEOM::GEOM_Object_ptr theCentPoint,
1600                                                         GEOM::GEOM_Object_ptr thePoint1,
1601                                                         GEOM::GEOM_Object_ptr thePoint2)
1602 {
1603   beginService( " GEOM_Superv_i::RotateThreePoints" );
1604   MESSAGE("GEOM_Superv_i::RotateThreePoints");
1605   getTransfOp();
1606   GEOM::GEOM_Object_ptr anObj = myTransfOp->RotateThreePoints(theObject, theCentPoint, thePoint1, thePoint2);
1607   endService( " GEOM_Superv_i::RotateThreePoints" );
1608   return anObj;
1609 }
1610
1611 //=============================================================================
1612 //  RotateThreePointsCopy:
1613 //=============================================================================
1614 GEOM::GEOM_Object_ptr GEOM_Superv_i::RotateThreePointsCopy (GEOM::GEOM_Object_ptr theObject,
1615                                                             GEOM::GEOM_Object_ptr theCentPoint,
1616                                                             GEOM::GEOM_Object_ptr thePoint1,
1617                                                             GEOM::GEOM_Object_ptr thePoint2)
1618 {
1619   beginService( " GEOM_Superv_i::RotateThreePointsCopy" );
1620   MESSAGE("GEOM_Superv_i::RotateThreePointsCopy");
1621   getTransfOp();
1622   GEOM::GEOM_Object_ptr anObj = myTransfOp->RotateThreePointsCopy(theObject, theCentPoint, thePoint1, thePoint2);
1623   endService( " GEOM_Superv_i::RotateThreePointsCopy" );
1624   return anObj;
1625 }
1626
1627 //=============================================================================
1628 //  MultiRotate1D:
1629 //=============================================================================
1630 GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiRotate1D (GEOM::GEOM_Object_ptr theObject,
1631                                                     GEOM::GEOM_Object_ptr theAxis,
1632                                                     CORBA::Long theNbTimes)
1633 {
1634   beginService( " GEOM_Superv_i::MultiRotate1D" );
1635   MESSAGE("GEOM_Superv_i::MultiRotate1D");
1636   getTransfOp();
1637   GEOM::GEOM_Object_ptr anObj = myTransfOp->MultiRotate1D(theObject, theAxis, theNbTimes);
1638   endService( " GEOM_Superv_i::MultiRotate1D" );
1639   return anObj;
1640 }
1641
1642 //=============================================================================
1643 //  MultiRotate2D:
1644 //=============================================================================
1645 GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiRotate2D (GEOM::GEOM_Object_ptr theObject,
1646                                                     GEOM::GEOM_Object_ptr theAxis,
1647                                                     CORBA::Double theAngle,
1648                                                     CORBA::Long theNbTimes1,
1649                                                     CORBA::Double theStep,
1650                                                     CORBA::Long theNbTimes2)
1651 {
1652   beginService( " GEOM_Superv_i::MultiRotate2D" );
1653   MESSAGE("GEOM_Superv_i::MultiRotate2D");
1654   getTransfOp();
1655   GEOM::GEOM_Object_ptr anObj = myTransfOp->MultiRotate2D(theObject, theAxis, theAngle, theNbTimes1, theStep, theNbTimes2);
1656   endService( " GEOM_Superv_i::MultiRotate2D" );
1657   return anObj;
1658 }
1659
1660 //=============================================================================
1661 //  MirrorPlane:
1662 //=============================================================================
1663 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPlane (GEOM::GEOM_Object_ptr theObject, 
1664                                                   GEOM::GEOM_Object_ptr thePlane)
1665 {
1666   beginService( " GEOM_Superv_i::MirrorPlane" );
1667   MESSAGE("GEOM_Superv_i::MirrorPlane");
1668   getTransfOp();
1669   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorPlane(theObject, thePlane);
1670   endService( " GEOM_Superv_i::MirrorPlane" );
1671   return anObj;
1672 }
1673
1674 //=============================================================================
1675 //  MirrorPlaneCopy:
1676 //=============================================================================
1677 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPlaneCopy (GEOM::GEOM_Object_ptr theObject, 
1678                                                       GEOM::GEOM_Object_ptr thePlane)
1679 {
1680   beginService( " GEOM_Superv_i::MirrorPlaneCopy" );
1681   MESSAGE("GEOM_Superv_i::MirrorPlaneCopy");
1682   getTransfOp();
1683   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorPlaneCopy(theObject, thePlane);
1684   endService( " GEOM_Superv_i::MirrorPlaneCopy" );
1685   return anObj;
1686 }
1687
1688 //=============================================================================
1689 //  MirrorAxis:
1690 //=============================================================================
1691 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorAxis (GEOM::GEOM_Object_ptr theObject, 
1692                                                  GEOM::GEOM_Object_ptr theAxis)
1693 {
1694   beginService( " GEOM_Superv_i::MirrorAxis" );
1695   MESSAGE("GEOM_Superv_i::MirrorAxis");
1696   getTransfOp();
1697   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorAxis(theObject, theAxis);
1698   endService( " GEOM_Superv_i::MirrorAxis" );
1699   return anObj;
1700 }
1701
1702 //=============================================================================
1703 //  MirrorAxisCopy:
1704 //=============================================================================
1705 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorAxisCopy (GEOM::GEOM_Object_ptr theObject, 
1706                                                      GEOM::GEOM_Object_ptr theAxis)
1707 {
1708   beginService( " GEOM_Superv_i::MirrorAxisCopy" );
1709   MESSAGE("GEOM_Superv_i::MirrorAxisCopy");
1710   getTransfOp();
1711   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorAxisCopy(theObject, theAxis);
1712   endService( " GEOM_Superv_i::MirrorAxisCopy" );
1713   return anObj;
1714 }
1715
1716 //=============================================================================
1717 //  MirrorPoint:
1718 //=============================================================================
1719 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPoint (GEOM::GEOM_Object_ptr theObject, 
1720                                                   GEOM::GEOM_Object_ptr thePoint)
1721 {
1722   beginService( " GEOM_Superv_i::MirrorPoint" );
1723   MESSAGE("GEOM_Superv_i::MirrorPoint");
1724   getTransfOp();
1725   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorPoint(theObject, thePoint);
1726   endService( " GEOM_Superv_i::MirrorPoint" );
1727   return anObj;
1728 }
1729
1730 //=============================================================================
1731 //  MirrorPointCopy:
1732 //=============================================================================
1733 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPointCopy (GEOM::GEOM_Object_ptr theObject, 
1734                                                       GEOM::GEOM_Object_ptr thePoint)
1735 {
1736   beginService( " GEOM_Superv_i::MirrorPoint" );
1737   MESSAGE("GEOM_Superv_i::MirrorPointCopy");
1738   getTransfOp();
1739   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorPointCopy(theObject, thePoint);
1740   endService( " GEOM_Superv_i::MirrorPoint" );
1741   return anObj;
1742 }
1743
1744 //=============================================================================
1745 //  OffsetShape:
1746 //=============================================================================
1747 GEOM::GEOM_Object_ptr GEOM_Superv_i::OffsetShape (GEOM::GEOM_Object_ptr theObject, 
1748                                                   CORBA::Double theOffset)
1749 {
1750   beginService( " GEOM_Superv_i::OffsetShape" );
1751   MESSAGE("GEOM_Superv_i::OffsetShape");
1752   getTransfOp();
1753   GEOM::GEOM_Object_ptr anObj = myTransfOp->OffsetShape(theObject, theOffset);
1754   endService( " GEOM_Superv_i::OffsetShape" );
1755   return anObj;
1756 }
1757
1758 //=============================================================================
1759 //  OffsetShapeCopy:
1760 //=============================================================================
1761 GEOM::GEOM_Object_ptr GEOM_Superv_i::OffsetShapeCopy (GEOM::GEOM_Object_ptr theObject, 
1762                                                       CORBA::Double theOffset)
1763 {
1764   beginService( " GEOM_Superv_i::OffsetShapeCopy" );
1765   MESSAGE("GEOM_Superv_i::OffsetShapeCopy");
1766   getTransfOp();
1767   GEOM::GEOM_Object_ptr anObj = myTransfOp->OffsetShapeCopy(theObject, theOffset);
1768   endService( " GEOM_Superv_i::OffsetShapeCopy" );
1769   return anObj;
1770 }
1771
1772 //=============================================================================
1773 //  ScaleShape:
1774 //=============================================================================
1775 GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShape (GEOM::GEOM_Object_ptr theObject, 
1776                                                  GEOM::GEOM_Object_ptr thePoint,
1777                                                  CORBA::Double theFactor)
1778 {
1779   beginService( " GEOM_Superv_i::ScaleShape" );
1780   MESSAGE("GEOM_Superv_i::ScaleShape");
1781   getTransfOp();
1782   GEOM::GEOM_Object_ptr anObj = myTransfOp->ScaleShape(theObject, thePoint, theFactor);
1783   endService( " GEOM_Superv_i::ScaleShape" );
1784   return anObj;
1785 }
1786
1787 //=============================================================================
1788 //  ScaleShapeCopy:
1789 //=============================================================================
1790 GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShapeCopy (GEOM::GEOM_Object_ptr theObject, 
1791                                                      GEOM::GEOM_Object_ptr thePoint,
1792                                                      CORBA::Double theFactor)
1793 {
1794   beginService( " GEOM_Superv_i::ScaleShapeCopy" );
1795   MESSAGE("GEOM_Superv_i::ScaleShapeCopy");
1796   getTransfOp();
1797   GEOM::GEOM_Object_ptr anObj = myTransfOp->ScaleShapeCopy(theObject, thePoint, theFactor);
1798   endService( " GEOM_Superv_i::ScaleShapeCopy" );
1799   return anObj;
1800 }
1801
1802 //=============================================================================
1803 //  ScaleShapeAlongAxes:
1804 //=============================================================================
1805 GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShapeAlongAxes (GEOM::GEOM_Object_ptr theObject,
1806                                                           GEOM::GEOM_Object_ptr thePoint,
1807                                                           CORBA::Double theFactorX,
1808                                                           CORBA::Double theFactorY,
1809                                                           CORBA::Double theFactorZ)
1810 {
1811   beginService( " GEOM_Superv_i::ScaleShapeAlongAxes" );
1812   MESSAGE("GEOM_Superv_i::ScaleShapeAlongAxes");
1813   getTransfOp();
1814   GEOM::GEOM_Object_ptr anObj = myTransfOp->ScaleShapeAlongAxes
1815     (theObject, thePoint, theFactorX, theFactorY, theFactorZ);
1816   endService( " GEOM_Superv_i::ScaleShapeAlongAxes" );
1817   return anObj;
1818 }
1819
1820 //=============================================================================
1821 //  ScaleShapeAlongAxesCopy:
1822 //=============================================================================
1823 GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShapeAlongAxesCopy (GEOM::GEOM_Object_ptr theObject,
1824                                                               GEOM::GEOM_Object_ptr thePoint,
1825                                                               CORBA::Double theFactorX,
1826                                                               CORBA::Double theFactorY,
1827                                                               CORBA::Double theFactorZ)
1828 {
1829   beginService( " GEOM_Superv_i::ScaleShapeAlongAxesCopy" );
1830   MESSAGE("GEOM_Superv_i::ScaleShapeAlongAxesCopy");
1831   getTransfOp();
1832   GEOM::GEOM_Object_ptr anObj = myTransfOp->ScaleShapeAlongAxesCopy
1833     (theObject, thePoint, theFactorX, theFactorY, theFactorZ);
1834   endService( " GEOM_Superv_i::ScaleShapeAlongAxesCopy" );
1835   return anObj;
1836 }
1837
1838 //=============================================================================
1839 //  PositionShape:
1840 //=============================================================================
1841 GEOM::GEOM_Object_ptr GEOM_Superv_i::PositionShape (GEOM::GEOM_Object_ptr theObject,
1842                                                     GEOM::GEOM_Object_ptr theStartLCS,
1843                                                     GEOM::GEOM_Object_ptr theEndLCS)
1844 {
1845   beginService( " GEOM_Superv_i::PositionShape" );
1846   MESSAGE("GEOM_Superv_i::PositionShape");
1847   getTransfOp();
1848   GEOM::GEOM_Object_ptr anObj = myTransfOp->PositionShape(theObject, theStartLCS, theEndLCS);
1849   endService( " GEOM_Superv_i::PositionShape" );
1850   return anObj;
1851 }
1852
1853 //=============================================================================
1854 //  PositionShapeCopy:
1855 //=============================================================================
1856 GEOM::GEOM_Object_ptr GEOM_Superv_i::PositionShapeCopy (GEOM::GEOM_Object_ptr theObject,
1857                                                         GEOM::GEOM_Object_ptr theStartLCS,
1858                                                         GEOM::GEOM_Object_ptr theEndLCS)
1859 {
1860   beginService( " GEOM_Superv_i::PositionShapeCopy" );
1861   MESSAGE("GEOM_Superv_i::PositionShapeCopy");
1862   getTransfOp();
1863   GEOM::GEOM_Object_ptr anObj = myTransfOp->PositionShapeCopy(theObject, theStartLCS, theEndLCS);
1864   endService( " GEOM_Superv_i::PositionShapeCopy" );
1865   return anObj;
1866 }
1867
1868 //=============================================================================
1869 //  PositionAlongPath:
1870 //=============================================================================
1871 GEOM::GEOM_Object_ptr GEOM_Superv_i::PositionAlongPath (GEOM::GEOM_Object_ptr theObject,
1872                                                         GEOM::GEOM_Object_ptr thePath,
1873                                                         CORBA::Double         theDistance,
1874                                                         CORBA::Boolean        theCopy,
1875                                                         CORBA::Boolean        theReverse)
1876 {
1877   beginService( " GEOM_Superv_i::PositionAlongPath" );
1878   MESSAGE("GEOM_Superv_i::PositionAlongPath");
1879   getTransfOp();
1880   GEOM::GEOM_Object_ptr anObj = myTransfOp->PositionAlongPath(theObject, thePath, theDistance, theCopy, theReverse);
1881   endService( " GEOM_Superv_i::PositionAlongPath" );
1882   return anObj;
1883 }
1884
1885 //=============================== ShapesOperations ============================
1886 //=============================================================================
1887 //  Make:
1888 //=============================================================================
1889 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeEdge (GEOM::GEOM_Object_ptr thePnt1,
1890                                                GEOM::GEOM_Object_ptr thePnt2)
1891 {
1892   beginService( " GEOM_Superv_i::MakeEdge" );
1893   MESSAGE("GEOM_Superv_i::MakeEdge");
1894   getShapesOp();
1895   GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeEdge(thePnt1, thePnt2);
1896   endService( " GEOM_Superv_i::MakeEdge" );
1897   return anObj;
1898 }
1899
1900 //=============================================================================
1901 //  MakeWire:
1902 //=============================================================================
1903 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeWire (GEOM::GEOM_List_ptr theEdgesAndWires,
1904                                                CORBA::Double       theTolerance)
1905 {
1906   beginService( " GEOM_Superv_i::MakeWire" );
1907   MESSAGE("GEOM_Superv_i::MakeWire");
1908   if (GEOM_List_i<GEOM::ListOfGO>* aListImplEW = 
1909       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theEdgesAndWires, myPOA).in())) {
1910     getShapesOp();
1911     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeWire(aListImplEW->GetList(), theTolerance);
1912     endService( " GEOM_Superv_i::MakeWire" );
1913     return anObj;
1914   }
1915   endService( " GEOM_Superv_i::MakeWire" );
1916   return NULL;
1917 }
1918
1919 //=============================================================================
1920 //  MakeFace:
1921 //=============================================================================
1922 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFace (GEOM::GEOM_Object_ptr theWire,
1923                                                CORBA::Boolean isPlanarWanted)
1924 {
1925   beginService( " GEOM_Superv_i::MakeFace" );
1926   MESSAGE("GEOM_Superv_i::MakeFace");
1927   getShapesOp();
1928   GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeFace(theWire, isPlanarWanted);
1929   endService( " GEOM_Superv_i::MakeFace" );
1930   return anObj;
1931 }
1932
1933 //=============================================================================
1934 //  MakeFaceWires:
1935 //=============================================================================
1936 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFaceWires (GEOM::GEOM_List_ptr theWires,
1937                                                     CORBA::Boolean isPlanarWanted)
1938 {
1939   beginService( " GEOM_Superv_i::MakeFaceWires" );
1940   MESSAGE("GEOM_Superv_i::MakeFaceWires");
1941   if (GEOM_List_i<GEOM::ListOfGO>* aListImplW = 
1942       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theWires, myPOA).in())) {
1943     getShapesOp();
1944     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeFaceWires(aListImplW->GetList(), isPlanarWanted);
1945     endService( " GEOM_Superv_i::MakeFaceWires" );
1946     return anObj;
1947   }
1948   endService( " GEOM_Superv_i::MakeFaceWires" );
1949   return NULL;
1950 }
1951
1952 //=============================================================================
1953 //  MakeShell:
1954 //=============================================================================
1955 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeShell (GEOM::GEOM_List_ptr theFacesAndShells)
1956 {
1957   beginService( " GEOM_Superv_i::MakeShell" );
1958   MESSAGE("GEOM_Superv_i::MakeShell");
1959   if (GEOM_List_i<GEOM::ListOfGO>* aListImplFS = 
1960       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theFacesAndShells, myPOA).in())) {
1961     getShapesOp();
1962     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeShell(aListImplFS->GetList());
1963     endService( " GEOM_Superv_i::MakeShell" );
1964     return anObj;
1965   }
1966   endService( " GEOM_Superv_i::MakeShell" );
1967   return NULL;
1968 }
1969
1970 //=============================================================================
1971 //  MakeSolidShell:
1972 //=============================================================================
1973 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSolidShell (GEOM::GEOM_Object_ptr theShell)
1974 {
1975   beginService( " GEOM_Superv_i::MakeSolidShell" );
1976   MESSAGE("GEOM_Superv_i::MakeSolidShell");
1977   getShapesOp();
1978   GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeSolidShell(theShell);
1979   endService( " GEOM_Superv_i::MakeSolidShell" );
1980   return anObj;
1981 }
1982
1983 //=============================================================================
1984 //  MakeSolidShells:
1985 //=============================================================================
1986 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSolidShells (GEOM::GEOM_List_ptr theShells)
1987 {
1988   beginService( " GEOM_Superv_i::MakeSolidShells" );
1989   MESSAGE("GEOM_Superv_i::MakeSolidShells");
1990   if (GEOM_List_i<GEOM::ListOfGO>* aListImplS = 
1991       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theShells, myPOA).in())) {
1992     getShapesOp();
1993     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeSolidShells(aListImplS->GetList());
1994     endService( " GEOM_Superv_i::MakeSolidShells" );
1995     return anObj;
1996   }
1997   endService( " GEOM_Superv_i::MakeSolidShells" );
1998   return NULL;
1999 }
2000
2001 //=============================================================================
2002 //  MakeCompound:
2003 //=============================================================================
2004 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCompound (GEOM::GEOM_List_ptr theShapes)
2005 {
2006   beginService( " GEOM_Superv_i::MakeCompound" );
2007   MESSAGE("GEOM_Superv_i::MakeCompound");
2008   if (GEOM_List_i<GEOM::ListOfGO>* aListImpl = 
2009       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theShapes, myPOA).in())) {
2010     getShapesOp();
2011     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeCompound(aListImpl->GetList());
2012     endService( " GEOM_Superv_i::MakeCompound" );
2013     return anObj;
2014   }
2015   endService( " GEOM_Superv_i::MakeCompound" );
2016   return NULL;
2017 }
2018
2019 //=============================================================================
2020 //  MakeGlueFaces:
2021 //=============================================================================
2022 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeGlueFaces (GEOM::GEOM_Object_ptr theShape,
2023                                                     CORBA::Double   theTolerance,
2024                                                     CORBA::Boolean doKeepNonSolids)
2025 {
2026   beginService( " GEOM_Superv_i::MakeGlueFaces" );
2027   MESSAGE("GEOM_Superv_i::MakeGlueFaces");
2028   getShapesOp();
2029   GEOM::GEOM_Object_ptr anObj =
2030     myShapesOp->MakeGlueFaces(theShape, theTolerance, doKeepNonSolids);
2031   endService( " GEOM_Superv_i::MakeGlueFaces" );
2032   return anObj;
2033 }
2034
2035 //=============================================================================
2036 //  GetGlueFaces:
2037 //=============================================================================
2038 GEOM::GEOM_List_ptr GEOM_Superv_i::GetGlueFaces (GEOM::GEOM_Object_ptr theShape,
2039                                                  CORBA::Double theTolerance)
2040 {
2041   beginService( " GEOM_Superv_i::GetGlueFaces" );
2042   MESSAGE("GEOM_Superv_i::GetGlueFaces");
2043   getShapesOp();
2044   GEOM::ListOfGO* aList = myShapesOp->GetGlueFaces(theShape, theTolerance);
2045   GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aList));
2046   MESSAGE(" List of "<<aListPtr->GetList().length()<<" element(s)");
2047   endService( " GEOM_Superv_i::GetGlueFaces" );
2048   return aListPtr->_this();
2049 }
2050
2051 //=============================================================================
2052 //  MakeGlueFacesByList:
2053 //=============================================================================
2054 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeGlueFacesByList (GEOM::GEOM_Object_ptr theShape,
2055                                                           CORBA::Double theTolerance,
2056                                                           const GEOM::ListOfGO& theFaces,
2057                                                           CORBA::Boolean doKeepNonSolids)
2058 {
2059   beginService( " GEOM_Superv_i::MakeGlueFacesByList" );
2060   MESSAGE("GEOM_Superv_i::MakeGlueFacesByList");
2061   getShapesOp();
2062   GEOM::GEOM_Object_ptr anObj =
2063     myShapesOp->MakeGlueFacesByList(theShape, theTolerance, theFaces, doKeepNonSolids);
2064   endService( " GEOM_Superv_i::MakeGlueFacesByList" );
2065   return anObj;
2066 }
2067
2068 //=============================================================================
2069 //  MakeExplode:
2070 //=============================================================================
2071 GEOM::GEOM_List_ptr GEOM_Superv_i::MakeExplode (GEOM::GEOM_Object_ptr theShape,
2072                                                     CORBA::Long theShapeType,
2073                                                     CORBA::Boolean isSorted)
2074 {
2075   beginService( " GEOM_Superv_i::MakeExplode" );
2076   MESSAGE("GEOM_Superv_i::MakeExplode");
2077   getShapesOp();
2078
2079   GEOM::ListOfGO* aList = myShapesOp->MakeExplode(theShape, theShapeType, isSorted);
2080   GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aList));
2081   MESSAGE(" List of "<<aListPtr->GetList().length()<<" element(s)");
2082   endService( " GEOM_Superv_i::MakeExplode" );
2083   return aListPtr->_this();
2084 }
2085
2086 //=============================================================================
2087 //  NumberOfFaces:
2088 //=============================================================================
2089 CORBA::Long GEOM_Superv_i::NumberOfFaces (GEOM::GEOM_Object_ptr theShape)
2090 {
2091   beginService( " GEOM_Superv_i::NumberOfFaces" );
2092   MESSAGE("GEOM_Superv_i::NumberOfFaces");
2093   getShapesOp();
2094   CORBA::Long aRes = myShapesOp->NumberOfFaces(theShape);
2095   endService( " GEOM_Superv_i::NumberOfFaces" );
2096   return aRes;
2097 }
2098
2099 //=============================================================================
2100 //  NumberOfEdges:
2101 //=============================================================================
2102 CORBA::Long GEOM_Superv_i::NumberOfEdges (GEOM::GEOM_Object_ptr theShape)
2103 {
2104   beginService( " GEOM_Superv_i::NumberOfEdges" );
2105   MESSAGE("GEOM_Superv_i::NumberOfEdges");
2106   getShapesOp();
2107   CORBA::Long aRes = myShapesOp->NumberOfEdges(theShape);
2108   endService( " GEOM_Superv_i::NumberOfEdges" );
2109   return aRes;
2110 }
2111
2112
2113 //=============================================================================
2114 //  ChangeOrientation:
2115 //=============================================================================
2116 GEOM::GEOM_Object_ptr GEOM_Superv_i::ChangeOrientation (GEOM::GEOM_Object_ptr theShape)
2117 {
2118   beginService( " GEOM_Superv_i::ChangeOrientation" );
2119   MESSAGE("GEOM_Superv_i::ChangeOrientation");
2120   getShapesOp();
2121   GEOM::GEOM_Object_ptr anObj = myShapesOp->ChangeOrientation(theShape);
2122   endService( " GEOM_Superv_i::ChangeOrientation" );
2123   return anObj;
2124 }
2125
2126
2127 //=============================================================================
2128 //  GetShapesOnShape:
2129 //=============================================================================
2130 GEOM::GEOM_List_ptr GEOM_Superv_i::GetShapesOnShape
2131                                           (GEOM::GEOM_Object_ptr theCheckShape,
2132                                            GEOM::GEOM_Object_ptr theShape,
2133                                            CORBA::Short theShapeType,
2134                                            GEOM::shape_state theState)
2135 {
2136   beginService( " GEOM_Superv_i::GetShapesOnShape" );
2137   MESSAGE("GEOM_Superv_i::GetShapesOnShape");
2138   getShapesOp();
2139   GEOM::ListOfGO* aList =
2140     myShapesOp->GetShapesOnShape(theCheckShape, theShape, theShapeType, theState);
2141   GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aList));
2142   MESSAGE(" List of "<<aListPtr->GetList().length()<<" element(s)");
2143   endService( " GEOM_Superv_i::GetShapesOnShape" );
2144   return aListPtr->_this();
2145 }
2146
2147
2148 //=============================================================================
2149 //  GetShapesOnShapeAsCompound:
2150 //=============================================================================
2151 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetShapesOnShapeAsCompound
2152                                           (GEOM::GEOM_Object_ptr theCheckShape,
2153                                            GEOM::GEOM_Object_ptr theShape,
2154                                            CORBA::Short theShapeType,
2155                                            GEOM::shape_state theState)
2156 {
2157   beginService( " GEOM_Superv_i::GetShapesOnShapeAsCompound" );
2158   MESSAGE("GEOM_Superv_i::GetShapesOnShapeAsCompound");
2159   getShapesOp();
2160   GEOM::GEOM_Object_ptr anObj = 
2161     myShapesOp->GetShapesOnShapeAsCompound(theCheckShape, theShape, theShapeType, theState);
2162   endService( " GEOM_Superv_i::GetShapesOnShapeAsCompound" );
2163   return anObj;
2164 }
2165
2166
2167 //=============================== BlocksOperations ============================
2168 //=============================================================================
2169 //  MakeQuad4Vertices:
2170 //=============================================================================
2171 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeQuad4Vertices (GEOM::GEOM_Object_ptr thePnt1,
2172                                                         GEOM::GEOM_Object_ptr thePnt2,
2173                                                         GEOM::GEOM_Object_ptr thePnt3,
2174                                                         GEOM::GEOM_Object_ptr thePnt4)
2175 {
2176   beginService( " GEOM_Superv_i::MakeQuad4Vertices" );
2177   MESSAGE("GEOM_Superv_i::MakeQuad4Vertices");
2178   getBlocksOp();
2179   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeQuad4Vertices(thePnt1, thePnt2, thePnt3, thePnt4);
2180   endService( " GEOM_Superv_i::MakeQuad4Vertices" );
2181   return anObj;
2182 }
2183
2184 //=============================================================================
2185 //  MakeQuad:
2186 //=============================================================================
2187 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeQuad (GEOM::GEOM_Object_ptr theEdge1,
2188                                                GEOM::GEOM_Object_ptr theEdge2,
2189                                                GEOM::GEOM_Object_ptr theEdge3,
2190                                                GEOM::GEOM_Object_ptr theEdge4)
2191 {
2192   beginService( " GEOM_Superv_i::MakeQuad" );
2193   MESSAGE("GEOM_Superv_i::MakeQuad");
2194   getBlocksOp();
2195   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeQuad(theEdge1, theEdge2, theEdge3, theEdge4);
2196   endService( " GEOM_Superv_i::MakeQuad" );
2197   return anObj;
2198 }
2199
2200 //=============================================================================
2201 //  MakeQuad2Edges:
2202 //=============================================================================
2203 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeQuad2Edges (GEOM::GEOM_Object_ptr theEdge1,
2204                                                      GEOM::GEOM_Object_ptr theEdge2)
2205 {
2206   beginService( " GEOM_Superv_i::MakeQuad2Edges" );
2207   MESSAGE("GEOM_Superv_i::MakeQuad2Edges");
2208   getBlocksOp();
2209   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeQuad2Edges(theEdge1, theEdge2);
2210   endService( " GEOM_Superv_i::MakeQuad2Edges" );
2211   return anObj;
2212 }
2213
2214 //=============================================================================
2215 //  MakeHexa:
2216 //=============================================================================
2217 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeHexa (GEOM::GEOM_Object_ptr theFace1,
2218                                                GEOM::GEOM_Object_ptr theFace2,
2219                                                GEOM::GEOM_Object_ptr theFace3,
2220                                                GEOM::GEOM_Object_ptr theFace4,
2221                                                GEOM::GEOM_Object_ptr theFace5,
2222                                                GEOM::GEOM_Object_ptr theFace6)
2223 {
2224   beginService( " GEOM_Superv_i::MakeHexa" );
2225   MESSAGE("GEOM_Superv_i::MakeHexa");
2226   getBlocksOp();
2227   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeHexa(theFace1, theFace2, theFace3, theFace4, theFace5, theFace6);
2228   endService( " GEOM_Superv_i::MakeHexa" );
2229   return anObj;
2230 }
2231
2232 //=============================================================================
2233 //  MakeHexa2Faces:
2234 //=============================================================================
2235 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeHexa2Faces (GEOM::GEOM_Object_ptr theFace1,
2236                                                      GEOM::GEOM_Object_ptr theFace2)
2237 {
2238   beginService( " GEOM_Superv_i::MakeHexa2Faces" );
2239   MESSAGE("GEOM_Superv_i::MakeHexa2Faces");
2240   getBlocksOp();
2241   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeHexa2Faces(theFace1, theFace2);
2242   endService( " GEOM_Superv_i::MakeHexa2Faces" );
2243   return anObj;
2244 }
2245
2246 //=============================================================================
2247 //  GetPoint:
2248 //=============================================================================
2249 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetPoint (GEOM::GEOM_Object_ptr theShape,
2250                                                CORBA::Double   theX,
2251                                                CORBA::Double   theY,
2252                                                CORBA::Double   theZ,
2253                                                CORBA::Double   theEpsilon)
2254 {
2255   beginService( " GEOM_Superv_i::GetPoint" );
2256   MESSAGE("GEOM_Superv_i::GetPoint");
2257   getBlocksOp();
2258   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetPoint(theShape, theX, theY, theZ, theEpsilon);
2259   endService( " GEOM_Superv_i::GetPoint" );
2260   return anObj;
2261 }
2262
2263 //=============================================================================
2264 //  GetEdge:
2265 //=============================================================================
2266 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetEdge (GEOM::GEOM_Object_ptr theShape,
2267                                               GEOM::GEOM_Object_ptr thePoint1,
2268                                               GEOM::GEOM_Object_ptr thePoint2)
2269 {
2270   beginService( " GEOM_Superv_i::GetEdge" );
2271   MESSAGE("GEOM_Superv_i::GetEdge");
2272   getBlocksOp();
2273   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetEdge(theShape, thePoint1, thePoint2);
2274   endService( " GEOM_Superv_i::GetEdge" );
2275   return anObj;
2276 }
2277
2278 //=============================================================================
2279 //  GetEdgeNearPoint:
2280 //=============================================================================
2281 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetEdgeNearPoint (GEOM::GEOM_Object_ptr theShape,
2282                                                        GEOM::GEOM_Object_ptr thePoint)
2283 {
2284   beginService( " GEOM_Superv_i::GetEdgeNearPoint" );
2285   MESSAGE("GEOM_Superv_i::GetEdgeNearPoint");
2286   getBlocksOp();
2287   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetEdgeNearPoint(theShape, thePoint);
2288   endService( " GEOM_Superv_i::GetEdgeNearPoint" );
2289   return anObj;
2290 }
2291
2292 //=============================================================================
2293 //  GetFaceByPoints:
2294 //=============================================================================
2295 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceByPoints (GEOM::GEOM_Object_ptr theShape,
2296                                                       GEOM::GEOM_Object_ptr thePoint1,
2297                                                       GEOM::GEOM_Object_ptr thePoint2,
2298                                                       GEOM::GEOM_Object_ptr thePoint3,
2299                                                       GEOM::GEOM_Object_ptr thePoint4)
2300 {
2301   beginService( " GEOM_Superv_i::GetFaceByPoints" );
2302   MESSAGE("GEOM_Superv_i::GetFaceByPoints");
2303   getBlocksOp();
2304   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetFaceByPoints(theShape, thePoint1, thePoint2, thePoint3, thePoint4);
2305   endService( " GEOM_Superv_i::GetFaceByPoints" );
2306   return anObj;
2307 }
2308
2309 //=============================================================================
2310 //  GetFaceByEdges:
2311 //=============================================================================
2312 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceByEdges (GEOM::GEOM_Object_ptr theShape,
2313                                                      GEOM::GEOM_Object_ptr theEdge1,
2314                                                      GEOM::GEOM_Object_ptr theEdge2)
2315 {
2316   beginService( " GEOM_Superv_i::GetFaceByEdges" );
2317   MESSAGE("GEOM_Superv_i::GetFaceByEdges");
2318   getBlocksOp();
2319   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetFaceByEdges(theShape, theEdge1, theEdge2);
2320   endService( " GEOM_Superv_i::GetFaceByEdges" );
2321   return anObj;
2322 }
2323
2324 //=============================================================================
2325 //  GetOppositeFace:
2326 //=============================================================================
2327 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetOppositeFace (GEOM::GEOM_Object_ptr theBlock,
2328                                                       GEOM::GEOM_Object_ptr theFace)
2329 {
2330   beginService( " GEOM_Superv_i::GetOppositeFace" );
2331   MESSAGE("GEOM_Superv_i::GetOppositeFace");
2332   getBlocksOp();
2333   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetOppositeFace(theBlock, theFace);
2334   endService( " GEOM_Superv_i::GetOppositeFace" );
2335   return anObj;
2336 }
2337
2338 //=============================================================================
2339 //  GetFaceNearPoint:
2340 //=============================================================================
2341 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceNearPoint (GEOM::GEOM_Object_ptr theShape,
2342                                                        GEOM::GEOM_Object_ptr thePoint)
2343 {
2344   beginService( " GEOM_Superv_i::GetFaceNearPoint" );
2345   MESSAGE("GEOM_Superv_i::GetFaceNearPoint");
2346   getBlocksOp();
2347   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetFaceNearPoint(theShape, thePoint);
2348   endService( " GEOM_Superv_i::GetFaceNearPoint" );
2349   return anObj;
2350 }
2351
2352 //=============================================================================
2353 //  GetFaceByNormale:
2354 //=============================================================================
2355 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceByNormale (GEOM::GEOM_Object_ptr theBlock,
2356                                                        GEOM::GEOM_Object_ptr theVector)
2357 {
2358   beginService( " GEOM_Superv_i::GetFaceByNormale" );
2359   MESSAGE("GEOM_Superv_i::GetFaceByNormale");
2360   getBlocksOp();
2361   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetFaceByNormale(theBlock, theVector);
2362   endService( " GEOM_Superv_i::GetFaceByNormale" );
2363   return anObj;
2364 }
2365
2366 //=============================================================================
2367 //  IsCompoundOfBlocks:
2368 //=============================================================================
2369 CORBA::Boolean GEOM_Superv_i::IsCompoundOfBlocks (GEOM::GEOM_Object_ptr theCompound,
2370                                                   CORBA::Long     theMinNbFaces,
2371                                                   CORBA::Long     theMaxNbFaces,
2372                                                   CORBA::Long&          theNbBlocks)
2373 {
2374   beginService( " GEOM_Superv_i::IsCompoundOfBlocks" );
2375   MESSAGE("GEOM_Superv_i::IsCompoundOfBlocks");
2376   getBlocksOp();
2377   CORBA::Boolean aRes = myBlocksOp->IsCompoundOfBlocks(theCompound, theMinNbFaces, theMaxNbFaces, theNbBlocks);
2378   endService( " GEOM_Superv_i::IsCompoundOfBlocks" );
2379   return aRes;
2380 }
2381
2382 //=============================================================================
2383 //  CheckCompoundOfBlocks:
2384 //=============================================================================
2385 CORBA::Boolean GEOM_Superv_i::CheckCompoundOfBlocks 
2386 (GEOM::GEOM_Object_ptr theCompound,
2387  GEOM::GEOM_IBlocksOperations::BCErrors_out theErrors)
2388 {
2389   beginService( " GEOM_Superv_i::CheckCompoundOfBlocks" );
2390   MESSAGE("GEOM_Superv_i::CheckCompoundOfBlocks");
2391   getBlocksOp();
2392   CORBA::Boolean aRes = myBlocksOp->CheckCompoundOfBlocks(theCompound, theErrors);
2393   endService( " GEOM_Superv_i::CheckCompoundOfBlocks" );
2394   return aRes;
2395 }
2396
2397 //=============================================================================
2398 //  PrintBCErrors:
2399 //=============================================================================
2400 char* GEOM_Superv_i::PrintBCErrors (GEOM::GEOM_Object_ptr theCompound,
2401                                     const GEOM::GEOM_IBlocksOperations::BCErrors& theErrors)
2402 {
2403   beginService( " GEOM_Superv_i::PrintBCErrors" );
2404   MESSAGE("GEOM_Superv_i::PrintBCErrors");
2405   getBlocksOp();
2406   char* anErrors = myBlocksOp->PrintBCErrors(theCompound, theErrors);
2407   endService( " GEOM_Superv_i::PrintBCErrors" );
2408   return anErrors;
2409 }
2410
2411 //=============================================================================
2412 //  ExplodeCompoundOfBlocks:
2413 //=============================================================================
2414 GEOM::GEOM_List_ptr GEOM_Superv_i::ExplodeCompoundOfBlocks (GEOM::GEOM_Object_ptr theCompound,
2415                                                                 CORBA::Long     theMinNbFaces,
2416                                                                 CORBA::Long     theMaxNbFaces)
2417 {
2418   beginService( " GEOM_Superv_i::ExplodeCompoundOfBlocks" );
2419   MESSAGE("GEOM_Superv_i::ExplodeCompoundOfBlocks");
2420   getBlocksOp();
2421   GEOM::ListOfGO* aBlocks = myBlocksOp->ExplodeCompoundOfBlocks(theCompound, theMinNbFaces, theMaxNbFaces);
2422   GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aBlocks));
2423   endService( " GEOM_Superv_i::ExplodeCompoundOfBlocks" );
2424   return aListPtr->_this();
2425 }
2426
2427 //=============================================================================
2428 //  GetBlockNearPoint:
2429 //=============================================================================
2430 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetBlockNearPoint (GEOM::GEOM_Object_ptr theCompound,
2431                                                         GEOM::GEOM_Object_ptr thePoint)
2432 {
2433   beginService( " GEOM_Superv_i::GetBlockNearPoint" );
2434   MESSAGE("GEOM_Superv_i::GetBlockNearPoint");
2435   getBlocksOp();
2436   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetBlockNearPoint(theCompound, thePoint);
2437   endService( " GEOM_Superv_i::GetBlockNearPoint" );
2438   return anObj;
2439 }
2440
2441 //=============================================================================
2442 //  GetBlockByParts:
2443 //=============================================================================
2444 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetBlockByParts (GEOM::GEOM_Object_ptr theCompound,
2445                                                       GEOM::GEOM_List_ptr theParts)
2446 {
2447   beginService( " GEOM_Superv_i::GetBlockByParts" );
2448   MESSAGE("GEOM_Superv_i::GetBlockByParts");
2449   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP = 
2450       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theParts, myPOA).in())) {
2451     getBlocksOp();
2452     GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetBlockByParts(theCompound, aListImplP->GetList());
2453     endService( " GEOM_Superv_i::GetBlockByParts" );
2454     return anObj;
2455   }
2456   endService( " GEOM_Superv_i::GetBlockByParts" );
2457   return NULL;
2458 }
2459
2460 //=============================================================================
2461 //  GetBlocksByParts:
2462 //=============================================================================
2463 GEOM::GEOM_List_ptr GEOM_Superv_i::GetBlocksByParts (GEOM::GEOM_Object_ptr theCompound,
2464                                                          GEOM::GEOM_List_ptr theParts)
2465 {
2466   beginService( " GEOM_Superv_i::GetBlocksByParts" );
2467   MESSAGE("GEOM_Superv_i::GetBlocksByParts");
2468   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP = 
2469       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theParts, myPOA).in())) {
2470     getBlocksOp();
2471     
2472     GEOM::ListOfGO* aBlocks = myBlocksOp->GetBlocksByParts(theCompound, aListImplP->GetList());
2473     GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aBlocks));
2474     endService( " GEOM_Superv_i::GetBlocksByParts" );
2475     return aListPtr->_this();
2476   }
2477   endService( " GEOM_Superv_i::GetBlocksByParts" );
2478   return NULL;
2479 }
2480
2481 //=============================================================================
2482 //  MakeMultiTransformation1D:
2483 //=============================================================================
2484 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeMultiTransformation1D (GEOM::GEOM_Object_ptr theBlock,
2485                                                                 CORBA::Long     theDirFace1,
2486                                                                 CORBA::Long     theDirFace2,
2487                                                                 CORBA::Long     theNbTimes)
2488 {
2489   beginService( " GEOM_Superv_i::MakeMultiTransformation1D" );
2490   MESSAGE("GEOM_Superv_i::MakeMultiTransformation1D");
2491   getBlocksOp();
2492   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeMultiTransformation1D(theBlock, theDirFace1, theDirFace2, theNbTimes);
2493   endService( " GEOM_Superv_i::MakeMultiTransformation1D" );
2494   return anObj;
2495 }
2496
2497 //=============================================================================
2498 //  MakeMultiTransformation2D:
2499 //=============================================================================
2500 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeMultiTransformation2D 
2501 (GEOM::GEOM_Object_ptr theBlock,
2502  CORBA::Long     theDirFace1U,
2503  CORBA::Long     theDirFace2U,
2504  CORBA::Long     theNbTimesU,
2505  CORBA::Long     theDirFace1V,
2506  CORBA::Long     theDirFace2V,
2507  CORBA::Long     theNbTimesV)
2508 {
2509   beginService( " GEOM_Superv_i::MakeMultiTransformation2D" );
2510   MESSAGE("GEOM_Superv_i::MakeMultiTransformation2D");
2511   getBlocksOp();
2512   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeMultiTransformation2D(theBlock, 
2513                                                                       theDirFace1U, theDirFace2U, theNbTimesU,
2514                                                                       theDirFace1V, theDirFace2V, theNbTimesV);
2515   endService( " GEOM_Superv_i::MakeMultiTransformation2D" );
2516   return anObj;
2517 }
2518
2519 //=============================== CurvesOperations ============================
2520 //=============================================================================
2521 //  MakeCirclePntVecR:
2522 //=============================================================================
2523 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCirclePntVecR (GEOM::GEOM_Object_ptr theCenter,
2524                                                         GEOM::GEOM_Object_ptr theVector,
2525                                                         CORBA::Double theR)
2526 {
2527   beginService( " GEOM_Superv_i::MakeCirclePntVecR" );
2528   MESSAGE("GEOM_Superv_i::MakeCirclePntVecR");
2529   getCurvesOp();
2530   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeCirclePntVecR(theCenter, theVector, theR);
2531   endService( " GEOM_Superv_i::MakeCirclePntVecR" );
2532   return anObj;
2533 }
2534
2535 //=============================================================================
2536 //  MakeCircleThreePnt:
2537 //=============================================================================
2538 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCircleThreePnt (GEOM::GEOM_Object_ptr thePnt1,
2539                                                          GEOM::GEOM_Object_ptr thePnt2,
2540                                                          GEOM::GEOM_Object_ptr thePnt3)
2541 {
2542   beginService( " GEOM_Superv_i::MakeCircleThreePnt" );
2543   MESSAGE("GEOM_Superv_i::MakeCircleThreePnt");
2544   getCurvesOp();
2545   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeCircleThreePnt(thePnt1, thePnt2, thePnt3);
2546   endService( " GEOM_Superv_i::MakeCircleThreePnt" );
2547   return anObj;
2548 }
2549 //=============================================================================
2550 //  MakeCircleCenter2Pnt:
2551 //=============================================================================
2552 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCircleCenter2Pnt (GEOM::GEOM_Object_ptr thePnt1,
2553                                                            GEOM::GEOM_Object_ptr thePnt2,
2554                                                            GEOM::GEOM_Object_ptr thePnt3)
2555 {
2556   beginService( " GEOM_Superv_i::MakeCircleCenter2Pnt" );
2557   MESSAGE("GEOM_Superv_i::MakeCircleCenter2Pnt");
2558   getCurvesOp();
2559   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeCircleCenter2Pnt(thePnt1, thePnt2, thePnt3);
2560   endService( " GEOM_Superv_i::MakeCircleCenter2Pnt" );
2561   return anObj;
2562 }
2563
2564 //=============================================================================
2565 //  MakeEllipse:
2566 //=============================================================================
2567 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeEllipse (GEOM::GEOM_Object_ptr theCenter,
2568                                                   GEOM::GEOM_Object_ptr theVector,
2569                                                   CORBA::Double theRMajor, 
2570                                                   CORBA::Double theRMinor)
2571 {
2572   beginService( " GEOM_Superv_i::MakeEllipse" );
2573   MESSAGE("GEOM_Superv_i::MakeEllipse");
2574   getCurvesOp();
2575   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeEllipse(theCenter, theVector, theRMajor, theRMinor);
2576   endService( " GEOM_Superv_i::MakeEllipse" );
2577   return anObj;
2578 }
2579
2580 //=============================================================================
2581 //  MakeEllipseVec:
2582 //=============================================================================
2583 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeEllipseVec (GEOM::GEOM_Object_ptr theCenter,
2584                                                      GEOM::GEOM_Object_ptr theVector,
2585                                                      CORBA::Double theRMajor, 
2586                                                      CORBA::Double theRMinor,
2587                                                      GEOM::GEOM_Object_ptr theVectorMajor)
2588 {
2589   beginService( " GEOM_Superv_i::MakeEllipseVec" );
2590   MESSAGE("GEOM_Superv_i::MakeEllipseVec");
2591   getCurvesOp();
2592   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeEllipseVec(theCenter, theVector, theRMajor, theRMinor, theVectorMajor);
2593   endService( " GEOM_Superv_i::MakeEllipseVec" );
2594   return anObj;
2595 }
2596
2597 //=============================================================================
2598 //  MakeArc:
2599 //=============================================================================
2600 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArc (GEOM::GEOM_Object_ptr thePnt1,
2601                                               GEOM::GEOM_Object_ptr thePnt2,
2602                                               GEOM::GEOM_Object_ptr thePnt3)
2603 {
2604   beginService( " GEOM_Superv_i::MakeArc" );
2605   MESSAGE("GEOM_Superv_i::MakeArc");
2606   getCurvesOp();
2607   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeArc(thePnt1, thePnt2, thePnt3);
2608   endService( " GEOM_Superv_i::MakeArc" );
2609   return anObj;
2610 }
2611
2612 //=============================================================================
2613 //  MakeArcCenter:
2614 //=============================================================================
2615 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArcCenter (GEOM::GEOM_Object_ptr theCenter,
2616                                                     GEOM::GEOM_Object_ptr thePnt1,
2617                                                     GEOM::GEOM_Object_ptr thePnt2,
2618                                                     CORBA::Boolean theSense)
2619 {
2620   beginService( " GEOM_Superv_i::MakeArcCenter" );
2621   MESSAGE("GEOM_Superv_i::MakeArcCenter");
2622   getCurvesOp();
2623   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeArcCenter(theCenter, thePnt1, thePnt2,theSense);
2624   endService( " GEOM_Superv_i::MakeArcCenter" );
2625   return anObj;
2626 }
2627
2628 //=============================================================================
2629 //  MakeArcOfEllipse:
2630 //=============================================================================
2631 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArcOfEllipse (GEOM::GEOM_Object_ptr thePnt1,
2632                                                        GEOM::GEOM_Object_ptr thePnt2,
2633                                                        GEOM::GEOM_Object_ptr thePnt3)
2634 {
2635   beginService( " GEOM_Superv_i::MakeArcOfEllipse" );
2636   MESSAGE("GEOM_Superv_i::MakeArcOfEllipse");
2637   getCurvesOp();
2638   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeArcOfEllipse(thePnt1, thePnt2, thePnt3);
2639   endService( " GEOM_Superv_i::MakeArcOfEllipse" );
2640   return anObj;
2641 }
2642
2643 //=============================================================================
2644 //  MakePolyline:
2645 //=============================================================================
2646 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePolyline (GEOM::GEOM_List_ptr thePoints)
2647 {
2648   beginService( " GEOM_Superv_i::MakePolyline" );
2649   MESSAGE("GEOM_Superv_i::MakePolyline");
2650   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP = 
2651       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(thePoints, myPOA).in())) {
2652     getCurvesOp();
2653     GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakePolyline(aListImplP->GetList());
2654     endService( " GEOM_Superv_i::MakePolyline" );
2655     return anObj;
2656   }
2657   endService( " GEOM_Superv_i::MakePolyline" );
2658   return NULL;
2659 }
2660
2661 //=============================================================================
2662 //  MakeSplineBezier:
2663 //=============================================================================
2664 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSplineBezier (GEOM::GEOM_List_ptr thePoints)
2665 {
2666   beginService( " GEOM_Superv_i::MakeSplineBezier" );
2667   MESSAGE("GEOM_Superv_i::MakeSplineBezier");
2668   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP = 
2669       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(thePoints, myPOA).in())) {
2670     getCurvesOp();
2671     GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeSplineBezier(aListImplP->GetList());
2672     endService( " GEOM_Superv_i::MakeSplineBezier" );
2673     return anObj;
2674   }
2675   endService( " GEOM_Superv_i::MakeSplineBezier" );
2676   return NULL;
2677 }
2678
2679 //=============================================================================
2680 //  MakeSplineInterpolation:
2681 //=============================================================================
2682 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSplineInterpolation (GEOM::GEOM_List_ptr thePoints)
2683 {
2684   beginService( " GEOM_Superv_i::MakeSplineInterpolation" );
2685   MESSAGE("GEOM_Superv_i::MakeSplineInterpolation");
2686   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP = 
2687       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(thePoints, myPOA).in())) {
2688     getCurvesOp();
2689     GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeSplineInterpolation(aListImplP->GetList());
2690     endService( " GEOM_Superv_i::MakeSplineInterpolation" );
2691     return anObj;
2692   }
2693   endService( " GEOM_Superv_i::MakeSplineInterpolation" );
2694   return NULL;
2695 }
2696
2697 //=============================================================================
2698 //  MakeSketcher:
2699 //=============================================================================
2700 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSketcher (const char* theCommand, 
2701                                                    GEOM::GEOM_List_ptr theWorkingPlane)
2702 {
2703   beginService( " GEOM_Superv_i::MakeSketcher" );
2704   MESSAGE("GEOM_Superv_i::MakeSketcher");
2705   if (GEOM_List_i<GEOM::ListOfDouble>* aListImplWP = 
2706       dynamic_cast<GEOM_List_i<GEOM::ListOfDouble>*>(GetServant(theWorkingPlane, myPOA).in())) {
2707     getCurvesOp();
2708     GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeSketcher(theCommand, aListImplWP->GetList());
2709     endService( " GEOM_Superv_i::MakeSketcher" );
2710     return anObj;
2711   }
2712   endService( " GEOM_Superv_i::MakeSketcher" );
2713   return NULL;
2714 }
2715
2716 //=============================================================================
2717 //  Make3DSketcher:
2718 //=============================================================================
2719 GEOM::GEOM_Object_ptr GEOM_Superv_i::Make3DSketcher ( GEOM::GEOM_List_ptr theCoordinates)
2720 {
2721   beginService( " GEOM_Superv_i::Make3DSketcher" );
2722   MESSAGE("GEOM_Superv_i::Make3DSketcher");
2723   if (GEOM_List_i<GEOM::ListOfDouble>* aListImpl = 
2724       dynamic_cast<GEOM_List_i<GEOM::ListOfDouble>*>(GetServant(theCoordinates, myPOA).in())) {
2725     getCurvesOp();
2726     GEOM::GEOM_Object_ptr anObj = myCurvesOp->Make3DSketcher(aListImpl->GetList());
2727     endService( " GEOM_Superv_i::Make3DSketcher" );
2728     return anObj;
2729   }
2730   endService( " GEOM_Superv_i::Make3DSketcher" );
2731   return NULL;
2732 }
2733
2734 //=============================== LocalOperations =============================
2735 //=============================================================================
2736 //  MakeFilletAll:
2737 //=============================================================================
2738 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletAll (GEOM::GEOM_Object_ptr theShape,
2739                                                     CORBA::Double theR)
2740 {
2741   beginService( " GEOM_Superv_i::MakeFilletAll" );
2742   MESSAGE("GEOM_Superv_i::MakeFilletAllMakeSketcher");
2743   getLocalOp();
2744   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletAll(theShape, theR);
2745   endService( " GEOM_Superv_i::MakeFilletAll" );
2746   return anObj;
2747 }
2748
2749 //=============================================================================
2750 //  MakeFilletEdges:
2751 //=============================================================================
2752 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletEdges (GEOM::GEOM_Object_ptr theShape, 
2753                                                       CORBA::Double theR,
2754                                                       GEOM::GEOM_List_ptr theEdges)
2755 {
2756   beginService( " GEOM_Superv_i::MakeFilletEdges" );
2757   MESSAGE("GEOM_Superv_i::MakeFilletEdges");
2758   if (GEOM_List_i<GEOM::ListOfLong>* aListImplE = 
2759       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theEdges, myPOA).in())) {
2760     getLocalOp();
2761     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletEdges(theShape, theR, aListImplE->GetList());
2762     endService( " GEOM_Superv_i::MakeFilletEdges" );
2763     return anObj;
2764   }
2765   endService( " GEOM_Superv_i::MakeFilletEdges" );
2766   return NULL;
2767 }
2768
2769 //=============================================================================
2770 //  MakeFilletEdges R1 R2:
2771 //=============================================================================
2772 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletEdgesR1R2 (GEOM::GEOM_Object_ptr theShape, 
2773                                                           CORBA::Double theR1,
2774                                                           CORBA::Double theR2,
2775                                                           GEOM::GEOM_List_ptr theEdges)
2776 {
2777   beginService( " GEOM_Superv_i::MakeFilletEdgesR1R2" );
2778   MESSAGE("GEOM_Superv_i::MakeFilletEdgesR1R2");
2779   if (GEOM_List_i<GEOM::ListOfLong>* aListImplE = 
2780       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theEdges, myPOA).in())) {
2781     getLocalOp();
2782     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletEdgesR1R2(theShape, theR1,
2783                                                                  theR2, aListImplE->GetList());
2784     endService( " GEOM_Superv_i::MakeFilletEdgesR1R2" );
2785     return anObj;
2786   }
2787   endService( " GEOM_Superv_i::MakeFilletEdgesR1R2" );
2788   return NULL;
2789 }
2790
2791 //=============================================================================
2792 //  MakeFilletFaces:
2793 //=============================================================================
2794 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletFaces (GEOM::GEOM_Object_ptr theShape, 
2795                                                       CORBA::Double theR,
2796                                                       GEOM::GEOM_List_ptr theFaces)
2797 {
2798   beginService( " GEOM_Superv_i::MakeFilletFaces" );
2799   MESSAGE("GEOM_Superv_i::MakeFilletFaces");
2800   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF = 
2801       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theFaces, myPOA).in())) {
2802     getLocalOp();
2803     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletFaces(theShape, theR, aListImplF->GetList());
2804     endService( " GEOM_Superv_i::MakeFilletFaces" );
2805     return anObj;
2806   }
2807   endService( " GEOM_Superv_i::MakeFilletFaces" );
2808   return NULL;
2809 }
2810
2811 //=============================================================================
2812 //  MakeFilletFaces R1 R2:
2813 //=============================================================================
2814 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletFacesR1R2 (GEOM::GEOM_Object_ptr theShape, 
2815                                                           CORBA::Double theR1,
2816                                                           CORBA::Double theR2,
2817                                                           GEOM::GEOM_List_ptr theFaces)
2818 {
2819   beginService( " GEOM_Superv_i::MakeFilletFacesR1R2" );
2820   MESSAGE("GEOM_Superv_i::MakeFilletFacesR1R2");
2821   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF = 
2822       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theFaces, myPOA).in())) {
2823     getLocalOp();
2824     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletFacesR1R2(theShape, theR1, theR2,
2825                                                                  aListImplF->GetList());
2826     endService( " GEOM_Superv_i::MakeFilletFacesR1R2" );
2827     return anObj;
2828   }
2829   endService( " GEOM_Superv_i::MakeFilletFacesR1R2" );
2830   return NULL;
2831 }
2832
2833 //=============================================================================
2834 //  MakeFillet2D:
2835 //=============================================================================
2836 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFillet2D (GEOM::GEOM_Object_ptr theShape, 
2837                                                    CORBA::Double theR,
2838                                                    GEOM::GEOM_List_ptr theVertexes)
2839 {
2840   beginService( " GEOM_Superv_i::MakeFillet2D" );
2841   MESSAGE("GEOM_Superv_i::MakeFillet2D");
2842   if (GEOM_List_i<GEOM::ListOfLong>* aListImplV = 
2843       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theVertexes, myPOA).in())) {
2844     getLocalOp();
2845     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFillet2D(theShape, theR, aListImplV->GetList());
2846     endService( " GEOM_Superv_i::MakeFillet2D" );
2847     return anObj;
2848   }
2849   endService( " GEOM_Superv_i::MakeFillet2D" );
2850   return NULL;
2851 }
2852
2853 //=============================================================================
2854 //  MakeChamferAll:
2855 //=============================================================================
2856 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferAll (GEOM::GEOM_Object_ptr theShape, CORBA::Double theD)
2857 {
2858   beginService( " GEOM_Superv_i::MakeChamferAll" );
2859   MESSAGE("GEOM_Superv_i::MakeChamferAll");
2860   getLocalOp();
2861   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferAll(theShape, theD);
2862   endService( " GEOM_Superv_i::MakeChamferAll" );
2863   return anObj;
2864 }
2865   
2866 //=============================================================================
2867 //  MakeChamferEdge:
2868 //=============================================================================
2869 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdge (GEOM::GEOM_Object_ptr theShape,
2870                                                       CORBA::Double theD1, CORBA::Double theD2,
2871                                                       CORBA::Long theFace1, CORBA::Long theFace2)
2872 {
2873   beginService( " GEOM_Superv_i::MakeChamferEdge" );
2874   MESSAGE("GEOM_Superv_i::MakeChamferEdge");
2875   getLocalOp();
2876   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferEdge(theShape, theD1, theD2, theFace1, theFace2);
2877   endService( " GEOM_Superv_i::MakeChamferEdge" );
2878   return anObj;
2879 }
2880
2881 //=============================================================================
2882 //  MakeChamferEdgeAD:
2883 //=============================================================================
2884 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdgeAD (GEOM::GEOM_Object_ptr theShape,
2885                                                         CORBA::Double theD, CORBA::Double theAngle,
2886                                                         CORBA::Long theFace1, CORBA::Long theFace2)
2887 {
2888   beginService( " GEOM_Superv_i::MakeChamferEdgeAD" );
2889   MESSAGE("GEOM_Superv_i::MakeChamferEdgeAD");
2890   getLocalOp();
2891   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferEdgeAD(theShape, theD, theAngle, theFace1, theFace2);
2892   endService( " GEOM_Superv_i::MakeChamferEdgeAD" );
2893   return anObj;
2894 }
2895
2896 //=============================================================================
2897 //  MakeChamferFaces:
2898 //=============================================================================
2899 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferFaces (GEOM::GEOM_Object_ptr theShape,
2900                                                        CORBA::Double theD1, CORBA::Double theD2,
2901                                                        GEOM::GEOM_List_ptr theFaces)
2902 {
2903   beginService( " GEOM_Superv_i::MakeChamferFaces" );
2904   MESSAGE("GEOM_Superv_i::MakeChamferFaces");
2905   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF = 
2906       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theFaces, myPOA).in())) {
2907     getLocalOp();
2908     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferFaces(theShape, theD1, theD2, aListImplF->GetList());
2909     endService( " GEOM_Superv_i::MakeChamferFaces" );
2910     return anObj;
2911   }
2912   endService( " GEOM_Superv_i::MakeChamferFaces" );
2913   return NULL;
2914 }
2915
2916 //=============================================================================
2917 //  MakeChamferFacesAD:
2918 //=============================================================================
2919 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferFacesAD (GEOM::GEOM_Object_ptr theShape,
2920                                                          CORBA::Double theD, CORBA::Double theAngle,
2921                                                          GEOM::GEOM_List_ptr theFaces)
2922 {
2923   beginService( " GEOM_Superv_i::MakeChamferFacesAD" );
2924   MESSAGE("GEOM_Superv_i::MakeChamferFacesAD");
2925   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF = 
2926       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theFaces, myPOA).in())) {
2927     getLocalOp();
2928     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferFacesAD(theShape, theD, theAngle, aListImplF->GetList());
2929     endService( " GEOM_Superv_i::MakeChamferFacesAD" );
2930     return anObj;
2931   }
2932   endService( " GEOM_Superv_i::MakeChamferFacesAD" );
2933   return NULL;
2934 }
2935
2936 //=============================================================================
2937 //  MakeChamferEdges:
2938 //=============================================================================
2939 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdges (GEOM::GEOM_Object_ptr theShape,
2940                                                        CORBA::Double theD1, CORBA::Double theD2,
2941                                                        GEOM::GEOM_List_ptr theEdges)
2942 {
2943   beginService( " GEOM_Superv_i::MakeChamferEdges" );
2944   MESSAGE("GEOM_Superv_i::MakeChamferEdges");
2945   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF = 
2946       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theEdges, myPOA).in())) {
2947     getLocalOp();
2948     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferEdges(theShape, theD1, theD2, aListImplF->GetList());
2949     endService( " GEOM_Superv_i::MakeChamferEdges" );
2950     return anObj;
2951   }
2952   endService( " GEOM_Superv_i::MakeChamferEdges" );
2953   return NULL;
2954 }
2955
2956 //=============================================================================
2957 //  MakeChamferEdgesAD:
2958 //=============================================================================
2959 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdgesAD (GEOM::GEOM_Object_ptr theShape,
2960                                                          CORBA::Double theD, CORBA::Double theAngle,
2961                                                          GEOM::GEOM_List_ptr theEdges)
2962 {
2963   beginService( " GEOM_Superv_i::MakeChamferEdgesAD" );
2964   MESSAGE("GEOM_Superv_i::MakeChamferEdgesAD");
2965   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF = 
2966       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theEdges, myPOA).in())) {
2967     getLocalOp();
2968     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferEdgesAD(theShape, theD, theAngle, aListImplF->GetList());
2969     endService( " GEOM_Superv_i::MakeChamferEdgesAD" );
2970     return anObj;
2971   }
2972   endService( " GEOM_Superv_i::MakeChamferEdgesAD" );
2973   return NULL;
2974 }
2975
2976 //=============================================================================
2977 //  MakeArchimede:
2978 //=============================================================================
2979 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArchimede (GEOM::GEOM_Object_ptr theShape,
2980                                                     CORBA::Double theWeight,
2981                                                     CORBA::Double theWaterDensity,
2982                                                     CORBA::Double theMeshingDeflection)
2983 {
2984   beginService( " GEOM_Superv_i::MakeArchimede" );
2985   MESSAGE("GEOM_Superv_i::MakeArchimede");
2986   getLocalOp();
2987   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeArchimede(theShape, theWeight, theWaterDensity, theMeshingDeflection);
2988   endService( " GEOM_Superv_i::MakeArchimede" );
2989   return anObj;
2990 }
2991
2992 //=============================================================================
2993 //  GetSubShapeIndexMakeFilletAll:
2994 //=============================================================================
2995 CORBA::Long GEOM_Superv_i::GetSubShapeIndex (GEOM::GEOM_Object_ptr theShape,
2996                                              GEOM::GEOM_Object_ptr theSubShape)
2997 {
2998   beginService( " GEOM_Superv_i::GetSubShapeIndex" );
2999   MESSAGE("GEOM_Superv_i::GetSubShapeIndexMakeArchimede");
3000   getLocalOp();
3001   CORBA::Long aRes = myLocalOp->GetSubShapeIndex(theShape, theSubShape);
3002   endService( " GEOM_Superv_i::GetSubShapeIndex" );
3003   return aRes;
3004 }
3005
3006 //=============================== GroupOperations =============================
3007 //=============================================================================
3008 //  CreateGroup:
3009 //=============================================================================
3010 GEOM::GEOM_Object_ptr GEOM_Superv_i::CreateGroup (GEOM::GEOM_Object_ptr theMainShape, 
3011                                                   CORBA::Long theShapeType)
3012 {
3013   beginService( " GEOM_Superv_i::CreateGroup" );
3014   MESSAGE("GEOM_Superv_i::CreateGroup");
3015   getGroupOp();
3016   GEOM::GEOM_Object_ptr anObj = myGroupOp->CreateGroup(theMainShape, theShapeType);
3017   endService( " GEOM_Superv_i::CreateGroup" );
3018   return anObj;
3019 }
3020
3021 //=============================================================================
3022 //  AddObject:
3023 //=============================================================================
3024 void GEOM_Superv_i::AddObject (GEOM::GEOM_Object_ptr theGroup, 
3025                                CORBA::Long theSubShapeId)
3026 {
3027   beginService( " GEOM_Superv_i::AddObject" );
3028   MESSAGE("GEOM_Superv_i::AddObject");
3029   getGroupOp();
3030   myGroupOp->AddObject(theGroup, theSubShapeId);
3031   endService( " GEOM_Superv_i::AddObject" );
3032 }
3033
3034 //=============================================================================
3035 //  RemoveObject:
3036 //=============================================================================
3037 void GEOM_Superv_i::RemoveObject (GEOM::GEOM_Object_ptr theGroup, 
3038                                   CORBA::Long theSubShapeId)
3039 {
3040   beginService( " GEOM_Superv_i::RemoveObject" );
3041   MESSAGE("GEOM_Superv_i::RemoveObject");
3042   getGroupOp();
3043   myGroupOp->RemoveObject(theGroup, theSubShapeId);
3044   endService( " GEOM_Superv_i::RemoveObject" );
3045 }
3046
3047 //=============================================================================
3048 //  GetType:
3049 //=============================================================================
3050 CORBA::Long GEOM_Superv_i::GetType (GEOM::GEOM_Object_ptr theGroup)
3051 {
3052   beginService( " GEOM_Superv_i::GetType" );
3053   MESSAGE("GEOM_Superv_i::GetType");
3054   getGroupOp();
3055   CORBA::Long aResult = myGroupOp->GetType(theGroup);
3056   endService( " GEOM_Superv_i::GetType" );
3057   return aResult;
3058 }
3059
3060 //=============================================================================
3061 //  GetMainShape:
3062 //=============================================================================
3063 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetMainShape (GEOM::GEOM_Object_ptr theGroup)
3064 {
3065   beginService( " GEOM_Superv_i::GetMainShape" );
3066   MESSAGE("GEOM_Superv_i::GetMainShape");
3067   getGroupOp();
3068   GEOM::GEOM_Object_ptr anObj = myGroupOp->GetMainShape(theGroup);
3069   endService( " GEOM_Superv_i::GetMainShape" );
3070   return anObj;
3071 }
3072
3073 //=============================================================================
3074 //  GetObjects:
3075 //=============================================================================
3076 GEOM::GEOM_List_ptr GEOM_Superv_i::GetObjects (GEOM::GEOM_Object_ptr theGroup)
3077 {
3078   beginService( " GEOM_Superv_i::GetObjects" );
3079   MESSAGE("GEOM_Superv_i::GetObjects");
3080   getGroupOp();
3081
3082   GEOM::ListOfLong* aList = myGroupOp->GetObjects(theGroup);
3083   GEOM_List_i<GEOM::ListOfLong>* aListPtr = new GEOM_List_i<GEOM::ListOfLong>(*(aList));
3084   MESSAGE(" List of "<<aListPtr->GetList().length()<<" element(s)");
3085   endService( " GEOM_Superv_i::GetObjects" );
3086   return aListPtr->_this();
3087 }
3088
3089 //=====================================================================================
3090 // EXPORTED METHODS
3091 //=====================================================================================
3092 extern "C"
3093 {
3094   PortableServer::ObjectId * GEOM_SupervEngine_factory(CORBA::ORB_ptr orb,
3095                                                       PortableServer::POA_ptr poa, 
3096                                                       PortableServer::ObjectId * contId,
3097                                                       const char *instanceName, 
3098                                                       const char * interfaceName)
3099   {
3100     GEOM_Superv_i * myGEOM_Superv_i = new GEOM_Superv_i(orb, poa, contId, instanceName, interfaceName);
3101     //Don't understand the reason why this component is registered ???
3102 //    myGEOM_Superv_i->register_name("/myGEOM_Superv");
3103     return myGEOM_Superv_i->getId() ;
3104   }
3105 }