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