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