Salome HOME
801ea5e709a2136fb62fa54b781b666e369c24eb
[modules/geom.git] / src / GEOM_I_Superv / GEOM_Superv_i.cc
1 // Copyright (C) 2007-2014  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, or (at your option) any later version.
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
23 #include "GEOM_Superv_i.hh"
24 #include "SALOME_LifeCycleCORBA.hxx"
25
26 #include CORBA_SERVER_HEADER(SALOME_Session)
27 #include "SALOMEDSClient_ClientFactory.hxx"
28
29 #define isNewStudy(a,b) (a > 0 && a != b)
30
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->UnRegister();
76   if (!CORBA::is_nil(myBoolOp))
77     myBoolOp->UnRegister();
78   if (!CORBA::is_nil(my3DPrimOp))
79     my3DPrimOp->UnRegister();
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::EngineComponent_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     std::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   GEOM::GEOM_Object_var anObj =  GEOM::GEOM_Object::_duplicate(theObject);
175   if (GEOM_List_i<GEOM::ListOfGO>* aList =
176       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theList, myPOA).in())) {
177     aList->AddObject(anObj);
178     MESSAGE(" NewLength = "<<aList->GetList().length());
179   }
180 }
181
182 //=============================================================================
183 //  CreateListOfLong:
184 //=============================================================================
185 GEOM::GEOM_List_ptr GEOM_Superv_i::CreateListOfLong()
186 {
187   MESSAGE("GEOM_Superv_i::CreateListOfLong()");
188   GEOM_List_i<GEOM::ListOfLong>* aListPtr = new GEOM_List_i<GEOM::ListOfLong>();
189   return aListPtr->_this();
190 }
191
192 //=============================================================================
193 //  AddItemToListOfLong:
194 //=============================================================================
195 void GEOM_Superv_i::AddItemToListOfLong(GEOM::GEOM_List_ptr& theList,
196                                         CORBA::Long theObject)
197 {
198   MESSAGE("GEOM_Superv_i::AddItemToListOfLong(...)");
199   if (GEOM_List_i<GEOM::ListOfLong>* aList =
200       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theList, myPOA).in())) {
201     aList->AddObject(theObject);
202     MESSAGE(" NewLength = "<<aList->GetList().length());
203   }
204 }
205
206 //=============================================================================
207 //  CreateListOfDouble:
208 //=============================================================================
209 GEOM::GEOM_List_ptr GEOM_Superv_i::CreateListOfDouble()
210 {
211   MESSAGE("GEOM_Superv_i::CreateListOfDouble()");
212   GEOM_List_i<GEOM::ListOfDouble>* aListPtr = new GEOM_List_i<GEOM::ListOfDouble>();
213   return aListPtr->_this();
214 }
215
216 //=============================================================================
217 //  AddItemToListOfDouble:
218 //=============================================================================
219 void GEOM_Superv_i::AddItemToListOfDouble(GEOM::GEOM_List_ptr& theList,
220                                           CORBA::Double theObject)
221 {
222   MESSAGE("GEOM_Superv_i::AddItemToListOfDouble(...)");
223   if (GEOM_List_i<GEOM::ListOfDouble>* aList =
224       dynamic_cast<GEOM_List_i<GEOM::ListOfDouble>*>(GetServant(theList, myPOA).in())) {
225     aList->AddObject(theObject);
226     MESSAGE(" NewLength = "<<aList->GetList().length());
227   }
228 }
229
230 //=============================================================================
231 //  getBasicOp:
232 //=============================================================================
233 void GEOM_Superv_i::getBasicOp()
234 {
235   if (CORBA::is_nil(myGeomEngine))
236     setGeomEngine();
237   // get GEOM_IBasicOperations interface
238   if (CORBA::is_nil(myBasicOp) || isNewStudy(myLastStudyID,myStudyID)) {
239     //rnv: to fix bug "IPAL22461 6.3.0: Incorrect study storage if study contains shape modified with YACS"
240     //     Try to get id of the study from the SALOME Session
241     if(myStudyID < 0 ) SetStudyID(-1);
242     myBasicOp = myGeomEngine->GetIBasicOperations(myStudyID);
243   }
244 }
245
246 //=============================================================================
247 //  get3DPrimOp:
248 //=============================================================================
249 void GEOM_Superv_i::get3DPrimOp()
250 {
251   if (CORBA::is_nil(myGeomEngine))
252     setGeomEngine();
253   // get GEOM_I3DPrimOperations interface
254   if (CORBA::is_nil(my3DPrimOp) || isNewStudy(myLastStudyID,myStudyID)) {
255     //rnv: to fix bug "IPAL22461 6.3.0: Incorrect study storage if study contains shape modified with YACS"
256     //     Try to get id of the study from the SALOME Session
257     if(myStudyID < 0 ) SetStudyID(-1);
258     my3DPrimOp = myGeomEngine->GetI3DPrimOperations(myStudyID);
259   }
260 }
261
262 //=============================================================================
263 //  getBoolOp:
264 //=============================================================================
265 void GEOM_Superv_i::getBoolOp()
266 {
267   if (CORBA::is_nil(myGeomEngine))
268     setGeomEngine();
269   // get GEOM_IBooleanOperations interface
270   if (CORBA::is_nil(myBoolOp) || isNewStudy(myLastStudyID,myStudyID)) {
271     //rnv: to fix bug "IPAL22461 6.3.0: Incorrect study storage if study contains shape modified with YACS"
272     //     Try to get id of the study from the SALOME Session
273     if(myStudyID < 0 ) SetStudyID(-1);
274     myBoolOp = myGeomEngine->GetIBooleanOperations(myStudyID);
275   }
276 }
277
278 //=============================================================================
279 //  getInsOp:
280 //=============================================================================
281 void GEOM_Superv_i::getInsOp()
282 {
283   if (CORBA::is_nil(myGeomEngine))
284     setGeomEngine();
285   // get GEOM_IInsertOperations interface
286   if (CORBA::is_nil(myInsOp) || isNewStudy(myLastStudyID,myStudyID)) {
287     //rnv: to fix bug "IPAL22461 6.3.0: Incorrect study storage if study contains shape modified with YACS"
288     //     Try to get id of the study from the SALOME Session
289     if(myStudyID < 0 ) SetStudyID(-1);
290     myInsOp = myGeomEngine->GetIInsertOperations(myStudyID);
291   }
292 }
293
294 //=============================================================================
295 //  getTransfOp:
296 //=============================================================================
297 void GEOM_Superv_i::getTransfOp()
298 {
299   if (CORBA::is_nil(myGeomEngine))
300     setGeomEngine();
301   // get GEOM_ITransformOperations interface
302   if (CORBA::is_nil(myTransfOp) || isNewStudy(myLastStudyID,myStudyID)) {
303     //rnv: to fix bug "IPAL22461 6.3.0: Incorrect study storage if study contains shape modified with YACS"
304     //     Try to get id of the study from the SALOME Session
305     if(myStudyID < 0 ) SetStudyID(-1);
306     myTransfOp = myGeomEngine->GetITransformOperations(myStudyID);
307   }
308 }
309
310 //=============================================================================
311 //  getShapesOp:
312 //=============================================================================
313 void GEOM_Superv_i::getShapesOp()
314 {
315   if (CORBA::is_nil(myGeomEngine))
316     setGeomEngine();
317   // get GEOM_IShapesOperations interface
318   if (CORBA::is_nil(myShapesOp) || isNewStudy(myLastStudyID,myStudyID)) {
319     //rnv: to fix bug "IPAL22461 6.3.0: Incorrect study storage if study contains shape modified with YACS"
320     //     Try to get id of the study from the SALOME Session
321     if(myStudyID < 0 ) SetStudyID(-1);
322     myShapesOp = myGeomEngine->GetIShapesOperations(myStudyID);
323   }
324 }
325
326 //=============================================================================
327 //  getBlocksOp:
328 //=============================================================================
329 void GEOM_Superv_i::getBlocksOp()
330 {
331   if (CORBA::is_nil(myGeomEngine))
332     setGeomEngine();
333   // get GEOM_IBlocksOperations interface
334   if (CORBA::is_nil(myBlocksOp) || isNewStudy(myLastStudyID,myStudyID)) {
335     //rnv: to fix bug "IPAL22461 6.3.0: Incorrect study storage if study contains shape modified with YACS"
336     //     Try to get id of the study from the SALOME Session
337     if(myStudyID < 0 ) SetStudyID(-1);
338     myBlocksOp = myGeomEngine->GetIBlocksOperations(myStudyID);
339   }
340 }
341
342 //=============================================================================
343 //  getCurvesOp:
344 //=============================================================================
345 void GEOM_Superv_i::getCurvesOp()
346 {
347   if (CORBA::is_nil(myGeomEngine))
348     setGeomEngine();
349   // get GEOM_ICurvesOperations interface
350   if (CORBA::is_nil(myCurvesOp) || isNewStudy(myLastStudyID,myStudyID)) {
351     //rnv: to fix bug "IPAL22461 6.3.0: Incorrect study storage if study contains shape modified with YACS"
352     //     Try to get id of the study from the SALOME Session
353     if(myStudyID < 0 ) SetStudyID(-1);
354     myCurvesOp = myGeomEngine->GetICurvesOperations(myStudyID);
355   }
356 }
357
358 //=============================================================================
359 //  getLocalOp:
360 //=============================================================================
361 void GEOM_Superv_i::getLocalOp()
362 {
363   if (CORBA::is_nil(myGeomEngine))
364     setGeomEngine();
365   // get GEOM_ILocalOperations interface
366   if (CORBA::is_nil(myLocalOp) || isNewStudy(myLastStudyID,myStudyID)) {
367     //rnv: to fix bug "IPAL22461 6.3.0: Incorrect study storage if study contains shape modified with YACS"
368     //     Try to get id of the study from the SALOME Session
369     if(myStudyID < 0 ) SetStudyID(-1);
370     myLocalOp = myGeomEngine->GetILocalOperations(myStudyID);
371   }
372 }
373
374 //=============================================================================
375 //  getGroupOp:
376 //=============================================================================
377 void GEOM_Superv_i::getGroupOp()
378 {
379   if (CORBA::is_nil(myGeomEngine))
380     setGeomEngine();
381   // get GEOM_IGroupOperations interface
382   if (CORBA::is_nil(myGroupOp) || isNewStudy(myLastStudyID,myStudyID)) {
383     //rnv: to fix bug "IPAL22461 6.3.0: Incorrect study storage if study contains shape modified with YACS"
384     //     Try to get id of the study from the SALOME Session
385     if(myStudyID < 0 ) SetStudyID(-1);
386     myGroupOp = myGeomEngine->GetIGroupOperations(myStudyID);
387   }
388 }
389
390 //=============================================================================
391 //  getAdvancedOp:
392 //=============================================================================
393 void GEOM_Superv_i::getAdvancedOp()
394 {
395   if (CORBA::is_nil(myGeomEngine))
396     setGeomEngine();
397   // get GEOM_IAdvancedOperations interface
398   if (CORBA::is_nil(myAdvancedOp) || isNewStudy(myLastStudyID,myStudyID)) {
399     //rnv: to fix bug "IPAL22461 6.3.0: Incorrect study storage if study contains shape modified with YACS"
400     //     Try to get id of the study from the SALOME Session
401     if(myStudyID < 0 ) SetStudyID(-1);
402     //myAdvancedOp = myGeomEngine->GetIAdvancedOperations(myStudyID);
403     myAdvancedOp = GEOM::GEOM_IAdvancedOperations::_narrow(myGeomEngine->GetPluginOperations(myStudyID, "AdvancedEngine"));
404   }
405 }
406
407 //=============================================================================
408 //  GetServant:
409 //=============================================================================
410 PortableServer::ServantBase_var GEOM_Superv_i::GetServant(CORBA::Object_ptr       theObject,
411                                                           PortableServer::POA_ptr thePOA)
412 {
413   if(CORBA::is_nil(theObject))  return NULL;
414   PortableServer::Servant aServant = thePOA->reference_to_servant(theObject);
415   return aServant;
416 }
417
418 //============================================================================
419 // function : Save()
420 // purpose  : save OCAF/Geom document
421 //============================================================================
422 SALOMEDS::TMPFile* GEOM_Superv_i::Save(SALOMEDS::SComponent_ptr theComponent,
423                                        const char* theURL,
424                                        CORBA::Boolean isMultiFile)
425 {
426   SALOMEDS::TMPFile_var aStreamFile;
427   return aStreamFile._retn();
428 }
429
430 //============================================================================
431 // function : SaveASCII()
432 // purpose  :
433 //============================================================================
434 SALOMEDS::TMPFile* GEOM_Superv_i::SaveASCII(SALOMEDS::SComponent_ptr theComponent,
435                                             const char* theURL,
436                                             CORBA::Boolean isMultiFile)
437 {
438   SALOMEDS::TMPFile_var aStreamFile;
439   return aStreamFile._retn();
440 }
441
442 //============================================================================
443 // function : Load()
444 // purpose  :
445 //============================================================================
446 CORBA::Boolean GEOM_Superv_i::Load(SALOMEDS::SComponent_ptr theComponent,
447                                    const SALOMEDS::TMPFile& theStream,
448                                    const char* theURL,
449                                    CORBA::Boolean isMultiFile)
450 {
451   return false;
452 }
453
454 //============================================================================
455 // function : LoadASCII()
456 // purpose  :
457 //============================================================================
458 CORBA::Boolean GEOM_Superv_i::LoadASCII(SALOMEDS::SComponent_ptr theComponent,
459                                         const SALOMEDS::TMPFile& theStream,
460                                         const char* theURL,
461                                         CORBA::Boolean isMultiFile)
462 {
463   return false;
464 }
465
466 //============================================================================
467 // function : Close()
468 // purpose  :
469 //============================================================================
470 void GEOM_Superv_i::Close(SALOMEDS::SComponent_ptr theComponent)
471 {
472 }
473
474 //============================================================================
475 // function : ComponentDataType()
476 // purpose  :
477 //============================================================================
478 char* GEOM_Superv_i::ComponentDataType()
479 {
480   return 0;
481 }
482
483 //============================================================================
484 // function : IORToLocalPersistentID()
485 // purpose  :
486 //============================================================================
487 char* GEOM_Superv_i::IORToLocalPersistentID(SALOMEDS::SObject_ptr theSObject,
488                                             const char* IORString,
489                                             CORBA::Boolean isMultiFile,
490                                             CORBA::Boolean isASCII)
491 {
492   return 0;
493 }
494
495 //============================================================================
496 // function : LocalPersistentIDToIOR()
497 // purpose  : Create/Load CORBA object from a persistent ref (an entry)
498 //          : Used when a study is loaded
499 //          : The IOR (IORName) of object created is returned
500 //============================================================================
501 char* GEOM_Superv_i::LocalPersistentIDToIOR(SALOMEDS::SObject_ptr theSObject,
502                                             const char* aLocalPersistentID,
503                                             CORBA::Boolean isMultiFile,
504                                             CORBA::Boolean isASCII)
505 {
506   return 0;
507 }
508
509 //============================================================================
510 // function : CanPublishInStudy
511 // purpose  :
512 //============================================================================
513 CORBA::Boolean GEOM_Superv_i::CanPublishInStudy(CORBA::Object_ptr theIOR)
514 {
515   if (CORBA::is_nil(myGeomEngine))
516     setGeomEngine();
517   return myGeomEngine->CanPublishInStudy(theIOR);
518 }
519
520 //============================================================================
521 // function : PublishInStudy
522 // purpose  :
523 //============================================================================
524 SALOMEDS::SObject_ptr GEOM_Superv_i::PublishInStudy(SALOMEDS::Study_ptr theStudy,
525                                                     SALOMEDS::SObject_ptr theSObject,
526                                                     CORBA::Object_ptr theObject,
527                                                     const char* theName) throw (SALOME::SALOME_Exception)
528 {
529   if (CORBA::is_nil(myGeomEngine))
530     setGeomEngine();
531   return myGeomEngine->PublishInStudy(theStudy, theSObject, theObject, theName);
532 }
533
534 //============================================================================
535 // function : PublishNamedShapesInStudy
536 // purpose  :
537 //============================================================================
538 GEOM::ListOfGO*
539 GEOM_Superv_i::PublishNamedShapesInStudy(SALOMEDS::Study_ptr theStudy,
540                                          //SALOMEDS::SObject_ptr theSObject,
541                                          CORBA::Object_ptr theObject)
542 {
543   if (CORBA::is_nil(myGeomEngine))
544     setGeomEngine();
545   return myGeomEngine->PublishNamedShapesInStudy(theStudy, theObject);
546 }
547
548 //============================================================================
549 // function : CanCopy()
550 // purpose  :
551 //============================================================================
552 CORBA::Boolean GEOM_Superv_i::CanCopy(SALOMEDS::SObject_ptr theObject)
553 {
554   return false;
555 }
556
557 //============================================================================
558 // function : CopyFrom()
559 // purpose  :
560 //============================================================================
561 SALOMEDS::TMPFile* GEOM_Superv_i::CopyFrom(SALOMEDS::SObject_ptr theObject, CORBA::Long& theObjectID)
562 {
563   SALOMEDS::TMPFile_var aStreamFile;
564   return aStreamFile._retn();
565 }
566
567 //============================================================================
568 // function : CanPaste()
569 // purpose  :
570 //============================================================================
571 CORBA::Boolean GEOM_Superv_i::CanPaste(const char* theComponentName, CORBA::Long theObjectID)
572 {
573   return false;
574 }
575
576 //============================================================================
577 // function : PasteInto()
578 // purpose  :
579 //============================================================================
580 SALOMEDS::SObject_ptr GEOM_Superv_i::PasteInto(const SALOMEDS::TMPFile& theStream,
581                                                CORBA::Long theObjectID,
582                                                SALOMEDS::SObject_ptr theObject)
583 {
584   SALOMEDS::SObject_var aNewSO;
585   return aNewSO._retn();
586 }
587
588 //================= Primitives Construction : BasicOperations =================
589 //=============================================================================
590 //  MakePointXYZ:
591 //=============================================================================
592 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointXYZ(CORBA::Double theX,
593                                                   CORBA::Double theY,
594                                                   CORBA::Double theZ)
595 {
596   beginService( " GEOM_Superv_i::MakePointXYZ" );
597   MESSAGE("GEOM_Superv_i::MakePointXYZ");
598   getBasicOp();
599   // make vertex and return
600   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePointXYZ(theX, theY, theZ);
601   endService( " GEOM_Superv_i::MakePointXYZ" );
602   return anObj;
603 }
604
605 //=============================================================================
606 //  MakePointWithReference:
607 //=============================================================================
608 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointWithReference (GEOM::GEOM_Object_ptr theReference,
609                                                              CORBA::Double theX,
610                                                              CORBA::Double theY,
611                                                              CORBA::Double theZ)
612 {
613   beginService( " GEOM_Superv_i::MakePointWithReference" );
614   MESSAGE("GEOM_Superv_i::MakePointWithReference");
615   getBasicOp();
616   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePointWithReference(theReference, theX, theY, theZ);
617   endService( " GEOM_Superv_i::MakePointWithReference" );
618   return anObj;
619 }
620
621 //=============================================================================
622 //  MakePointOnCurve:
623 //=============================================================================
624 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointOnCurve (GEOM::GEOM_Object_ptr theRefCurve,
625                                                        CORBA::Double theParameter)
626 {
627   beginService( " GEOM_Superv_i::MakePointOnCurve" );
628   MESSAGE("GEOM_Superv_i::MakePointOnCurve");
629   getBasicOp();
630   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePointOnCurve(theRefCurve, theParameter);
631   endService( " GEOM_Superv_i::MakePointOnCurve" );
632   return anObj;
633 }
634
635 //=============================================================================
636 //  MakePointOnCurveByLength:
637 //=============================================================================
638 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointOnCurveByLength (GEOM::GEOM_Object_ptr theRefCurve,
639                                                                CORBA::Double theLength,
640                                                                GEOM::GEOM_Object_ptr theStartPoint)
641 {
642   beginService( " GEOM_Superv_i::MakePointOnCurveByLength" );
643   MESSAGE("GEOM_Superv_i::MakePointOnCurveByLength");
644   getBasicOp();
645   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePointOnCurveByLength(theRefCurve, theLength, theStartPoint);
646   endService( " GEOM_Superv_i::MakePointOnCurveByLength" );
647   return anObj;
648 }
649
650 //=============================================================================
651 //  MakePointOnCurveByCoord
652 //=============================================================================
653 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointOnCurveByCoord (GEOM::GEOM_Object_ptr theRefCurve,
654                                                               CORBA::Double theXParameter,
655                                                               CORBA::Double theYParameter,
656                                                               CORBA::Double theZParameter)
657 {
658   beginService( " GEOM_Superv_i::MakePointOnCurveByCoord" );
659   MESSAGE("GEOM_Superv_i::MakePointOnCurveByCoord");
660   getBasicOp();
661   GEOM::GEOM_Object_ptr anObj =
662     myBasicOp->MakePointOnCurveByCoord(theRefCurve, theXParameter,
663                                 theYParameter, theZParameter);
664   endService( " GEOM_Superv_i::MakePointOnCurveByCoord" );
665   return anObj;
666 }
667
668 //=============================================================================
669 //  MakePointOnSurface:
670 //=============================================================================
671 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointOnSurface (GEOM::GEOM_Object_ptr theRefSurface,
672                                                          CORBA::Double theUParameter,
673                                                          CORBA::Double theVParameter)
674 {
675   beginService( " GEOM_Superv_i::MakePointOnSurface" );
676   MESSAGE("GEOM_Superv_i::MakePointOnSurface");
677   getBasicOp();
678   GEOM::GEOM_Object_ptr anObj =
679     myBasicOp->MakePointOnSurface(theRefSurface, theUParameter, theVParameter);
680   endService( " GEOM_Superv_i::MakePointOnSurface" );
681   return anObj;
682 }
683
684 //=============================================================================
685 //  MakePointOnSurfaceByCoord
686 //=============================================================================
687 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointOnSurfaceByCoord (GEOM::GEOM_Object_ptr theRefSurface,
688                                                                 CORBA::Double theXParameter,
689                                                                 CORBA::Double theYParameter,
690                                                                 CORBA::Double theZParameter)
691 {
692   beginService( " GEOM_Superv_i::MakePointOnSurfaceByCoord" );
693   MESSAGE("GEOM_Superv_i::MakePointOnSurfaceByCoord");
694   getBasicOp();
695   GEOM::GEOM_Object_ptr anObj =
696     myBasicOp->MakePointOnSurfaceByCoord(theRefSurface, theXParameter,
697                                 theYParameter, theZParameter);
698   endService( " GEOM_Superv_i::MakePointOnSurfaceByCoord" );
699   return anObj;
700 }
701
702 //=============================================================================
703 //  MakePointOnLinesIntersection:
704 //=============================================================================
705 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointOnLinesIntersection (GEOM::GEOM_Object_ptr theRefLine1,
706                                                                    GEOM::GEOM_Object_ptr theRefLine2)
707 {
708   beginService( " GEOM_Superv_i::MakePointOnLinesIntersection" );
709   MESSAGE("GEOM_Superv_i::MakePointOnLinesIntersection");
710   getBasicOp();
711   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePointOnLinesIntersection(theRefLine1, theRefLine2);
712   endService( " GEOM_Superv_i::MakePointOnLinesIntersection" );
713   return anObj;
714 }
715
716 //=============================================================================
717 //  MakeTangentOnCurve:
718 //=============================================================================
719 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeTangentOnCurve (GEOM::GEOM_Object_ptr theRefCurve,
720                                                          CORBA::Double theParameter)
721 {
722   beginService( " GEOM_Superv_i::MakeTangentOnCurve" );
723   MESSAGE("GEOM_Superv_i::MakeTangentOnCurve");
724   getBasicOp();
725   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeTangentOnCurve(theRefCurve, theParameter);
726   endService( " GEOM_Superv_i::MakeTangentOnCurve" );
727   return anObj;
728 }
729
730 //=============================================================================
731 //  MakeVectorDXDYDZ:
732 //=============================================================================
733 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeVectorDXDYDZ (CORBA::Double theDX,
734                                                        CORBA::Double theDY,
735                                                        CORBA::Double theDZ)
736 {
737   beginService( " GEOM_Superv_i::MakeVectorDXDYDZ" );
738   MESSAGE("GEOM_Superv_i::MakeVectorDXDYDZ");
739   getBasicOp();
740   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeVectorDXDYDZ(theDX, theDY, theDZ);
741   endService( " GEOM_Superv_i::MakeVectorDXDYDZ" );
742   return anObj;
743 }
744
745 //=============================================================================
746 //  MakeVectorTwoPnt:
747 //=============================================================================
748 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeVectorTwoPnt (GEOM::GEOM_Object_ptr thePnt1,
749                                                        GEOM::GEOM_Object_ptr thePnt2)
750 {
751   beginService( " GEOM_Superv_i::MakeVectorTwoPnt" );
752   MESSAGE("GEOM_Superv_i::MakeVector");
753   getBasicOp();
754   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeVectorTwoPnt(thePnt1, thePnt2);
755   endService( " GEOM_Superv_i::MakeVectorTwoPnt" );
756   return anObj;
757 }
758
759 //=============================================================================
760 //  MakeLineTwoPnt:
761 //=============================================================================
762 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeLineTwoPnt (GEOM::GEOM_Object_ptr thePnt1,
763                                                      GEOM::GEOM_Object_ptr thePnt2)
764 {
765   beginService( " GEOM_Superv_i::MakeLineTwoPnt");
766   MESSAGE("GEOM_Superv_i::MakeLineTwoPnt");
767   getBasicOp();
768   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeLineTwoPnt(thePnt1, thePnt2);
769   endService( " GEOM_Superv_i::MakeLineTwoPnt");
770   return anObj;
771 }
772
773 //=============================================================================
774 //  MakeLineTwoFaces:
775 //=============================================================================
776 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeLineTwoFaces (GEOM::GEOM_Object_ptr theFace1,
777                                                        GEOM::GEOM_Object_ptr theFace2)
778 {
779   beginService( " GEOM_Superv_i::MakeLineTwoFaces");
780   MESSAGE("GEOM_Superv_i::MakeLineTwoFaces");
781   getBasicOp();
782   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeLineTwoFaces(theFace1, theFace2);
783   endService( " GEOM_Superv_i::MakeLineTwoFaces");
784   return anObj;
785 }
786
787 //=============================================================================
788 //  MakePlaneThreePnt:
789 //=============================================================================
790 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePlaneThreePnt (GEOM::GEOM_Object_ptr thePnt1,
791                                                         GEOM::GEOM_Object_ptr thePnt2,
792                                                         GEOM::GEOM_Object_ptr thePnt3,
793                                                         CORBA::Double theTrimSize)
794 {
795   beginService( " GEOM_Superv_i::MakePlaneThreePnt");
796   MESSAGE("GEOM_Superv_i::MakePlaneThreePnt");
797   getBasicOp();
798   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePlaneThreePnt(thePnt1, thePnt2, thePnt3, theTrimSize);
799   endService( " GEOM_Superv_i::MakePlaneThreePnt");
800   return anObj;
801 }
802
803 //=============================================================================
804 //  MakePlanePntVec:
805 //=============================================================================
806 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePlanePntVec (GEOM::GEOM_Object_ptr thePnt,
807                                                       GEOM::GEOM_Object_ptr theVec,
808                                                       CORBA::Double theTrimSize)
809 {
810   beginService( " GEOM_Superv_i::MakePlanePntVec" );
811   MESSAGE("GEOM_Superv_i::MakePlanePntVec");
812   getBasicOp();
813   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePlanePntVec(thePnt, theVec, theTrimSize);
814   endService( " GEOM_Superv_i::MakePlanePntVec" );
815   return anObj;
816 }
817
818 //=============================================================================
819 //  MakePlaneFace:
820 //=============================================================================
821 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePlaneFace (GEOM::GEOM_Object_ptr theFace,
822                                                     CORBA::Double theTrimSize)
823 {
824   beginService( " GEOM_Superv_i::MakePlaneFace" );
825   MESSAGE("GEOM_Superv_i::MakePlaneFace");
826   getBasicOp();
827   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePlaneFace(theFace, theTrimSize);
828   endService( " GEOM_Superv_i::MakePlaneFace" );
829   return anObj;
830 }
831
832 //=============================================================================
833 //  MakePlane2Vec:
834 //=============================================================================
835 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePlane2Vec (GEOM::GEOM_Object_ptr theVec1,
836                                                     GEOM::GEOM_Object_ptr theVec2,
837                                                     CORBA::Double theTrimSize)
838 {
839   beginService( " GEOM_Superv_i::MakePlane2Vec" );
840   MESSAGE("GEOM_Superv_i::MakePlane2Vec");
841   getBasicOp();
842   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePlane2Vec(theVec1, theVec2, theTrimSize);
843   endService( " GEOM_Superv_i::MakePlane2Vec" );
844   return anObj;
845 }
846
847 //=============================================================================
848 //  MakePlaneLCS:
849 //=============================================================================
850 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePlaneLCS (GEOM::GEOM_Object_ptr theLCS,
851                                                    CORBA::Double theTrimSize,
852                                                    CORBA::Double theOrientation)
853 {
854   beginService( " GEOM_Superv_i::MakePlaneLCS" );
855   MESSAGE("GEOM_Superv_i::MakePlaneLCS");
856   getBasicOp();
857   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePlaneLCS(theLCS, theTrimSize, theOrientation);
858   endService( " GEOM_Superv_i::MakePlaneLCS" );
859   return anObj;
860 }
861
862 //=============================================================================
863 //  MakeMarker:
864 //=============================================================================
865 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeMarker
866 (CORBA::Double theOX , CORBA::Double theOY , CORBA::Double theOZ,
867  CORBA::Double theXDX, CORBA::Double theXDY, CORBA::Double theXDZ,
868  CORBA::Double theYDX, CORBA::Double theYDY, CORBA::Double theYDZ)
869 {
870   beginService( " GEOM_Superv_i::MakeMarker" );
871   MESSAGE("GEOM_Superv_i::MakeMarker");
872   getBasicOp();
873   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeMarker(theOX, theOY, theOZ, theXDX, theXDY, theXDZ, theYDX, theYDY, theYDZ);
874   endService( " GEOM_Superv_i::MakeMarker" );
875   return anObj;
876 }
877
878 //=============================================================================
879 //  MakeMarkerFromShape:
880 //=============================================================================
881 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeMarkerFromShape (GEOM::GEOM_Object_ptr theShape)
882 {
883   beginService( " GEOM_Superv_i::MakeMarkerFromShape" );
884   MESSAGE("GEOM_Superv_i::MakeMarkerFromShape");
885   getBasicOp();
886   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeMarkerFromShape(theShape);
887   endService( " GEOM_Superv_i::MakeMarkerFromShape" );
888   return anObj;
889 }
890
891 //=============================================================================
892 //  MakeMarkerPntTwoVec:
893 //=============================================================================
894 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeMarkerPntTwoVec (GEOM::GEOM_Object_ptr theOrigin,
895                                                           GEOM::GEOM_Object_ptr theXVec,
896                                                           GEOM::GEOM_Object_ptr theYVec)
897 {
898   beginService( " GEOM_Superv_i::MakeMarkerPntTwoVec" );
899   MESSAGE("GEOM_Superv_i::MakeMarkerPntTwoVec");
900   getBasicOp();
901   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeMarkerPntTwoVec(theOrigin, theXVec, theYVec);
902   endService( " GEOM_Superv_i::MakeMarkerPntTwoVec" );
903   return anObj;
904 }
905
906 //=============================================================================
907 //  MakeTangentPlaneOnFace:
908 //=============================================================================
909 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeTangentPlaneOnFace (GEOM::GEOM_Object_ptr theFace,
910                                                  CORBA::Double theParameterU,
911                                                  CORBA::Double theParameterV,
912                                                  CORBA::Double theTrimSize)
913 {
914   beginService( " GEOM_Superv_i::MakeTangentPlaneOnFace" );
915   MESSAGE("GEOM_Superv_i::MakeTangentPlaneOnFace");
916   getBasicOp();
917   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeTangentPlaneOnFace(theFace, theParameterU,theParameterV,theTrimSize);
918   endService( " GEOM_Superv_i::MakeTangentPlaneOnFace" );
919   return anObj;
920 }
921
922 //================= Primitives Construction : 3DPrimOperations ================
923 //=============================================================================
924 //  MakeBox:
925 //=============================================================================
926 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeBox (CORBA::Double theX1,
927                                               CORBA::Double theY1,
928                                               CORBA::Double theZ1,
929                                               CORBA::Double theX2,
930                                               CORBA::Double theY2,
931                                               CORBA::Double theZ2)
932 {
933   beginService( " GEOM_Superv_i::MakeBox" );
934   MESSAGE("GEOM_Superv_i::MakeBox");
935   getBasicOp();
936   get3DPrimOp();
937   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeBoxTwoPnt(myBasicOp->MakePointXYZ(theX1, theY1, theZ1),
938                                                           myBasicOp->MakePointXYZ(theX2, theY2, theZ2));
939   endService( " GEOM_Superv_i::MakeBox" );
940   return anObj;
941 }
942
943 //=============================================================================
944 //  MakeBoxDXDYDZ:
945 //=============================================================================
946 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeBoxDXDYDZ (CORBA::Double theDX,
947                                                     CORBA::Double theDY,
948                                                     CORBA::Double theDZ)
949 {
950   beginService( " GEOM_Superv_i::MakeBoxDXDYDZ" );
951   MESSAGE("GEOM_Superv_i::MakeBoxDXDYDZ");
952   get3DPrimOp();
953   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeBoxDXDYDZ(theDX, theDY, theDZ);
954   endService( " GEOM_Superv_i::MakeBoxDXDYDZ" );
955   return anObj;
956 }
957
958 //=============================================================================
959 //  MakeBoxTwoPnt:
960 //=============================================================================
961 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeBoxTwoPnt (GEOM::GEOM_Object_ptr thePnt1,
962                                                     GEOM::GEOM_Object_ptr thePnt2)
963 {
964   beginService( " GEOM_Superv_i::MakeBoxTwoPnt" );
965   MESSAGE("GEOM_Superv_i::MakeBoxTwoPnt");
966   get3DPrimOp();
967   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeBoxTwoPnt(thePnt1, thePnt2);
968   endService( " GEOM_Superv_i::MakeBoxTwoPnt" );
969   return anObj;
970 }
971
972 //=============================================================================
973 //  MakeFaceHW:
974 //=============================================================================
975 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFaceHW (CORBA::Double theH,
976                                                  CORBA::Double theW,
977                                                  CORBA::Short  theOrientation)
978 {
979   beginService( " GEOM_Superv_i::MakeFaceHW" );
980   MESSAGE("GEOM_Superv_i::MakeFaceHW");
981   get3DPrimOp();
982   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeFaceHW(theH, theW, theOrientation);
983   endService( " GEOM_Superv_i::MakeFaceHW" );
984   return anObj;
985 }
986
987 //=============================================================================
988 //  MakeFaceObjHW:
989 //=============================================================================
990 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFaceObjHW (GEOM::GEOM_Object_ptr theObj,
991                                                     CORBA::Double theH,
992                                                     CORBA::Double theW)
993 {
994   beginService( " GEOM_Superv_i::MakeFaceObjHW" );
995   MESSAGE("GEOM_Superv_i::MakeFaceObjHW");
996   get3DPrimOp();
997   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeFaceObjHW(theObj, theH, theW);
998   endService( " GEOM_Superv_i::MakeFaceObjHW" );
999   return anObj;
1000 }
1001
1002 //=============================================================================
1003 //  MakeDiskPntVecR:
1004 //=============================================================================
1005 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeDiskPntVecR (GEOM::GEOM_Object_ptr theCenter,
1006                                                       GEOM::GEOM_Object_ptr theVector,
1007                                                       CORBA::Double theR)
1008 {
1009   beginService( " GEOM_Superv_i::MakeDiskPntVecR" );
1010   MESSAGE("GEOM_Superv_i::MakeDiskPntVecR");
1011   get3DPrimOp();
1012   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeDiskPntVecR(theCenter, theVector, theR);
1013   endService( " GEOM_Superv_i::MakeDiskPntVecR" );
1014   return anObj;
1015 }
1016
1017 //=============================================================================
1018 //  MakeDiskThreePnt:
1019 //=============================================================================
1020 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeDiskThreePnt (GEOM::GEOM_Object_ptr thePnt1,
1021                                                        GEOM::GEOM_Object_ptr thePnt2,
1022                                                        GEOM::GEOM_Object_ptr thePnt3)
1023 {
1024   beginService( " GEOM_Superv_i::MakeDiskThreePnt" );
1025   MESSAGE("GEOM_Superv_i::MakeDiskThreePnt");
1026   get3DPrimOp();
1027   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeDiskThreePnt(thePnt1, thePnt2, thePnt3);
1028   endService( " GEOM_Superv_i::MakeDiskThreePnt" );
1029   return anObj;
1030 }
1031
1032 //=============================================================================
1033 //  MakeDiskR:
1034 //=============================================================================
1035 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeDiskR (CORBA::Double theR,
1036                                                 CORBA::Short  theOrientation)
1037 {
1038   beginService( " GEOM_Superv_i::MakeDiskR" );
1039   MESSAGE("GEOM_Superv_i::MakeDiskR");
1040   get3DPrimOp();
1041   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeDiskR(theR, theOrientation);
1042   endService( " GEOM_Superv_i::MakeDiskR" );
1043   return anObj;
1044 }
1045
1046 //=============================================================================
1047 //  MakeCylinderPntVecRH:
1048 //=============================================================================
1049 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCylinderPntVecRH (GEOM::GEOM_Object_ptr thePnt,
1050                                                            GEOM::GEOM_Object_ptr theAxis,
1051                                                            CORBA::Double theRadius,
1052                                                            CORBA::Double theHeight)
1053 {
1054   beginService( " GEOM_Superv_i::MakeCylinderPntVecRH" );
1055   MESSAGE("GEOM_Superv_i::MakeCylinderPntVecRH");
1056   get3DPrimOp();
1057   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeCylinderPntVecRH(thePnt, theAxis, theRadius, theHeight);
1058   endService( " GEOM_Superv_i::MakeCylinderPntVecRH" );
1059   return anObj;
1060 }
1061
1062 //=============================================================================
1063 //  MakeCylinderRH:
1064 //=============================================================================
1065 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCylinderRH (CORBA::Double theR,
1066                                                      CORBA::Double theH)
1067 {
1068   beginService( " GEOM_Superv_i::MakeCylinderRH" );
1069   MESSAGE("GEOM_Superv_i::MakeCylinderRH");
1070   get3DPrimOp();
1071   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeCylinderRH(theR, theH);
1072   endService( " GEOM_Superv_i::MakeCylinderRH" );
1073   return anObj;
1074 }
1075
1076 //=============================================================================
1077 //  MakeCylinderPntVecRHA:
1078 //=============================================================================
1079 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCylinderPntVecRHA (GEOM::GEOM_Object_ptr thePnt,
1080                                                            GEOM::GEOM_Object_ptr theAxis,
1081                                                            CORBA::Double theRadius,
1082                                                            CORBA::Double theHeight,
1083                                                            CORBA::Double theAngle)
1084 {
1085   beginService( " GEOM_Superv_i::MakeCylinderPntVecRHA" );
1086   MESSAGE("GEOM_Superv_i::MakeCylinderPntVecRHA");
1087   get3DPrimOp();
1088   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeCylinderPntVecRHA(thePnt, theAxis, theRadius, theHeight, theAngle);
1089   endService( " GEOM_Superv_i::MakeCylinderPntVecRHA" );
1090   return anObj;
1091 }
1092
1093 //=============================================================================
1094 //  MakeCylinderRHA:
1095 //=============================================================================
1096 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCylinderRHA (CORBA::Double theR,
1097                                                      CORBA::Double theH,
1098                                                      CORBA::Double theA)
1099 {
1100   beginService( " GEOM_Superv_i::MakeCylinderRHA" );
1101   MESSAGE("GEOM_Superv_i::MakeCylinderRHA");
1102   get3DPrimOp();
1103   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeCylinderRHA(theR, theH, theA);
1104   endService( " GEOM_Superv_i::MakeCylinderRHA" );
1105   return anObj;
1106 }
1107
1108 //=============================================================================
1109 //  MakeSphere:
1110 //=============================================================================
1111 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSphere  (CORBA::Double theX,
1112                                                   CORBA::Double theY,
1113                                                   CORBA::Double theZ,
1114                                                   CORBA::Double theRadius)
1115 {
1116   beginService( " GEOM_Superv_i::MakeSphepe" );
1117   MESSAGE("GEOM_Superv_i::MakeSphepe");
1118   getBasicOp();
1119   get3DPrimOp();
1120   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeSpherePntR(myBasicOp->MakePointXYZ(theX, theY, theZ), theRadius);
1121   endService( " GEOM_Superv_i::MakeSphepe" );
1122   return anObj;
1123 }
1124
1125 //=============================================================================
1126 //  MakeSphereR:
1127 //=============================================================================
1128 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSphereR (CORBA::Double theR)
1129 {
1130   beginService( " GEOM_Superv_i::MakeSphereR" );
1131   MESSAGE("GEOM_Superv_i::MakeSphereR");
1132   get3DPrimOp();
1133   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeSphereR(theR);
1134   endService( " GEOM_Superv_i::MakeSphereR" );
1135   return anObj;
1136 }
1137
1138 //=============================================================================
1139 //  MakeSpherePntR:
1140 //=============================================================================
1141 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSpherePntR (GEOM::GEOM_Object_ptr thePnt,
1142                                                      CORBA::Double theR)
1143 {
1144   beginService( " GEOM_Superv_i::MakeSpherePntR" );
1145   MESSAGE("GEOM_Superv_i::MakeSpherePntR");
1146   get3DPrimOp();
1147   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeSpherePntR(thePnt, theR);
1148   endService( " GEOM_Superv_i::MakeSpherePntR" );
1149   return anObj;
1150 }
1151
1152 //=============================================================================
1153 //  MakeTorusPntVecRR:
1154 //=============================================================================
1155 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeTorusPntVecRR (GEOM::GEOM_Object_ptr thePnt,
1156                                                         GEOM::GEOM_Object_ptr theVec,
1157                                                         CORBA::Double theRMajor,
1158                                                         CORBA::Double theRMinor)
1159 {
1160   beginService( " GEOM_Superv_i::MakeTorusPntVecRR" );
1161   MESSAGE("GEOM_Superv_i::MakeTorusPntVecRR");
1162   get3DPrimOp();
1163   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeTorusPntVecRR(thePnt, theVec, theRMajor, theRMinor);
1164   endService( " GEOM_Superv_i::MakeTorusPntVecRR" );
1165   return anObj;
1166 }
1167
1168 //=============================================================================
1169 //  MakeTorusRR:
1170 //=============================================================================
1171 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeTorusRR (CORBA::Double theRMajor,
1172                                                   CORBA::Double theRMinor)
1173 {
1174   beginService( " GEOM_Superv_i::MakeTorusRR" );
1175   MESSAGE("GEOM_Superv_i::MakeTorusRR");
1176   get3DPrimOp();
1177   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeTorusRR(theRMajor, theRMinor);
1178   endService( " GEOM_Superv_i::MakeTorusRR" );
1179   return anObj;
1180 }
1181
1182 //=============================================================================
1183 //  MakeConePntVecR1R2H:
1184 //=============================================================================
1185 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeConePntVecR1R2H (GEOM::GEOM_Object_ptr thePnt,
1186                                                           GEOM::GEOM_Object_ptr theAxis,
1187                                                           CORBA::Double theR1,
1188                                                           CORBA::Double theR2,
1189                                                           CORBA::Double theHeight)
1190 {
1191   beginService( " GEOM_Superv_i::MakeConePntVecR1R2H" );
1192   MESSAGE("GEOM_Superv_i::MakeConePntVecR1R2H");
1193   get3DPrimOp();
1194   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeConePntVecR1R2H(thePnt, theAxis, theR1, theR2, theHeight);
1195   endService( " GEOM_Superv_i::MakeConePntVecR1R2H" );
1196   return anObj;
1197 }
1198
1199 //=============================================================================
1200 //  MakeConeR1R2H:
1201 //=============================================================================
1202 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeConeR1R2H (CORBA::Double theR1,
1203                                                     CORBA::Double theR2,
1204                                                     CORBA::Double theHeight)
1205 {
1206   beginService( " GEOM_Superv_i::MakeConeR1R2H" );
1207   MESSAGE("GEOM_Superv_i::MakeConeR1R2H");
1208   get3DPrimOp();
1209   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeConeR1R2H(theR1, theR2, theHeight);
1210   endService( " GEOM_Superv_i::MakeConeR1R2H" );
1211   return anObj;
1212 }
1213
1214 //=============================================================================
1215 //  MakePrismVecH:
1216 //=============================================================================
1217 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismVecH (GEOM::GEOM_Object_ptr theBase,
1218                                                     GEOM::GEOM_Object_ptr theVec,
1219                                                     CORBA::Double         theH)
1220 {
1221   beginService( " GEOM_Superv_i::MakePrismVecH" );
1222   MESSAGE("GEOM_Superv_i::MakePrismVecH");
1223   get3DPrimOp();
1224   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismVecH(theBase, theVec, theH);
1225   endService( " GEOM_Superv_i::MakePrismVecH" );
1226   return anObj;
1227 }
1228
1229 //=============================================================================
1230 //  MakePrismVecH2Ways:
1231 //=============================================================================
1232 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismVecH2Ways (GEOM::GEOM_Object_ptr theBase,
1233                                                          GEOM::GEOM_Object_ptr theVec,
1234                                                          CORBA::Double         theH)
1235 {
1236   beginService( " GEOM_Superv_i::MakePrismVecH2Ways" );
1237   MESSAGE("GEOM_Superv_i::MakePrismVecH2Ways");
1238   get3DPrimOp();
1239   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismVecH2Ways(theBase, theVec, theH);
1240   endService( " GEOM_Superv_i::MakePrismVecH2Ways" );
1241   return anObj;
1242 }
1243
1244 //=============================================================================
1245 //  MakePrismTwoPnt:
1246 //=============================================================================
1247 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismTwoPnt (GEOM::GEOM_Object_ptr theBase,
1248                                                       GEOM::GEOM_Object_ptr thePoint1,
1249                                                       GEOM::GEOM_Object_ptr thePoint2)
1250 {
1251   beginService( " GEOM_Superv_i::MakePrismTwoPnt" );
1252   MESSAGE("GEOM_Superv_i::MakePrismTwoPnt");
1253   get3DPrimOp();
1254   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismTwoPnt(theBase, thePoint1, thePoint2);
1255   endService( " GEOM_Superv_i::MakePrismTwoPnt" );
1256   return anObj;
1257 }
1258
1259 //=============================================================================
1260 //  MakePrismTwoPnt2Ways:
1261 //=============================================================================
1262 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismTwoPnt2Ways (GEOM::GEOM_Object_ptr theBase,
1263                                                            GEOM::GEOM_Object_ptr thePoint1,
1264                                                            GEOM::GEOM_Object_ptr thePoint2)
1265 {
1266   beginService( " GEOM_Superv_i::MakePrismTwoPnt2Ways" );
1267   MESSAGE("GEOM_Superv_i::MakePrismTwoPnt2Ways");
1268   get3DPrimOp();
1269   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismTwoPnt2Ways(theBase, thePoint1, thePoint2);
1270   endService( " GEOM_Superv_i::MakePrismTwoPnt2Ways" );
1271   return anObj;
1272 }
1273
1274 //=============================================================================
1275 //  MakePrismDXDYDZ:
1276 //=============================================================================
1277 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismDXDYDZ (GEOM::GEOM_Object_ptr theBase,
1278                       CORBA::Double theDX, CORBA::Double theDY, CORBA::Double theDZ)
1279 {
1280   beginService( " GEOM_Superv_i::MakePrismDXDYDZ" );
1281   MESSAGE("GEOM_Superv_i::MakePrismDXDYDZ");
1282   get3DPrimOp();
1283   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismDXDYDZ(theBase, theDX, theDY, theDZ);
1284   endService( " GEOM_Superv_i::MakePrismDXDYDZ" );
1285   return anObj;
1286 }
1287
1288 //=============================================================================
1289 //  MakePrismDXDYDZ:
1290 //=============================================================================
1291 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismDXDYDZ2Ways (GEOM::GEOM_Object_ptr theBase,
1292                       CORBA::Double theDX, CORBA::Double theDY, CORBA::Double theDZ)
1293 {
1294   beginService( " GEOM_Superv_i::MakePrismDXDYDZ2Ways" );
1295   MESSAGE("GEOM_Superv_i::MakePrismDXDYDZ2Ways");
1296   get3DPrimOp();
1297   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismDXDYDZ2Ways(theBase, theDX, theDY, theDZ);
1298   endService( " GEOM_Superv_i::MakePrismDXDYDZ2Ways" );
1299   return anObj;
1300 }
1301
1302 //=============================================================================
1303 //  MakePipe:
1304 //=============================================================================
1305 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipe (GEOM::GEOM_Object_ptr theBase,
1306                                                GEOM::GEOM_Object_ptr thePath)
1307 {
1308   beginService( " GEOM_Superv_i::MakePipe" );
1309   MESSAGE("GEOM_Superv_i::MakePipe");
1310   get3DPrimOp();
1311   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePipe(theBase, thePath);
1312   endService( " GEOM_Superv_i::MakePipe" );
1313   return anObj;
1314 }
1315
1316 //=============================================================================
1317 //  MakeRevolutionAxisAngle:
1318 //=============================================================================
1319 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeRevolutionAxisAngle (GEOM::GEOM_Object_ptr theBase,
1320                                                               GEOM::GEOM_Object_ptr theAxis,
1321                                                               CORBA::Double theAngle)
1322 {
1323   beginService( " GEOM_Superv_i::MakeRevolutionAxisAngle" );
1324   MESSAGE("GEOM_Superv_i::MakeRevolutionAxisAngle");
1325   get3DPrimOp();
1326   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeRevolutionAxisAngle(theBase, theAxis, theAngle);
1327   endService( " GEOM_Superv_i::MakeRevolutionAxisAngle" );
1328   return anObj;
1329 }
1330
1331 //=============================================================================
1332 //  MakeRevolutionAxisAngle:
1333 //=============================================================================
1334 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeRevolutionAxisAngle2Ways (GEOM::GEOM_Object_ptr theBase,
1335                                                                    GEOM::GEOM_Object_ptr theAxis,
1336                                                                    CORBA::Double theAngle)
1337 {
1338   beginService( " GEOM_Superv_i::MakeRevolutionAxisAngle2Ways" );
1339   MESSAGE("GEOM_Superv_i::MakeRevolutionAxisAngle2Ways");
1340   get3DPrimOp();
1341   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeRevolutionAxisAngle2Ways(theBase, theAxis, theAngle);
1342   endService( " GEOM_Superv_i::MakeRevolutionAxisAngle2Ways" );
1343   return anObj;
1344 }
1345
1346 //=============================================================================
1347 //  MakeFilling:
1348 //=============================================================================
1349 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilling (GEOM::GEOM_Object_ptr theShape,
1350                                                   CORBA::Long theMinDeg,
1351                                                   CORBA::Long theMaxDeg,
1352                                                   CORBA::Double theTol2D,
1353                                                   CORBA::Double theTol3D,
1354                                                   CORBA::Long theNbIter,
1355                                                   GEOM::filling_oper_method theMethod,
1356                                                   CORBA::Boolean theApprox)
1357 {
1358   beginService( " GEOM_Superv_i::MakeFilling" );
1359   MESSAGE("GEOM_Superv_i::MakeFilling");
1360   get3DPrimOp();
1361   GEOM::GEOM_Object_ptr anObj =
1362     my3DPrimOp->MakeFilling(theShape, theMinDeg, theMaxDeg, theTol2D, theTol3D,
1363                             theNbIter, theMethod, theApprox);
1364   endService( " GEOM_Superv_i::MakeFilling" );
1365   return anObj;
1366 }
1367
1368 //============================= BooleanOperations =============================
1369 //=============================================================================
1370 //  MakeBoolean:
1371 //=============================================================================
1372 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeBoolean
1373                                         (GEOM::GEOM_Object_ptr theShape1,
1374                                          GEOM::GEOM_Object_ptr theShape2,
1375                                          CORBA::Long           theOperation)
1376 {
1377   beginService( " GEOM_Superv_i::MakeBoolean" );
1378   // theOperation indicates the operation to be done:
1379   // 1 - Common, 2 - Cut, 3 - Fuse, 4 - Section
1380   MESSAGE("GEOM_Superv_i::MakeBoolean");
1381   getBoolOp();
1382   GEOM::GEOM_Object_ptr anObj =
1383     myBoolOp->MakeBoolean(theShape1, theShape2, theOperation, false);
1384   endService( " GEOM_Superv_i::MakeBoolean" );
1385   return anObj;
1386 }
1387
1388 //=============================================================================
1389 //  MakeThruSections:
1390 //=============================================================================
1391 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeThruSections(const GEOM::ListOfGO& theSeqSections,
1392                                          CORBA::Boolean theModeSolid,
1393                                          CORBA::Double thePreci,
1394                                          CORBA::Boolean theRuled)
1395 {
1396   beginService( " GEOM_Superv_i::MakeThruSections" );
1397   MESSAGE("GEOM_Superv_i::MakeThruSections");
1398   get3DPrimOp();
1399   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeThruSections(theSeqSections, theModeSolid,thePreci,theRuled);
1400   endService( " GEOM_Superv_i::MakeThruSections" );
1401   return anObj;
1402 }
1403
1404 //=============================================================================
1405 //  MakePipe:
1406 //=============================================================================
1407 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipeWithDifferentSections
1408                      (const GEOM::ListOfGO& theBases,
1409                       const GEOM::ListOfGO& theLocations,
1410                       GEOM::GEOM_Object_ptr thePath,
1411                       CORBA::Boolean theWithContact,
1412                       CORBA::Boolean theWithCorrections)
1413 {
1414   beginService( " GEOM_Superv_i::MakePipeWithDifferentSections" );
1415   MESSAGE("GEOM_Superv_i::MakePipeWithDifferentSections");
1416   get3DPrimOp();
1417   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePipeWithDifferentSections(theBases,theLocations, thePath,theWithContact,theWithCorrections);
1418   endService( " GEOM_Superv_i::MakePipeWithDifferentSections" );
1419   return anObj;
1420 }
1421
1422
1423 //=============================================================================
1424 //  MakePipe:
1425 //=============================================================================
1426 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipeWithShellSections
1427                    (const GEOM::ListOfGO& theBases,
1428                     const GEOM::ListOfGO& theSubBases,
1429                     const GEOM::ListOfGO& theLocations,
1430                     GEOM::GEOM_Object_ptr thePath,
1431                     CORBA::Boolean theWithContact,
1432                     CORBA::Boolean theWithCorrections)
1433 {
1434   beginService( " GEOM_Superv_i::MakePipeWithShellSections" );
1435   MESSAGE("GEOM_Superv_i::MakePipeWithShellSections");
1436   get3DPrimOp();
1437   GEOM::GEOM_Object_ptr anObj =
1438     my3DPrimOp->MakePipeWithShellSections(theBases, theSubBases,
1439                                           theLocations, thePath,
1440                                           theWithContact, theWithCorrections);
1441   endService( " GEOM_Superv_i::MakePipeWithShellSections" );
1442   return anObj;
1443 }
1444
1445
1446 //=============================================================================
1447 //  MakePipe:
1448 //=============================================================================
1449 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipeShellsWithoutPath
1450                    (const GEOM::ListOfGO& theBases,
1451                     const GEOM::ListOfGO& theLocations)
1452 {
1453   beginService( " GEOM_Superv_i::MakePipeShellsWithoutPath" );
1454   MESSAGE("GEOM_Superv_i::MakePipeShellsWithoutPath");
1455   get3DPrimOp();
1456   GEOM::GEOM_Object_ptr anObj =
1457     my3DPrimOp->MakePipeShellsWithoutPath(theBases,theLocations);
1458   endService( " GEOM_Superv_i::MakePipeShellsWithoutPath" );
1459   return anObj;
1460 }
1461
1462
1463 //=============================================================================
1464 //  MakePipe:
1465 //=============================================================================
1466 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipeBiNormalAlongVector
1467                                                 (GEOM::GEOM_Object_ptr theBase,
1468                                                  GEOM::GEOM_Object_ptr thePath,
1469                                                  GEOM::GEOM_Object_ptr theVec)
1470 {
1471   beginService( " GEOM_Superv_i::MakePipeBiNormalAlongVector" );
1472   MESSAGE("GEOM_Superv_i::MakePipeBiNormalAlongVector");
1473   get3DPrimOp();
1474   GEOM::GEOM_Object_ptr anObj =
1475     my3DPrimOp->MakePipeBiNormalAlongVector(theBase, thePath, theVec);
1476   endService( " GEOM_Superv_i::MakePipeBiNormalAlongVector" );
1477   return anObj;
1478 }
1479
1480
1481 //=============================================================================
1482 //  MakeFuse:
1483 //=============================================================================
1484 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFuse
1485                                         (GEOM::GEOM_Object_ptr theShape1,
1486                                          GEOM::GEOM_Object_ptr theShape2)
1487 {
1488   beginService( " GEOM_Superv_i::MakeFuse" );
1489   MESSAGE("GEOM_Superv_i::MakeFuse");
1490   getBoolOp();
1491   GEOM::GEOM_Object_ptr anObj =
1492     myBoolOp->MakeBoolean(theShape1, theShape2, 3, false);
1493   endService( " GEOM_Superv_i::MakeFuse" );
1494   return anObj;
1495 }
1496
1497 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCommon (GEOM::GEOM_Object_ptr theShape1,
1498                                                  GEOM::GEOM_Object_ptr theShape2)
1499 {
1500   beginService( " GEOM_Superv_i::MakeCommon" );
1501   MESSAGE("GEOM_Superv_i::MakeCommon");
1502   getBoolOp();
1503   GEOM::GEOM_Object_ptr anObj =
1504     myBoolOp->MakeBoolean(theShape1, theShape2, 1, false);
1505   endService( " GEOM_Superv_i::MakeCommon" );
1506   return anObj;
1507 }
1508
1509 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCut (GEOM::GEOM_Object_ptr theShape1,
1510                                               GEOM::GEOM_Object_ptr theShape2)
1511 {
1512   beginService( " GEOM_Superv_i::MakeCut" );
1513   MESSAGE("GEOM_Superv_i::MakeCut");
1514   getBoolOp();
1515   GEOM::GEOM_Object_ptr anObj =
1516     myBoolOp->MakeBoolean(theShape1, theShape2, 2, false);
1517   endService( " GEOM_Superv_i::MakeCut" );
1518   return anObj;
1519 }
1520
1521 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSection (GEOM::GEOM_Object_ptr theShape1,
1522                                                   GEOM::GEOM_Object_ptr theShape2)
1523 {
1524   beginService( " GEOM_Superv_i::MakeCut" );
1525   MESSAGE("GEOM_Superv_i::MakeCut");
1526   getBoolOp();
1527   GEOM::GEOM_Object_ptr anObj =
1528     myBoolOp->MakeBoolean(theShape1, theShape2, 4, false);
1529   endService( " GEOM_Superv_i::MakeCut" );
1530   return anObj;
1531 }
1532
1533 //=============================================================================
1534 //  MakePartition:
1535 //=============================================================================
1536 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePartition (GEOM::GEOM_List_ptr   theShapes,
1537                                                     GEOM::GEOM_List_ptr   theTools,
1538                                                     GEOM::GEOM_List_ptr   theKeepInside,
1539                                                     GEOM::GEOM_List_ptr   theRemoveInside,
1540                                                     CORBA::Short      theLimit,
1541                                                     CORBA::Boolean    theRemoveWebs,
1542                                                     GEOM::GEOM_List_ptr theMaterials,
1543                                                     CORBA::Short theKeepNonlimitShapes)
1544 {
1545   beginService( " GEOM_Superv_i::MakePartition" );
1546   MESSAGE("GEOM_Superv_i::MakePartition");
1547   GEOM_List_i<GEOM::ListOfGO>* aListImplS =
1548     dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theShapes, myPOA).in());
1549   GEOM_List_i<GEOM::ListOfGO>* aListImplT =
1550     dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theTools, myPOA).in());
1551   GEOM_List_i<GEOM::ListOfGO>* aListImplKI =
1552     dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theKeepInside, myPOA).in());
1553   GEOM_List_i<GEOM::ListOfGO>* aListImplRI =
1554     dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theRemoveInside, myPOA).in());
1555   GEOM_List_i<GEOM::ListOfLong>* aListImplM =
1556     dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theMaterials, myPOA).in());
1557   if (aListImplS && aListImplT && aListImplKI && aListImplRI && aListImplM) {
1558     getBoolOp();
1559     GEOM::GEOM_Object_ptr anObj =
1560       myBoolOp->MakePartition(aListImplS->GetList(), aListImplT->GetList(),
1561                               aListImplKI->GetList(), aListImplRI->GetList(),
1562                               theLimit, theRemoveWebs, aListImplM->GetList(),
1563                               theKeepNonlimitShapes);
1564     endService( " GEOM_Superv_i::MakePartition" );
1565     return anObj;
1566   }
1567   endService( " GEOM_Superv_i::MakePartition" );
1568   return NULL;
1569 }
1570
1571 //=============================================================================
1572 //  MakeHalfPartition:
1573 //=============================================================================
1574 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeHalfPartition (GEOM::GEOM_Object_ptr theShape,
1575                                                         GEOM::GEOM_Object_ptr thePlane)
1576 {
1577   beginService( " GEOM_Superv_i::MakeHalfPartition" );
1578   MESSAGE("GEOM_Superv_i::MakeHalfPartition");
1579   getBoolOp();
1580   GEOM::GEOM_Object_ptr anObj =
1581     myBoolOp->MakeHalfPartition(theShape, thePlane);
1582   endService( " GEOM_Superv_i::MakeHalfPartition" );
1583   return anObj;
1584 }
1585
1586 //============================== InsertOperations =============================
1587 //=============================================================================
1588 //  MakeCopy:
1589 //=============================================================================
1590 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCopy (GEOM::GEOM_Object_ptr theOriginal)
1591 {
1592   beginService( " GEOM_Superv_i::MakeCopy" );
1593   MESSAGE("GEOM_Superv_i::MakeCopy");
1594   getInsOp();
1595   GEOM::GEOM_Object_ptr anObj = myInsOp->MakeCopy(theOriginal);
1596   endService( " GEOM_Superv_i::MakeCopy" );
1597   return anObj;
1598 }
1599
1600 //=============================================================================
1601 //  Export:
1602 //=============================================================================
1603 void GEOM_Superv_i::Export (GEOM::GEOM_Object_ptr theObject,
1604                             const char*           theFileName,
1605                             const char*           theFormatName)
1606 {
1607   beginService( " GEOM_Superv_i::Export" );
1608   MESSAGE("GEOM_Superv_i::Export");
1609   getInsOp();
1610   myInsOp->Export(theObject, theFileName, theFormatName);
1611   endService( " GEOM_Superv_i::Export" );
1612 }
1613
1614 //=============================================================================
1615 //  Import:
1616 //=============================================================================
1617 GEOM::GEOM_Object_ptr GEOM_Superv_i::ImportFile (const char* theFileName,
1618                                                  const char* theFormatName)
1619 {
1620   beginService( " GEOM_Superv_i::ImportFile" );
1621   MESSAGE("GEOM_Superv_i::ImportFile");
1622   getInsOp();
1623   GEOM::ListOfGO* aSeq = myInsOp->ImportFile(theFileName, theFormatName);
1624   GEOM::GEOM_Object_ptr anObj;
1625   
1626   if (aSeq->length() > 0) {
1627     anObj = aSeq->operator[](0);
1628   }
1629
1630   endService( " GEOM_Superv_i::ImportFile" );
1631   return anObj;
1632 }
1633
1634 //=============================================================================
1635 //  ImportTranslators:
1636 //=============================================================================
1637 void GEOM_Superv_i::ImportTranslators (GEOM::string_array_out theFormats,
1638                                        GEOM::string_array_out thePatterns)
1639 {
1640   beginService( " GEOM_Superv_i::ImportTranslators" );
1641   MESSAGE("GEOM_Superv_i::ImportTranslators");
1642   getInsOp();
1643   myInsOp->ImportTranslators(theFormats, thePatterns);
1644   endService( " GEOM_Superv_i::ImportTranslators" );
1645 }
1646
1647 //=============================================================================
1648 //  ExportTranslators:
1649 //=============================================================================
1650 void GEOM_Superv_i::ExportTranslators (GEOM::string_array_out theFormats,
1651                                        GEOM::string_array_out thePatterns)
1652 {
1653   beginService( " GEOM_Superv_i::ExportTranslators" );
1654   MESSAGE("GEOM_Superv_i::ExportTranslators");
1655   getInsOp();
1656   myInsOp->ExportTranslators(theFormats, thePatterns);
1657   endService( " GEOM_Superv_i::ExportTranslators" );
1658 }
1659
1660 //============================= TransformOperations ===========================
1661 //=============================================================================
1662 //  TranslateTwoPoints:
1663 //=============================================================================
1664 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateTwoPoints (GEOM::GEOM_Object_ptr theObject,
1665                                                          GEOM::GEOM_Object_ptr thePoint1,
1666                                                          GEOM::GEOM_Object_ptr thePoint2)
1667 {
1668   beginService( " GEOM_Superv_i::TranslateTwoPoints" );
1669   MESSAGE("GEOM_Superv_i::TranslateTwoPoints");
1670   getTransfOp();
1671   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateTwoPoints(theObject, thePoint1, thePoint2);
1672   endService( " GEOM_Superv_i::TranslateTwoPoints" );
1673   return anObj;
1674 }
1675
1676 //=============================================================================
1677 //  TranslateTwoPointsCopy:
1678 //=============================================================================
1679 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateTwoPointsCopy (GEOM::GEOM_Object_ptr theObject,
1680                                                              GEOM::GEOM_Object_ptr thePoint1,
1681                                                              GEOM::GEOM_Object_ptr thePoint2)
1682 {
1683   beginService( " GEOM_Superv_i::TranslateTwoPointsCopy" );
1684   MESSAGE("GEOM_Superv_i::TranslateTwoPointsCopy");
1685   getTransfOp();
1686   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateTwoPointsCopy(theObject, thePoint1, thePoint2);
1687   endService( " GEOM_Superv_i::TranslateTwoPointsCopy" );
1688   return anObj;
1689 }
1690
1691 //=============================================================================
1692 //  TranslateDXDYDZ:
1693 //=============================================================================
1694 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateDXDYDZ (GEOM::GEOM_Object_ptr theObject,
1695                                                       CORBA::Double theDX,
1696                                                       CORBA::Double theDY,
1697                                                       CORBA::Double theDZ)
1698 {
1699   beginService( " GEOM_Superv_i::TranslateDXDYDZ" );
1700   MESSAGE("GEOM_Superv_i::TranslateDXDYDZ");
1701   getTransfOp();
1702   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateDXDYDZ(theObject, theDX, theDY, theDZ);
1703   endService( " GEOM_Superv_i::TranslateDXDYDZ" );
1704   return anObj;
1705 }
1706
1707 //=============================================================================
1708 //  TranslateDXDYDZCopy:
1709 //=============================================================================
1710 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateDXDYDZCopy (GEOM::GEOM_Object_ptr theObject,
1711                                                           CORBA::Double theDX,
1712                                                           CORBA::Double theDY,
1713                                                           CORBA::Double theDZ)
1714 {
1715   beginService( " GEOM_Superv_i::TranslateDXDYDZCopy" );
1716   MESSAGE("GEOM_Superv_i::TranslateDXDYDZCopy");
1717   getTransfOp();
1718   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateDXDYDZCopy(theObject, theDX, theDY, theDZ);
1719   endService( " GEOM_Superv_i::TranslateDXDYDZCopy" );
1720   return anObj;
1721 }
1722
1723 //=============================================================================
1724 //  TranslateVector:
1725 //=============================================================================
1726 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateVector (GEOM::GEOM_Object_ptr theObject,
1727                                                       GEOM::GEOM_Object_ptr theVector)
1728 {
1729   beginService( " GEOM_Superv_i::TranslateVector" );
1730   MESSAGE("GEOM_Superv_i::TranslateVector");
1731   getTransfOp();
1732   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateVector(theObject, theVector);
1733   endService( " GEOM_Superv_i::TranslateVector" );
1734   return anObj;
1735 }
1736
1737 //=============================================================================
1738 //  TranslateVectorCopy:
1739 //=============================================================================
1740 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateVectorCopy (GEOM::GEOM_Object_ptr theObject,
1741                                                           GEOM::GEOM_Object_ptr theVector)
1742 {
1743   beginService( " GEOM_Superv_i::TranslateVectorCopy" );
1744   MESSAGE("GEOM_Superv_i::TranslateVectorCopy");
1745   getTransfOp();
1746   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateVectorCopy(theObject, theVector);
1747   endService( " GEOM_Superv_i::TranslateVectorCopy" );
1748   return anObj;
1749 }
1750
1751 //=============================================================================
1752 //  TranslateVectorDistance:
1753 //=============================================================================
1754 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateVectorDistance (GEOM::GEOM_Object_ptr theObject,
1755                                                               GEOM::GEOM_Object_ptr theVector,
1756                                                               CORBA::Double theDistance,
1757                                                               CORBA::Boolean theCopy)
1758 {
1759   beginService( " GEOM_Superv_i::TranslateVectorDistance" );
1760   MESSAGE("GEOM_Superv_i::TranslateVectorDistance");
1761   getTransfOp();
1762   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateVectorDistance(theObject,
1763                                                                     theVector, theDistance, theCopy);
1764   endService( " GEOM_Superv_i::TranslateVectorDistance" );
1765   return anObj;
1766 }
1767
1768 //=============================================================================
1769 //  MultiTranslate1D:
1770 //=============================================================================
1771 GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiTranslate1D (GEOM::GEOM_Object_ptr theObject,
1772                                                        GEOM::GEOM_Object_ptr theVector,
1773                                                        CORBA::Double theStep,
1774                                                        CORBA::Long theNbTimes)
1775 {
1776   beginService( " GEOM_Superv_i::MultiTranslate1D" );
1777   MESSAGE("GEOM_Superv_i::MultiTranslate1D");
1778   getTransfOp();
1779   GEOM::GEOM_Object_ptr anObj = myTransfOp->MultiTranslate1D(theObject, theVector, theStep, theNbTimes);
1780   endService( " GEOM_Superv_i::MultiTranslate1D" );
1781   return anObj;
1782 }
1783
1784 //=============================================================================
1785 //  MultiTranslate2D:
1786 //=============================================================================
1787 GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiTranslate2D (GEOM::GEOM_Object_ptr theObject,
1788                                                        GEOM::GEOM_Object_ptr theVector1,
1789                                                        CORBA::Double theStep1,
1790                                                        CORBA::Long theNbTimes1,
1791                                                        GEOM::GEOM_Object_ptr theVector2,
1792                                                        CORBA::Double theStep2,
1793                                                        CORBA::Long theNbTimes2)
1794 {
1795   beginService( " GEOM_Superv_i::MultiTranslate2D" );
1796   MESSAGE("GEOM_Superv_i::MultiTranslate2D");
1797   getTransfOp();
1798   GEOM::GEOM_Object_ptr anObj = myTransfOp->MultiTranslate2D(theObject, theVector1, theStep1, theNbTimes1,
1799                                                              theVector2, theStep2, theNbTimes2);
1800   endService( " GEOM_Superv_i::MultiTranslate2D" );
1801   return anObj;
1802 }
1803
1804 //=============================================================================
1805 //  Rotate:
1806 //=============================================================================
1807 GEOM::GEOM_Object_ptr GEOM_Superv_i::Rotate (GEOM::GEOM_Object_ptr theObject,
1808                                              GEOM::GEOM_Object_ptr theAxis,
1809                                              CORBA::Double theAngle)
1810 {
1811   beginService( " GEOM_Superv_i::Rotate" );
1812   MESSAGE("GEOM_Superv_i::Rotate");
1813   getTransfOp();
1814   GEOM::GEOM_Object_ptr anObj = myTransfOp->Rotate(theObject, theAxis, theAngle);
1815   endService( " GEOM_Superv_i::Rotate" );
1816   return anObj;
1817 }
1818
1819 //=============================================================================
1820 //  RotateCopy:
1821 //=============================================================================
1822 GEOM::GEOM_Object_ptr GEOM_Superv_i::RotateCopy (GEOM::GEOM_Object_ptr theObject,
1823                                                  GEOM::GEOM_Object_ptr theAxis,
1824                                                  CORBA::Double theAngle)
1825 {
1826   beginService( " GEOM_Superv_i::RotateCopy" );
1827   MESSAGE("GEOM_Superv_i::RotateCopy");
1828   getTransfOp();
1829   GEOM::GEOM_Object_ptr anObj = myTransfOp->RotateCopy(theObject, theAxis, theAngle);
1830   endService( " GEOM_Superv_i::RotateCopy" );
1831   return anObj;
1832 }
1833 //=============================================================================
1834 //  RotateThreePoints:
1835 //=============================================================================
1836 GEOM::GEOM_Object_ptr GEOM_Superv_i::RotateThreePoints (GEOM::GEOM_Object_ptr theObject,
1837                                                         GEOM::GEOM_Object_ptr theCentPoint,
1838                                                         GEOM::GEOM_Object_ptr thePoint1,
1839                                                         GEOM::GEOM_Object_ptr thePoint2)
1840 {
1841   beginService( " GEOM_Superv_i::RotateThreePoints" );
1842   MESSAGE("GEOM_Superv_i::RotateThreePoints");
1843   getTransfOp();
1844   GEOM::GEOM_Object_ptr anObj = myTransfOp->RotateThreePoints(theObject, theCentPoint, thePoint1, thePoint2);
1845   endService( " GEOM_Superv_i::RotateThreePoints" );
1846   return anObj;
1847 }
1848
1849 //=============================================================================
1850 //  RotateThreePointsCopy:
1851 //=============================================================================
1852 GEOM::GEOM_Object_ptr GEOM_Superv_i::RotateThreePointsCopy (GEOM::GEOM_Object_ptr theObject,
1853                                                             GEOM::GEOM_Object_ptr theCentPoint,
1854                                                             GEOM::GEOM_Object_ptr thePoint1,
1855                                                             GEOM::GEOM_Object_ptr thePoint2)
1856 {
1857   beginService( " GEOM_Superv_i::RotateThreePointsCopy" );
1858   MESSAGE("GEOM_Superv_i::RotateThreePointsCopy");
1859   getTransfOp();
1860   GEOM::GEOM_Object_ptr anObj = myTransfOp->RotateThreePointsCopy(theObject, theCentPoint, thePoint1, thePoint2);
1861   endService( " GEOM_Superv_i::RotateThreePointsCopy" );
1862   return anObj;
1863 }
1864
1865 //=============================================================================
1866 //  MultiRotate1D:
1867 //=============================================================================
1868 GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiRotate1D (GEOM::GEOM_Object_ptr theObject,
1869                                                     GEOM::GEOM_Object_ptr theAxis,
1870                                                     CORBA::Long theNbTimes)
1871 {
1872   beginService( " GEOM_Superv_i::MultiRotate1D" );
1873   MESSAGE("GEOM_Superv_i::MultiRotate1D");
1874   getTransfOp();
1875   GEOM::GEOM_Object_ptr anObj = myTransfOp->MultiRotate1D(theObject, theAxis, theNbTimes);
1876   endService( " GEOM_Superv_i::MultiRotate1D" );
1877   return anObj;
1878 }
1879
1880 //=============================================================================
1881 //  MultiRotate2D:
1882 //=============================================================================
1883 GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiRotate2D (GEOM::GEOM_Object_ptr theObject,
1884                                                     GEOM::GEOM_Object_ptr theAxis,
1885                                                     CORBA::Double theAngle,
1886                                                     CORBA::Long theNbTimes1,
1887                                                     CORBA::Double theStep,
1888                                                     CORBA::Long theNbTimes2)
1889 {
1890   beginService( " GEOM_Superv_i::MultiRotate2D" );
1891   MESSAGE("GEOM_Superv_i::MultiRotate2D");
1892   getTransfOp();
1893   GEOM::GEOM_Object_ptr anObj = myTransfOp->MultiRotate2D(theObject, theAxis, theAngle, theNbTimes1, theStep, theNbTimes2);
1894   endService( " GEOM_Superv_i::MultiRotate2D" );
1895   return anObj;
1896 }
1897
1898 //=============================================================================
1899 //  MirrorPlane:
1900 //=============================================================================
1901 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPlane (GEOM::GEOM_Object_ptr theObject,
1902                                                   GEOM::GEOM_Object_ptr thePlane)
1903 {
1904   beginService( " GEOM_Superv_i::MirrorPlane" );
1905   MESSAGE("GEOM_Superv_i::MirrorPlane");
1906   getTransfOp();
1907   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorPlane(theObject, thePlane);
1908   endService( " GEOM_Superv_i::MirrorPlane" );
1909   return anObj;
1910 }
1911
1912 //=============================================================================
1913 //  MirrorPlaneCopy:
1914 //=============================================================================
1915 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPlaneCopy (GEOM::GEOM_Object_ptr theObject,
1916                                                       GEOM::GEOM_Object_ptr thePlane)
1917 {
1918   beginService( " GEOM_Superv_i::MirrorPlaneCopy" );
1919   MESSAGE("GEOM_Superv_i::MirrorPlaneCopy");
1920   getTransfOp();
1921   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorPlaneCopy(theObject, thePlane);
1922   endService( " GEOM_Superv_i::MirrorPlaneCopy" );
1923   return anObj;
1924 }
1925
1926 //=============================================================================
1927 //  MirrorAxis:
1928 //=============================================================================
1929 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorAxis (GEOM::GEOM_Object_ptr theObject,
1930                                                  GEOM::GEOM_Object_ptr theAxis)
1931 {
1932   beginService( " GEOM_Superv_i::MirrorAxis" );
1933   MESSAGE("GEOM_Superv_i::MirrorAxis");
1934   getTransfOp();
1935   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorAxis(theObject, theAxis);
1936   endService( " GEOM_Superv_i::MirrorAxis" );
1937   return anObj;
1938 }
1939
1940 //=============================================================================
1941 //  MirrorAxisCopy:
1942 //=============================================================================
1943 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorAxisCopy (GEOM::GEOM_Object_ptr theObject,
1944                                                      GEOM::GEOM_Object_ptr theAxis)
1945 {
1946   beginService( " GEOM_Superv_i::MirrorAxisCopy" );
1947   MESSAGE("GEOM_Superv_i::MirrorAxisCopy");
1948   getTransfOp();
1949   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorAxisCopy(theObject, theAxis);
1950   endService( " GEOM_Superv_i::MirrorAxisCopy" );
1951   return anObj;
1952 }
1953
1954 //=============================================================================
1955 //  MirrorPoint:
1956 //=============================================================================
1957 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPoint (GEOM::GEOM_Object_ptr theObject,
1958                                                   GEOM::GEOM_Object_ptr thePoint)
1959 {
1960   beginService( " GEOM_Superv_i::MirrorPoint" );
1961   MESSAGE("GEOM_Superv_i::MirrorPoint");
1962   getTransfOp();
1963   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorPoint(theObject, thePoint);
1964   endService( " GEOM_Superv_i::MirrorPoint" );
1965   return anObj;
1966 }
1967
1968 //=============================================================================
1969 //  MirrorPointCopy:
1970 //=============================================================================
1971 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPointCopy (GEOM::GEOM_Object_ptr theObject,
1972                                                       GEOM::GEOM_Object_ptr thePoint)
1973 {
1974   beginService( " GEOM_Superv_i::MirrorPoint" );
1975   MESSAGE("GEOM_Superv_i::MirrorPointCopy");
1976   getTransfOp();
1977   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorPointCopy(theObject, thePoint);
1978   endService( " GEOM_Superv_i::MirrorPoint" );
1979   return anObj;
1980 }
1981
1982 //=============================================================================
1983 //  OffsetShape:
1984 //=============================================================================
1985 GEOM::GEOM_Object_ptr GEOM_Superv_i::OffsetShape (GEOM::GEOM_Object_ptr theObject,
1986                                                   CORBA::Double theOffset)
1987 {
1988   beginService( " GEOM_Superv_i::OffsetShape" );
1989   MESSAGE("GEOM_Superv_i::OffsetShape");
1990   getTransfOp();
1991   GEOM::GEOM_Object_ptr anObj = myTransfOp->OffsetShape(theObject, theOffset);
1992   endService( " GEOM_Superv_i::OffsetShape" );
1993   return anObj;
1994 }
1995
1996 //=============================================================================
1997 //  OffsetShapeCopy:
1998 //=============================================================================
1999 GEOM::GEOM_Object_ptr GEOM_Superv_i::OffsetShapeCopy (GEOM::GEOM_Object_ptr theObject,
2000                                                       CORBA::Double theOffset)
2001 {
2002   beginService( " GEOM_Superv_i::OffsetShapeCopy" );
2003   MESSAGE("GEOM_Superv_i::OffsetShapeCopy");
2004   getTransfOp();
2005   GEOM::GEOM_Object_ptr anObj = myTransfOp->OffsetShapeCopy(theObject, theOffset);
2006   endService( " GEOM_Superv_i::OffsetShapeCopy" );
2007   return anObj;
2008 }
2009
2010 //=============================================================================
2011 //  ScaleShape:
2012 //=============================================================================
2013 GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShape (GEOM::GEOM_Object_ptr theObject,
2014                                                  GEOM::GEOM_Object_ptr thePoint,
2015                                                  CORBA::Double theFactor)
2016 {
2017   beginService( " GEOM_Superv_i::ScaleShape" );
2018   MESSAGE("GEOM_Superv_i::ScaleShape");
2019   getTransfOp();
2020   GEOM::GEOM_Object_ptr anObj = myTransfOp->ScaleShape(theObject, thePoint, theFactor);
2021   endService( " GEOM_Superv_i::ScaleShape" );
2022   return anObj;
2023 }
2024
2025 //=============================================================================
2026 //  ScaleShapeCopy:
2027 //=============================================================================
2028 GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShapeCopy (GEOM::GEOM_Object_ptr theObject,
2029                                                      GEOM::GEOM_Object_ptr thePoint,
2030                                                      CORBA::Double theFactor)
2031 {
2032   beginService( " GEOM_Superv_i::ScaleShapeCopy" );
2033   MESSAGE("GEOM_Superv_i::ScaleShapeCopy");
2034   getTransfOp();
2035   GEOM::GEOM_Object_ptr anObj = myTransfOp->ScaleShapeCopy(theObject, thePoint, theFactor);
2036   endService( " GEOM_Superv_i::ScaleShapeCopy" );
2037   return anObj;
2038 }
2039
2040 //=============================================================================
2041 //  ScaleShapeAlongAxes:
2042 //=============================================================================
2043 GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShapeAlongAxes (GEOM::GEOM_Object_ptr theObject,
2044                                                           GEOM::GEOM_Object_ptr thePoint,
2045                                                           CORBA::Double theFactorX,
2046                                                           CORBA::Double theFactorY,
2047                                                           CORBA::Double theFactorZ)
2048 {
2049   beginService( " GEOM_Superv_i::ScaleShapeAlongAxes" );
2050   MESSAGE("GEOM_Superv_i::ScaleShapeAlongAxes");
2051   getTransfOp();
2052   GEOM::GEOM_Object_ptr anObj = myTransfOp->ScaleShapeAlongAxes
2053     (theObject, thePoint, theFactorX, theFactorY, theFactorZ);
2054   endService( " GEOM_Superv_i::ScaleShapeAlongAxes" );
2055   return anObj;
2056 }
2057
2058 //=============================================================================
2059 //  ScaleShapeAlongAxesCopy:
2060 //=============================================================================
2061 GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShapeAlongAxesCopy (GEOM::GEOM_Object_ptr theObject,
2062                                                               GEOM::GEOM_Object_ptr thePoint,
2063                                                               CORBA::Double theFactorX,
2064                                                               CORBA::Double theFactorY,
2065                                                               CORBA::Double theFactorZ)
2066 {
2067   beginService( " GEOM_Superv_i::ScaleShapeAlongAxesCopy" );
2068   MESSAGE("GEOM_Superv_i::ScaleShapeAlongAxesCopy");
2069   getTransfOp();
2070   GEOM::GEOM_Object_ptr anObj = myTransfOp->ScaleShapeAlongAxesCopy
2071     (theObject, thePoint, theFactorX, theFactorY, theFactorZ);
2072   endService( " GEOM_Superv_i::ScaleShapeAlongAxesCopy" );
2073   return anObj;
2074 }
2075
2076 //=============================================================================
2077 //  PositionShape:
2078 //=============================================================================
2079 GEOM::GEOM_Object_ptr GEOM_Superv_i::PositionShape (GEOM::GEOM_Object_ptr theObject,
2080                                                     GEOM::GEOM_Object_ptr theStartLCS,
2081                                                     GEOM::GEOM_Object_ptr theEndLCS)
2082 {
2083   beginService( " GEOM_Superv_i::PositionShape" );
2084   MESSAGE("GEOM_Superv_i::PositionShape");
2085   getTransfOp();
2086   GEOM::GEOM_Object_ptr anObj = myTransfOp->PositionShape(theObject, theStartLCS, theEndLCS);
2087   endService( " GEOM_Superv_i::PositionShape" );
2088   return anObj;
2089 }
2090
2091 //=============================================================================
2092 //  PositionShapeCopy:
2093 //=============================================================================
2094 GEOM::GEOM_Object_ptr GEOM_Superv_i::PositionShapeCopy (GEOM::GEOM_Object_ptr theObject,
2095                                                         GEOM::GEOM_Object_ptr theStartLCS,
2096                                                         GEOM::GEOM_Object_ptr theEndLCS)
2097 {
2098   beginService( " GEOM_Superv_i::PositionShapeCopy" );
2099   MESSAGE("GEOM_Superv_i::PositionShapeCopy");
2100   getTransfOp();
2101   GEOM::GEOM_Object_ptr anObj = myTransfOp->PositionShapeCopy(theObject, theStartLCS, theEndLCS);
2102   endService( " GEOM_Superv_i::PositionShapeCopy" );
2103   return anObj;
2104 }
2105
2106 //=============================================================================
2107 //  PositionAlongPath:
2108 //=============================================================================
2109 GEOM::GEOM_Object_ptr GEOM_Superv_i::PositionAlongPath (GEOM::GEOM_Object_ptr theObject,
2110                                                         GEOM::GEOM_Object_ptr thePath,
2111                                                         CORBA::Double         theDistance,
2112                                                         CORBA::Boolean        theCopy,
2113                                                         CORBA::Boolean        theReverse)
2114 {
2115   beginService( " GEOM_Superv_i::PositionAlongPath" );
2116   MESSAGE("GEOM_Superv_i::PositionAlongPath");
2117   getTransfOp();
2118   GEOM::GEOM_Object_ptr anObj = myTransfOp->PositionAlongPath(theObject, thePath, theDistance, theCopy, theReverse);
2119   endService( " GEOM_Superv_i::PositionAlongPath" );
2120   return anObj;
2121 }
2122
2123 //=============================== ShapesOperations ============================
2124 //=============================================================================
2125 //  Make:
2126 //=============================================================================
2127 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeEdge (GEOM::GEOM_Object_ptr thePnt1,
2128                                                GEOM::GEOM_Object_ptr thePnt2)
2129 {
2130   beginService( " GEOM_Superv_i::MakeEdge" );
2131   MESSAGE("GEOM_Superv_i::MakeEdge");
2132   getShapesOp();
2133   GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeEdge(thePnt1, thePnt2);
2134   endService( " GEOM_Superv_i::MakeEdge" );
2135   return anObj;
2136 }
2137
2138 //=============================================================================
2139 //  MakeEdgeOnCurveByLength:
2140 //=============================================================================
2141 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeEdgeOnCurveByLength (GEOM::GEOM_Object_ptr theRefCurve,
2142                                                               CORBA::Double theLength,
2143                                                               GEOM::GEOM_Object_ptr theStartPoint)
2144 {
2145   beginService( " GEOM_Superv_i::MakeEdgeOnCurveByLength" );
2146   MESSAGE("GEOM_Superv_i::MakeEdgeOnCurveByLength");
2147   getShapesOp();
2148   GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeEdgeOnCurveByLength(theRefCurve, theLength, theStartPoint);
2149   endService( " GEOM_Superv_i::MakeEdgeOnCurveByLength" );
2150   return anObj;
2151 }
2152
2153 //=============================================================================
2154 //  MakeWire:
2155 //=============================================================================
2156 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeWire (GEOM::GEOM_List_ptr theEdgesAndWires,
2157                                                CORBA::Double       theTolerance)
2158 {
2159   beginService( " GEOM_Superv_i::MakeWire" );
2160   MESSAGE("GEOM_Superv_i::MakeWire");
2161   if (GEOM_List_i<GEOM::ListOfGO>* aListImplEW =
2162       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theEdgesAndWires, myPOA).in())) {
2163     getShapesOp();
2164     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeWire(aListImplEW->GetList(), theTolerance);
2165     endService( " GEOM_Superv_i::MakeWire" );
2166     return anObj;
2167   }
2168   endService( " GEOM_Superv_i::MakeWire" );
2169   return NULL;
2170 }
2171
2172 //=============================================================================
2173 //  MakeFace:
2174 //=============================================================================
2175 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFace (GEOM::GEOM_Object_ptr theWire,
2176                                                CORBA::Boolean isPlanarWanted)
2177 {
2178   beginService( " GEOM_Superv_i::MakeFace" );
2179   MESSAGE("GEOM_Superv_i::MakeFace");
2180   getShapesOp();
2181   GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeFace(theWire, isPlanarWanted);
2182   endService( " GEOM_Superv_i::MakeFace" );
2183   return anObj;
2184 }
2185
2186 //=============================================================================
2187 //  MakeFaceWires:
2188 //=============================================================================
2189 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFaceWires (GEOM::GEOM_List_ptr theWires,
2190                                                     CORBA::Boolean isPlanarWanted)
2191 {
2192   beginService( " GEOM_Superv_i::MakeFaceWires" );
2193   MESSAGE("GEOM_Superv_i::MakeFaceWires");
2194   if (GEOM_List_i<GEOM::ListOfGO>* aListImplW =
2195       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theWires, myPOA).in())) {
2196     getShapesOp();
2197     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeFaceWires(aListImplW->GetList(), isPlanarWanted);
2198     endService( " GEOM_Superv_i::MakeFaceWires" );
2199     return anObj;
2200   }
2201   endService( " GEOM_Superv_i::MakeFaceWires" );
2202   return NULL;
2203 }
2204
2205 //=============================================================================
2206 //  MakeShell:
2207 //=============================================================================
2208 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeShell (GEOM::GEOM_List_ptr theFacesAndShells)
2209 {
2210   beginService( " GEOM_Superv_i::MakeShell" );
2211   MESSAGE("GEOM_Superv_i::MakeShell");
2212   if (GEOM_List_i<GEOM::ListOfGO>* aListImplFS =
2213       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theFacesAndShells, myPOA).in())) {
2214     getShapesOp();
2215     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeShell(aListImplFS->GetList());
2216     endService( " GEOM_Superv_i::MakeShell" );
2217     return anObj;
2218   }
2219   endService( " GEOM_Superv_i::MakeShell" );
2220   return NULL;
2221 }
2222
2223 //=============================================================================
2224 //  MakeSolidShell:
2225 //=============================================================================
2226 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSolidShell (GEOM::GEOM_Object_ptr theShell)
2227 {
2228   beginService( " GEOM_Superv_i::MakeSolidShell" );
2229   MESSAGE("GEOM_Superv_i::MakeSolidShell");
2230   getShapesOp();
2231   GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeSolidShell(theShell);
2232   endService( " GEOM_Superv_i::MakeSolidShell" );
2233   return anObj;
2234 }
2235
2236 //=============================================================================
2237 //  MakeSolidShells:
2238 //=============================================================================
2239 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSolidShells (GEOM::GEOM_List_ptr theShells)
2240 {
2241   beginService( " GEOM_Superv_i::MakeSolidShells" );
2242   MESSAGE("GEOM_Superv_i::MakeSolidShells");
2243   if (GEOM_List_i<GEOM::ListOfGO>* aListImplS =
2244       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theShells, myPOA).in())) {
2245     getShapesOp();
2246     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeSolidShells(aListImplS->GetList());
2247     endService( " GEOM_Superv_i::MakeSolidShells" );
2248     return anObj;
2249   }
2250   endService( " GEOM_Superv_i::MakeSolidShells" );
2251   return NULL;
2252 }
2253
2254 //=============================================================================
2255 //  MakeCompound:
2256 //=============================================================================
2257 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCompound (GEOM::GEOM_List_ptr theShapes)
2258 {
2259   beginService( " GEOM_Superv_i::MakeCompound" );
2260   MESSAGE("GEOM_Superv_i::MakeCompound");
2261   if (GEOM_List_i<GEOM::ListOfGO>* aListImpl =
2262       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theShapes, myPOA).in())) {
2263     getShapesOp();
2264     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeCompound(aListImpl->GetList());
2265     endService( " GEOM_Superv_i::MakeCompound" );
2266     return anObj;
2267   }
2268   endService( " GEOM_Superv_i::MakeCompound" );
2269   return NULL;
2270 }
2271
2272 //=============================================================================
2273 //  MakeGlueFaces:
2274 //=============================================================================
2275 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeGlueFaces (GEOM::GEOM_Object_ptr theShape,
2276                                                     CORBA::Double   theTolerance,
2277                                                     CORBA::Boolean doKeepNonSolids)
2278 {
2279   beginService( " GEOM_Superv_i::MakeGlueFaces" );
2280   MESSAGE("GEOM_Superv_i::MakeGlueFaces");
2281   getShapesOp();
2282   GEOM::GEOM_Object_ptr anObj =
2283     myShapesOp->MakeGlueFaces(theShape, theTolerance, doKeepNonSolids);
2284   endService( " GEOM_Superv_i::MakeGlueFaces" );
2285   return anObj;
2286 }
2287
2288 //=============================================================================
2289 //  GetGlueFaces:
2290 //=============================================================================
2291 GEOM::GEOM_List_ptr GEOM_Superv_i::GetGlueFaces (GEOM::GEOM_Object_ptr theShape,
2292                                                  CORBA::Double theTolerance)
2293 {
2294   beginService( " GEOM_Superv_i::GetGlueFaces" );
2295   MESSAGE("GEOM_Superv_i::GetGlueFaces");
2296   getShapesOp();
2297   GEOM::ListOfGO* aList = myShapesOp->GetGlueFaces(theShape, theTolerance);
2298   GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aList));
2299   MESSAGE(" List of "<<aListPtr->GetList().length()<<" element(s)");
2300   endService( " GEOM_Superv_i::GetGlueFaces" );
2301   return aListPtr->_this();
2302 }
2303
2304 //=============================================================================
2305 //  MakeGlueFacesByList:
2306 //=============================================================================
2307 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeGlueFacesByList (GEOM::GEOM_Object_ptr theShape,
2308                                                           CORBA::Double theTolerance,
2309                                                           const GEOM::ListOfGO& theFaces,
2310                                                           CORBA::Boolean doKeepNonSolids,
2311                                                           CORBA::Boolean doGlueAllEdges)
2312 {
2313   beginService( " GEOM_Superv_i::MakeGlueFacesByList" );
2314   MESSAGE("GEOM_Superv_i::MakeGlueFacesByList");
2315   getShapesOp();
2316   GEOM::GEOM_Object_ptr anObj =
2317     myShapesOp->MakeGlueFacesByList(theShape, theTolerance, theFaces,
2318                                     doKeepNonSolids, doGlueAllEdges);
2319   endService( " GEOM_Superv_i::MakeGlueFacesByList" );
2320   return anObj;
2321 }
2322
2323 //=============================================================================
2324 //  MakeExplode:
2325 //=============================================================================
2326 GEOM::GEOM_List_ptr GEOM_Superv_i::MakeExplode (GEOM::GEOM_Object_ptr theShape,
2327                                                     CORBA::Long theShapeType,
2328                                                     CORBA::Boolean isSorted)
2329 {
2330   beginService( " GEOM_Superv_i::MakeExplode" );
2331   MESSAGE("GEOM_Superv_i::MakeExplode");
2332   getShapesOp();
2333
2334   GEOM::ListOfGO* aList = myShapesOp->MakeExplode(theShape, theShapeType, isSorted);
2335   GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aList));
2336   MESSAGE(" List of "<<aListPtr->GetList().length()<<" element(s)");
2337   endService( " GEOM_Superv_i::MakeExplode" );
2338   return aListPtr->_this();
2339 }
2340
2341 //=============================================================================
2342 //  NumberOfFaces:
2343 //=============================================================================
2344 CORBA::Long GEOM_Superv_i::NumberOfFaces (GEOM::GEOM_Object_ptr theShape)
2345 {
2346   beginService( " GEOM_Superv_i::NumberOfFaces" );
2347   MESSAGE("GEOM_Superv_i::NumberOfFaces");
2348   getShapesOp();
2349   CORBA::Long aRes = myShapesOp->NumberOfFaces(theShape);
2350   endService( " GEOM_Superv_i::NumberOfFaces" );
2351   return aRes;
2352 }
2353
2354 //=============================================================================
2355 //  NumberOfEdges:
2356 //=============================================================================
2357 CORBA::Long GEOM_Superv_i::NumberOfEdges (GEOM::GEOM_Object_ptr theShape)
2358 {
2359   beginService( " GEOM_Superv_i::NumberOfEdges" );
2360   MESSAGE("GEOM_Superv_i::NumberOfEdges");
2361   getShapesOp();
2362   CORBA::Long aRes = myShapesOp->NumberOfEdges(theShape);
2363   endService( " GEOM_Superv_i::NumberOfEdges" );
2364   return aRes;
2365 }
2366
2367
2368 //=============================================================================
2369 //  ChangeOrientation:
2370 //=============================================================================
2371 GEOM::GEOM_Object_ptr GEOM_Superv_i::ChangeOrientation (GEOM::GEOM_Object_ptr theShape)
2372 {
2373   beginService( " GEOM_Superv_i::ChangeOrientation" );
2374   MESSAGE("GEOM_Superv_i::ChangeOrientation");
2375   getShapesOp();
2376   GEOM::GEOM_Object_ptr anObj = myShapesOp->ChangeOrientation(theShape);
2377   endService( " GEOM_Superv_i::ChangeOrientation" );
2378   return anObj;
2379 }
2380
2381
2382 //=============================================================================
2383 //  GetShapesOnShape:
2384 //=============================================================================
2385 GEOM::GEOM_List_ptr GEOM_Superv_i::GetShapesOnShape
2386                                           (GEOM::GEOM_Object_ptr theCheckShape,
2387                                            GEOM::GEOM_Object_ptr theShape,
2388                                            CORBA::Short theShapeType,
2389                                            GEOM::shape_state theState)
2390 {
2391   beginService( " GEOM_Superv_i::GetShapesOnShape" );
2392   MESSAGE("GEOM_Superv_i::GetShapesOnShape");
2393   getShapesOp();
2394   GEOM::ListOfGO* aList =
2395     myShapesOp->GetShapesOnShape(theCheckShape, theShape, theShapeType, theState);
2396   GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aList));
2397   MESSAGE(" List of "<<aListPtr->GetList().length()<<" element(s)");
2398   endService( " GEOM_Superv_i::GetShapesOnShape" );
2399   return aListPtr->_this();
2400 }
2401
2402
2403 //=============================================================================
2404 //  GetShapesOnShapeAsCompound:
2405 //=============================================================================
2406 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetShapesOnShapeAsCompound
2407                                           (GEOM::GEOM_Object_ptr theCheckShape,
2408                                            GEOM::GEOM_Object_ptr theShape,
2409                                            CORBA::Short theShapeType,
2410                                            GEOM::shape_state theState)
2411 {
2412   beginService( " GEOM_Superv_i::GetShapesOnShapeAsCompound" );
2413   MESSAGE("GEOM_Superv_i::GetShapesOnShapeAsCompound");
2414   getShapesOp();
2415   GEOM::GEOM_Object_ptr anObj =
2416     myShapesOp->GetShapesOnShapeAsCompound(theCheckShape, theShape, theShapeType, theState);
2417   endService( " GEOM_Superv_i::GetShapesOnShapeAsCompound" );
2418   return anObj;
2419 }
2420
2421
2422 //=============================== BlocksOperations ============================
2423 //=============================================================================
2424 //  MakeQuad4Vertices:
2425 //=============================================================================
2426 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeQuad4Vertices (GEOM::GEOM_Object_ptr thePnt1,
2427                                                         GEOM::GEOM_Object_ptr thePnt2,
2428                                                         GEOM::GEOM_Object_ptr thePnt3,
2429                                                         GEOM::GEOM_Object_ptr thePnt4)
2430 {
2431   beginService( " GEOM_Superv_i::MakeQuad4Vertices" );
2432   MESSAGE("GEOM_Superv_i::MakeQuad4Vertices");
2433   getBlocksOp();
2434   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeQuad4Vertices(thePnt1, thePnt2, thePnt3, thePnt4);
2435   endService( " GEOM_Superv_i::MakeQuad4Vertices" );
2436   return anObj;
2437 }
2438
2439 //=============================================================================
2440 //  MakeQuad:
2441 //=============================================================================
2442 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeQuad (GEOM::GEOM_Object_ptr theEdge1,
2443                                                GEOM::GEOM_Object_ptr theEdge2,
2444                                                GEOM::GEOM_Object_ptr theEdge3,
2445                                                GEOM::GEOM_Object_ptr theEdge4)
2446 {
2447   beginService( " GEOM_Superv_i::MakeQuad" );
2448   MESSAGE("GEOM_Superv_i::MakeQuad");
2449   getBlocksOp();
2450   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeQuad(theEdge1, theEdge2, theEdge3, theEdge4);
2451   endService( " GEOM_Superv_i::MakeQuad" );
2452   return anObj;
2453 }
2454
2455 //=============================================================================
2456 //  MakeQuad2Edges:
2457 //=============================================================================
2458 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeQuad2Edges (GEOM::GEOM_Object_ptr theEdge1,
2459                                                      GEOM::GEOM_Object_ptr theEdge2)
2460 {
2461   beginService( " GEOM_Superv_i::MakeQuad2Edges" );
2462   MESSAGE("GEOM_Superv_i::MakeQuad2Edges");
2463   getBlocksOp();
2464   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeQuad2Edges(theEdge1, theEdge2);
2465   endService( " GEOM_Superv_i::MakeQuad2Edges" );
2466   return anObj;
2467 }
2468
2469 //=============================================================================
2470 //  MakeHexa:
2471 //=============================================================================
2472 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeHexa (GEOM::GEOM_Object_ptr theFace1,
2473                                                GEOM::GEOM_Object_ptr theFace2,
2474                                                GEOM::GEOM_Object_ptr theFace3,
2475                                                GEOM::GEOM_Object_ptr theFace4,
2476                                                GEOM::GEOM_Object_ptr theFace5,
2477                                                GEOM::GEOM_Object_ptr theFace6)
2478 {
2479   beginService( " GEOM_Superv_i::MakeHexa" );
2480   MESSAGE("GEOM_Superv_i::MakeHexa");
2481   getBlocksOp();
2482   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeHexa(theFace1, theFace2, theFace3, theFace4, theFace5, theFace6);
2483   endService( " GEOM_Superv_i::MakeHexa" );
2484   return anObj;
2485 }
2486
2487 //=============================================================================
2488 //  MakeHexa2Faces:
2489 //=============================================================================
2490 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeHexa2Faces (GEOM::GEOM_Object_ptr theFace1,
2491                                                      GEOM::GEOM_Object_ptr theFace2)
2492 {
2493   beginService( " GEOM_Superv_i::MakeHexa2Faces" );
2494   MESSAGE("GEOM_Superv_i::MakeHexa2Faces");
2495   getBlocksOp();
2496   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeHexa2Faces(theFace1, theFace2);
2497   endService( " GEOM_Superv_i::MakeHexa2Faces" );
2498   return anObj;
2499 }
2500
2501 //=============================================================================
2502 //  GetPoint:
2503 //=============================================================================
2504 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetPoint (GEOM::GEOM_Object_ptr theShape,
2505                                                CORBA::Double   theX,
2506                                                CORBA::Double   theY,
2507                                                CORBA::Double   theZ,
2508                                                CORBA::Double   theEpsilon)
2509 {
2510   beginService( " GEOM_Superv_i::GetPoint" );
2511   MESSAGE("GEOM_Superv_i::GetPoint");
2512   getBlocksOp();
2513   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetPoint(theShape, theX, theY, theZ, theEpsilon);
2514   endService( " GEOM_Superv_i::GetPoint" );
2515   return anObj;
2516 }
2517
2518 //=============================================================================
2519 //  GetEdge:
2520 //=============================================================================
2521 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetEdge (GEOM::GEOM_Object_ptr theShape,
2522                                               GEOM::GEOM_Object_ptr thePoint1,
2523                                               GEOM::GEOM_Object_ptr thePoint2)
2524 {
2525   beginService( " GEOM_Superv_i::GetEdge" );
2526   MESSAGE("GEOM_Superv_i::GetEdge");
2527   getBlocksOp();
2528   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetEdge(theShape, thePoint1, thePoint2);
2529   endService( " GEOM_Superv_i::GetEdge" );
2530   return anObj;
2531 }
2532
2533 //=============================================================================
2534 //  GetEdgeNearPoint:
2535 //=============================================================================
2536 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetEdgeNearPoint (GEOM::GEOM_Object_ptr theShape,
2537                                                        GEOM::GEOM_Object_ptr thePoint)
2538 {
2539   beginService( " GEOM_Superv_i::GetEdgeNearPoint" );
2540   MESSAGE("GEOM_Superv_i::GetEdgeNearPoint");
2541   getBlocksOp();
2542   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetEdgeNearPoint(theShape, thePoint);
2543   endService( " GEOM_Superv_i::GetEdgeNearPoint" );
2544   return anObj;
2545 }
2546
2547 //=============================================================================
2548 //  GetFaceByPoints:
2549 //=============================================================================
2550 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceByPoints (GEOM::GEOM_Object_ptr theShape,
2551                                                       GEOM::GEOM_Object_ptr thePoint1,
2552                                                       GEOM::GEOM_Object_ptr thePoint2,
2553                                                       GEOM::GEOM_Object_ptr thePoint3,
2554                                                       GEOM::GEOM_Object_ptr thePoint4)
2555 {
2556   beginService( " GEOM_Superv_i::GetFaceByPoints" );
2557   MESSAGE("GEOM_Superv_i::GetFaceByPoints");
2558   getBlocksOp();
2559   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetFaceByPoints(theShape, thePoint1, thePoint2, thePoint3, thePoint4);
2560   endService( " GEOM_Superv_i::GetFaceByPoints" );
2561   return anObj;
2562 }
2563
2564 //=============================================================================
2565 //  GetFaceByEdges:
2566 //=============================================================================
2567 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceByEdges (GEOM::GEOM_Object_ptr theShape,
2568                                                      GEOM::GEOM_Object_ptr theEdge1,
2569                                                      GEOM::GEOM_Object_ptr theEdge2)
2570 {
2571   beginService( " GEOM_Superv_i::GetFaceByEdges" );
2572   MESSAGE("GEOM_Superv_i::GetFaceByEdges");
2573   getBlocksOp();
2574   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetFaceByEdges(theShape, theEdge1, theEdge2);
2575   endService( " GEOM_Superv_i::GetFaceByEdges" );
2576   return anObj;
2577 }
2578
2579 //=============================================================================
2580 //  GetOppositeFace:
2581 //=============================================================================
2582 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetOppositeFace (GEOM::GEOM_Object_ptr theBlock,
2583                                                       GEOM::GEOM_Object_ptr theFace)
2584 {
2585   beginService( " GEOM_Superv_i::GetOppositeFace" );
2586   MESSAGE("GEOM_Superv_i::GetOppositeFace");
2587   getBlocksOp();
2588   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetOppositeFace(theBlock, theFace);
2589   endService( " GEOM_Superv_i::GetOppositeFace" );
2590   return anObj;
2591 }
2592
2593 //=============================================================================
2594 //  GetFaceNearPoint:
2595 //=============================================================================
2596 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceNearPoint (GEOM::GEOM_Object_ptr theShape,
2597                                                        GEOM::GEOM_Object_ptr thePoint)
2598 {
2599   beginService( " GEOM_Superv_i::GetFaceNearPoint" );
2600   MESSAGE("GEOM_Superv_i::GetFaceNearPoint");
2601   getBlocksOp();
2602   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetFaceNearPoint(theShape, thePoint);
2603   endService( " GEOM_Superv_i::GetFaceNearPoint" );
2604   return anObj;
2605 }
2606
2607 //=============================================================================
2608 //  GetFaceByNormale:
2609 //=============================================================================
2610 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceByNormale (GEOM::GEOM_Object_ptr theBlock,
2611                                                        GEOM::GEOM_Object_ptr theVector)
2612 {
2613   beginService( " GEOM_Superv_i::GetFaceByNormale" );
2614   MESSAGE("GEOM_Superv_i::GetFaceByNormale");
2615   getBlocksOp();
2616   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetFaceByNormale(theBlock, theVector);
2617   endService( " GEOM_Superv_i::GetFaceByNormale" );
2618   return anObj;
2619 }
2620
2621 //=============================================================================
2622 //  IsCompoundOfBlocks:
2623 //=============================================================================
2624 CORBA::Boolean GEOM_Superv_i::IsCompoundOfBlocks (GEOM::GEOM_Object_ptr theCompound,
2625                                                   CORBA::Long     theMinNbFaces,
2626                                                   CORBA::Long     theMaxNbFaces,
2627                                                   CORBA::Long&          theNbBlocks)
2628 {
2629   beginService( " GEOM_Superv_i::IsCompoundOfBlocks" );
2630   MESSAGE("GEOM_Superv_i::IsCompoundOfBlocks");
2631   getBlocksOp();
2632   CORBA::Boolean aRes = myBlocksOp->IsCompoundOfBlocks(theCompound, theMinNbFaces, theMaxNbFaces, theNbBlocks);
2633   endService( " GEOM_Superv_i::IsCompoundOfBlocks" );
2634   return aRes;
2635 }
2636
2637 //=============================================================================
2638 //  CheckCompoundOfBlocks:
2639 //=============================================================================
2640 CORBA::Boolean GEOM_Superv_i::CheckCompoundOfBlocks
2641 (GEOM::GEOM_Object_ptr theCompound,
2642  GEOM::GEOM_IBlocksOperations::BCErrors_out theErrors)
2643 {
2644   beginService( " GEOM_Superv_i::CheckCompoundOfBlocks" );
2645   MESSAGE("GEOM_Superv_i::CheckCompoundOfBlocks");
2646   getBlocksOp();
2647   CORBA::Boolean aRes = myBlocksOp->CheckCompoundOfBlocks(theCompound, theErrors);
2648   endService( " GEOM_Superv_i::CheckCompoundOfBlocks" );
2649   return aRes;
2650 }
2651
2652 //=============================================================================
2653 //  PrintBCErrors:
2654 //=============================================================================
2655 char* GEOM_Superv_i::PrintBCErrors (GEOM::GEOM_Object_ptr theCompound,
2656                                     const GEOM::GEOM_IBlocksOperations::BCErrors& theErrors)
2657 {
2658   beginService( " GEOM_Superv_i::PrintBCErrors" );
2659   MESSAGE("GEOM_Superv_i::PrintBCErrors");
2660   getBlocksOp();
2661   char* anErrors = myBlocksOp->PrintBCErrors(theCompound, theErrors);
2662   endService( " GEOM_Superv_i::PrintBCErrors" );
2663   return anErrors;
2664 }
2665
2666 //=============================================================================
2667 //  ExplodeCompoundOfBlocks:
2668 //=============================================================================
2669 GEOM::GEOM_List_ptr GEOM_Superv_i::ExplodeCompoundOfBlocks (GEOM::GEOM_Object_ptr theCompound,
2670                                                                 CORBA::Long     theMinNbFaces,
2671                                                                 CORBA::Long     theMaxNbFaces)
2672 {
2673   beginService( " GEOM_Superv_i::ExplodeCompoundOfBlocks" );
2674   MESSAGE("GEOM_Superv_i::ExplodeCompoundOfBlocks");
2675   getBlocksOp();
2676   GEOM::ListOfGO* aBlocks = myBlocksOp->ExplodeCompoundOfBlocks(theCompound, theMinNbFaces, theMaxNbFaces);
2677   GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aBlocks));
2678   endService( " GEOM_Superv_i::ExplodeCompoundOfBlocks" );
2679   return aListPtr->_this();
2680 }
2681
2682 //=============================================================================
2683 //  GetBlockNearPoint:
2684 //=============================================================================
2685 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetBlockNearPoint (GEOM::GEOM_Object_ptr theCompound,
2686                                                         GEOM::GEOM_Object_ptr thePoint)
2687 {
2688   beginService( " GEOM_Superv_i::GetBlockNearPoint" );
2689   MESSAGE("GEOM_Superv_i::GetBlockNearPoint");
2690   getBlocksOp();
2691   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetBlockNearPoint(theCompound, thePoint);
2692   endService( " GEOM_Superv_i::GetBlockNearPoint" );
2693   return anObj;
2694 }
2695
2696 //=============================================================================
2697 //  GetBlockByParts:
2698 //=============================================================================
2699 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetBlockByParts (GEOM::GEOM_Object_ptr theCompound,
2700                                                       GEOM::GEOM_List_ptr theParts)
2701 {
2702   beginService( " GEOM_Superv_i::GetBlockByParts" );
2703   MESSAGE("GEOM_Superv_i::GetBlockByParts");
2704   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP =
2705       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theParts, myPOA).in())) {
2706     getBlocksOp();
2707     GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetBlockByParts(theCompound, aListImplP->GetList());
2708     endService( " GEOM_Superv_i::GetBlockByParts" );
2709     return anObj;
2710   }
2711   endService( " GEOM_Superv_i::GetBlockByParts" );
2712   return NULL;
2713 }
2714
2715 //=============================================================================
2716 //  GetBlocksByParts:
2717 //=============================================================================
2718 GEOM::GEOM_List_ptr GEOM_Superv_i::GetBlocksByParts (GEOM::GEOM_Object_ptr theCompound,
2719                                                          GEOM::GEOM_List_ptr theParts)
2720 {
2721   beginService( " GEOM_Superv_i::GetBlocksByParts" );
2722   MESSAGE("GEOM_Superv_i::GetBlocksByParts");
2723   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP =
2724       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theParts, myPOA).in())) {
2725     getBlocksOp();
2726
2727     GEOM::ListOfGO* aBlocks = myBlocksOp->GetBlocksByParts(theCompound, aListImplP->GetList());
2728     GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aBlocks));
2729     endService( " GEOM_Superv_i::GetBlocksByParts" );
2730     return aListPtr->_this();
2731   }
2732   endService( " GEOM_Superv_i::GetBlocksByParts" );
2733   return NULL;
2734 }
2735
2736 //=============================================================================
2737 //  MakeMultiTransformation1D:
2738 //=============================================================================
2739 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeMultiTransformation1D (GEOM::GEOM_Object_ptr theBlock,
2740                                                                 CORBA::Long     theDirFace1,
2741                                                                 CORBA::Long     theDirFace2,
2742                                                                 CORBA::Long     theNbTimes)
2743 {
2744   beginService( " GEOM_Superv_i::MakeMultiTransformation1D" );
2745   MESSAGE("GEOM_Superv_i::MakeMultiTransformation1D");
2746   getBlocksOp();
2747   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeMultiTransformation1D(theBlock, theDirFace1, theDirFace2, theNbTimes);
2748   endService( " GEOM_Superv_i::MakeMultiTransformation1D" );
2749   return anObj;
2750 }
2751
2752 //=============================================================================
2753 //  MakeMultiTransformation2D:
2754 //=============================================================================
2755 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeMultiTransformation2D
2756 (GEOM::GEOM_Object_ptr theBlock,
2757  CORBA::Long     theDirFace1U,
2758  CORBA::Long     theDirFace2U,
2759  CORBA::Long     theNbTimesU,
2760  CORBA::Long     theDirFace1V,
2761  CORBA::Long     theDirFace2V,
2762  CORBA::Long     theNbTimesV)
2763 {
2764   beginService( " GEOM_Superv_i::MakeMultiTransformation2D" );
2765   MESSAGE("GEOM_Superv_i::MakeMultiTransformation2D");
2766   getBlocksOp();
2767   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeMultiTransformation2D(theBlock,
2768                                                                       theDirFace1U, theDirFace2U, theNbTimesU,
2769                                                                       theDirFace1V, theDirFace2V, theNbTimesV);
2770   endService( " GEOM_Superv_i::MakeMultiTransformation2D" );
2771   return anObj;
2772 }
2773
2774 //=============================== CurvesOperations ============================
2775 //=============================================================================
2776 //  MakeCirclePntVecR:
2777 //=============================================================================
2778 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCirclePntVecR (GEOM::GEOM_Object_ptr theCenter,
2779                                                         GEOM::GEOM_Object_ptr theVector,
2780                                                         CORBA::Double theR)
2781 {
2782   beginService( " GEOM_Superv_i::MakeCirclePntVecR" );
2783   MESSAGE("GEOM_Superv_i::MakeCirclePntVecR");
2784   getCurvesOp();
2785   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeCirclePntVecR(theCenter, theVector, theR);
2786   endService( " GEOM_Superv_i::MakeCirclePntVecR" );
2787   return anObj;
2788 }
2789
2790 //=============================================================================
2791 //  MakeCircleThreePnt:
2792 //=============================================================================
2793 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCircleThreePnt (GEOM::GEOM_Object_ptr thePnt1,
2794                                                          GEOM::GEOM_Object_ptr thePnt2,
2795                                                          GEOM::GEOM_Object_ptr thePnt3)
2796 {
2797   beginService( " GEOM_Superv_i::MakeCircleThreePnt" );
2798   MESSAGE("GEOM_Superv_i::MakeCircleThreePnt");
2799   getCurvesOp();
2800   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeCircleThreePnt(thePnt1, thePnt2, thePnt3);
2801   endService( " GEOM_Superv_i::MakeCircleThreePnt" );
2802   return anObj;
2803 }
2804 //=============================================================================
2805 //  MakeCircleCenter2Pnt:
2806 //=============================================================================
2807 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCircleCenter2Pnt (GEOM::GEOM_Object_ptr thePnt1,
2808                                                              GEOM::GEOM_Object_ptr thePnt2,
2809                                                            GEOM::GEOM_Object_ptr thePnt3)
2810 {
2811   beginService( " GEOM_Superv_i::MakeCircleCenter2Pnt" );
2812   MESSAGE("GEOM_Superv_i::MakeCircleCenter2Pnt");
2813   getCurvesOp();
2814   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeCircleCenter2Pnt(thePnt1, thePnt2, thePnt3);
2815   endService( " GEOM_Superv_i::MakeCircleCenter2Pnt" );
2816   return anObj;
2817 }
2818
2819 //=============================================================================
2820 //  MakeEllipse:
2821 //=============================================================================
2822 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeEllipse (GEOM::GEOM_Object_ptr theCenter,
2823                                                   GEOM::GEOM_Object_ptr theVector,
2824                                                   CORBA::Double theRMajor,
2825                                                   CORBA::Double theRMinor)
2826 {
2827   beginService( " GEOM_Superv_i::MakeEllipse" );
2828   MESSAGE("GEOM_Superv_i::MakeEllipse");
2829   getCurvesOp();
2830   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeEllipse(theCenter, theVector, theRMajor, theRMinor);
2831   endService( " GEOM_Superv_i::MakeEllipse" );
2832   return anObj;
2833 }
2834
2835 //=============================================================================
2836 //  MakeEllipseVec:
2837 //=============================================================================
2838 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeEllipseVec (GEOM::GEOM_Object_ptr theCenter,
2839                                                      GEOM::GEOM_Object_ptr theVector,
2840                                                      CORBA::Double theRMajor,
2841                                                      CORBA::Double theRMinor,
2842                                                      GEOM::GEOM_Object_ptr theVectorMajor)
2843 {
2844   beginService( " GEOM_Superv_i::MakeEllipseVec" );
2845   MESSAGE("GEOM_Superv_i::MakeEllipseVec");
2846   getCurvesOp();
2847   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeEllipseVec(theCenter, theVector, theRMajor, theRMinor, theVectorMajor);
2848   endService( " GEOM_Superv_i::MakeEllipseVec" );
2849   return anObj;
2850 }
2851
2852 //=============================================================================
2853 //  MakeArc:
2854 //=============================================================================
2855 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArc (GEOM::GEOM_Object_ptr thePnt1,
2856                                               GEOM::GEOM_Object_ptr thePnt2,
2857                                               GEOM::GEOM_Object_ptr thePnt3)
2858 {
2859   beginService( " GEOM_Superv_i::MakeArc" );
2860   MESSAGE("GEOM_Superv_i::MakeArc");
2861   getCurvesOp();
2862   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeArc(thePnt1, thePnt2, thePnt3);
2863   endService( " GEOM_Superv_i::MakeArc" );
2864   return anObj;
2865 }
2866
2867 //=============================================================================
2868 //  MakeArcCenter:
2869 //=============================================================================
2870 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArcCenter (GEOM::GEOM_Object_ptr theCenter,
2871                                                     GEOM::GEOM_Object_ptr thePnt1,
2872                                                     GEOM::GEOM_Object_ptr thePnt2,
2873                                                     CORBA::Boolean theSense)
2874 {
2875   beginService( " GEOM_Superv_i::MakeArcCenter" );
2876   MESSAGE("GEOM_Superv_i::MakeArcCenter");
2877   getCurvesOp();
2878   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeArcCenter(theCenter, thePnt1, thePnt2,theSense);
2879   endService( " GEOM_Superv_i::MakeArcCenter" );
2880   return anObj;
2881 }
2882
2883 //=============================================================================
2884 //  MakeArcOfEllipse:
2885 //=============================================================================
2886 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArcOfEllipse (GEOM::GEOM_Object_ptr thePnt1,
2887                                                        GEOM::GEOM_Object_ptr thePnt2,
2888                                                        GEOM::GEOM_Object_ptr thePnt3)
2889 {
2890   beginService( " GEOM_Superv_i::MakeArcOfEllipse" );
2891   MESSAGE("GEOM_Superv_i::MakeArcOfEllipse");
2892   getCurvesOp();
2893   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeArcOfEllipse(thePnt1, thePnt2, thePnt3);
2894   endService( " GEOM_Superv_i::MakeArcOfEllipse" );
2895   return anObj;
2896 }
2897
2898 //=============================================================================
2899 //  MakePolyline:
2900 //=============================================================================
2901 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePolyline (GEOM::GEOM_List_ptr thePoints,
2902                                                    CORBA::Boolean      theIsClosed)
2903 {
2904   beginService( " GEOM_Superv_i::MakePolyline" );
2905   MESSAGE("GEOM_Superv_i::MakePolyline");
2906   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP =
2907       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(thePoints, myPOA).in())) {
2908     getCurvesOp();
2909     GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakePolyline(aListImplP->GetList(), theIsClosed);
2910     endService( " GEOM_Superv_i::MakePolyline" );
2911     return anObj;
2912   }
2913   endService( " GEOM_Superv_i::MakePolyline" );
2914   return NULL;
2915 }
2916
2917 //=============================================================================
2918 //  MakeSplineBezier:
2919 //=============================================================================
2920 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSplineBezier (GEOM::GEOM_List_ptr thePoints,
2921                                                        CORBA::Boolean      theIsClosed)
2922 {
2923   beginService( " GEOM_Superv_i::MakeSplineBezier" );
2924   MESSAGE("GEOM_Superv_i::MakeSplineBezier");
2925   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP =
2926       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(thePoints, myPOA).in())) {
2927     getCurvesOp();
2928     GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeSplineBezier(aListImplP->GetList(), theIsClosed);
2929     endService( " GEOM_Superv_i::MakeSplineBezier" );
2930     return anObj;
2931   }
2932   endService( " GEOM_Superv_i::MakeSplineBezier" );
2933   return NULL;
2934 }
2935
2936 //=============================================================================
2937 //  MakeSplineInterpolation:
2938 //=============================================================================
2939 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSplineInterpolation (GEOM::GEOM_List_ptr thePoints,
2940                                                               CORBA::Boolean      theIsClosed,
2941                                                               CORBA::Boolean      theDoReordering)
2942 {
2943   beginService( " GEOM_Superv_i::MakeSplineInterpolation" );
2944   MESSAGE("GEOM_Superv_i::MakeSplineInterpolation");
2945   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP =
2946       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(thePoints, myPOA).in())) {
2947     getCurvesOp();
2948     GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeSplineInterpolation(aListImplP->GetList(), theIsClosed, theDoReordering);
2949     endService( " GEOM_Superv_i::MakeSplineInterpolation" );
2950     return anObj;
2951   }
2952   endService( " GEOM_Superv_i::MakeSplineInterpolation" );
2953   return NULL;
2954 }
2955
2956 //=============================================================================
2957 //  MakeSketcher:
2958 //=============================================================================
2959 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSketcher (const char* theCommand,
2960                                                    GEOM::GEOM_List_ptr theWorkingPlane)
2961 {
2962   beginService( " GEOM_Superv_i::MakeSketcher" );
2963   MESSAGE("GEOM_Superv_i::MakeSketcher");
2964   if (GEOM_List_i<GEOM::ListOfDouble>* aListImplWP =
2965       dynamic_cast<GEOM_List_i<GEOM::ListOfDouble>*>(GetServant(theWorkingPlane, myPOA).in())) {
2966     getCurvesOp();
2967     GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeSketcher(theCommand, aListImplWP->GetList());
2968     endService( " GEOM_Superv_i::MakeSketcher" );
2969     return anObj;
2970   }
2971   endService( " GEOM_Superv_i::MakeSketcher" );
2972   return NULL;
2973 }
2974
2975 //=============================================================================
2976 //  Make3DSketcher:
2977 //=============================================================================
2978 GEOM::GEOM_Object_ptr GEOM_Superv_i::Make3DSketcher ( GEOM::GEOM_List_ptr theCoordinates)
2979 {
2980   beginService( " GEOM_Superv_i::Make3DSketcher" );
2981   MESSAGE("GEOM_Superv_i::Make3DSketcher");
2982   if (GEOM_List_i<GEOM::ListOfDouble>* aListImpl =
2983       dynamic_cast<GEOM_List_i<GEOM::ListOfDouble>*>(GetServant(theCoordinates, myPOA).in())) {
2984     getCurvesOp();
2985     GEOM::GEOM_Object_ptr anObj = myCurvesOp->Make3DSketcher(aListImpl->GetList());
2986     endService( " GEOM_Superv_i::Make3DSketcher" );
2987     return anObj;
2988   }
2989   endService( " GEOM_Superv_i::Make3DSketcher" );
2990   return NULL;
2991 }
2992
2993 //=============================== LocalOperations =============================
2994 //=============================================================================
2995 //  MakeFilletAll:
2996 //=============================================================================
2997 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletAll (GEOM::GEOM_Object_ptr theShape,
2998                                                     CORBA::Double theR)
2999 {
3000   beginService( " GEOM_Superv_i::MakeFilletAll" );
3001   MESSAGE("GEOM_Superv_i::MakeFilletAllMakeSketcher");
3002   getLocalOp();
3003   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletAll(theShape, theR);
3004   endService( " GEOM_Superv_i::MakeFilletAll" );
3005   return anObj;
3006 }
3007
3008 //=============================================================================
3009 //  MakeFilletEdges:
3010 //=============================================================================
3011 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletEdges (GEOM::GEOM_Object_ptr theShape,
3012                                                       CORBA::Double theR,
3013                                                       GEOM::GEOM_List_ptr theEdges)
3014 {
3015   beginService( " GEOM_Superv_i::MakeFilletEdges" );
3016   MESSAGE("GEOM_Superv_i::MakeFilletEdges");
3017   if (GEOM_List_i<GEOM::ListOfLong>* aListImplE =
3018       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theEdges, myPOA).in())) {
3019     getLocalOp();
3020     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletEdges(theShape, theR, aListImplE->GetList());
3021     endService( " GEOM_Superv_i::MakeFilletEdges" );
3022     return anObj;
3023   }
3024   endService( " GEOM_Superv_i::MakeFilletEdges" );
3025   return NULL;
3026 }
3027
3028 //=============================================================================
3029 //  MakeFilletEdges R1 R2:
3030 //=============================================================================
3031 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletEdgesR1R2 (GEOM::GEOM_Object_ptr theShape,
3032                                                           CORBA::Double theR1,
3033                                                           CORBA::Double theR2,
3034                                                           GEOM::GEOM_List_ptr theEdges)
3035 {
3036   beginService( " GEOM_Superv_i::MakeFilletEdgesR1R2" );
3037   MESSAGE("GEOM_Superv_i::MakeFilletEdgesR1R2");
3038   if (GEOM_List_i<GEOM::ListOfLong>* aListImplE =
3039       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theEdges, myPOA).in())) {
3040     getLocalOp();
3041     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletEdgesR1R2(theShape, theR1,
3042                                                                  theR2, aListImplE->GetList());
3043     endService( " GEOM_Superv_i::MakeFilletEdgesR1R2" );
3044     return anObj;
3045   }
3046   endService( " GEOM_Superv_i::MakeFilletEdgesR1R2" );
3047   return NULL;
3048 }
3049
3050 //=============================================================================
3051 //  MakeFilletFaces:
3052 //=============================================================================
3053 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletFaces (GEOM::GEOM_Object_ptr theShape,
3054                                                       CORBA::Double theR,
3055                                                       GEOM::GEOM_List_ptr theFaces)
3056 {
3057   beginService( " GEOM_Superv_i::MakeFilletFaces" );
3058   MESSAGE("GEOM_Superv_i::MakeFilletFaces");
3059   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF =
3060       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theFaces, myPOA).in())) {
3061     getLocalOp();
3062     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletFaces(theShape, theR, aListImplF->GetList());
3063     endService( " GEOM_Superv_i::MakeFilletFaces" );
3064     return anObj;
3065   }
3066   endService( " GEOM_Superv_i::MakeFilletFaces" );
3067   return NULL;
3068 }
3069
3070 //=============================================================================
3071 //  MakeFilletFaces R1 R2:
3072 //=============================================================================
3073 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletFacesR1R2 (GEOM::GEOM_Object_ptr theShape,
3074                                                           CORBA::Double theR1,
3075                                                           CORBA::Double theR2,
3076                                                           GEOM::GEOM_List_ptr theFaces)
3077 {
3078   beginService( " GEOM_Superv_i::MakeFilletFacesR1R2" );
3079   MESSAGE("GEOM_Superv_i::MakeFilletFacesR1R2");
3080   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF =
3081       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theFaces, myPOA).in())) {
3082     getLocalOp();
3083     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletFacesR1R2(theShape, theR1, theR2,
3084                                                                  aListImplF->GetList());
3085     endService( " GEOM_Superv_i::MakeFilletFacesR1R2" );
3086     return anObj;
3087   }
3088   endService( " GEOM_Superv_i::MakeFilletFacesR1R2" );
3089   return NULL;
3090 }
3091
3092 //=============================================================================
3093 //  MakeFillet2D:
3094 //=============================================================================
3095 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFillet2D (GEOM::GEOM_Object_ptr theShape,
3096                                                    CORBA::Double theR,
3097                                                    GEOM::GEOM_List_ptr theVertexes)
3098 {
3099   beginService( " GEOM_Superv_i::MakeFillet2D" );
3100   MESSAGE("GEOM_Superv_i::MakeFillet2D");
3101   if (GEOM_List_i<GEOM::ListOfLong>* aListImplV =
3102       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theVertexes, myPOA).in())) {
3103     getLocalOp();
3104     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFillet2D(theShape, theR, aListImplV->GetList());
3105     endService( " GEOM_Superv_i::MakeFillet2D" );
3106     return anObj;
3107   }
3108   endService( " GEOM_Superv_i::MakeFillet2D" );
3109   return NULL;
3110 }
3111
3112 //=============================================================================
3113 //  MakeFillet1D:
3114 //=============================================================================
3115 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFillet1D (GEOM::GEOM_Object_ptr theShape,
3116                                                    CORBA::Double theR,
3117                                                    GEOM::GEOM_List_ptr theVertexes,
3118                                                    CORBA::Boolean doIgnoreSecantVertices)
3119 {
3120   beginService( " GEOM_Superv_i::MakeFillet1D" );
3121   MESSAGE("GEOM_Superv_i::MakeFillet1D");
3122   if (GEOM_List_i<GEOM::ListOfLong>* aListImplV =
3123       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theVertexes, myPOA).in())) {
3124     getLocalOp();
3125     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFillet1D
3126       (theShape, theR, aListImplV->GetList(), doIgnoreSecantVertices);
3127     endService( " GEOM_Superv_i::MakeFillet1D" );
3128     return anObj;
3129   }
3130   endService( " GEOM_Superv_i::MakeFillet1D" );
3131   return NULL;
3132 }
3133
3134 //=============================================================================
3135 //  MakeChamferAll:
3136 //=============================================================================
3137 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferAll (GEOM::GEOM_Object_ptr theShape, CORBA::Double theD)
3138 {
3139   beginService( " GEOM_Superv_i::MakeChamferAll" );
3140   MESSAGE("GEOM_Superv_i::MakeChamferAll");
3141   getLocalOp();
3142   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferAll(theShape, theD);
3143   endService( " GEOM_Superv_i::MakeChamferAll" );
3144   return anObj;
3145 }
3146
3147 //=============================================================================
3148 //  MakeChamferEdge:
3149 //=============================================================================
3150 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdge (GEOM::GEOM_Object_ptr theShape,
3151                                                       CORBA::Double theD1, CORBA::Double theD2,
3152                                                       CORBA::Long theFace1, CORBA::Long theFace2)
3153 {
3154   beginService( " GEOM_Superv_i::MakeChamferEdge" );
3155   MESSAGE("GEOM_Superv_i::MakeChamferEdge");
3156   getLocalOp();
3157   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferEdge(theShape, theD1, theD2, theFace1, theFace2);
3158   endService( " GEOM_Superv_i::MakeChamferEdge" );
3159   return anObj;
3160 }
3161
3162 //=============================================================================
3163 //  MakeChamferEdgeAD:
3164 //=============================================================================
3165 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdgeAD (GEOM::GEOM_Object_ptr theShape,
3166                                                         CORBA::Double theD, CORBA::Double theAngle,
3167                                                         CORBA::Long theFace1, CORBA::Long theFace2)
3168 {
3169   beginService( " GEOM_Superv_i::MakeChamferEdgeAD" );
3170   MESSAGE("GEOM_Superv_i::MakeChamferEdgeAD");
3171   getLocalOp();
3172   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferEdgeAD(theShape, theD, theAngle, theFace1, theFace2);
3173   endService( " GEOM_Superv_i::MakeChamferEdgeAD" );
3174   return anObj;
3175 }
3176
3177 //=============================================================================
3178 //  MakeChamferFaces:
3179 //=============================================================================
3180 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferFaces (GEOM::GEOM_Object_ptr theShape,
3181                                                        CORBA::Double theD1, CORBA::Double theD2,
3182                                                        GEOM::GEOM_List_ptr theFaces)
3183 {
3184   beginService( " GEOM_Superv_i::MakeChamferFaces" );
3185   MESSAGE("GEOM_Superv_i::MakeChamferFaces");
3186   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF =
3187       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theFaces, myPOA).in())) {
3188     getLocalOp();
3189     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferFaces(theShape, theD1, theD2, aListImplF->GetList());
3190     endService( " GEOM_Superv_i::MakeChamferFaces" );
3191     return anObj;
3192   }
3193   endService( " GEOM_Superv_i::MakeChamferFaces" );
3194   return NULL;
3195 }
3196
3197 //=============================================================================
3198 //  MakeChamferFacesAD:
3199 //=============================================================================
3200 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferFacesAD (GEOM::GEOM_Object_ptr theShape,
3201                                                          CORBA::Double theD, CORBA::Double theAngle,
3202                                                          GEOM::GEOM_List_ptr theFaces)
3203 {
3204   beginService( " GEOM_Superv_i::MakeChamferFacesAD" );
3205   MESSAGE("GEOM_Superv_i::MakeChamferFacesAD");
3206   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF =
3207       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theFaces, myPOA).in())) {
3208     getLocalOp();
3209     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferFacesAD(theShape, theD, theAngle, aListImplF->GetList());
3210     endService( " GEOM_Superv_i::MakeChamferFacesAD" );
3211     return anObj;
3212   }
3213   endService( " GEOM_Superv_i::MakeChamferFacesAD" );
3214   return NULL;
3215 }
3216
3217 //=============================================================================
3218 //  MakeChamferEdges:
3219 //=============================================================================
3220 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdges (GEOM::GEOM_Object_ptr theShape,
3221                                                        CORBA::Double theD1, CORBA::Double theD2,
3222                                                        GEOM::GEOM_List_ptr theEdges)
3223 {
3224   beginService( " GEOM_Superv_i::MakeChamferEdges" );
3225   MESSAGE("GEOM_Superv_i::MakeChamferEdges");
3226   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF =
3227       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theEdges, myPOA).in())) {
3228     getLocalOp();
3229     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferEdges(theShape, theD1, theD2, aListImplF->GetList());
3230     endService( " GEOM_Superv_i::MakeChamferEdges" );
3231     return anObj;
3232   }
3233   endService( " GEOM_Superv_i::MakeChamferEdges" );
3234   return NULL;
3235 }
3236
3237 //=============================================================================
3238 //  MakeChamferEdgesAD:
3239 //=============================================================================
3240 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdgesAD (GEOM::GEOM_Object_ptr theShape,
3241                                                          CORBA::Double theD, CORBA::Double theAngle,
3242                                                          GEOM::GEOM_List_ptr theEdges)
3243 {
3244   beginService( " GEOM_Superv_i::MakeChamferEdgesAD" );
3245   MESSAGE("GEOM_Superv_i::MakeChamferEdgesAD");
3246   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF =
3247       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theEdges, myPOA).in())) {
3248     getLocalOp();
3249     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferEdgesAD(theShape, theD, theAngle, aListImplF->GetList());
3250     endService( " GEOM_Superv_i::MakeChamferEdgesAD" );
3251     return anObj;
3252   }
3253   endService( " GEOM_Superv_i::MakeChamferEdgesAD" );
3254   return NULL;
3255 }
3256
3257 //=============================================================================
3258 //  MakeArchimede:
3259 //=============================================================================
3260 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArchimede (GEOM::GEOM_Object_ptr theShape,
3261                                                     CORBA::Double theWeight,
3262                                                     CORBA::Double theWaterDensity,
3263                                                     CORBA::Double theMeshingDeflection)
3264 {
3265   beginService( " GEOM_Superv_i::MakeArchimede" );
3266   MESSAGE("GEOM_Superv_i::MakeArchimede");
3267   getLocalOp();
3268   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeArchimede(theShape, theWeight, theWaterDensity, theMeshingDeflection);
3269   endService( " GEOM_Superv_i::MakeArchimede" );
3270   return anObj;
3271 }
3272
3273 //=============================================================================
3274 //  GetSubShapeIndexMakeFilletAll:
3275 //=============================================================================
3276 CORBA::Long GEOM_Superv_i::GetSubShapeIndex (GEOM::GEOM_Object_ptr theShape,
3277                                              GEOM::GEOM_Object_ptr theSubShape)
3278 {
3279   beginService( " GEOM_Superv_i::GetSubShapeIndex" );
3280   MESSAGE("GEOM_Superv_i::GetSubShapeIndexMakeArchimede");
3281   getLocalOp();
3282   CORBA::Long aRes = myLocalOp->GetSubShapeIndex(theShape, theSubShape);
3283   endService( " GEOM_Superv_i::GetSubShapeIndex" );
3284   return aRes;
3285 }
3286
3287 //=============================== GroupOperations =============================
3288 //=============================================================================
3289 //  CreateGroup:
3290 //=============================================================================
3291 GEOM::GEOM_Object_ptr GEOM_Superv_i::CreateGroup (GEOM::GEOM_Object_ptr theMainShape,
3292                                                   CORBA::Long theShapeType)
3293 {
3294   beginService( " GEOM_Superv_i::CreateGroup" );
3295   MESSAGE("GEOM_Superv_i::CreateGroup");
3296   getGroupOp();
3297   GEOM::GEOM_Object_ptr anObj = myGroupOp->CreateGroup(theMainShape, theShapeType);
3298   endService( " GEOM_Superv_i::CreateGroup" );
3299   return anObj;
3300 }
3301
3302 //=============================================================================
3303 //  AddObject:
3304 //=============================================================================
3305 void GEOM_Superv_i::AddObject (GEOM::GEOM_Object_ptr theGroup,
3306                                CORBA::Long theSubShapeId)
3307 {
3308   beginService( " GEOM_Superv_i::AddObject" );
3309   MESSAGE("GEOM_Superv_i::AddObject");
3310   getGroupOp();
3311   myGroupOp->AddObject(theGroup, theSubShapeId);
3312   endService( " GEOM_Superv_i::AddObject" );
3313 }
3314
3315 //=============================================================================
3316 //  RemoveObject:
3317 //=============================================================================
3318 void GEOM_Superv_i::RemoveObject (GEOM::GEOM_Object_ptr theGroup,
3319                                   CORBA::Long theSubShapeId)
3320 {
3321   beginService( " GEOM_Superv_i::RemoveObject" );
3322   MESSAGE("GEOM_Superv_i::RemoveObject");
3323   getGroupOp();
3324   myGroupOp->RemoveObject(theGroup, theSubShapeId);
3325   endService( " GEOM_Superv_i::RemoveObject" );
3326 }
3327
3328 //=============================================================================
3329 //  GetType:
3330 //=============================================================================
3331 CORBA::Long GEOM_Superv_i::GetType (GEOM::GEOM_Object_ptr theGroup)
3332 {
3333   beginService( " GEOM_Superv_i::GetType" );
3334   MESSAGE("GEOM_Superv_i::GetType");
3335   getGroupOp();
3336   CORBA::Long aResult = myGroupOp->GetType(theGroup);
3337   endService( " GEOM_Superv_i::GetType" );
3338   return aResult;
3339 }
3340
3341 //=============================================================================
3342 //  GetMainShape:
3343 //=============================================================================
3344 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetMainShape (GEOM::GEOM_Object_ptr theGroup)
3345 {
3346   beginService( " GEOM_Superv_i::GetMainShape" );
3347   MESSAGE("GEOM_Superv_i::GetMainShape");
3348   getGroupOp();
3349   GEOM::GEOM_Object_ptr anObj = myGroupOp->GetMainShape(theGroup);
3350   endService( " GEOM_Superv_i::GetMainShape" );
3351   return anObj;
3352 }
3353
3354 //=============================================================================
3355 //  GetObjects:
3356 //=============================================================================
3357 GEOM::GEOM_List_ptr GEOM_Superv_i::GetObjects (GEOM::GEOM_Object_ptr theGroup)
3358 {
3359   beginService( " GEOM_Superv_i::GetObjects" );
3360   MESSAGE("GEOM_Superv_i::GetObjects");
3361   getGroupOp();
3362
3363   GEOM::ListOfLong* aList = myGroupOp->GetObjects(theGroup);
3364   GEOM_List_i<GEOM::ListOfLong>* aListPtr = new GEOM_List_i<GEOM::ListOfLong>(*(aList));
3365   MESSAGE(" List of "<<aListPtr->GetList().length()<<" element(s)");
3366   endService( " GEOM_Superv_i::GetObjects" );
3367   return aListPtr->_this();
3368 }
3369
3370 //=============================================================================
3371 //  ExportXAO
3372 //=============================================================================
3373 CORBA::Boolean GEOM_Superv_i::ExportXAO (GEOM::GEOM_Object_ptr shape,
3374                                          const GEOM::ListOfGO& groups, const GEOM::ListOfFields& fields,
3375                                          const char* author, const char* fileName)
3376 {
3377   beginService( " GEOM_Superv_i::ExportXAO" );
3378   MESSAGE("GEOM_Superv_i::ExportXAO");
3379   getInsOp();
3380   CORBA::Boolean isGood = myInsOp->ExportXAO(shape, groups, fields, author, fileName);
3381   endService( " GEOM_Superv_i::ExportXAO" );
3382   return isGood;
3383 }
3384
3385 //=============================================================================
3386 //  ImportXAO
3387 //=============================================================================
3388 CORBA::Boolean GEOM_Superv_i::ImportXAO (const char* fileName, GEOM::GEOM_Object_out shape, 
3389                                          GEOM::ListOfGO_out subShapes, GEOM::ListOfGO_out groups, GEOM::ListOfFields_out fields)
3390 {
3391   return false;
3392 }
3393
3394 //=============================== Advanced Operations =============================
3395 //=============================================================================
3396 //  MakePipeTShape
3397 //=============================================================================
3398 GEOM::GEOM_List_ptr GEOM_Superv_i::MakePipeTShape
3399                     (CORBA::Double theR1, CORBA::Double theW1, CORBA::Double theL1,
3400                      CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2,
3401                      CORBA::Boolean theHexMesh)
3402 {
3403   beginService( " GEOM_Superv_i::MakePipeTShape" );
3404   MESSAGE("GEOM_Superv_i::MakePipeTShape");
3405   getAdvancedOp();
3406
3407   GEOM::ListOfGO* aSeq = myAdvancedOp->MakePipeTShape(theR1, theW1, theL1, theR2, theW2, theL2, theHexMesh);
3408   GEOM_List_i<GEOM::ListOfGO>* aSeqPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aSeq));
3409   MESSAGE(" List of "<<aSeqPtr->GetList().length()<<" element(s)");
3410   endService( " GEOM_Superv_i::MakePipeTShape" );
3411   return aSeqPtr->_this();
3412 }
3413
3414 //=============================================================================
3415 //  MakePipeTShapeWithPosition
3416 //=============================================================================
3417 GEOM::GEOM_List_ptr GEOM_Superv_i::MakePipeTShapeWithPosition
3418                     (CORBA::Double theR1, CORBA::Double theW1, CORBA::Double theL1,
3419                      CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2, CORBA::Boolean theHexMesh,
3420                      GEOM::GEOM_Object_ptr theP1, GEOM::GEOM_Object_ptr theP2, GEOM::GEOM_Object_ptr theP3)
3421 {
3422   beginService( " GEOM_Superv_i::MakePipeTShapeWithPosition" );
3423   MESSAGE("GEOM_Superv_i::MakePipeTShapeWithPosition");
3424   getAdvancedOp();
3425
3426   GEOM::ListOfGO* aSeq = myAdvancedOp->MakePipeTShapeWithPosition(theR1, theW1, theL1, theR2, theW2, theL2, theHexMesh, theP1, theP2, theP3);
3427   GEOM_List_i<GEOM::ListOfGO>* aSeqPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aSeq));
3428   MESSAGE(" List of "<<aSeqPtr->GetList().length()<<" element(s)");
3429   endService( " GEOM_Superv_i::MakePipeTShapeWithPosition" );
3430   return aSeqPtr->_this();
3431 }
3432
3433 //=============================================================================
3434 //  MakePipeTShapeChamfer
3435 //=============================================================================
3436 GEOM::GEOM_List_ptr GEOM_Superv_i::MakePipeTShapeChamfer
3437                     (CORBA::Double theR1, CORBA::Double theW1, CORBA::Double theL1,
3438                      CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2,
3439                      CORBA::Double theH, CORBA::Double theW, CORBA::Boolean theHexMesh)
3440 {
3441   beginService( " GEOM_Superv_i::MakePipeTShapeChamfer" );
3442   MESSAGE("GEOM_Superv_i::MakePipeTShapeChamfer");
3443   getAdvancedOp();
3444
3445   GEOM::ListOfGO* aSeq = myAdvancedOp->MakePipeTShapeChamfer(theR1, theW1, theL1, theR2, theW2, theL2, theH, theW, theHexMesh);
3446   GEOM_List_i<GEOM::ListOfGO>* aSeqPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aSeq));
3447   MESSAGE(" List of "<<aSeqPtr->GetList().length()<<" element(s)");
3448   endService( " GEOM_Superv_i::MakePipeTShapeChamfer" );
3449   return aSeqPtr->_this();
3450 }
3451
3452 //=============================================================================
3453 //  MakePipeTShapeChamferWithPosition
3454 //=============================================================================
3455 GEOM::GEOM_List_ptr GEOM_Superv_i::MakePipeTShapeChamferWithPosition
3456                     (CORBA::Double theR1, CORBA::Double theW1, CORBA::Double theL1,
3457                      CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2,
3458                      CORBA::Double theH, CORBA::Double theW, CORBA::Boolean theHexMesh,
3459                      GEOM::GEOM_Object_ptr theP1, GEOM::GEOM_Object_ptr theP2, GEOM::GEOM_Object_ptr theP3)
3460 {
3461   beginService( " GEOM_Superv_i::MakePipeTShapeChamferWithPosition" );
3462   MESSAGE("GEOM_Superv_i::MakePipeTShapeChamferWithPosition");
3463   getAdvancedOp();
3464
3465   GEOM::ListOfGO* aSeq = myAdvancedOp->MakePipeTShapeChamferWithPosition(theR1, theW1, theL1, theR2, theW2, theL2, theH, theW, theHexMesh, theP1, theP2, theP3);
3466   GEOM_List_i<GEOM::ListOfGO>* aSeqPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aSeq));
3467   MESSAGE(" List of "<<aSeqPtr->GetList().length()<<" element(s)");
3468   endService( " GEOM_Superv_i::MakePipeTShapeChamferWithPosition" );
3469   return aSeqPtr->_this();
3470 }
3471
3472 //=============================================================================
3473 //  MakePipeTShapeFillet
3474 //=============================================================================
3475 GEOM::GEOM_List_ptr GEOM_Superv_i::MakePipeTShapeFillet
3476                     (CORBA::Double theR1, CORBA::Double theW1, CORBA::Double theL1,
3477                      CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2,
3478                      CORBA::Double theRF, CORBA::Boolean theHexMesh)
3479 {
3480   beginService( " GEOM_Superv_i::MakePipeTShapeFillet" );
3481   MESSAGE("GEOM_Superv_i::MakePipeTShapeFillet");
3482   getAdvancedOp();
3483
3484   GEOM::ListOfGO* aSeq = myAdvancedOp->MakePipeTShapeFillet(theR1, theW1, theL1, theR2, theW2, theL2, theRF, theHexMesh);
3485   GEOM_List_i<GEOM::ListOfGO>* aSeqPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aSeq));
3486   MESSAGE(" List of "<<aSeqPtr->GetList().length()<<" element(s)");
3487   endService( " GEOM_Superv_i::MakePipeTShapeFillet" );
3488   return aSeqPtr->_this();
3489 }
3490
3491 //=============================================================================
3492 //  MakePipeTShapeFilletWithPosition
3493 //=============================================================================
3494 GEOM::GEOM_List_ptr GEOM_Superv_i::MakePipeTShapeFilletWithPosition
3495                     (CORBA::Double theR1, CORBA::Double theW1, CORBA::Double theL1,
3496                      CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2,
3497                      CORBA::Double theRF, CORBA::Boolean theHexMesh,
3498                      GEOM::GEOM_Object_ptr theP1, GEOM::GEOM_Object_ptr theP2, GEOM::GEOM_Object_ptr theP3)
3499 {
3500   beginService( " GEOM_Superv_i::MakePipeTShapeFilletWithPosition" );
3501   MESSAGE("GEOM_Superv_i::MakePipeTShapeFilletWithPosition");
3502   getAdvancedOp();
3503
3504   GEOM::ListOfGO* aSeq = myAdvancedOp->MakePipeTShapeFilletWithPosition(theR1, theW1, theL1, theR2, theW2, theL2, theRF, theHexMesh, theP1, theP2, theP3);
3505   GEOM_List_i<GEOM::ListOfGO>* aSeqPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aSeq));
3506   MESSAGE(" List of "<<aSeqPtr->GetList().length()<<" element(s)");
3507   endService( " GEOM_Superv_i::MakePipeTShapeFilletWithPosition" );
3508   return aSeqPtr->_this();
3509 }
3510
3511 //=============================================================================
3512 //  MakeDividedDisk
3513 //=============================================================================
3514 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeDividedDisk (CORBA::Double theR, CORBA::Double theRatio, 
3515                                                       CORBA::Short theOrientation, GEOM::pattern thePattern)
3516 {
3517   beginService( " GEOM_Superv_i::MakeDividedDisk" );
3518   MESSAGE("GEOM_Superv_i::MakeDividedDisk");
3519   getAdvancedOp();
3520   GEOM::GEOM_Object_ptr anObj = myAdvancedOp->MakeDividedDisk(theR, theRatio, theOrientation, thePattern);
3521   endService( " GEOM_Superv_i::MakeDividedDisk" );
3522   return anObj;
3523 }
3524
3525 //=============================================================================
3526 //  MakeDividedCylinder
3527 //=============================================================================
3528 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeDividedCylinder (CORBA::Double theR, 
3529                                                           CORBA::Double theH,
3530                                                           GEOM::pattern thePattern)
3531 {
3532   beginService( " GEOM_Superv_i::MakeDividedCylinder" );
3533   MESSAGE("GEOM_Superv_i::MakeDividedCylinder");
3534   getAdvancedOp();
3535   GEOM::GEOM_Object_ptr anObj = myAdvancedOp->MakeDividedCylinder(theR, theH, thePattern);
3536   endService( " GEOM_Superv_i::MakeDividedCylinder" );
3537   return anObj;
3538 }
3539
3540 //=============================================================================
3541 //  MakeSmoothingSurface
3542 //=============================================================================
3543 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSmoothingSurface (GEOM::GEOM_List_ptr thelPoints)
3544 {
3545   beginService( " GEOM_Superv_i::MakeSmoothingSurface" );
3546   MESSAGE("GEOM_Superv_i::MakeSmoothingSurface");
3547   getAdvancedOp();
3548   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP =
3549       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(thelPoints, myPOA).in())) {
3550     getCurvesOp();
3551     GEOM::GEOM_Object_ptr anObj = myAdvancedOp->MakeSmoothingSurface(aListImplP->GetList(), 2, 8, 0.);
3552     endService( " GEOM_Superv_i::MakeSmoothingSurface" );
3553     return anObj;
3554   }
3555   endService( " GEOM_Superv_i::MakeSmoothingSurface" );
3556   return NULL;
3557 }
3558
3559 /*@@ insert new functions before this line @@ do not remove this line @@*/
3560
3561 //=====================================================================================
3562 // EXPORTED METHODS
3563 //=====================================================================================
3564 extern "C"
3565 {
3566 #ifdef WIN32
3567   __declspec( dllexport )
3568 #endif
3569   PortableServer::ObjectId * GEOM_SupervEngine_factory(CORBA::ORB_ptr orb,
3570                                                        PortableServer::POA_ptr poa,
3571                                                        PortableServer::ObjectId * contId,
3572                                                        const char *instanceName,
3573                                                        const char * interfaceName)
3574   {
3575     GEOM_Superv_i * myGEOM_Superv_i = new GEOM_Superv_i(orb, poa, contId, instanceName, interfaceName);
3576     //Don't understand the reason why this component is registered ???
3577 //    myGEOM_Superv_i->register_name("/myGEOM_Superv");
3578     return myGEOM_Superv_i->getId() ;
3579   }
3580 }