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