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