Salome HOME
360ad26860ea0d7e02ea6577c9ab3f5ed20a94da
[modules/geom.git] / src / GEOM_I_Superv / GEOM_Superv_i.cc
1 using namespace std;
2
3 #include "GEOM_Superv_i.hh"
4
5 //=============================================================================
6 //  constructor:
7 //=============================================================================
8 GEOM_Superv_i::GEOM_Superv_i(CORBA::ORB_ptr orb,
9                              PortableServer::POA_ptr poa,
10                              PortableServer::ObjectId * contId, 
11                              const char *instanceName, 
12                              const char *interfaceName) :
13   Engines_Component_i(orb, poa, contId, instanceName, interfaceName)
14 {
15   MESSAGE("GEOM_Superv_i::GEOM_Superv_i");
16
17   _thisObj = this ;
18   _id = _poa->activate_object(_thisObj);
19   name_service = new SALOME_NamingService(_orb);
20
21   myGeomEngine = GEOM::GEOM_Gen::_nil();
22   myStudyID = -1;
23
24   myBasicOp = GEOM::GEOM_IBasicOperations::_nil();
25   my3DPrimOp = GEOM::GEOM_I3DPrimOperations::_nil();
26   myBoolOp = GEOM::GEOM_IBooleanOperations::_nil();
27   myInsOp = GEOM::GEOM_IInsertOperations::_nil();
28   myTransfOp = GEOM::GEOM_ITransformOperations::_nil();
29   myShapesOp = GEOM::GEOM_IShapesOperations::_nil();
30   myBlocksOp = GEOM::GEOM_IBlocksOperations::_nil();
31   myCurvesOp = GEOM::GEOM_ICurvesOperations::_nil();
32   myLocalOp = GEOM::GEOM_ILocalOperations::_nil();
33   myGroupOp = GEOM::GEOM_IGroupOperations::_nil();
34 }
35
36 //=============================================================================
37 //  destructor
38 //=============================================================================
39 GEOM_Superv_i::~GEOM_Superv_i()
40 {
41   MESSAGE("GEOM_Superv_i::~GEOM_Superv_i");
42   delete name_service;
43 }
44
45 //============================================================================
46 // function : register() 
47 // purpose  : register 'name' in 'name_service'
48 //============================================================================
49 void GEOM_Superv_i::register_name(char * name)
50 {
51   GEOM::GEOM_Superv_ptr g = GEOM::GEOM_Superv::_narrow(POA_GEOM::GEOM_Superv::_this());
52   name_service->Register(g, strdup(name)); 
53 }
54
55 //=============================================================================
56 //  setGEOMEngine:
57 //=============================================================================
58 void GEOM_Superv_i::setGeomEngine()
59 {
60   // get GEOM_Gen engine
61   SALOME_LifeCycleCORBA* lcc = new SALOME_LifeCycleCORBA( name_service );
62   Engines::Component_var comp = lcc->FindOrLoad_Component( "FactoryServer", "GEOM" );
63
64   myGeomEngine = GEOM::GEOM_Gen::_narrow(comp);
65 }
66
67 //=============================================================================
68 //  SetStudyID:
69 //=============================================================================
70 void GEOM_Superv_i::SetStudyID( CORBA::Long theId )
71 {
72   myStudyID = theId;
73 }
74
75 //=============================================================================
76 //  getBasicOp:
77 //=============================================================================
78 void GEOM_Superv_i::getBasicOp()
79 {
80   if (CORBA::is_nil(myGeomEngine))
81     setGeomEngine();
82   // get GEOM_IBasicOperations interface
83   myBasicOp = myGeomEngine->GetIBasicOperations(myStudyID);
84 }
85
86 //=============================================================================
87 //  get3DPrimOp:
88 //=============================================================================
89 void GEOM_Superv_i::get3DPrimOp()
90 {
91   if (CORBA::is_nil(myGeomEngine))
92     setGeomEngine();
93   // get GEOM_I3DPrimOperations interface
94   my3DPrimOp = myGeomEngine->GetI3DPrimOperations(myStudyID);
95 }
96
97 //=============================================================================
98 //  getBoolOp:
99 //=============================================================================
100 void GEOM_Superv_i::getBoolOp()
101 {
102   if (CORBA::is_nil(myGeomEngine))
103     setGeomEngine();
104   // get GEOM_IBooleanOperations interface
105   myBoolOp = myGeomEngine->GetIBooleanOperations(myStudyID);
106 }
107
108 //=============================================================================
109 //  getInsOp:
110 //=============================================================================
111 void GEOM_Superv_i::getInsOp()
112 {
113   if (CORBA::is_nil(myGeomEngine))
114     setGeomEngine();
115   // get GEOM_IInsertOperations interface
116   myInsOp = myGeomEngine->GetIInsertOperations(myStudyID);
117 }
118
119 //=============================================================================
120 //  getTransfOp:
121 //=============================================================================
122 void GEOM_Superv_i::getTransfOp()
123 {
124   if (CORBA::is_nil(myGeomEngine))
125     setGeomEngine();
126   // get GEOM_ITransformOperations interface
127   myTransfOp = myGeomEngine->GetITransformOperations(myStudyID);
128 }
129
130 //=============================================================================
131 //  getShapesOp:
132 //=============================================================================
133 void GEOM_Superv_i::getShapesOp()
134 {
135   if (CORBA::is_nil(myGeomEngine))
136     setGeomEngine();
137   // get GEOM_IShapesOperations interface
138   myShapesOp = myGeomEngine->GetIShapesOperations(myStudyID);
139 }
140
141 //=============================================================================
142 //  getBlocksOp:
143 //=============================================================================
144 void GEOM_Superv_i::getBlocksOp()
145 {
146   if (CORBA::is_nil(myGeomEngine))
147     setGeomEngine();
148   // get GEOM_IBlocksOperations interface
149   myBlocksOp = myGeomEngine->GetIBlocksOperations(myStudyID);
150 }
151
152 //=============================================================================
153 //  getCurvesOp:
154 //=============================================================================
155 void GEOM_Superv_i::getCurvesOp()
156 {
157   if (CORBA::is_nil(myGeomEngine))
158     setGeomEngine();
159   // get GEOM_ICurvesOperations interface
160   myCurvesOp = myGeomEngine->GetICurvesOperations(myStudyID);
161 }
162
163 //=============================================================================
164 //  getLocalOp:
165 //=============================================================================
166 void GEOM_Superv_i::getLocalOp()
167 {
168   if (CORBA::is_nil(myGeomEngine))
169     setGeomEngine();
170   // get GEOM_ILocalOperations interface
171   myLocalOp = myGeomEngine->GetILocalOperations(myStudyID);
172 }
173
174 //=============================================================================
175 //  getGroupOp:
176 //=============================================================================
177 void GEOM_Superv_i::getGroupOp()
178 {
179   if (CORBA::is_nil(myGeomEngine))
180     setGeomEngine();
181   // get GEOM_IGroupOperations interface
182   myGroupOp = myGeomEngine->GetIGroupOperations(myStudyID);
183 }
184
185 //============================================================================
186 // function : Save()
187 // purpose  : save OCAF/Geom document
188 //============================================================================
189 SALOMEDS::TMPFile* GEOM_Superv_i::Save(SALOMEDS::SComponent_ptr theComponent,
190                                        const char* theURL,
191                                        bool isMultiFile)
192 {
193   SALOMEDS::TMPFile_var aStreamFile;
194   return aStreamFile._retn();
195 }
196
197 //============================================================================
198 // function : SaveASCII()
199 // purpose  :
200 //============================================================================ 
201 SALOMEDS::TMPFile* GEOM_Superv_i::SaveASCII(SALOMEDS::SComponent_ptr theComponent,
202                                             const char* theURL,
203                                             bool isMultiFile)
204 {
205   SALOMEDS::TMPFile_var aStreamFile;
206   return aStreamFile._retn();
207 }
208
209 //============================================================================
210 // function : Load()
211 // purpose  :
212 //============================================================================ 
213 CORBA::Boolean GEOM_Superv_i::Load(SALOMEDS::SComponent_ptr theComponent,
214                                    const SALOMEDS::TMPFile& theStream,
215                                    const char* theURL,
216                                    bool isMultiFile)
217 {
218   return false;
219 }
220
221 //============================================================================
222 // function : LoadASCII()
223 // purpose  :
224 //============================================================================ 
225 CORBA::Boolean GEOM_Superv_i::LoadASCII(SALOMEDS::SComponent_ptr theComponent,
226                                         const SALOMEDS::TMPFile& theStream,
227                                         const char* theURL,
228                                         bool isMultiFile)
229 {
230   return false;
231 }
232
233 //============================================================================
234 // function : Close()
235 // purpose  :
236 //============================================================================
237 void GEOM_Superv_i::Close(SALOMEDS::SComponent_ptr theComponent)
238 {}
239
240 //============================================================================
241 // function : ComponentDataType()
242 // purpose  :
243 //============================================================================
244 char* GEOM_Superv_i::ComponentDataType()
245 {
246   return 0;
247 }
248
249 //============================================================================
250 // function : IORToLocalPersistentID()
251 // purpose  :
252 //============================================================================
253 char* GEOM_Superv_i::IORToLocalPersistentID(SALOMEDS::SObject_ptr theSObject,
254                                             const char* IORString,
255                                             CORBA::Boolean isMultiFile,
256                                             CORBA::Boolean isASCII)
257 {
258   return 0;
259 }
260
261 //============================================================================
262 // function : LocalPersistentIDToIOR()
263 // purpose  : Create/Load CORBA object from a persistent ref (an entry)
264 //          : Used when a study is loaded
265 //          : The IOR (IORName) of object created is returned
266 //============================================================================
267 char* GEOM_Superv_i::LocalPersistentIDToIOR(SALOMEDS::SObject_ptr theSObject,
268                                             const char* aLocalPersistentID,
269                                             CORBA::Boolean isMultiFile,
270                                             CORBA::Boolean isASCII)
271 {
272   return 0;
273 }
274
275 //============================================================================
276 // function : CanPublishInStudy
277 // purpose  : 
278 //============================================================================
279 bool GEOM_Superv_i::CanPublishInStudy(CORBA::Object_ptr theIOR)
280 {
281   if (CORBA::is_nil(myGeomEngine))
282     setGeomEngine();
283   return myGeomEngine->CanPublishInStudy(theIOR);
284 }
285
286 //============================================================================
287 // function : PublishInStudy
288 // purpose  : 
289 //============================================================================
290 SALOMEDS::SObject_ptr GEOM_Superv_i::PublishInStudy(SALOMEDS::Study_ptr theStudy,
291                                                     SALOMEDS::SObject_ptr theSObject,
292                                                     CORBA::Object_ptr theObject,
293                                                     const char* theName) throw (SALOME::SALOME_Exception)
294 {
295   if (CORBA::is_nil(myGeomEngine))
296     setGeomEngine();
297   return myGeomEngine->PublishInStudy(theStudy, theSObject, theObject, theName);
298 }
299
300 //============================================================================
301 // function : CanCopy()
302 // purpose  :
303 //============================================================================
304 CORBA::Boolean GEOM_Superv_i::CanCopy(SALOMEDS::SObject_ptr theObject)
305 {
306   return false;
307 }
308
309 //============================================================================
310 // function : CopyFrom()
311 // purpose  :
312 //============================================================================
313 SALOMEDS::TMPFile* GEOM_Superv_i::CopyFrom(SALOMEDS::SObject_ptr theObject, CORBA::Long& theObjectID)
314 {
315   SALOMEDS::TMPFile_var aStreamFile;
316   return aStreamFile._retn();
317 }
318
319 //============================================================================
320 // function : CanPaste()
321 // purpose  :
322 //============================================================================
323 CORBA::Boolean GEOM_Superv_i::CanPaste(const char* theComponentName, CORBA::Long theObjectID)
324 {
325   return false;
326 }
327
328 //============================================================================
329 // function : PasteInto()
330 // purpose  :
331 //============================================================================
332 SALOMEDS::SObject_ptr GEOM_Superv_i::PasteInto(const SALOMEDS::TMPFile& theStream,
333                                                CORBA::Long theObjectID,
334                                                SALOMEDS::SObject_ptr theObject)
335 {
336   SALOMEDS::SObject_var aNewSO;
337   return aNewSO._retn();
338 }
339
340 //================= Primitives Construction : BasicOperations =================
341 //=============================================================================
342 //  MakePointXYZ:
343 //=============================================================================
344 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointXYZ(CORBA::Double theX,
345                                                   CORBA::Double theY,
346                                                   CORBA::Double theZ)
347 {
348   MESSAGE("GEOM_Superv_i::MakePointXYZ");
349   if (CORBA::is_nil(myBasicOp)) getBasicOp();
350   // make vertex and return
351   return myBasicOp->MakePointXYZ(theX, theY, theZ);
352 }
353
354 //=============================================================================
355 //  MakePointWithReference:
356 //=============================================================================
357 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointWithReference (GEOM::GEOM_Object_ptr theReference,
358                                                              CORBA::Double theX, 
359                                                              CORBA::Double theY, 
360                                                              CORBA::Double theZ)
361 {
362   MESSAGE("GEOM_Superv_i::MakePointWithReference");
363   if (CORBA::is_nil(myBasicOp)) getBasicOp();
364   return myBasicOp->MakePointWithReference(theReference, theX, theY, theZ);
365 }
366
367 //=============================================================================
368 //  MakePointOnCurve:
369 //=============================================================================
370 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointOnCurve (GEOM::GEOM_Object_ptr theRefCurve,
371                                                        CORBA::Double theParameter)
372 {
373   MESSAGE("GEOM_Superv_i::MakePointOnCurve");
374   if (CORBA::is_nil(myBasicOp)) getBasicOp();
375   return myBasicOp->MakePointOnCurve(theRefCurve, theParameter);
376 }
377
378 //=============================================================================
379 //  MakeVectorDXDYDZ:
380 //=============================================================================
381 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeVectorDXDYDZ (CORBA::Double theDX,
382                                                        CORBA::Double theDY,
383                                                        CORBA::Double theDZ)
384 {
385   MESSAGE("GEOM_Superv_i::MakeVectorDXDYDZ");
386   if (CORBA::is_nil(myBasicOp)) getBasicOp();
387   return myBasicOp->MakeVectorDXDYDZ(theDX, theDY, theDZ);
388 }
389
390 //=============================================================================
391 //  MakeVectorTwoPnt:
392 //=============================================================================
393 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeVectorTwoPnt (GEOM::GEOM_Object_ptr thePnt1,
394                                                        GEOM::GEOM_Object_ptr thePnt2)
395 {
396   MESSAGE("GEOM_Superv_i::MakeVector");
397   if (CORBA::is_nil(myBasicOp)) getBasicOp();
398   return myBasicOp->MakeVectorTwoPnt(thePnt1, thePnt2);
399 }
400
401 //=============================================================================
402 //  MakeLineTwoPnt:
403 //=============================================================================
404 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeLineTwoPnt (GEOM::GEOM_Object_ptr thePnt1,
405                                                      GEOM::GEOM_Object_ptr thePnt2)
406 {
407   MESSAGE("GEOM_Superv_i::MakeLineTwoPnt");
408   if (CORBA::is_nil(myBasicOp)) getBasicOp();
409   return myBasicOp->MakeLineTwoPnt(thePnt1, thePnt2);
410 }
411
412 //=============================================================================
413 //  MakePlaneThreePnt:
414 //=============================================================================
415 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePlaneThreePnt (GEOM::GEOM_Object_ptr thePnt1,
416                                                         GEOM::GEOM_Object_ptr thePnt2,
417                                                         GEOM::GEOM_Object_ptr thePnt3,
418                                                         CORBA::Double theTrimSize)
419 {
420   MESSAGE("GEOM_Superv_i::MakePlaneThreePnt");
421   if (CORBA::is_nil(myBasicOp)) getBasicOp();
422   return myBasicOp->MakePlaneThreePnt(thePnt1, thePnt2, thePnt3, theTrimSize);
423 }
424
425 //=============================================================================
426 //  MakePlanePntVec:
427 //=============================================================================
428 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePlanePntVec (GEOM::GEOM_Object_ptr thePnt,
429                                                       GEOM::GEOM_Object_ptr theVec,
430                                                       CORBA::Double theTrimSize)
431 {
432   MESSAGE("GEOM_Superv_i::MakePlanePntVec");
433   if (CORBA::is_nil(myBasicOp)) getBasicOp();
434   return myBasicOp->MakePlanePntVec(thePnt, theVec, theTrimSize);
435 }
436
437 //=============================================================================
438 //  MakePlaneFace:
439 //=============================================================================
440 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePlaneFace (GEOM::GEOM_Object_ptr theFace,
441                                                     CORBA::Double theTrimSize)
442 {
443   MESSAGE("GEOM_Superv_i::MakePlaneFace");
444   if (CORBA::is_nil(myBasicOp)) getBasicOp();
445   return myBasicOp->MakePlaneFace(theFace, theTrimSize);
446 }
447
448 //=============================================================================
449 //  MakeMarker:
450 //=============================================================================
451 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeMarker 
452 (CORBA::Double theOX , CORBA::Double theOY , CORBA::Double theOZ,
453  CORBA::Double theXDX, CORBA::Double theXDY, CORBA::Double theXDZ,
454  CORBA::Double theYDX, CORBA::Double theYDY, CORBA::Double theYDZ)
455 {
456   MESSAGE("GEOM_Superv_i::MakeMarker");
457   if (CORBA::is_nil(myBasicOp)) getBasicOp();
458   return myBasicOp->MakeMarker(theOX, theOY, theOZ, theXDX, theXDY, theXDZ, theYDX, theYDY, theYDZ);
459 }
460
461 //================= Primitives Construction : 3DPrimOperations ================
462 //=============================================================================
463 //  MakeBox:
464 //=============================================================================
465 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeBox (CORBA::Double theX1,
466                                               CORBA::Double theY1,
467                                               CORBA::Double theZ1,
468                                               CORBA::Double theX2,
469                                               CORBA::Double theY2,
470                                               CORBA::Double theZ2)
471 {
472   MESSAGE("GEOM_Superv_i::MakeBox");
473   if (CORBA::is_nil(myBasicOp)) getBasicOp();
474   if (CORBA::is_nil(my3DPrimOp)) get3DPrimOp();
475   return my3DPrimOp->MakeBoxTwoPnt(myBasicOp->MakePointXYZ(theX1, theY1, theZ1),
476                                    myBasicOp->MakePointXYZ(theX2, theY2, theZ2));
477 }
478
479 //=============================================================================
480 //  MakeBoxDXDYDZ:
481 //=============================================================================
482 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeBoxDXDYDZ (CORBA::Double theDX, 
483                                                     CORBA::Double theDY, 
484                                                     CORBA::Double theDZ)
485 {
486   MESSAGE("GEOM_Superv_i::MakeBoxDXDYDZ");
487   if (CORBA::is_nil(my3DPrimOp)) get3DPrimOp();
488   return my3DPrimOp->MakeBoxDXDYDZ(theDX, theDY, theDZ);
489 }
490
491 //=============================================================================
492 //  MakeBoxTwoPnt:
493 //=============================================================================
494 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeBoxTwoPnt (GEOM::GEOM_Object_ptr thePnt1, 
495                                                     GEOM::GEOM_Object_ptr thePnt2)
496 {
497   MESSAGE("GEOM_Superv_i::MakeBoxTwoPnt");
498   if (CORBA::is_nil(my3DPrimOp)) get3DPrimOp();
499   return my3DPrimOp->MakeBoxTwoPnt(thePnt1, thePnt2);
500 }
501
502 //=============================================================================
503 //  MakeCylinderPntVecRH:
504 //=============================================================================
505 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCylinderPntVecRH (GEOM::GEOM_Object_ptr thePnt,
506                                                            GEOM::GEOM_Object_ptr theAxis,
507                                                            CORBA::Double theRadius,
508                                                            CORBA::Double theHeight)
509 {
510   MESSAGE("GEOM_Superv_i::MakeCylinderPntVecRH");
511   if (CORBA::is_nil(my3DPrimOp)) get3DPrimOp();
512   return my3DPrimOp->MakeCylinderPntVecRH(thePnt, theAxis, theRadius, theHeight); 
513 }
514
515 //=============================================================================
516 //  MakeCylinderRH:
517 //=============================================================================
518 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCylinderRH (CORBA::Double theR, 
519                                                      CORBA::Double theH)
520 {
521   MESSAGE("GEOM_Superv_i::MakeCylinderRH");
522   if (CORBA::is_nil(my3DPrimOp)) get3DPrimOp();
523   return my3DPrimOp->MakeCylinderRH(theR, theH); 
524 }
525
526 //=============================================================================
527 //  MakeSphere:
528 //=============================================================================
529 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSphere  (CORBA::Double theX,
530                                                   CORBA::Double theY,
531                                                   CORBA::Double theZ,
532                                                   CORBA::Double theRadius)
533 {
534   MESSAGE("GEOM_Superv_i::MakeSphepe");
535   if (CORBA::is_nil(myBasicOp)) getBasicOp();
536   if (CORBA::is_nil(my3DPrimOp)) get3DPrimOp();
537   return my3DPrimOp->MakeSpherePntR(myBasicOp->MakePointXYZ(theX, theY, theZ), theRadius);
538 }
539
540 //=============================================================================
541 //  MakeSphereR:
542 //=============================================================================
543 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSphereR (CORBA::Double theR)
544 {
545   MESSAGE("GEOM_Superv_i::MakeSphereR");
546   if (CORBA::is_nil(my3DPrimOp)) get3DPrimOp();
547   return my3DPrimOp->MakeSphereR(theR);
548 }
549
550 //=============================================================================
551 //  MakeSpherePntR:
552 //=============================================================================
553 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSpherePntR (GEOM::GEOM_Object_ptr thePnt, 
554                                                      CORBA::Double theR)
555 {
556   MESSAGE("GEOM_Superv_i::MakeSpherePntR");
557   if (CORBA::is_nil(my3DPrimOp)) get3DPrimOp();
558   return my3DPrimOp->MakeSpherePntR(thePnt, theR);
559 }
560
561 //=============================================================================
562 //  MakeTorusPntVecRR:
563 //=============================================================================
564 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeTorusPntVecRR (GEOM::GEOM_Object_ptr thePnt,
565                                                         GEOM::GEOM_Object_ptr theVec,
566                                                         CORBA::Double theRMajor,
567                                                         CORBA::Double theRMinor)
568 {
569   MESSAGE("GEOM_Superv_i::MakeTorusPntVecRR");
570   if (CORBA::is_nil(my3DPrimOp)) get3DPrimOp();
571   return my3DPrimOp->MakeTorusPntVecRR(thePnt, theVec, theRMajor, theRMinor);
572 }
573
574 //=============================================================================
575 //  MakeTorusRR:
576 //=============================================================================
577 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeTorusRR (CORBA::Double theRMajor,
578                                                   CORBA::Double theRMinor)
579 {
580   MESSAGE("GEOM_Superv_i::MakeTorusRR");
581   if (CORBA::is_nil(my3DPrimOp)) get3DPrimOp();
582   return my3DPrimOp->MakeTorusRR(theRMajor, theRMinor);
583 }
584
585 //=============================================================================
586 //  MakeConePntVecR1R2H:
587 //=============================================================================
588 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeConePntVecR1R2H (GEOM::GEOM_Object_ptr thePnt,
589                                                           GEOM::GEOM_Object_ptr theAxis,
590                                                           CORBA::Double theR1,
591                                                           CORBA::Double theR2,
592                                                           CORBA::Double theHeight)
593 {
594   MESSAGE("GEOM_Superv_i::MakeConePntVecR1R2H");
595   if (CORBA::is_nil(my3DPrimOp)) get3DPrimOp();
596   return my3DPrimOp->MakeConePntVecR1R2H(thePnt, theAxis, theR1, theR2, theHeight);
597 }
598
599 //=============================================================================
600 //  MakeConeR1R2H:
601 //=============================================================================
602 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeConeR1R2H (CORBA::Double theR1, 
603                                                     CORBA::Double theR2, 
604                                                     CORBA::Double theHeight)
605 {
606   MESSAGE("GEOM_Superv_i::MakeConeR1R2H");
607   if (CORBA::is_nil(my3DPrimOp)) get3DPrimOp();
608   return my3DPrimOp->MakeConeR1R2H(theR1, theR2, theHeight);
609 }
610
611 //=============================================================================
612 //  MakePrismVecH:
613 //=============================================================================
614 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismVecH (GEOM::GEOM_Object_ptr theBase,
615                                                     GEOM::GEOM_Object_ptr theVec,
616                                                     CORBA::Double         theH)
617 {
618   MESSAGE("GEOM_Superv_i::MakePrismVecH");
619   if (CORBA::is_nil(my3DPrimOp)) get3DPrimOp();
620   return my3DPrimOp->MakePrismVecH(theBase, theVec, theH);
621 }
622
623
624 //=============================================================================
625 //  MakePrismTwoPnt:
626 //=============================================================================
627 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismTwoPnt (GEOM::GEOM_Object_ptr theBase,
628                                                       GEOM::GEOM_Object_ptr thePoint1,
629                                                       GEOM::GEOM_Object_ptr thePoint2)
630 {
631   MESSAGE("GEOM_Superv_i::MakePrismTwoPnt");
632   if (CORBA::is_nil(my3DPrimOp)) get3DPrimOp();
633   return my3DPrimOp->MakePrismTwoPnt(theBase, thePoint1, thePoint2);
634 }
635
636 //=============================================================================
637 //  MakePipe:
638 //=============================================================================
639 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipe (GEOM::GEOM_Object_ptr theBase, 
640                                                GEOM::GEOM_Object_ptr thePath)
641 {
642   MESSAGE("GEOM_Superv_i::MakePipe");
643   if (CORBA::is_nil(my3DPrimOp)) get3DPrimOp();
644   return my3DPrimOp->MakePipe(theBase, thePath);
645 }
646
647 //=============================================================================
648 //  MakeRevolutionAxisAngle:
649 //=============================================================================
650 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeRevolutionAxisAngle (GEOM::GEOM_Object_ptr theBase,
651                                                               GEOM::GEOM_Object_ptr theAxis,
652                                                               CORBA::Double theAngle)
653 {
654   MESSAGE("GEOM_Superv_i::MakeRevolutionAxisAngle");
655   if (CORBA::is_nil(my3DPrimOp)) get3DPrimOp();
656   return my3DPrimOp->MakeRevolutionAxisAngle(theBase, theAxis, theAngle);
657 }
658
659 //=============================================================================
660 //  MakeFilling:
661 //=============================================================================
662 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilling (GEOM::GEOM_Object_ptr theShape,
663                                                   CORBA::Long theMinDeg, CORBA::Long theMaxDeg,
664                                                   CORBA::Double theTol2D, CORBA::Double theTol3D,
665                                                   CORBA::Long theNbIter)
666 {
667   MESSAGE("GEOM_Superv_i::MakeFilling");
668   if (CORBA::is_nil(my3DPrimOp)) get3DPrimOp();
669   return my3DPrimOp->MakeFilling(theShape, theMinDeg, theMaxDeg, theTol2D, theTol3D, theNbIter);
670 }
671
672 //============================= BooleanOperations =============================
673 //=============================================================================
674 //  MakeBoolean:
675 //=============================================================================
676 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeBoolean (GEOM::GEOM_Object_ptr theShape1,
677                                                   GEOM::GEOM_Object_ptr theShape2,
678                                                   CORBA::Long theOperation)
679 {
680   // theOperation indicates the operation to be done:
681   // 1 - Common, 2 - Cut, 3 - Fuse, 4 - Section
682   MESSAGE("GEOM_Superv_i::MakeBoolean");
683   if (CORBA::is_nil(myBoolOp)) getBoolOp();
684   return myBoolOp->MakeBoolean(theShape1, theShape2, theOperation);
685 }
686
687 //=============================================================================
688 //  MakeFuse:
689 //=============================================================================
690 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFuse (GEOM::GEOM_Object_ptr theShape1,
691                                                GEOM::GEOM_Object_ptr theShape2)
692 {
693   MESSAGE("GEOM_Superv_i::MakeFuse");
694   if (CORBA::is_nil(myBoolOp)) getBoolOp();
695   return myBoolOp->MakeBoolean(theShape1, theShape2, 3);
696 }
697
698 //=============================================================================
699 //  MakePartition:
700 //=============================================================================
701 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePartition (const GEOM::ListOfGO&   theShapes,
702                                                     const GEOM::ListOfGO&   theTools,
703                                                     const GEOM::ListOfGO&   theKeepInside,
704                                                     const GEOM::ListOfGO&   theRemoveInside,
705                                                     const CORBA::Short      theLimit,
706                                                     const CORBA::Boolean    theRemoveWebs,
707                                                     const GEOM::ListOfLong& theMaterials)
708 {
709   MESSAGE("GEOM_Superv_i::MakePartition");
710   if (CORBA::is_nil(myBoolOp)) getBoolOp();
711   return myBoolOp->MakePartition(theShapes, theTools, theKeepInside, theRemoveInside,
712                                  theLimit, theRemoveWebs, theMaterials);
713 }
714
715 //=============================================================================
716 //  MakeHalfPartition:
717 //=============================================================================
718 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeHalfPartition (GEOM::GEOM_Object_ptr theShape,
719                                                         GEOM::GEOM_Object_ptr thePlane)
720 {
721   MESSAGE("GEOM_Superv_i::MakeHalfPartition");
722   if (CORBA::is_nil(myBoolOp)) getBoolOp();
723   return myBoolOp->MakeHalfPartition(theShape, thePlane);
724 }
725
726 //============================== InsertOperations =============================
727 //=============================================================================
728 //  MakeCopy:
729 //=============================================================================
730 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCopy (GEOM::GEOM_Object_ptr theOriginal)
731 {
732   MESSAGE("GEOM_Superv_i::MakeCopy");
733   if (CORBA::is_nil(myInsOp)) getInsOp();
734   return myInsOp->MakeCopy(theOriginal);
735 }
736
737 //=============================================================================
738 //  Export:
739 //=============================================================================
740 void GEOM_Superv_i::Export (GEOM::GEOM_Object_ptr theObject, 
741                             const char*           theFileName, 
742                             const char*           theFormatName)
743 {
744   MESSAGE("GEOM_Superv_i::Export");
745   if (CORBA::is_nil(myInsOp)) getInsOp();
746   myInsOp->Export(theObject, theFileName, theFormatName);
747 }
748
749 //=============================================================================
750 //  Import:
751 //=============================================================================
752 GEOM::GEOM_Object_ptr GEOM_Superv_i::Import (const char* theFileName, 
753                                              const char* theFormatName)
754 {
755   MESSAGE("GEOM_Superv_i::Import");
756   if (CORBA::is_nil(myInsOp)) getInsOp();
757   return myInsOp->Import(theFileName, theFormatName);
758 }
759
760 //=============================================================================
761 //  ImportTranslators:
762 //=============================================================================
763 void GEOM_Superv_i::ImportTranslators (GEOM::string_array_out theFormats,
764                                        GEOM::string_array_out thePatterns)
765 {
766   MESSAGE("GEOM_Superv_i::ImportTranslators");
767   if (CORBA::is_nil(myInsOp)) getInsOp();
768   myInsOp->ImportTranslators(theFormats, thePatterns);
769 }
770
771 //=============================================================================
772 //  ExportTranslators:
773 //=============================================================================
774 void GEOM_Superv_i::ExportTranslators (GEOM::string_array_out theFormats,
775                                        GEOM::string_array_out thePatterns)
776 {
777   MESSAGE("GEOM_Superv_i::ExportTranslators");
778   if (CORBA::is_nil(myInsOp)) getInsOp();
779   myInsOp->ExportTranslators(theFormats, thePatterns);
780 }
781
782 //============================= TransformOperations ===========================
783 //=============================================================================
784 //  TranslateTwoPoints:
785 //=============================================================================
786 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateTwoPoints (GEOM::GEOM_Object_ptr theObject,
787                                                          GEOM::GEOM_Object_ptr thePoint1,
788                                                          GEOM::GEOM_Object_ptr thePoint2)
789 {
790   MESSAGE("GEOM_Superv_i::TranslateTwoPoints");
791   if (CORBA::is_nil(myTransfOp)) getTransfOp();
792   return myTransfOp->TranslateTwoPoints(theObject, thePoint1, thePoint2);
793 }
794
795 //=============================================================================
796 //  TranslateTwoPointsCopy:
797 //=============================================================================
798 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateTwoPointsCopy (GEOM::GEOM_Object_ptr theObject,
799                                                              GEOM::GEOM_Object_ptr thePoint1,
800                                                              GEOM::GEOM_Object_ptr thePoint2)
801 {
802   MESSAGE("GEOM_Superv_i::TranslateTwoPointsCopy");
803   if (CORBA::is_nil(myTransfOp)) getTransfOp();
804   return myTransfOp->TranslateTwoPointsCopy(theObject, thePoint1, thePoint2);
805 }
806
807 //=============================================================================
808 //  TranslateDXDYDZ:
809 //=============================================================================
810 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateDXDYDZ (GEOM::GEOM_Object_ptr theObject,
811                                                       CORBA::Double theDX, 
812                                                       CORBA::Double theDY, 
813                                                       CORBA::Double theDZ)
814 {
815   MESSAGE("GEOM_Superv_i::TranslateDXDYDZ");
816   if (CORBA::is_nil(myTransfOp)) getTransfOp();
817   return myTransfOp->TranslateDXDYDZ(theObject, theDX, theDY, theDZ);
818 }
819
820 //=============================================================================
821 //  TranslateDXDYDZCopy:
822 //=============================================================================
823 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateDXDYDZCopy (GEOM::GEOM_Object_ptr theObject,
824                                                           CORBA::Double theDX, 
825                                                           CORBA::Double theDY, 
826                                                           CORBA::Double theDZ)
827 {
828   MESSAGE("GEOM_Superv_i::TranslateDXDYDZCopy");
829   if (CORBA::is_nil(myTransfOp)) getTransfOp();
830   return myTransfOp->TranslateDXDYDZCopy(theObject, theDX, theDY, theDZ);
831 }
832
833 //=============================================================================
834 //  TranslateVector:
835 //=============================================================================
836 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateVector (GEOM::GEOM_Object_ptr theObject,
837                                                       GEOM::GEOM_Object_ptr theVector)
838 {
839   MESSAGE("GEOM_Superv_i::TranslateVector");
840   if (CORBA::is_nil(myTransfOp)) getTransfOp();
841   return myTransfOp->TranslateVector(theObject, theVector);
842 }
843
844 //=============================================================================
845 //  TranslateVectorCopy:
846 //=============================================================================
847 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateVectorCopy (GEOM::GEOM_Object_ptr theObject,
848                                                           GEOM::GEOM_Object_ptr theVector)
849 {
850   MESSAGE("GEOM_Superv_i::TranslateVectorCopy");
851   if (CORBA::is_nil(myTransfOp)) getTransfOp();
852   return myTransfOp->TranslateVectorCopy(theObject, theVector);
853 }
854
855 //=============================================================================
856 //  MultiTranslate1D:
857 //=============================================================================
858 GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiTranslate1D (GEOM::GEOM_Object_ptr theObject,
859                                                        GEOM::GEOM_Object_ptr theVector,
860                                                        CORBA::Double theStep,
861                                                        CORBA::Long theNbTimes)
862 {
863   MESSAGE("GEOM_Superv_i::MultiTranslate1D");
864   if (CORBA::is_nil(myTransfOp)) getTransfOp();
865   return myTransfOp->MultiTranslate1D(theObject, theVector, theStep, theNbTimes);
866 }
867
868 //=============================================================================
869 //  MultiTranslate2D:
870 //=============================================================================
871 GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiTranslate2D (GEOM::GEOM_Object_ptr theObject,
872                                                        GEOM::GEOM_Object_ptr theVector1,
873                                                        CORBA::Double theStep1,
874                                                        CORBA::Long theNbTimes1,
875                                                        GEOM::GEOM_Object_ptr theVector2,
876                                                        CORBA::Double theStep2,
877                                                        CORBA::Long theNbTimes2)
878 {
879   MESSAGE("GEOM_Superv_i::MultiTranslate2D");
880   if (CORBA::is_nil(myTransfOp)) getTransfOp();
881   return myTransfOp->MultiTranslate2D(theObject, theVector1, theStep1, theNbTimes1,
882                                       theVector2, theStep2, theNbTimes2);
883 }
884
885 //=============================================================================
886 //  Rotate:
887 //=============================================================================
888 GEOM::GEOM_Object_ptr GEOM_Superv_i::Rotate (GEOM::GEOM_Object_ptr theObject,
889                                              GEOM::GEOM_Object_ptr theAxis,
890                                              CORBA::Double theAngle)
891 {
892   MESSAGE("GEOM_Superv_i::Rotate");
893   if (CORBA::is_nil(myTransfOp)) getTransfOp();
894   return myTransfOp->Rotate(theObject, theAxis, theAngle);
895 }
896
897 //=============================================================================
898 //  RotateCopy:
899 //=============================================================================
900 GEOM::GEOM_Object_ptr GEOM_Superv_i::RotateCopy (GEOM::GEOM_Object_ptr theObject,
901                                                  GEOM::GEOM_Object_ptr theAxis,
902                                                  CORBA::Double theAngle)
903 {
904   MESSAGE("GEOM_Superv_i::RotateCopy");
905   if (CORBA::is_nil(myTransfOp)) getTransfOp();
906   return myTransfOp->RotateCopy(theObject, theAxis, theAngle);
907 }
908
909 //=============================================================================
910 //  MultiRotate1D:
911 //=============================================================================
912 GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiRotate1D (GEOM::GEOM_Object_ptr theObject,
913                                                     GEOM::GEOM_Object_ptr theAxis,
914                                                     CORBA::Long theNbTimes)
915 {
916   MESSAGE("GEOM_Superv_i::MultiRotate1D");
917   if (CORBA::is_nil(myTransfOp)) getTransfOp();
918   return myTransfOp->MultiRotate1D(theObject, theAxis, theNbTimes);
919 }
920
921 //=============================================================================
922 //  MultiRotate2D:
923 //=============================================================================
924 GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiRotate2D (GEOM::GEOM_Object_ptr theObject,
925                                                     GEOM::GEOM_Object_ptr theAxis,
926                                                     CORBA::Double theAngle,
927                                                     CORBA::Long theNbTimes1,
928                                                     CORBA::Double theStep,
929                                                     CORBA::Long theNbTimes2)
930 {
931   MESSAGE("GEOM_Superv_i::MultiRotate2D");
932   if (CORBA::is_nil(myTransfOp)) getTransfOp();
933   return myTransfOp->MultiRotate2D(theObject, theAxis, theAngle, theNbTimes1, theStep, theNbTimes2);
934 }
935
936 //=============================================================================
937 //  MirrorPlane:
938 //=============================================================================
939 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPlane (GEOM::GEOM_Object_ptr theObject, 
940                                                   GEOM::GEOM_Object_ptr thePlane)
941 {
942   MESSAGE("GEOM_Superv_i::MirrorPlane");
943   if (CORBA::is_nil(myTransfOp)) getTransfOp();
944   return myTransfOp->MirrorPlane(theObject, thePlane);
945 }
946
947 //=============================================================================
948 //  MirrorPlaneCopy:
949 //=============================================================================
950 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPlaneCopy (GEOM::GEOM_Object_ptr theObject, 
951                                                       GEOM::GEOM_Object_ptr thePlane)
952 {
953   MESSAGE("GEOM_Superv_i::MirrorPlaneCopy");
954   if (CORBA::is_nil(myTransfOp)) getTransfOp();
955   return myTransfOp->MirrorPlaneCopy(theObject, thePlane);
956 }
957
958 //=============================================================================
959 //  MirrorAxis:
960 //=============================================================================
961 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorAxis (GEOM::GEOM_Object_ptr theObject, 
962                                                  GEOM::GEOM_Object_ptr theAxis)
963 {
964   MESSAGE("GEOM_Superv_i::MirrorAxis");
965   if (CORBA::is_nil(myTransfOp)) getTransfOp();
966   return myTransfOp->MirrorAxis(theObject, theAxis);
967 }
968
969 //=============================================================================
970 //  MirrorAxisCopy:
971 //=============================================================================
972 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorAxisCopy (GEOM::GEOM_Object_ptr theObject, 
973                                                      GEOM::GEOM_Object_ptr theAxis)
974 {
975   MESSAGE("GEOM_Superv_i::MirrorAxisCopy");
976   if (CORBA::is_nil(myTransfOp)) getTransfOp();
977   return myTransfOp->MirrorAxisCopy(theObject, theAxis);
978 }
979
980 //=============================================================================
981 //  MirrorPoint:
982 //=============================================================================
983 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPoint (GEOM::GEOM_Object_ptr theObject, 
984                                                   GEOM::GEOM_Object_ptr thePoint)
985 {
986   MESSAGE("GEOM_Superv_i::MirrorPoint");
987   if (CORBA::is_nil(myTransfOp)) getTransfOp();
988   return myTransfOp->MirrorPoint(theObject, thePoint);
989 }
990
991 //=============================================================================
992 //  MirrorPointCopy:
993 //=============================================================================
994 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPointCopy (GEOM::GEOM_Object_ptr theObject, 
995                                                       GEOM::GEOM_Object_ptr thePoint)
996 {
997   MESSAGE("GEOM_Superv_i::MirrorPointCopy");
998   if (CORBA::is_nil(myTransfOp)) getTransfOp();
999   return myTransfOp->MirrorPointCopy(theObject, thePoint);
1000 }
1001
1002 //=============================================================================
1003 //  OffsetShape:
1004 //=============================================================================
1005 GEOM::GEOM_Object_ptr GEOM_Superv_i::OffsetShape (GEOM::GEOM_Object_ptr theObject, 
1006                                                   CORBA::Double theOffset)
1007 {
1008   MESSAGE("GEOM_Superv_i::OffsetShape");
1009   if (CORBA::is_nil(myTransfOp)) getTransfOp();
1010   return myTransfOp->OffsetShape(theObject, theOffset);
1011 }
1012
1013 //=============================================================================
1014 //  OffsetShapeCopy:
1015 //=============================================================================
1016 GEOM::GEOM_Object_ptr GEOM_Superv_i::OffsetShapeCopy (GEOM::GEOM_Object_ptr theObject, 
1017                                                       CORBA::Double theOffset)
1018 {
1019   MESSAGE("GEOM_Superv_i::OffsetShapeCopy");
1020   if (CORBA::is_nil(myTransfOp)) getTransfOp();
1021   return myTransfOp->OffsetShapeCopy(theObject, theOffset);
1022 }
1023
1024 //=============================================================================
1025 //  ScaleShape:
1026 //=============================================================================
1027 GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShape (GEOM::GEOM_Object_ptr theObject, 
1028                                                  GEOM::GEOM_Object_ptr thePoint,
1029                                                  CORBA::Double theFactor)
1030 {
1031   MESSAGE("GEOM_Superv_i::ScaleShape");
1032   if (CORBA::is_nil(myTransfOp)) getTransfOp();
1033   return myTransfOp->ScaleShape(theObject, thePoint, theFactor);
1034 }
1035
1036 //=============================================================================
1037 //  ScaleShapeCopy:
1038 //=============================================================================
1039 GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShapeCopy (GEOM::GEOM_Object_ptr theObject, 
1040                                                      GEOM::GEOM_Object_ptr thePoint,
1041                                                      CORBA::Double theFactor)
1042 {
1043   MESSAGE("GEOM_Superv_i::ScaleShapeCopy");
1044   if (CORBA::is_nil(myTransfOp)) getTransfOp();
1045   return myTransfOp->ScaleShapeCopy(theObject, thePoint, theFactor);
1046 }
1047
1048 //=============================================================================
1049 //  PositionShape:
1050 //=============================================================================
1051 GEOM::GEOM_Object_ptr GEOM_Superv_i::PositionShape (GEOM::GEOM_Object_ptr theObject,
1052                                                     GEOM::GEOM_Object_ptr theStartLCS,
1053                                                     GEOM::GEOM_Object_ptr theEndLCS)
1054 {
1055   MESSAGE("GEOM_Superv_i::PositionShape");
1056   if (CORBA::is_nil(myTransfOp)) getTransfOp();
1057   return myTransfOp->PositionShape(theObject, theStartLCS, theEndLCS);
1058 }
1059
1060 //=============================================================================
1061 //  PositionShapeCopy:
1062 //=============================================================================
1063 GEOM::GEOM_Object_ptr GEOM_Superv_i::PositionShapeCopy (GEOM::GEOM_Object_ptr theObject,
1064                                                         GEOM::GEOM_Object_ptr theStartLCS,
1065                                                         GEOM::GEOM_Object_ptr theEndLCS)
1066 {
1067   MESSAGE("GEOM_Superv_i::PositionShapeCopy");
1068   if (CORBA::is_nil(myTransfOp)) getTransfOp();
1069   return myTransfOp->PositionShapeCopy(theObject, theStartLCS, theEndLCS);
1070 }
1071
1072 //=============================== ShapesOperations ============================
1073 //=============================================================================
1074 //  Make:
1075 //=============================================================================
1076 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeEdge (GEOM::GEOM_Object_ptr thePnt1,
1077                                                GEOM::GEOM_Object_ptr thePnt2)
1078 {
1079   MESSAGE("GEOM_Superv_i::MakeEdge");
1080   if (CORBA::is_nil(myShapesOp)) getShapesOp();
1081   return myShapesOp->MakeEdge(thePnt1, thePnt2);
1082 }
1083
1084 //=============================================================================
1085 //  MakeWire:
1086 //=============================================================================
1087 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeWire (const GEOM::ListOfGO& theEdgesAndWires)
1088 {
1089   MESSAGE("GEOM_Superv_i::MakeWire");
1090   if (CORBA::is_nil(myShapesOp)) getShapesOp();
1091   return myShapesOp->MakeWire(theEdgesAndWires);
1092 }
1093
1094 //=============================================================================
1095 //  MakeFace:
1096 //=============================================================================
1097 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFace (GEOM::GEOM_Object_ptr theWire,
1098                                                CORBA::Boolean isPlanarWanted)
1099 {
1100   MESSAGE("GEOM_Superv_i::MakeFace");
1101   if (CORBA::is_nil(myShapesOp)) getShapesOp();
1102   return myShapesOp->MakeFace(theWire, isPlanarWanted);
1103 }
1104
1105 //=============================================================================
1106 //  MakeFaceWires:
1107 //=============================================================================
1108 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFaceWires (const GEOM::ListOfGO& theWires,
1109                                                     CORBA::Boolean isPlanarWanted)
1110 {
1111   MESSAGE("GEOM_Superv_i::MakeFaceWires");
1112   if (CORBA::is_nil(myShapesOp)) getShapesOp();
1113   return myShapesOp->MakeFaceWires(theWires, isPlanarWanted);
1114 }
1115
1116 //=============================================================================
1117 //  MakeShell:
1118 //=============================================================================
1119 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeShell (const GEOM::ListOfGO& theFacesAndShells)
1120 {
1121   MESSAGE("GEOM_Superv_i::MakeShell");
1122   if (CORBA::is_nil(myShapesOp)) getShapesOp();
1123   return myShapesOp->MakeShell(theFacesAndShells);
1124 }
1125
1126 //=============================================================================
1127 //  MakeSolidShell:
1128 //=============================================================================
1129 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSolidShell (GEOM::GEOM_Object_ptr theShell)
1130 {
1131   MESSAGE("GEOM_Superv_i::MakeSolidShell");
1132   if (CORBA::is_nil(myShapesOp)) getShapesOp();
1133   return myShapesOp->MakeSolidShell(theShell);
1134 }
1135
1136 //=============================================================================
1137 //  MakeSolidShells:
1138 //=============================================================================
1139 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSolidShells (const GEOM::ListOfGO& theShells)
1140 {
1141   MESSAGE("GEOM_Superv_i::MakeSolidShells");
1142   if (CORBA::is_nil(myShapesOp)) getShapesOp();
1143   return myShapesOp->MakeSolidShells(theShells);
1144 }
1145
1146 //=============================================================================
1147 //  MakeCompound:
1148 //=============================================================================
1149 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCompound (const GEOM::ListOfGO& theShapes)
1150 {
1151   MESSAGE("GEOM_Superv_i::MakeCompound");
1152   if (CORBA::is_nil(myShapesOp)) getShapesOp();
1153   return myShapesOp->MakeCompound(theShapes);
1154 }
1155
1156 //=============================================================================
1157 //  MakeGlueFaces:
1158 //=============================================================================
1159 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeGlueFaces (GEOM::GEOM_Object_ptr theShape,
1160                                                     const CORBA::Double   theTolerance)
1161 {
1162   MESSAGE("GEOM_Superv_i::MakeGlueFaces");
1163   if (CORBA::is_nil(myShapesOp)) getShapesOp();
1164   return myShapesOp->MakeGlueFaces(theShape, theTolerance);
1165 }
1166
1167 //=============================================================================
1168 //  MakeExplode:
1169 //=============================================================================
1170 GEOM::ListOfGO* GEOM_Superv_i::MakeExplode (GEOM::GEOM_Object_ptr theShape,
1171                                             const CORBA::Long theShapeType,
1172                                             const CORBA::Boolean isSorted)
1173 {
1174   MESSAGE("GEOM_Superv_i::MakeExplode");
1175   if (CORBA::is_nil(myShapesOp)) getShapesOp();
1176   return myShapesOp->MakeExplode(theShape, theShapeType, isSorted);
1177 }
1178
1179 //=============================================================================
1180 //  NumberOfFaces:
1181 //=============================================================================
1182 CORBA::Long GEOM_Superv_i::NumberOfFaces (GEOM::GEOM_Object_ptr theShape)
1183 {
1184   MESSAGE("GEOM_Superv_i::NumberOfFaces");
1185   if (CORBA::is_nil(myShapesOp)) getShapesOp();
1186   return myShapesOp->NumberOfFaces(theShape);
1187 }
1188
1189 //=============================================================================
1190 //  NumberOfEdges:
1191 //=============================================================================
1192 CORBA::Long GEOM_Superv_i::NumberOfEdges (GEOM::GEOM_Object_ptr theShape)
1193 {
1194   MESSAGE("GEOM_Superv_i::NumberOfEdges");
1195   if (CORBA::is_nil(myShapesOp)) getShapesOp();
1196   return myShapesOp->NumberOfEdges(theShape);
1197 }
1198
1199 //=============================================================================
1200 //  ChangeOrientation:
1201 //=============================================================================
1202 GEOM::GEOM_Object_ptr GEOM_Superv_i::ChangeOrientation (GEOM::GEOM_Object_ptr theShape)
1203 {
1204   MESSAGE("GEOM_Superv_i::ChangeOrientation");
1205   if (CORBA::is_nil(myShapesOp)) getShapesOp();
1206   return myShapesOp->ChangeOrientation(theShape);
1207 }
1208
1209
1210 //=============================== BlocksOperations ============================
1211 //=============================================================================
1212 //  MakeQuad4Vertices:
1213 //=============================================================================
1214 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeQuad4Vertices (GEOM::GEOM_Object_ptr thePnt1,
1215                                                         GEOM::GEOM_Object_ptr thePnt2,
1216                                                         GEOM::GEOM_Object_ptr thePnt3,
1217                                                         GEOM::GEOM_Object_ptr thePnt4)
1218 {
1219   MESSAGE("GEOM_Superv_i::MakeQuad4Vertices");
1220   if (CORBA::is_nil(myBlocksOp)) getBlocksOp();
1221   return myBlocksOp->MakeQuad4Vertices(thePnt1, thePnt2, thePnt3, thePnt4);
1222 }
1223
1224 //=============================================================================
1225 //  MakeQuad:
1226 //=============================================================================
1227 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeQuad (GEOM::GEOM_Object_ptr theEdge1,
1228                                                GEOM::GEOM_Object_ptr theEdge2,
1229                                                GEOM::GEOM_Object_ptr theEdge3,
1230                                                GEOM::GEOM_Object_ptr theEdge4)
1231 {
1232   MESSAGE("GEOM_Superv_i::MakeQuad");
1233   if (CORBA::is_nil(myBlocksOp)) getBlocksOp();
1234   return myBlocksOp->MakeQuad(theEdge1, theEdge2, theEdge3, theEdge4);
1235 }
1236
1237 //=============================================================================
1238 //  MakeQuad2Edges:
1239 //=============================================================================
1240 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeQuad2Edges (GEOM::GEOM_Object_ptr theEdge1,
1241                                                      GEOM::GEOM_Object_ptr theEdge2)
1242 {
1243   MESSAGE("GEOM_Superv_i::MakeQuad2Edges");
1244   if (CORBA::is_nil(myBlocksOp)) getBlocksOp();
1245   return myBlocksOp->MakeQuad2Edges(theEdge1, theEdge2);
1246 }
1247
1248 //=============================================================================
1249 //  MakeHexa:
1250 //=============================================================================
1251 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeHexa (GEOM::GEOM_Object_ptr theFace1,
1252                                                GEOM::GEOM_Object_ptr theFace2,
1253                                                GEOM::GEOM_Object_ptr theFace3,
1254                                                GEOM::GEOM_Object_ptr theFace4,
1255                                                GEOM::GEOM_Object_ptr theFace5,
1256                                                GEOM::GEOM_Object_ptr theFace6)
1257 {
1258   MESSAGE("GEOM_Superv_i::MakeHexa");
1259   if (CORBA::is_nil(myBlocksOp)) getBlocksOp();
1260   return myBlocksOp->MakeHexa(theFace1, theFace2, theFace3, theFace4, theFace5, theFace6);
1261 }
1262
1263 //=============================================================================
1264 //  MakeHexa2Faces:
1265 //=============================================================================
1266 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeHexa2Faces (GEOM::GEOM_Object_ptr theFace1,
1267                                                      GEOM::GEOM_Object_ptr theFace2)
1268 {
1269   MESSAGE("GEOM_Superv_i::MakeHexa2Faces");
1270   if (CORBA::is_nil(myBlocksOp)) getBlocksOp();
1271   return myBlocksOp->MakeHexa2Faces(theFace1, theFace2);
1272 }
1273
1274 //=============================================================================
1275 //  GetPoint:
1276 //=============================================================================
1277 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetPoint (GEOM::GEOM_Object_ptr theShape,
1278                                                const CORBA::Double   theX,
1279                                                const CORBA::Double   theY,
1280                                                const CORBA::Double   theZ,
1281                                                const CORBA::Double   theEpsilon)
1282 {
1283   MESSAGE("GEOM_Superv_i::GetPoint");
1284   if (CORBA::is_nil(myBlocksOp)) getBlocksOp();
1285   return myBlocksOp->GetPoint(theShape, theX, theY, theZ, theEpsilon);
1286 }
1287
1288 //=============================================================================
1289 //  GetEdge:
1290 //=============================================================================
1291 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetEdge (GEOM::GEOM_Object_ptr theShape,
1292                                               GEOM::GEOM_Object_ptr thePoint1,
1293                                               GEOM::GEOM_Object_ptr thePoint2)
1294 {
1295   MESSAGE("GEOM_Superv_i::GetEdge");
1296   if (CORBA::is_nil(myBlocksOp)) getBlocksOp();
1297   return myBlocksOp->GetEdge(theShape, thePoint1, thePoint2);
1298 }
1299
1300 //=============================================================================
1301 //  GetEdgeNearPoint:
1302 //=============================================================================
1303 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetEdgeNearPoint (GEOM::GEOM_Object_ptr theShape,
1304                                                        GEOM::GEOM_Object_ptr thePoint)
1305 {
1306   MESSAGE("GEOM_Superv_i::GetEdgeNearPoint");
1307   if (CORBA::is_nil(myBlocksOp)) getBlocksOp();
1308   return myBlocksOp->GetEdgeNearPoint(theShape, thePoint);
1309 }
1310
1311 //=============================================================================
1312 //  GetFaceByPoints:
1313 //=============================================================================
1314 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceByPoints (GEOM::GEOM_Object_ptr theShape,
1315                                                       GEOM::GEOM_Object_ptr thePoint1,
1316                                                       GEOM::GEOM_Object_ptr thePoint2,
1317                                                       GEOM::GEOM_Object_ptr thePoint3,
1318                                                       GEOM::GEOM_Object_ptr thePoint4)
1319 {
1320   MESSAGE("GEOM_Superv_i::GetFaceByPoints");
1321   if (CORBA::is_nil(myBlocksOp)) getBlocksOp();
1322   return myBlocksOp->GetFaceByPoints(theShape, thePoint1, thePoint2, thePoint3, thePoint4);
1323 }
1324
1325 //=============================================================================
1326 //  GetFaceByEdges:
1327 //=============================================================================
1328 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceByEdges (GEOM::GEOM_Object_ptr theShape,
1329                                                      GEOM::GEOM_Object_ptr theEdge1,
1330                                                      GEOM::GEOM_Object_ptr theEdge2)
1331 {
1332   MESSAGE("GEOM_Superv_i::GetFaceByEdges");
1333   if (CORBA::is_nil(myBlocksOp)) getBlocksOp();
1334   return myBlocksOp->GetFaceByEdges(theShape, theEdge1, theEdge2);
1335 }
1336
1337 //=============================================================================
1338 //  GetOppositeFace:
1339 //=============================================================================
1340 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetOppositeFace (GEOM::GEOM_Object_ptr theBlock,
1341                                                       GEOM::GEOM_Object_ptr theFace)
1342 {
1343   MESSAGE("GEOM_Superv_i::GetOppositeFace");
1344   if (CORBA::is_nil(myBlocksOp)) getBlocksOp();
1345   return myBlocksOp->GetOppositeFace(theBlock, theFace);
1346 }
1347
1348 //=============================================================================
1349 //  GetFaceNearPoint:
1350 //=============================================================================
1351 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceNearPoint (GEOM::GEOM_Object_ptr theShape,
1352                                                        GEOM::GEOM_Object_ptr thePoint)
1353 {
1354   MESSAGE("GEOM_Superv_i::GetFaceNearPoint");
1355   if (CORBA::is_nil(myBlocksOp)) getBlocksOp();
1356   return myBlocksOp->GetFaceNearPoint(theShape, thePoint);
1357 }
1358
1359 //=============================================================================
1360 //  GetFaceByNormale:
1361 //=============================================================================
1362 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceByNormale (GEOM::GEOM_Object_ptr theBlock,
1363                                                        GEOM::GEOM_Object_ptr theVector)
1364 {
1365   MESSAGE("GEOM_Superv_i::GetFaceByNormale");
1366   if (CORBA::is_nil(myBlocksOp)) getBlocksOp();
1367   return myBlocksOp->GetFaceByNormale(theBlock, theVector);
1368 }
1369
1370 //=============================================================================
1371 //  IsCompoundOfBlocks:
1372 //=============================================================================
1373 CORBA::Boolean GEOM_Superv_i::IsCompoundOfBlocks (GEOM::GEOM_Object_ptr theCompound,
1374                                                   const CORBA::Long     theMinNbFaces,
1375                                                   const CORBA::Long     theMaxNbFaces,
1376                                                   CORBA::Long&          theNbBlocks)
1377 {
1378   MESSAGE("GEOM_Superv_i::IsCompoundOfBlocks");
1379   if (CORBA::is_nil(myBlocksOp)) getBlocksOp();
1380   return myBlocksOp->IsCompoundOfBlocks(theCompound, theMinNbFaces, theMaxNbFaces, theNbBlocks);
1381 }
1382
1383 //=============================================================================
1384 //  CheckCompoundOfBlocks:
1385 //=============================================================================
1386 CORBA::Boolean GEOM_Superv_i::CheckCompoundOfBlocks 
1387 (GEOM::GEOM_Object_ptr theCompound,
1388  GEOM::GEOM_IBlocksOperations::BCErrors_out theErrors)
1389 {
1390   MESSAGE("GEOM_Superv_i::CheckCompoundOfBlocks");
1391   if (CORBA::is_nil(myBlocksOp)) getBlocksOp();
1392   return myBlocksOp->CheckCompoundOfBlocks(theCompound, theErrors);
1393 }
1394
1395 //=============================================================================
1396 //  PrintBCErrors:
1397 //=============================================================================
1398 char* GEOM_Superv_i::PrintBCErrors (GEOM::GEOM_Object_ptr theCompound,
1399                                     const GEOM::GEOM_IBlocksOperations::BCErrors& theErrors)
1400 {
1401   MESSAGE("GEOM_Superv_i::PrintBCErrors");
1402   if (CORBA::is_nil(myBlocksOp)) getBlocksOp();
1403   return myBlocksOp->PrintBCErrors(theCompound, theErrors);
1404 }
1405
1406 //=============================================================================
1407 //  ExplodeCompoundOfBlocks:
1408 //=============================================================================
1409 GEOM::ListOfGO* GEOM_Superv_i::ExplodeCompoundOfBlocks (GEOM::GEOM_Object_ptr theCompound,
1410                                                         const CORBA::Long     theMinNbFaces,
1411                                                         const CORBA::Long     theMaxNbFaces)
1412 {
1413   MESSAGE("GEOM_Superv_i::ExplodeCompoundOfBlocks");
1414   if (CORBA::is_nil(myBlocksOp)) getBlocksOp();
1415   return myBlocksOp->ExplodeCompoundOfBlocks(theCompound, theMinNbFaces, theMaxNbFaces);
1416 }
1417
1418 //=============================================================================
1419 //  GetBlockNearPoint:
1420 //=============================================================================
1421 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetBlockNearPoint (GEOM::GEOM_Object_ptr theCompound,
1422                                                         GEOM::GEOM_Object_ptr thePoint)
1423 {
1424   MESSAGE("GEOM_Superv_i::GetBlockNearPoint");
1425   if (CORBA::is_nil(myBlocksOp)) getBlocksOp();
1426   return myBlocksOp->GetBlockNearPoint(theCompound, thePoint);
1427 }
1428
1429 //=============================================================================
1430 //  GetBlockByParts:
1431 //=============================================================================
1432 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetBlockByParts (GEOM::GEOM_Object_ptr theCompound,
1433                                                       const GEOM::ListOfGO& theParts)
1434 {
1435   MESSAGE("GEOM_Superv_i::GetBlockByParts");
1436   if (CORBA::is_nil(myBlocksOp)) getBlocksOp();
1437   return myBlocksOp->GetBlockByParts(theCompound, theParts);
1438 }
1439
1440 //=============================================================================
1441 //  GetBlocksByParts:
1442 //=============================================================================
1443 GEOM::ListOfGO* GEOM_Superv_i::GetBlocksByParts (GEOM::GEOM_Object_ptr theCompound,
1444                                                  const GEOM::ListOfGO& theParts)
1445 {
1446   MESSAGE("GEOM_Superv_i::GetBlocksByParts");
1447   if (CORBA::is_nil(myBlocksOp)) getBlocksOp();
1448   return myBlocksOp->GetBlocksByParts(theCompound, theParts);
1449 }
1450
1451 //=============================================================================
1452 //  MakeMultiTransformation1D:
1453 //=============================================================================
1454 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeMultiTransformation1D (GEOM::GEOM_Object_ptr theBlock,
1455                                                                 const CORBA::Long     theDirFace1,
1456                                                                 const CORBA::Long     theDirFace2,
1457                                                                 const CORBA::Long     theNbTimes)
1458 {
1459   MESSAGE("GEOM_Superv_i::MakeMultiTransformation1D");
1460   if (CORBA::is_nil(myBlocksOp)) getBlocksOp();
1461   return myBlocksOp->MakeMultiTransformation1D(theBlock, theDirFace1, theDirFace2, theNbTimes);
1462 }
1463
1464 //=============================================================================
1465 //  MakeMultiTransformation2D:
1466 //=============================================================================
1467 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeMultiTransformation2D 
1468 (GEOM::GEOM_Object_ptr theBlock,
1469  const CORBA::Long     theDirFace1U,
1470  const CORBA::Long     theDirFace2U,
1471  const CORBA::Long     theNbTimesU,
1472  const CORBA::Long     theDirFace1V,
1473  const CORBA::Long     theDirFace2V,
1474  const CORBA::Long     theNbTimesV)
1475 {
1476   MESSAGE("GEOM_Superv_i::MakeMultiTransformation2D");
1477   if (CORBA::is_nil(myBlocksOp)) getBlocksOp();
1478   return myBlocksOp->MakeMultiTransformation2D(theBlock, 
1479                                                theDirFace1U, theDirFace2U, theNbTimesU,
1480                                                theDirFace1V, theDirFace2V, theNbTimesV);
1481 }
1482
1483 //=============================== CurvesOperations ============================
1484 //=============================================================================
1485 //  MakeCirclePntVecR:
1486 //=============================================================================
1487 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCirclePntVecR (GEOM::GEOM_Object_ptr theCenter,
1488                                                         GEOM::GEOM_Object_ptr theVector,
1489                                                         CORBA::Double theR)
1490 {
1491   MESSAGE("GEOM_Superv_i::MakeCirclePntVecR");
1492   if (CORBA::is_nil(myCurvesOp)) getCurvesOp();
1493   return myCurvesOp->MakeCirclePntVecR(theCenter, theVector, theR);
1494 }
1495
1496 //=============================================================================
1497 //  MakeCircleThreePnt:
1498 //=============================================================================
1499 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCircleThreePnt (GEOM::GEOM_Object_ptr thePnt1,
1500                                                          GEOM::GEOM_Object_ptr thePnt2,
1501                                                          GEOM::GEOM_Object_ptr thePnt3)
1502 {
1503   MESSAGE("GEOM_Superv_i::MakeCircleThreePnt");
1504   if (CORBA::is_nil(myCurvesOp)) getCurvesOp();
1505   return myCurvesOp->MakeCircleThreePnt(thePnt1, thePnt2, thePnt3);
1506 }
1507
1508 //=============================================================================
1509 //  MakeEllipse:
1510 //=============================================================================
1511 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeEllipse (GEOM::GEOM_Object_ptr theCenter,
1512                                                   GEOM::GEOM_Object_ptr theVector,
1513                                                   CORBA::Double theRMajor, 
1514                                                   CORBA::Double theRMinor)
1515 {
1516   MESSAGE("GEOM_Superv_i::MakeEllipse");
1517   if (CORBA::is_nil(myCurvesOp)) getCurvesOp();
1518   return myCurvesOp->MakeEllipse(theCenter, theVector, theRMajor, theRMinor);
1519 }
1520
1521 //=============================================================================
1522 //  MakeArc:
1523 //=============================================================================
1524 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArc (GEOM::GEOM_Object_ptr thePnt1,
1525                                               GEOM::GEOM_Object_ptr thePnt2,
1526                                               GEOM::GEOM_Object_ptr thePnt3)
1527 {
1528   MESSAGE("GEOM_Superv_i::MakeArc");
1529   if (CORBA::is_nil(myCurvesOp)) getCurvesOp();
1530   return myCurvesOp->MakeArc(thePnt1, thePnt2, thePnt3);
1531 }
1532
1533 //=============================================================================
1534 //  MakePolyline:
1535 //=============================================================================
1536 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePolyline (const GEOM::ListOfGO& thePoints)
1537 {
1538   MESSAGE("GEOM_Superv_i::MakePolyline");
1539   if (CORBA::is_nil(myCurvesOp)) getCurvesOp();
1540   return myCurvesOp->MakePolyline(thePoints);
1541 }
1542
1543 //=============================================================================
1544 //  MakeSplineBezier:
1545 //=============================================================================
1546 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSplineBezier (const GEOM::ListOfGO& thePoints)
1547 {
1548   MESSAGE("GEOM_Superv_i::MakeSplineBezier");
1549   if (CORBA::is_nil(myCurvesOp)) getCurvesOp();
1550   return myCurvesOp->MakeSplineBezier(thePoints);
1551 }
1552
1553 //=============================================================================
1554 //  MakeSplineInterpolation:
1555 //=============================================================================
1556 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSplineInterpolation (const GEOM::ListOfGO& thePoints)
1557 {
1558   MESSAGE("GEOM_Superv_i::MakeSplineInterpolation");
1559   if (CORBA::is_nil(myCurvesOp)) getCurvesOp();
1560   return myCurvesOp->MakeSplineInterpolation(thePoints);
1561 }
1562
1563 //=============================================================================
1564 //  MakeSketcher:
1565 //=============================================================================
1566 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSketcher (const char* theCommand, 
1567                                                    const GEOM::ListOfDouble& theWorkingPlane)
1568 {
1569   MESSAGE("GEOM_Superv_i::MakeSketcher");
1570   if (CORBA::is_nil(myCurvesOp)) getCurvesOp();
1571   return myCurvesOp->MakeSketcher(theCommand, theWorkingPlane);
1572 }
1573
1574 //=============================== LocalOperations =============================
1575 //=============================================================================
1576 //  MakeFilletAll:
1577 //=============================================================================
1578 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletAll (GEOM::GEOM_Object_ptr theShape,
1579                                                     CORBA::Double theR)
1580 {
1581   MESSAGE("GEOM_Superv_i::MakeFilletAllMakeSketcher");
1582   if (CORBA::is_nil(myLocalOp)) getLocalOp();
1583   return myLocalOp->MakeFilletAll(theShape, theR);
1584 }
1585
1586 //=============================================================================
1587 //  MakeFilletEdges:
1588 //=============================================================================
1589 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletEdges (GEOM::GEOM_Object_ptr theShape, 
1590                                                       CORBA::Double theR,
1591                                                       const GEOM::ListOfLong& theEdges)
1592 {
1593   MESSAGE("GEOM_Superv_i::MakeFilletEdges");
1594   if (CORBA::is_nil(myLocalOp)) getLocalOp();
1595   return myLocalOp->MakeFilletEdges(theShape, theR, theEdges);
1596 }
1597
1598 //=============================================================================
1599 //  MakeFilletFaces:
1600 //=============================================================================
1601 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletFaces (GEOM::GEOM_Object_ptr theShape, 
1602                                                       CORBA::Double theR,
1603                                                       const GEOM::ListOfLong& theFaces)
1604 {
1605   MESSAGE("GEOM_Superv_i::MakeFilletFaces");
1606   if (CORBA::is_nil(myLocalOp)) getLocalOp();
1607   return myLocalOp->MakeFilletFaces(theShape, theR, theFaces);
1608 }
1609
1610 //=============================================================================
1611 //  MakeChamferAll:
1612 //=============================================================================
1613 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferAll (GEOM::GEOM_Object_ptr theShape, CORBA::Double theD)
1614 {
1615   MESSAGE("GEOM_Superv_i::MakeChamferAll");
1616   if (CORBA::is_nil(myLocalOp)) getLocalOp();
1617   return myLocalOp->MakeChamferAll(theShape, theD);
1618 }
1619   
1620 //=============================================================================
1621 //  MakeChamferEdge:
1622 //=============================================================================
1623 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdge (GEOM::GEOM_Object_ptr theShape,
1624                                                       CORBA::Double theD1, CORBA::Double theD2,
1625                                                       CORBA::Long theFace1, CORBA::Long theFace2)
1626 {
1627   MESSAGE("GEOM_Superv_i::MakeChamferEdge");
1628   if (CORBA::is_nil(myLocalOp)) getLocalOp();
1629   return myLocalOp->MakeChamferEdge(theShape, theD1, theD2, theFace1, theFace2);
1630 }
1631
1632 //=============================================================================
1633 //  MakeChamferFaces:
1634 //=============================================================================
1635 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferFaces (GEOM::GEOM_Object_ptr theShape,
1636                                                        CORBA::Double theD1, CORBA::Double theD2,
1637                                                        const GEOM::ListOfLong& theFaces)
1638 {
1639   MESSAGE("GEOM_Superv_i::MakeChamferFaces");
1640   if (CORBA::is_nil(myLocalOp)) getLocalOp();
1641   return myLocalOp->MakeChamferFaces(theShape, theD1, theD2, theFaces);
1642 }
1643
1644 //=============================================================================
1645 //  MakeArchimede:
1646 //=============================================================================
1647 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArchimede (GEOM::GEOM_Object_ptr theShape,
1648                                                     CORBA::Double theWeight,
1649                                                     CORBA::Double theWaterDensity,
1650                                                     CORBA::Double theMeshingDeflection)
1651 {
1652   MESSAGE("GEOM_Superv_i::MakeArchimede");
1653   if (CORBA::is_nil(myLocalOp)) getLocalOp();
1654   return myLocalOp->MakeArchimede(theShape, theWeight, theWaterDensity, theMeshingDeflection);
1655 }
1656
1657 //=============================================================================
1658 //  GetSubShapeIndexMakeFilletAll:
1659 //=============================================================================
1660 CORBA::Long GEOM_Superv_i::GetSubShapeIndex (GEOM::GEOM_Object_ptr theShape,
1661                                              GEOM::GEOM_Object_ptr theSubShape)
1662 {
1663   MESSAGE("GEOM_Superv_i::GetSubShapeIndexMakeArchimede");
1664   if (CORBA::is_nil(myLocalOp)) getLocalOp();
1665   return myLocalOp->GetSubShapeIndex(theShape, theSubShape);
1666 }
1667
1668 //=============================== GroupOperations =============================
1669 //=============================================================================
1670 //  CreateGroup:
1671 //=============================================================================
1672 GEOM::GEOM_Object_ptr GEOM_Superv_i::CreateGroup (GEOM::GEOM_Object_ptr theMainShape, 
1673                                                   CORBA::Long theShapeType)
1674 {
1675   MESSAGE("GEOM_Superv_i::CreateGroup");
1676   if (CORBA::is_nil(myGroupOp)) getGroupOp();
1677   return myGroupOp->CreateGroup(theMainShape, theShapeType);
1678 }
1679
1680 //=============================================================================
1681 //  AddObject:
1682 //=============================================================================
1683 void GEOM_Superv_i::AddObject (GEOM::GEOM_Object_ptr theGroup, 
1684                                CORBA::Long theSubShapeId)
1685 {
1686   MESSAGE("GEOM_Superv_i::AddObject");
1687   if (CORBA::is_nil(myGroupOp)) getGroupOp();
1688   myGroupOp->AddObject(theGroup, theSubShapeId);
1689 }
1690
1691 //=============================================================================
1692 //  RemoveObject:
1693 //=============================================================================
1694 void GEOM_Superv_i::RemoveObject (GEOM::GEOM_Object_ptr theGroup, 
1695                                   CORBA::Long theSubShapeId)
1696 {
1697   MESSAGE("GEOM_Superv_i::RemoveObject");
1698   if (CORBA::is_nil(myGroupOp)) getGroupOp();
1699   myGroupOp->RemoveObject(theGroup, theSubShapeId);
1700 }
1701
1702 //=============================================================================
1703 //  GetType:
1704 //=============================================================================
1705 CORBA::Long GEOM_Superv_i::GetType (GEOM::GEOM_Object_ptr theGroup)
1706 {
1707   MESSAGE("GEOM_Superv_i::GetType");
1708   if (CORBA::is_nil(myGroupOp)) getGroupOp();
1709   return myGroupOp->GetType(theGroup);
1710 }
1711
1712 //=============================================================================
1713 //  GetMainShape:
1714 //=============================================================================
1715 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetMainShape (GEOM::GEOM_Object_ptr theGroup)
1716 {
1717   MESSAGE("GEOM_Superv_i::GetMainShape");
1718   if (CORBA::is_nil(myGroupOp)) getGroupOp();
1719   return myGroupOp->GetMainShape(theGroup);
1720 }
1721
1722 //=============================================================================
1723 //  GetObjects:
1724 //=============================================================================
1725 GEOM::ListOfLong* GEOM_Superv_i::GetObjects (GEOM::GEOM_Object_ptr theGroup)
1726 {
1727   MESSAGE("GEOM_Superv_i::GetObjects");
1728   if (CORBA::is_nil(myGroupOp)) getGroupOp();
1729   return myGroupOp->GetObjects(theGroup);
1730 }
1731
1732 //=====================================================================================
1733 // EXPORTED METHODS
1734 //=====================================================================================
1735 extern "C"
1736 {
1737   PortableServer::ObjectId * GEOM_SupervEngine_factory(CORBA::ORB_ptr orb,
1738                                                       PortableServer::POA_ptr poa, 
1739                                                       PortableServer::ObjectId * contId,
1740                                                       const char *instanceName, 
1741                                                       const char * interfaceName)
1742   {
1743     GEOM_Superv_i * myGEOM_Superv_i = new GEOM_Superv_i(orb, poa, contId, instanceName, interfaceName);
1744     myGEOM_Superv_i->register_name("/myGEOM_Superv");
1745     return myGEOM_Superv_i->getId() ;
1746   }
1747 }