1 // Copyright (C) 2007-2022 CEA/DEN, EDF R&D, OPEN CASCADE
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
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.
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.
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
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
23 #ifndef __GEOM_SUPERV_I_H__
24 #define __GEOM_SUPERV_I_H__
26 #include "GEOM_I_Superv.hxx"
29 #include <SALOMEconfig.h>
30 #include CORBA_CLIENT_HEADER(GEOM_Gen)
31 #include CORBA_CLIENT_HEADER(AdvancedGEOM)
32 #include CORBA_CLIENT_HEADER(STLPlugin)
33 #include CORBA_CLIENT_HEADER(BREPPlugin)
34 #include CORBA_CLIENT_HEADER(STEPPlugin)
35 #include CORBA_CLIENT_HEADER(IGESPlugin)
36 #include CORBA_CLIENT_HEADER(XAOPlugin)
38 #include CORBA_CLIENT_HEADER(VTKPlugin)
40 #include CORBA_SERVER_HEADER(GEOM_Superv)
42 #include "SALOME_Component_i.hxx"
43 #include "SALOME_NamingService.hxx"
45 #include "GEOM_List_i.hh"
47 class GEOM_I_SUPERV_EXPORT GEOM_Superv_i : public virtual POA_GEOM::GEOM_Superv,
48 public Engines_Component_i
51 GEOM_Superv_i(CORBA::ORB_ptr orb,
52 PortableServer::POA_ptr poa,
53 PortableServer::ObjectId * contId,
54 const char *instanceName,
55 const char *interfaceName, bool withRegistry,
56 SALOME_NamingService_Abstract *my_name_service);
59 // generic method to be put in a super class
60 void register_name(char * name);
74 void getSTLPluginOp();
75 void getBREPPluginOp();
76 void getSTEPPluginOp();
77 void getIGESPluginOp();
78 void getXAOPluginOp();
80 void getVTKPluginOp();
82 PortableServer::ServantBase_var GetServant(CORBA::Object_ptr theObject,
83 PortableServer::POA_ptr thePOA);
85 //-----------------------------------------------------------//
86 // Create ListOfGO and add items to it //
87 //-----------------------------------------------------------//
88 GEOM::GEOM_List_ptr CreateListOfGO();
89 void AddItemToListOfGO(GEOM::GEOM_List_ptr& theList,
90 GEOM::GEOM_Object_ptr theObject);
92 //-----------------------------------------------------------//
93 // Create ListOfLong and add items to it //
94 //-----------------------------------------------------------//
95 GEOM::GEOM_List_ptr CreateListOfLong();
96 void AddItemToListOfLong(GEOM::GEOM_List_ptr& theList,
97 CORBA::Long theObject);
99 //-----------------------------------------------------------//
100 // Create ListOfDouble and add items to it //
101 //-----------------------------------------------------------//
102 GEOM::GEOM_List_ptr CreateListOfDouble();
103 void AddItemToListOfDouble(GEOM::GEOM_List_ptr& theList,
104 CORBA::Double theObject);
106 //-----------------------------------------------------------------------//
107 // Inherited methods from SALOMEDS::Driver //
108 //-----------------------------------------------------------------------//
110 SALOMEDS::TMPFile* Save(SALOMEDS::SComponent_ptr theComponent,
112 CORBA::Boolean isMultiFile);
114 SALOMEDS::TMPFile* SaveASCII(SALOMEDS::SComponent_ptr theComponent,
116 CORBA::Boolean isMultiFile);
118 CORBA::Boolean Load(SALOMEDS::SComponent_ptr theComponent,
119 const SALOMEDS::TMPFile& theStream,
121 CORBA::Boolean isMultiFile);
123 CORBA::Boolean LoadASCII(SALOMEDS::SComponent_ptr theComponent,
124 const SALOMEDS::TMPFile& theStream,
126 CORBA::Boolean isMultiFile);
128 void Close(SALOMEDS::SComponent_ptr theComponent);
129 char* ComponentDataType();
132 char* IORToLocalPersistentID(SALOMEDS::SObject_ptr theSObject,
133 const char* IORString,
134 CORBA::Boolean isMultiFile,
135 CORBA::Boolean isASCII);
136 char* LocalPersistentIDToIOR(SALOMEDS::SObject_ptr theSObject,
137 const char* aLocalPersistentID,
138 CORBA::Boolean isMultiFile,
139 CORBA::Boolean isASCII);
141 CORBA::Boolean CanPublishInStudy(CORBA::Object_ptr theIOR);
142 SALOMEDS::SObject_ptr PublishInStudy(SALOMEDS::SObject_ptr theSObject,
143 CORBA::Object_ptr theObject,
144 const char* theName) ;
146 GEOM::ListOfGO* PublishNamedShapesInStudy(//SALOMEDS::SObject_ptr theSObject,
147 CORBA::Object_ptr theObject);
149 CORBA::Boolean CanCopy(SALOMEDS::SObject_ptr theObject);
150 SALOMEDS::TMPFile* CopyFrom(SALOMEDS::SObject_ptr theObject, CORBA::Long& theObjectID);
151 CORBA::Boolean CanPaste(const char* theComponentName, CORBA::Long theObjectID);
152 SALOMEDS::SObject_ptr PasteInto(const SALOMEDS::TMPFile& theStream,
153 CORBA::Long theObjectID,
154 SALOMEDS::SObject_ptr theObject);
156 //-----------------------------------------------------------//
157 // Primitives Construction : BasicOperations //
158 //-----------------------------------------------------------//
159 GEOM::GEOM_Object_ptr MakePointXYZ (CORBA::Double theX,
162 GEOM::GEOM_Object_ptr MakePointWithReference (GEOM::GEOM_Object_ptr theReference,
166 GEOM::GEOM_Object_ptr MakePointOnCurve (GEOM::GEOM_Object_ptr theRefCurve,
167 CORBA::Double theParameter);
168 GEOM::GEOM_Object_ptr MakePointOnCurveByLength (GEOM::GEOM_Object_ptr theRefCurve,
169 CORBA::Double theLength,
170 GEOM::GEOM_Object_ptr theStartPoint);
171 GEOM::GEOM_Object_ptr MakePointOnCurveByCoord (GEOM::GEOM_Object_ptr theRefCurve,
172 CORBA::Double theXParameter,
173 CORBA::Double theYParameter,
174 CORBA::Double theZParameter);
175 GEOM::GEOM_Object_ptr MakePointOnSurface (GEOM::GEOM_Object_ptr theRefSurface,
176 CORBA::Double theUParameter,
177 CORBA::Double theVParameter);
178 GEOM::GEOM_Object_ptr MakePointOnSurfaceByCoord (GEOM::GEOM_Object_ptr theRefSurface,
179 CORBA::Double theXParameter,
180 CORBA::Double theYParameter,
181 CORBA::Double theZParameter);
182 GEOM::GEOM_Object_ptr MakePointOnLinesIntersection (GEOM::GEOM_Object_ptr theRefLine1,
183 GEOM::GEOM_Object_ptr theRefLine2);
184 GEOM::GEOM_Object_ptr MakeTangentOnCurve (GEOM::GEOM_Object_ptr theRefCurve,
185 CORBA::Double theParameter);
186 GEOM::GEOM_Object_ptr MakeVectorDXDYDZ (CORBA::Double theDX,
188 CORBA::Double theDZ);
189 GEOM::GEOM_Object_ptr MakeVectorTwoPnt (GEOM::GEOM_Object_ptr thePnt1,
190 GEOM::GEOM_Object_ptr thePnt2);
191 GEOM::GEOM_Object_ptr MakeLineTwoPnt (GEOM::GEOM_Object_ptr thePnt1,
192 GEOM::GEOM_Object_ptr thePnt2);
193 GEOM::GEOM_Object_ptr MakeLineTwoFaces (GEOM::GEOM_Object_ptr theFace1,
194 GEOM::GEOM_Object_ptr theFace2);
195 GEOM::GEOM_Object_ptr MakePlaneThreePnt (GEOM::GEOM_Object_ptr thePnt1,
196 GEOM::GEOM_Object_ptr thePnt2,
197 GEOM::GEOM_Object_ptr thePnt3,
198 CORBA::Double theTrimSize);
199 GEOM::GEOM_Object_ptr MakePlanePntVec (GEOM::GEOM_Object_ptr thePnt,
200 GEOM::GEOM_Object_ptr theVec,
201 CORBA::Double theTrimSize);
202 GEOM::GEOM_Object_ptr MakePlaneFace (GEOM::GEOM_Object_ptr theFace,
203 CORBA::Double theTrimSize);
204 GEOM::GEOM_Object_ptr MakePlane2Vec (GEOM::GEOM_Object_ptr theVec1,
205 GEOM::GEOM_Object_ptr theVec2,
206 CORBA::Double theTrimSize);
207 GEOM::GEOM_Object_ptr MakePlaneLCS (GEOM::GEOM_Object_ptr theLCS,
208 CORBA::Double theTrimSize,
209 CORBA::Double theOrientation);
210 GEOM::GEOM_Object_ptr MakeMarker (CORBA::Double theOX , CORBA::Double theOY , CORBA::Double theOZ,
211 CORBA::Double theXDX, CORBA::Double theXDY, CORBA::Double theXDZ,
212 CORBA::Double theYDX, CORBA::Double theYDY, CORBA::Double theYDZ);
214 GEOM::GEOM_Object_ptr MakeMarkerFromShape (GEOM::GEOM_Object_ptr theShape);
216 GEOM::GEOM_Object_ptr MakeMarkerPntTwoVec (GEOM::GEOM_Object_ptr theOrigin,
217 GEOM::GEOM_Object_ptr theXVec,
218 GEOM::GEOM_Object_ptr theYVec);
220 GEOM::GEOM_Object_ptr MakeTangentPlaneOnFace (GEOM::GEOM_Object_ptr theFace,
221 CORBA::Double theParameterU,
222 CORBA::Double theParameterV,
223 CORBA::Double theTrimSize);
225 //-----------------------------------------------------------//
226 // Primitives Construction : 3DPrimOperations //
227 //-----------------------------------------------------------//
228 GEOM::GEOM_Object_ptr MakeBox (CORBA::Double theX1,
233 CORBA::Double theZ2);
234 GEOM::GEOM_Object_ptr MakeBoxDXDYDZ (CORBA::Double theDX,
236 CORBA::Double theDZ);
237 GEOM::GEOM_Object_ptr MakeBoxTwoPnt (GEOM::GEOM_Object_ptr thePnt1,
238 GEOM::GEOM_Object_ptr thePnt2);
239 GEOM::GEOM_Object_ptr MakeFaceHW (CORBA::Double theH,
241 CORBA::Short theOrientation);
242 GEOM::GEOM_Object_ptr MakeFaceObjHW (GEOM::GEOM_Object_ptr theObj,
245 GEOM::GEOM_Object_ptr MakeDiskPntVecR (GEOM::GEOM_Object_ptr theCenter,
246 GEOM::GEOM_Object_ptr theVector,
248 GEOM::GEOM_Object_ptr MakeDiskThreePnt (GEOM::GEOM_Object_ptr thePnt1,
249 GEOM::GEOM_Object_ptr thePnt2,
250 GEOM::GEOM_Object_ptr thePnt3);
251 GEOM::GEOM_Object_ptr MakeDiskR (CORBA::Double theR,
252 CORBA::Short theOrientation);
253 GEOM::GEOM_Object_ptr MakeCylinderPntVecRH (GEOM::GEOM_Object_ptr thePnt,
254 GEOM::GEOM_Object_ptr theAxis,
255 CORBA::Double theRadius,
256 CORBA::Double theHeight);
257 GEOM::GEOM_Object_ptr MakeCylinderRH (CORBA::Double theR,
259 GEOM::GEOM_Object_ptr MakeCylinderPntVecRHA (GEOM::GEOM_Object_ptr thePnt,
260 GEOM::GEOM_Object_ptr theAxis,
261 CORBA::Double theRadius,
262 CORBA::Double theHeight,
263 CORBA::Double theAngle);
264 GEOM::GEOM_Object_ptr MakeCylinderRHA (CORBA::Double theR,
267 GEOM::GEOM_Object_ptr MakeSphere (CORBA::Double theX,
270 CORBA::Double theRadius);
271 GEOM::GEOM_Object_ptr MakeSphereR (CORBA::Double theR);
272 GEOM::GEOM_Object_ptr MakeSpherePntR (GEOM::GEOM_Object_ptr thePnt,
274 GEOM::GEOM_Object_ptr MakeTorusPntVecRR (GEOM::GEOM_Object_ptr thePnt,
275 GEOM::GEOM_Object_ptr theVec,
276 CORBA::Double theRMajor,
277 CORBA::Double theRMinor);
278 GEOM::GEOM_Object_ptr MakeTorusRR (CORBA::Double theRMajor,
279 CORBA::Double theRMinor);
280 GEOM::GEOM_Object_ptr MakeConePntVecR1R2H (GEOM::GEOM_Object_ptr thePnt,
281 GEOM::GEOM_Object_ptr theAxis,
284 CORBA::Double theHeight);
285 GEOM::GEOM_Object_ptr MakeConeR1R2H (CORBA::Double theR1,
287 CORBA::Double theHeight);
288 GEOM::GEOM_Object_ptr MakePrismVecH (GEOM::GEOM_Object_ptr theBase,
289 GEOM::GEOM_Object_ptr theVec,
291 GEOM::GEOM_Object_ptr MakePrismVecH2Ways (GEOM::GEOM_Object_ptr theBase,
292 GEOM::GEOM_Object_ptr theVec,
294 GEOM::GEOM_Object_ptr MakePrismTwoPnt (GEOM::GEOM_Object_ptr theBase,
295 GEOM::GEOM_Object_ptr thePoint1,
296 GEOM::GEOM_Object_ptr thePoint2);
297 GEOM::GEOM_Object_ptr MakePrismTwoPnt2Ways (GEOM::GEOM_Object_ptr theBase,
298 GEOM::GEOM_Object_ptr thePoint1,
299 GEOM::GEOM_Object_ptr thePoint2);
300 GEOM::GEOM_Object_ptr MakePrismDXDYDZ (GEOM::GEOM_Object_ptr theBase,
303 CORBA::Double theDZ);
304 GEOM::GEOM_Object_ptr MakePrismDXDYDZ2Ways (GEOM::GEOM_Object_ptr theBase,
307 CORBA::Double theDZ);
308 GEOM::GEOM_Object_ptr MakePipe (GEOM::GEOM_Object_ptr theBase,
309 GEOM::GEOM_Object_ptr thePath);
310 GEOM::GEOM_Object_ptr MakeRevolutionAxisAngle (GEOM::GEOM_Object_ptr theBase,
311 GEOM::GEOM_Object_ptr theAxis,
312 CORBA::Double theAngle);
313 GEOM::GEOM_Object_ptr MakeRevolutionAxisAngle2Ways (GEOM::GEOM_Object_ptr theBase,
314 GEOM::GEOM_Object_ptr theAxis,
315 CORBA::Double theAngle);
316 GEOM::GEOM_Object_ptr MakeFilling (GEOM::GEOM_Object_ptr theShape,
317 CORBA::Long theMinDeg, CORBA::Long theMaxDeg,
318 CORBA::Double theTol2D, CORBA::Double theTol3D,
319 CORBA::Long theNbIter,
320 GEOM::filling_oper_method theMethod,
321 CORBA::Boolean theApprox);
323 GEOM::GEOM_Object_ptr MakeThruSections(const GEOM::ListOfGO& theSeqSections,
324 CORBA::Boolean theModeSolid,
325 CORBA::Double thePreci,
326 CORBA::Boolean theRuled);
328 GEOM::GEOM_Object_ptr MakePipeWithDifferentSections(const GEOM::ListOfGO& theBases,
329 const GEOM::ListOfGO& theLocations,
330 GEOM::GEOM_Object_ptr thePath,
331 CORBA::Boolean theWithContact,
332 CORBA::Boolean theWithCorrections);
334 GEOM::GEOM_Object_ptr MakePipeWithShellSections(const GEOM::ListOfGO& theBases,
335 const GEOM::ListOfGO& theSubBases,
336 const GEOM::ListOfGO& theLocations,
337 GEOM::GEOM_Object_ptr thePath,
338 CORBA::Boolean theWithContact,
339 CORBA::Boolean theWithCorrections);
341 GEOM::GEOM_Object_ptr MakePipeShellsWithoutPath(const GEOM::ListOfGO& theBases,
342 const GEOM::ListOfGO& theLocations);
344 GEOM::GEOM_Object_ptr MakePipeBiNormalAlongVector (GEOM::GEOM_Object_ptr theBase,
345 GEOM::GEOM_Object_ptr thePath,
346 GEOM::GEOM_Object_ptr theVec);
348 //-----------------------------------------------------------//
349 // BooleanOperations //
350 //-----------------------------------------------------------//
351 GEOM::GEOM_Object_ptr MakeBoolean (GEOM::GEOM_Object_ptr theShape1,
352 GEOM::GEOM_Object_ptr theShape2,
353 CORBA::Long theOperation);
354 GEOM::GEOM_Object_ptr MakeFuse (GEOM::GEOM_Object_ptr theShape1,
355 GEOM::GEOM_Object_ptr theShape2);
356 GEOM::GEOM_Object_ptr MakeCommon (GEOM::GEOM_Object_ptr theShape1,
357 GEOM::GEOM_Object_ptr theShape2);
358 GEOM::GEOM_Object_ptr MakeCut (GEOM::GEOM_Object_ptr theShape1,
359 GEOM::GEOM_Object_ptr theShape2);
360 GEOM::GEOM_Object_ptr MakeSection (GEOM::GEOM_Object_ptr theShape1,
361 GEOM::GEOM_Object_ptr theShape2);
362 GEOM::GEOM_Object_ptr MakePartition (GEOM::GEOM_List_ptr theShapes,
363 GEOM::GEOM_List_ptr theTools,
364 GEOM::GEOM_List_ptr theKeepInside,
365 GEOM::GEOM_List_ptr theRemoveInside,
366 CORBA::Short theLimit,
367 CORBA::Boolean theRemoveWebs,
368 GEOM::GEOM_List_ptr theMaterials,
369 CORBA::Short theKeepNonlimitShapes);
370 GEOM::GEOM_Object_ptr MakeHalfPartition (GEOM::GEOM_Object_ptr theShape,
371 GEOM::GEOM_Object_ptr thePlane);
373 //-----------------------------------------------------------//
374 // InsertOperations //
375 //-----------------------------------------------------------//
376 GEOM::GEOM_Object_ptr MakeCopy (GEOM::GEOM_Object_ptr theOriginal);
377 void Export (GEOM::GEOM_Object_ptr theObject,
378 const char* theFileName,
379 const char* theFormatName);
380 GEOM::GEOM_Object_ptr ImportFile (const char* theFileName,
381 const char* theFormatName);
383 //-----------------------------------------------------------//
384 // TransformOperations //
385 //-----------------------------------------------------------//
386 GEOM::GEOM_Object_ptr TranslateTwoPoints (GEOM::GEOM_Object_ptr theObject,
387 GEOM::GEOM_Object_ptr thePoint1,
388 GEOM::GEOM_Object_ptr thePoint2);
389 GEOM::GEOM_Object_ptr TranslateTwoPointsCopy (GEOM::GEOM_Object_ptr theObject,
390 GEOM::GEOM_Object_ptr thePoint1,
391 GEOM::GEOM_Object_ptr thePoint2);
392 GEOM::GEOM_Object_ptr TranslateDXDYDZ (GEOM::GEOM_Object_ptr theObject,
395 CORBA::Double theDZ);
396 GEOM::GEOM_Object_ptr TranslateDXDYDZCopy (GEOM::GEOM_Object_ptr theObject,
399 CORBA::Double theDZ);
400 GEOM::GEOM_Object_ptr TranslateVector (GEOM::GEOM_Object_ptr theObject,
401 GEOM::GEOM_Object_ptr theVector);
402 GEOM::GEOM_Object_ptr TranslateVectorCopy (GEOM::GEOM_Object_ptr theObject,
403 GEOM::GEOM_Object_ptr theVector);
404 GEOM::GEOM_Object_ptr TranslateVectorDistance (GEOM::GEOM_Object_ptr theObject,
405 GEOM::GEOM_Object_ptr theVector,
406 CORBA::Double theDistance,
407 CORBA::Boolean theCopy);
408 GEOM::GEOM_Object_ptr MultiTranslate1D (GEOM::GEOM_Object_ptr theObject,
409 GEOM::GEOM_Object_ptr theVector,
410 CORBA::Double theStep,
411 CORBA::Long theNbTimes);
412 GEOM::GEOM_Object_ptr MultiTranslate2D (GEOM::GEOM_Object_ptr theObject,
413 GEOM::GEOM_Object_ptr theVector1,
414 CORBA::Double theStep1,
415 CORBA::Long theNbTimes1,
416 GEOM::GEOM_Object_ptr theVector2,
417 CORBA::Double theStep2,
418 CORBA::Long theNbTimes2);
419 GEOM::GEOM_Object_ptr Rotate (GEOM::GEOM_Object_ptr theObject,
420 GEOM::GEOM_Object_ptr theAxis,
421 CORBA::Double theAngle);
422 GEOM::GEOM_Object_ptr RotateCopy (GEOM::GEOM_Object_ptr theObject,
423 GEOM::GEOM_Object_ptr theAxis,
424 CORBA::Double theAngle);
426 GEOM::GEOM_Object_ptr RotateThreePoints (GEOM::GEOM_Object_ptr theObject,
427 GEOM::GEOM_Object_ptr theCentPoint,
428 GEOM::GEOM_Object_ptr thePoint1,
429 GEOM::GEOM_Object_ptr thePoint2);
431 GEOM::GEOM_Object_ptr RotateThreePointsCopy (GEOM::GEOM_Object_ptr theObject,
432 GEOM::GEOM_Object_ptr theCentPoint,
433 GEOM::GEOM_Object_ptr thePoint1,
434 GEOM::GEOM_Object_ptr thePoint2);
436 GEOM::GEOM_Object_ptr MultiRotate1D (GEOM::GEOM_Object_ptr theObject,
437 GEOM::GEOM_Object_ptr theAxis,
438 CORBA::Long theNbTimes);
439 GEOM::GEOM_Object_ptr MultiRotate2D (GEOM::GEOM_Object_ptr theObject,
440 GEOM::GEOM_Object_ptr theAxis,
441 CORBA::Double theAngle,
442 CORBA::Long theNbTimes1,
443 CORBA::Double theStep,
444 CORBA::Long theNbTimes2);
445 GEOM::GEOM_Object_ptr MirrorPlane (GEOM::GEOM_Object_ptr theObject,
446 GEOM::GEOM_Object_ptr thePlane);
447 GEOM::GEOM_Object_ptr MirrorPlaneCopy (GEOM::GEOM_Object_ptr theObject,
448 GEOM::GEOM_Object_ptr thePlane);
449 GEOM::GEOM_Object_ptr MirrorAxis (GEOM::GEOM_Object_ptr theObject,
450 GEOM::GEOM_Object_ptr theAxis);
451 GEOM::GEOM_Object_ptr MirrorAxisCopy (GEOM::GEOM_Object_ptr theObject,
452 GEOM::GEOM_Object_ptr theAxis);
453 GEOM::GEOM_Object_ptr MirrorPoint (GEOM::GEOM_Object_ptr theObject,
454 GEOM::GEOM_Object_ptr thePoint);
455 GEOM::GEOM_Object_ptr MirrorPointCopy (GEOM::GEOM_Object_ptr theObject,
456 GEOM::GEOM_Object_ptr thePoint);
457 GEOM::GEOM_Object_ptr OffsetShape (GEOM::GEOM_Object_ptr theObject,
458 CORBA::Double theOffset);
459 GEOM::GEOM_Object_ptr OffsetShapeCopy (GEOM::GEOM_Object_ptr theObject,
460 CORBA::Double theOffset);
461 GEOM::GEOM_Object_ptr ScaleShape (GEOM::GEOM_Object_ptr theObject,
462 GEOM::GEOM_Object_ptr thePoint,
463 CORBA::Double theFactor);
464 GEOM::GEOM_Object_ptr ScaleShapeCopy (GEOM::GEOM_Object_ptr theObject,
465 GEOM::GEOM_Object_ptr thePoint,
466 CORBA::Double theFactor);
467 GEOM::GEOM_Object_ptr ScaleShapeAlongAxes (GEOM::GEOM_Object_ptr theObject,
468 GEOM::GEOM_Object_ptr thePoint,
469 CORBA::Double theFactorX,
470 CORBA::Double theFactorY,
471 CORBA::Double theFactorZ);
472 GEOM::GEOM_Object_ptr ScaleShapeAlongAxesCopy (GEOM::GEOM_Object_ptr theObject,
473 GEOM::GEOM_Object_ptr thePoint,
474 CORBA::Double theFactorX,
475 CORBA::Double theFactorY,
476 CORBA::Double theFactorZ);
477 GEOM::GEOM_Object_ptr PositionShape (GEOM::GEOM_Object_ptr theObject,
478 GEOM::GEOM_Object_ptr theStartLCS,
479 GEOM::GEOM_Object_ptr theEndLCS);
480 GEOM::GEOM_Object_ptr PositionShapeCopy (GEOM::GEOM_Object_ptr theObject,
481 GEOM::GEOM_Object_ptr theStartLCS,
482 GEOM::GEOM_Object_ptr theEndLCS);
483 GEOM::GEOM_Object_ptr PositionAlongPath (GEOM::GEOM_Object_ptr theObject,
484 GEOM::GEOM_Object_ptr thePath,
485 CORBA::Double theDistance,
486 CORBA::Boolean theCopy,
487 CORBA::Boolean theReverse);
489 //-----------------------------------------------------------//
490 // ShapesOperations //
491 //-----------------------------------------------------------//
492 GEOM::GEOM_Object_ptr MakeEdge (GEOM::GEOM_Object_ptr thePnt1,
493 GEOM::GEOM_Object_ptr thePnt2);
494 GEOM::GEOM_Object_ptr MakeEdgeOnCurveByLength (GEOM::GEOM_Object_ptr theRefCurve,
495 CORBA::Double theLength,
496 GEOM::GEOM_Object_ptr theStartPoint);
497 GEOM::GEOM_Object_ptr MakeWire (GEOM::GEOM_List_ptr theEdgesAndWires,
498 CORBA::Double theTolerance);
499 GEOM::GEOM_Object_ptr MakeFace (GEOM::GEOM_Object_ptr theWire,
500 CORBA::Boolean isPlanarWanted);
501 GEOM::GEOM_Object_ptr MakeFaceWires (GEOM::GEOM_List_ptr theWires,
502 CORBA::Boolean isPlanarWanted);
503 GEOM::GEOM_Object_ptr MakeFaceWithConstraints (GEOM::GEOM_List_ptr theConstraints);
504 GEOM::GEOM_Object_ptr MakeShell (GEOM::GEOM_List_ptr theFacesAndShells);
505 GEOM::GEOM_Object_ptr MakeSolidShell (GEOM::GEOM_Object_ptr theShell);
506 GEOM::GEOM_Object_ptr MakeSolidShells (GEOM::GEOM_List_ptr theShells);
507 GEOM::GEOM_Object_ptr MakeCompound (GEOM::GEOM_List_ptr theShapes);
508 GEOM::GEOM_Object_ptr MakeSolidFromConnectedFaces (GEOM::GEOM_List_ptr theFacesOrShells,
509 CORBA::Boolean isIntersect);
510 GEOM::GEOM_Object_ptr MakeGlueFaces (GEOM::GEOM_Object_ptr theShape,
511 CORBA::Double theTolerance,
512 CORBA::Boolean doKeepNonSolids);
513 GEOM::GEOM_List_ptr GetGlueFaces (GEOM::GEOM_Object_ptr theShape,
514 CORBA::Double theTolerance);
515 GEOM::GEOM_Object_ptr MakeGlueFacesByList (GEOM::GEOM_Object_ptr theShape,
516 CORBA::Double theTolerance,
517 const GEOM::ListOfGO& theFaces,
518 CORBA::Boolean doKeepNonSolids,
519 CORBA::Boolean doGlueAllEdges);
520 GEOM::GEOM_List_ptr MakeExplode (GEOM::GEOM_Object_ptr theShape,
521 CORBA::Long theShapeType,
522 CORBA::Boolean isSorted);
523 CORBA::Long NumberOfFaces (GEOM::GEOM_Object_ptr theShape);
524 CORBA::Long NumberOfEdges (GEOM::GEOM_Object_ptr theShape);
525 GEOM::GEOM_Object_ptr ChangeOrientation (GEOM::GEOM_Object_ptr theShape);
527 GEOM::GEOM_List_ptr GetShapesOnShape (GEOM::GEOM_Object_ptr theCheckShape,
528 GEOM::GEOM_Object_ptr theShape,
529 CORBA::Short theShapeType,
530 GEOM::shape_state theState);
531 GEOM::GEOM_Object_ptr GetShapesOnShapeAsCompound
532 (GEOM::GEOM_Object_ptr theCheckShape,
533 GEOM::GEOM_Object_ptr theShape,
534 CORBA::Short theShapeType,
535 GEOM::shape_state theState);
537 //-----------------------------------------------------------//
538 // BlocksOperations //
539 //-----------------------------------------------------------//
540 GEOM::GEOM_Object_ptr MakeQuad4Vertices (GEOM::GEOM_Object_ptr thePnt1,
541 GEOM::GEOM_Object_ptr thePnt2,
542 GEOM::GEOM_Object_ptr thePnt3,
543 GEOM::GEOM_Object_ptr thePnt4);
544 GEOM::GEOM_Object_ptr MakeQuad (GEOM::GEOM_Object_ptr theEdge1,
545 GEOM::GEOM_Object_ptr theEdge2,
546 GEOM::GEOM_Object_ptr theEdge3,
547 GEOM::GEOM_Object_ptr theEdge4);
548 GEOM::GEOM_Object_ptr MakeQuad2Edges (GEOM::GEOM_Object_ptr theEdge1,
549 GEOM::GEOM_Object_ptr theEdge2);
550 GEOM::GEOM_Object_ptr MakeHexa (GEOM::GEOM_Object_ptr theFace1,
551 GEOM::GEOM_Object_ptr theFace2,
552 GEOM::GEOM_Object_ptr theFace3,
553 GEOM::GEOM_Object_ptr theFace4,
554 GEOM::GEOM_Object_ptr theFace5,
555 GEOM::GEOM_Object_ptr theFace6);
556 GEOM::GEOM_Object_ptr MakeHexa2Faces (GEOM::GEOM_Object_ptr theFace1,
557 GEOM::GEOM_Object_ptr theFace2);
558 GEOM::GEOM_Object_ptr GetPoint (GEOM::GEOM_Object_ptr theShape,
562 CORBA::Double theEpsilon);
563 GEOM::GEOM_Object_ptr GetEdge (GEOM::GEOM_Object_ptr theShape,
564 GEOM::GEOM_Object_ptr thePoint1,
565 GEOM::GEOM_Object_ptr thePoint2);
566 GEOM::GEOM_Object_ptr GetEdgeNearPoint (GEOM::GEOM_Object_ptr theShape,
567 GEOM::GEOM_Object_ptr thePoint);
568 GEOM::GEOM_Object_ptr GetFaceByPoints (GEOM::GEOM_Object_ptr theShape,
569 GEOM::GEOM_Object_ptr thePoint1,
570 GEOM::GEOM_Object_ptr thePoint2,
571 GEOM::GEOM_Object_ptr thePoint3,
572 GEOM::GEOM_Object_ptr thePoint4);
573 GEOM::GEOM_Object_ptr GetFaceByEdges (GEOM::GEOM_Object_ptr theShape,
574 GEOM::GEOM_Object_ptr theEdge1,
575 GEOM::GEOM_Object_ptr theEdge2);
576 GEOM::GEOM_Object_ptr GetOppositeFace (GEOM::GEOM_Object_ptr theBlock,
577 GEOM::GEOM_Object_ptr theFace);
578 GEOM::GEOM_Object_ptr GetFaceNearPoint (GEOM::GEOM_Object_ptr theShape,
579 GEOM::GEOM_Object_ptr thePoint);
580 GEOM::GEOM_Object_ptr GetFaceByNormale (GEOM::GEOM_Object_ptr theBlock,
581 GEOM::GEOM_Object_ptr theVector);
582 CORBA::Boolean IsCompoundOfBlocks (GEOM::GEOM_Object_ptr theCompound,
583 CORBA::Long theMinNbFaces,
584 CORBA::Long theMaxNbFaces,
585 CORBA::Long& theNbBlocks);
586 CORBA::Boolean CheckCompoundOfBlocks (GEOM::GEOM_Object_ptr theCompound,
587 GEOM::GEOM_IBlocksOperations::BCErrors_out theErrors);
588 char* PrintBCErrors (GEOM::GEOM_Object_ptr theCompound,
589 const GEOM::GEOM_IBlocksOperations::BCErrors& theErrors);
590 GEOM::GEOM_List_ptr ExplodeCompoundOfBlocks (GEOM::GEOM_Object_ptr theCompound,
591 CORBA::Long theMinNbFaces,
592 CORBA::Long theMaxNbFaces);
593 GEOM::GEOM_Object_ptr GetBlockNearPoint (GEOM::GEOM_Object_ptr theCompound,
594 GEOM::GEOM_Object_ptr thePoint);
595 GEOM::GEOM_Object_ptr GetBlockByParts (GEOM::GEOM_Object_ptr theCompound,
596 GEOM::GEOM_List_ptr theParts);
597 GEOM::GEOM_List_ptr GetBlocksByParts (GEOM::GEOM_Object_ptr theCompound,
598 GEOM::GEOM_List_ptr theParts);
599 GEOM::GEOM_Object_ptr MakeMultiTransformation1D (GEOM::GEOM_Object_ptr theBlock,
600 CORBA::Long theDirFace1,
601 CORBA::Long theDirFace2,
602 CORBA::Long theNbTimes);
603 GEOM::GEOM_Object_ptr MakeMultiTransformation2D (GEOM::GEOM_Object_ptr theBlock,
604 CORBA::Long theDirFace1U,
605 CORBA::Long theDirFace2U,
606 CORBA::Long theNbTimesU,
607 CORBA::Long theDirFace1V,
608 CORBA::Long theDirFace2V,
609 CORBA::Long theNbTimesV);
611 //-----------------------------------------------------------//
612 // CurvesOperations //
613 //-----------------------------------------------------------//
614 GEOM::GEOM_Object_ptr MakeCirclePntVecR (GEOM::GEOM_Object_ptr theCenter,
615 GEOM::GEOM_Object_ptr theVector,
617 GEOM::GEOM_Object_ptr MakeCircleThreePnt (GEOM::GEOM_Object_ptr thePnt1,
618 GEOM::GEOM_Object_ptr thePnt2,
619 GEOM::GEOM_Object_ptr thePnt3);
620 GEOM::GEOM_Object_ptr MakeCircleCenter2Pnt (GEOM::GEOM_Object_ptr thePnt1,
621 GEOM::GEOM_Object_ptr thePnt2,
622 GEOM::GEOM_Object_ptr thePnt3);
623 GEOM::GEOM_Object_ptr MakeEllipse (GEOM::GEOM_Object_ptr theCenter,
624 GEOM::GEOM_Object_ptr theVector,
625 CORBA::Double theRMajor, CORBA::Double theRMinor);
626 GEOM::GEOM_Object_ptr MakeEllipseVec (GEOM::GEOM_Object_ptr theCenter,
627 GEOM::GEOM_Object_ptr theVector,
628 CORBA::Double theRMajor, CORBA::Double theRMinor,
629 GEOM::GEOM_Object_ptr theVectorMajor);
630 GEOM::GEOM_Object_ptr MakeArc (GEOM::GEOM_Object_ptr thePnt1,
631 GEOM::GEOM_Object_ptr thePnt2,
632 GEOM::GEOM_Object_ptr thePnt3);
633 GEOM::GEOM_Object_ptr MakeArcCenter (GEOM::GEOM_Object_ptr theCenter,
634 GEOM::GEOM_Object_ptr thePnt1,
635 GEOM::GEOM_Object_ptr thePnt2,
636 CORBA::Boolean theSense);
637 GEOM::GEOM_Object_ptr MakeArcOfEllipse (GEOM::GEOM_Object_ptr thePnt1,
638 GEOM::GEOM_Object_ptr thePnt2,
639 GEOM::GEOM_Object_ptr thePnt3);
640 GEOM::GEOM_Object_ptr MakePolyline (GEOM::GEOM_List_ptr thePoints,
641 CORBA::Boolean theIsClosed);
642 GEOM::GEOM_Object_ptr MakeSplineBezier (GEOM::GEOM_List_ptr thePoints,
643 CORBA::Boolean theIsClosed);
644 GEOM::GEOM_Object_ptr MakeSplineInterpolation (GEOM::GEOM_List_ptr thePoints,
645 CORBA::Boolean theIsClosed,
646 CORBA::Boolean theDoReordering);
647 GEOM::GEOM_Object_ptr MakeSketcher (const char* theCommand,
648 GEOM::GEOM_List_ptr theWorkingPlane);
649 GEOM::GEOM_Object_ptr Make3DSketcher (GEOM::GEOM_List_ptr theCoordinates);
651 //-----------------------------------------------------------//
652 // LocalOperations //
653 //-----------------------------------------------------------//
654 GEOM::GEOM_Object_ptr MakeFilletAll (GEOM::GEOM_Object_ptr theShape,
656 GEOM::GEOM_Object_ptr MakeFilletEdges (GEOM::GEOM_Object_ptr theShape, CORBA::Double theR,
657 GEOM::GEOM_List_ptr theEdges);
658 GEOM::GEOM_Object_ptr MakeFilletEdgesR1R2 (GEOM::GEOM_Object_ptr theShape, CORBA::Double theR1,
659 CORBA::Double theR2, GEOM::GEOM_List_ptr theEdges);
660 GEOM::GEOM_Object_ptr MakeFilletFaces (GEOM::GEOM_Object_ptr theShape, CORBA::Double theR,
661 GEOM::GEOM_List_ptr theFaces);
662 GEOM::GEOM_Object_ptr MakeFilletFacesR1R2 (GEOM::GEOM_Object_ptr theShape, CORBA::Double theR1,
663 CORBA::Double theR2, GEOM::GEOM_List_ptr theFaces);
664 GEOM::GEOM_Object_ptr MakeFillet2D (GEOM::GEOM_Object_ptr theShape, CORBA::Double theR,
665 GEOM::GEOM_List_ptr theVertexes);
666 GEOM::GEOM_Object_ptr MakeFillet1D (GEOM::GEOM_Object_ptr theShape, CORBA::Double theR,
667 GEOM::GEOM_List_ptr theVertexes, CORBA::Boolean doIgnoreSecantVertices);
668 GEOM::GEOM_Object_ptr MakeChamferAll (GEOM::GEOM_Object_ptr theShape, CORBA::Double theD);
669 GEOM::GEOM_Object_ptr MakeChamferEdge (GEOM::GEOM_Object_ptr theShape,
670 CORBA::Double theD1, CORBA::Double theD2,
671 CORBA::Long theFace1, CORBA::Long theFace2);
672 GEOM::GEOM_Object_ptr MakeChamferEdgeAD (GEOM::GEOM_Object_ptr theShape,
673 CORBA::Double theD, CORBA::Double theAngle,
674 CORBA::Long theFace1, CORBA::Long theFace2);
675 GEOM::GEOM_Object_ptr MakeChamferFaces (GEOM::GEOM_Object_ptr theShape,
676 CORBA::Double theD1, CORBA::Double theD2,
677 GEOM::GEOM_List_ptr theFaces);
678 GEOM::GEOM_Object_ptr MakeChamferFacesAD (GEOM::GEOM_Object_ptr theShape,
679 CORBA::Double theD, CORBA::Double theAngle,
680 GEOM::GEOM_List_ptr theFaces);
681 GEOM::GEOM_Object_ptr MakeChamferEdges (GEOM::GEOM_Object_ptr theShape,
682 CORBA::Double theD1, CORBA::Double theD2,
683 GEOM::GEOM_List_ptr theEdges);
684 GEOM::GEOM_Object_ptr MakeChamferEdgesAD (GEOM::GEOM_Object_ptr theShape,
685 CORBA::Double theD, CORBA::Double theAngle,
686 GEOM::GEOM_List_ptr theEdges);
687 GEOM::GEOM_Object_ptr MakeArchimede (GEOM::GEOM_Object_ptr theShape,
688 CORBA::Double theWeight,
689 CORBA::Double theWaterDensity,
690 CORBA::Double theMeshingDeflection);
691 CORBA::Long GetSubShapeIndex (GEOM::GEOM_Object_ptr theShape,
692 GEOM::GEOM_Object_ptr theSubShape);
694 //-----------------------------------------------------------//
695 // GroupOperations //
696 //-----------------------------------------------------------//
697 GEOM::GEOM_Object_ptr CreateGroup (GEOM::GEOM_Object_ptr theMainShape,
698 CORBA::Long theShapeType);
699 void AddObject (GEOM::GEOM_Object_ptr theGroup,
700 CORBA::Long theSubShapeId);
701 void RemoveObject (GEOM::GEOM_Object_ptr theGroup,
702 CORBA::Long theSubShapeId);
703 CORBA::Long GetType (GEOM::GEOM_Object_ptr theGroup);
704 GEOM::GEOM_Object_ptr GetMainShape (GEOM::GEOM_Object_ptr theGroup);
705 GEOM::GEOM_List_ptr GetObjects (GEOM::GEOM_Object_ptr theGroup);
707 //-----------------------------------------------------------//
708 // ImportExport Operations //
709 //-----------------------------------------------------------//
711 void ExportSTL( GEOM::GEOM_Object_ptr theObject,
712 const char* theFileName,
713 const bool theIsASCII,
714 CORBA::Double theDeflection,
715 const bool theIsRelative );
717 GEOM::GEOM_Object_ptr ImportSTL( const char* theFileName );
719 void ExportBREP( GEOM::GEOM_Object_ptr theObject,
720 const char* theFileName );
722 GEOM::GEOM_Object_ptr ImportBREP( const char* theFileName );
724 void ExportSTEP( GEOM::GEOM_Object_ptr theObject,
725 const char* theFileName );
727 GEOM::GEOM_Object_ptr ImportSTEP( const char* theFileName,
728 const bool theIsIgnoreUnits );
730 void ExportIGES( GEOM::GEOM_Object_ptr theObject,
731 const char* theFileName,
732 const char* theVersion );
734 GEOM::GEOM_Object_ptr ImportIGES( const char* theFileName,
735 const bool theIsIgnoreUnits );
737 CORBA::Boolean ExportXAO( GEOM::GEOM_Object_ptr shape,
738 const GEOM::ListOfGO& groups,
739 const GEOM::ListOfFields& fields,
741 const char* fileName,
742 const char* shapeFileName);
743 CORBA::Boolean ImportXAO( const char* fileName,
744 GEOM::GEOM_Object_out shape,
745 GEOM::ListOfGO_out subShapes,
746 GEOM::ListOfGO_out groups,
747 GEOM::ListOfFields_out fields );
749 void ExportVTK( GEOM::GEOM_Object_ptr theObject,
750 const char* theFileName,
751 CORBA::Double theDeflection );
753 //-----------------------------------------------------------//
754 // Advanced Operations //
755 //-----------------------------------------------------------//
756 GEOM::GEOM_List_ptr MakePipeTShape (CORBA::Double theR1, CORBA::Double theW1, CORBA::Double theL1,
757 CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2,
758 CORBA::Boolean theHexMesh);
759 GEOM::GEOM_List_ptr MakePipeTShapeWithPosition (CORBA::Double theR1, CORBA::Double theW1, CORBA::Double theL1,
760 CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2,
761 CORBA::Boolean theHexMesh,
762 GEOM::GEOM_Object_ptr theP1, GEOM::GEOM_Object_ptr theP2, GEOM::GEOM_Object_ptr theP3);
763 GEOM::GEOM_List_ptr MakePipeTShapeChamfer (CORBA::Double theR1, CORBA::Double theW1, CORBA::Double theL1,
764 CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2,
765 CORBA::Double theH, CORBA::Double theW, CORBA::Boolean theHexMesh);
766 GEOM::GEOM_List_ptr MakePipeTShapeChamferWithPosition (CORBA::Double theR1, CORBA::Double theW1, CORBA::Double theL1,
767 CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2,
768 CORBA::Double theH, CORBA::Double theW, CORBA::Boolean theHexMesh,
769 GEOM::GEOM_Object_ptr theP1, GEOM::GEOM_Object_ptr theP2, GEOM::GEOM_Object_ptr theP3);
770 GEOM::GEOM_List_ptr MakePipeTShapeFillet (CORBA::Double theR1, CORBA::Double theW1, CORBA::Double theL1,
771 CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2,
772 CORBA::Double theRF, CORBA::Boolean theHexMesh);
773 GEOM::GEOM_List_ptr MakePipeTShapeFilletWithPosition (CORBA::Double theR1, CORBA::Double theW1, CORBA::Double theL1,
774 CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2,
775 CORBA::Double theRF, CORBA::Boolean theHexMesh,
776 GEOM::GEOM_Object_ptr theP1, GEOM::GEOM_Object_ptr theP2, GEOM::GEOM_Object_ptr theP3);
777 GEOM::GEOM_Object_ptr MakeDividedDisk (CORBA::Double theR, CORBA::Double theRatio,
778 CORBA::Short theOrientation, GEOM::pattern thePattern);
779 GEOM::GEOM_Object_ptr MakeDividedCylinder (CORBA::Double theR,
781 GEOM::pattern thePattern);
782 GEOM::GEOM_Object_ptr MakeSmoothingSurface (GEOM::GEOM_List_ptr thelPoints);
783 /*@@ insert new functions before this line @@ do not remove this line @@*/
786 SALOME_NamingService_Abstract * name_service = nullptr;
788 GEOM::GEOM_Gen_var myGeomEngine;
789 PortableServer::POA_var myPOA;
791 GEOM::GEOM_IBasicOperations_var myBasicOp;
792 GEOM::GEOM_I3DPrimOperations_var my3DPrimOp;
793 GEOM::GEOM_IBooleanOperations_var myBoolOp;
794 GEOM::GEOM_IInsertOperations_var myInsOp;
795 GEOM::GEOM_ITransformOperations_var myTransfOp;
796 GEOM::GEOM_IShapesOperations_var myShapesOp;
797 GEOM::GEOM_IBlocksOperations_var myBlocksOp;
798 GEOM::GEOM_ICurvesOperations_var myCurvesOp;
799 GEOM::GEOM_ILocalOperations_var myLocalOp;
800 GEOM::GEOM_IGroupOperations_var myGroupOp;
801 GEOM::IAdvancedOperations_var myAdvancedOp;
802 GEOM::ISTLOperations_var mySTLOp;
803 GEOM::IBREPOperations_var myBREPOp;
804 GEOM::ISTEPOperations_var mySTEPOp;
805 GEOM::IIGESOperations_var myIGESOp;
806 GEOM::IXAOOperations_var myXAOOp;
808 GEOM::IVTKOperations_var myVTKOp;
812 class GEOM_I_SUPERV_EXPORT GEOM_Superv_i_With_Session : public GEOM_Superv_i
815 GEOM_Superv_i_With_Session(CORBA::ORB_ptr orb,
816 PortableServer::POA_ptr poa,
817 PortableServer::ObjectId * contId,
818 const char *instanceName,
819 const char *interfaceName);
822 class GEOM_I_SUPERV_EXPORT GEOM_Superv_i_Without_Session : public GEOM_Superv_i
825 GEOM_Superv_i_Without_Session(CORBA::ORB_ptr orb,
826 PortableServer::POA_ptr poa,
827 PortableServer::ObjectId * contId,
828 const char *instanceName,
829 const char *interfaceName,
830 SALOME_NamingService_Abstract *my_name_service);