Back to index

salome-geom  6.5.0
GEOM_Gen.idl
Go to the documentation of this file.
00001 // Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
00002 //
00003 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
00004 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
00005 //
00006 // This library is free software; you can redistribute it and/or
00007 // modify it under the terms of the GNU Lesser General Public
00008 // License as published by the Free Software Foundation; either
00009 // version 2.1 of the License.
00010 //
00011 // This library is distributed in the hope that it will be useful,
00012 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00013 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014 // Lesser General Public License for more details.
00015 //
00016 // You should have received a copy of the GNU Lesser General Public
00017 // License along with this library; if not, write to the Free Software
00018 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
00019 //
00020 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
00021 //
00022 //  File   : GEOM_Gen.idl
00023 //  Author : Sergey RUIN
00024 
00025 #ifndef __GEOM_GEN__
00026 #define __GEOM_GEN__
00027 
00028 #include "SALOME_Exception.idl"
00029 #include "SALOME_Component.idl"
00030 #include "SALOMEDS.idl"
00031 #include "SALOMEDS_Attributes.idl"
00032 
00033 #include "SALOME_GenericObj.idl"
00034 
00035 module GEOM
00036 {
00040   enum shape_type 
00041   { 
00043     COMPOUND,
00045     COMPSOLID, 
00047     SOLID, 
00049     SHELL,
00051     FACE, 
00053     WIRE, 
00055     EDGE, 
00057     VERTEX,
00059     SHAPE };
00060 
00064   enum marker_type { MT_NONE, MT_POINT, MT_PLUS, MT_STAR, MT_O, MT_X, MT_O_POINT, MT_O_PLUS,
00065                      MT_O_STAR, MT_O_X, MT_BALL, MT_RING1, MT_RING2, MT_RING3, MT_USER };
00066 
00070   enum marker_size { MS_NONE, MS_10, MS_15, MS_20, MS_25, MS_30, MS_35,
00071                      MS_40, MS_45, MS_50, MS_55, MS_60, MS_65, MS_70 };
00072 
00078   enum shape_state
00079   {
00081     ST_ON,
00082 
00088     ST_OUT,
00089     
00094     ST_ONOUT,
00095 
00102     ST_IN,
00103 
00108     ST_ONIN
00109   };
00110 
00117   enum find_shape_method
00118   {
00120     FSM_GetInPlace,
00121 
00125     FSM_Transformed,
00126 
00128     FSM_GetSame,
00129 
00131     FSM_GetShapesOnShape,
00132 
00134     FSM_GetInPlaceByHistory,
00135 
00139     FSM_MultiTransformed
00140   };
00141 
00147   enum filling_oper_method
00148   {
00150     FOM_Default,
00151 
00156     FOM_UseOri,
00157 
00161     FOM_AutoCorrect
00162   };
00163 
00169   enum curve_type {
00171     Polyline,
00172     
00174     Bezier,
00175 
00177     Interpolation
00178   };
00179 
00180 
00181   typedef sequence<string>      string_array;
00182   typedef sequence<short>       short_array;
00183   typedef sequence<boolean>     ListOfBool;
00184   typedef sequence<long>        ListOfLong;
00185   typedef sequence<double>      ListOfDouble;
00186 
00187   interface GEOM_Object;
00188 
00189   typedef sequence<GEOM_Object> ListOfGO;
00190 
00191   //# GEOM_Object
00195   interface GEOM_Object : SALOME::GenericObj
00196   {
00197 
00201     string GetEntry();
00202 
00206     long GetStudyID();
00207 
00211     long GetType();
00212 
00216     shape_type GetShapeType();
00217 
00226     shape_type GetTopologyType();
00227 
00237     shape_type GetMinShapeType();
00238 
00248     shape_type GetMaxShapeType();
00249 
00255     void SetName (in string theName);
00256 
00260     string GetName();
00261 
00267     void SetColor(in SALOMEDS::Color theColor);
00268 
00272     SALOMEDS::Color GetColor();
00273 
00278     void SetAutoColor(in boolean theAutoColor);
00279 
00283     boolean GetAutoColor();
00284 
00290     void SetMarkerStd(in marker_type theType, in marker_size theSize );
00291 
00298     void SetMarkerTexture(in long theTextureId);
00299 
00304     marker_type GetMarkerType();
00305 
00310     marker_size GetMarkerSize();
00311 
00316     long GetMarkerTexture();
00317 
00321     void SetStudyEntry (in string theEntry);
00322 
00326     string GetStudyEntry();
00327 
00333     ListOfGO GetDependency();
00334 
00339     ListOfGO GetLastDependency();
00340 
00344     long long getShape();
00345 
00346  //   ######################################################################
00347  //   # Internal methods (For sub-shape identification)
00348  //   ######################################################################
00352     SALOMEDS::TMPFile GetShapeStream();
00353 
00354     /*
00355      *  \brief Returns True if this object is not a sub-shape of another object.
00356      */
00357     boolean IsMainShape();
00358 
00359     /*
00360      *  \brief Get a list of ID's of sub-shapes in the main shape.
00361      *  \note Internal method, suppopsed to be used only by GEOM_Client
00362      */
00363     ListOfLong GetSubShapeIndices();
00364 
00365     /*
00366      *  \brief Get a main shape object to which this object is a sub-shape
00367      *  \note Internal method, suppopsed to be used only by GEOM_Client
00368      */
00369     GEOM_Object GetMainShape();
00370 
00371     /*
00372      *  \brief Return true if geom object representes a shape.
00373      *
00374      *  For example, method return false for GEOM_MARKER
00375      */
00376      boolean IsShape();
00377 
00378     /*
00379      *  \brief Return true if passed object is identical to this object
00380      *
00381      *  \param other object being compared with this one
00382      */
00383     boolean IsSame(in GEOM_Object other);
00384 
00390     void SetParameters (in string theParameters);
00391 
00395     string GetParameters();
00396   };
00397 
00398  // # GEOM_IOperations:
00402   interface GEOM_IOperations : SALOME::GenericObj
00403   {
00407     boolean IsDone();
00408 
00414     void SetErrorCode (in string theErrorID);
00415 
00419     string GetErrorCode();
00420 
00424     long GetStudyID();
00425 
00429     void StartOperation();
00430 
00434     void FinishOperation();
00435 
00439     void AbortOperation();
00440   };
00441   //# GEOM_IBasicOperations:
00447   interface GEOM_IBasicOperations : GEOM_IOperations
00448   {
00456     GEOM_Object MakePointXYZ (in double theX, in double theY, in double theZ);
00457 
00467     GEOM_Object MakePointWithReference (in GEOM_Object theReference,
00468                                         in double theX, in double theY, in double theZ);
00469 
00476     GEOM_Object MakePointOnCurve (in GEOM_Object theRefCurve,
00477                                   in double theParameter);
00478 
00488     GEOM_Object MakePointOnCurveByLength (in GEOM_Object theRefCurve,
00489                                           in double      theLength,
00490                                           in GEOM_Object theStartPoint);
00491 
00500     GEOM_Object MakePointOnCurveByCoord (in GEOM_Object theRefCurve,
00501                                          in double theXParameter,
00502                                          in double theYParameter,
00503                                          in double theZParameter);
00504 
00513     GEOM_Object MakePointOnSurface (in GEOM_Object theRefSurf,
00514                                     in double theUParameter,
00515                                     in double theVParameter);
00516 
00525     GEOM_Object MakePointOnSurfaceByCoord (in GEOM_Object theRefSurf,
00526                                            in double theXParameter,
00527                                            in double theYParameter,
00528                                            in double theZParameter);
00529 
00530 
00536     GEOM_Object MakePointOnLinesIntersection (in GEOM_Object theRefLine1,
00537                                               in GEOM_Object theRefLine2);
00538 
00547      GEOM_Object MakeTangentOnCurve (in GEOM_Object theRefCurve,
00548                                      in double theParameter);
00549 
00557     GEOM_Object MakeVectorDXDYDZ (in double theDX,
00558                                   in double theDY,
00559                                   in double theDZ);
00560 
00567     GEOM_Object MakeVectorTwoPnt (in GEOM_Object thePnt1, in GEOM_Object thePnt2);
00568 
00576     GEOM_Object MakeLine (in GEOM_Object thePnt, in GEOM_Object theDir);
00577 
00584     GEOM_Object MakeLineTwoPnt (in GEOM_Object thePnt1, in GEOM_Object thePnt2);
00585 
00592     GEOM_Object MakeLineTwoFaces (in GEOM_Object theFace1, in GEOM_Object theFace2);
00593 
00602     GEOM_Object MakePlaneThreePnt (in GEOM_Object thePnt1,
00603                                    in GEOM_Object thePnt2,
00604                                    in GEOM_Object thePnt3,
00605                                    in double theTrimSize);
00606 
00615     GEOM_Object MakePlanePntVec (in GEOM_Object thePnt,
00616                                  in GEOM_Object theVec,
00617                                  in double theTrimSize);
00618 
00625     GEOM_Object MakePlaneFace (in GEOM_Object theFace,
00626                                in double theTrimSize);
00627 
00635     GEOM_Object MakePlane2Vec (in GEOM_Object theVec1,
00636                                in GEOM_Object theVec2,
00637                                in double theTrimSize);
00638 
00646     GEOM_Object MakePlaneLCS (in GEOM_Object theLCS,
00647                               in double theTrimSize,
00648                               in double theOrientation);
00649 
00657     GEOM_Object MakeMarker (in double theOX , in double theOY , in double theOZ,
00658                             in double theXDX, in double theXDY, in double theXDZ,
00659                             in double theYDX, in double theYDY, in double theYDZ);
00660 
00666     GEOM_Object MakeMarkerFromShape (in GEOM_Object theShape);
00667 
00675     GEOM_Object MakeMarkerPntTwoVec (in GEOM_Object theOrigin,
00676                                      in GEOM_Object theXVec, in GEOM_Object theYVec);
00677 
00688     GEOM_Object MakeTangentPlaneOnFace(in GEOM_Object theFace,
00689                                        in double theParameterU,
00690                                        in double theParameterV,
00691                                        in double theTrimSize);
00692   };
00693 
00694   interface GEOM_ITransformOperations : GEOM_IOperations
00695   {
00703     GEOM_Object TranslateTwoPoints (in GEOM_Object theObject,
00704                                     in GEOM_Object thePoint1,
00705                                     in GEOM_Object thePoint2);
00706 
00715     GEOM_Object TranslateTwoPointsCopy (in GEOM_Object theObject,
00716                                         in GEOM_Object thePoint1,
00717                                         in GEOM_Object thePoint2);
00718 
00725     GEOM_Object TranslateDXDYDZ (in GEOM_Object theObject,
00726                                  in double theDX, in double theDY, in double theDZ);
00727 
00735     GEOM_Object TranslateDXDYDZCopy (in GEOM_Object theObject,
00736                                      in double theDX, in double theDY, in double theDZ);
00737 
00738 
00745     GEOM_Object TranslateVector (in GEOM_Object theObject,
00746                                  in GEOM_Object theVector);
00747 
00755     GEOM_Object TranslateVectorCopy (in GEOM_Object theObject,
00756                                      in GEOM_Object theVector);
00757 
00767     GEOM_Object TranslateVectorDistance (in GEOM_Object theObject,
00768                                          in GEOM_Object theVector,
00769                                          in double      theDistance,
00770                                          in boolean     theCopy);
00771 
00781     GEOM_Object MultiTranslate1D (in GEOM_Object theObject,
00782                                   in GEOM_Object theVector,
00783                                   in double theStep,
00784                                   in long theNbTimes);
00785 
00798     GEOM_Object MultiTranslate2D (in GEOM_Object theObject,
00799                                   in GEOM_Object theVector1,
00800                                   in double theStep1,
00801                                   in long theNbTimes1,
00802                                   in GEOM_Object theVector2,
00803                                   in double theStep2,
00804                                   in long theNbTimes2);
00805 
00814     GEOM_Object RotateThreePoints (in GEOM_Object theObject,
00815                                    in GEOM_Object theCentPoint,
00816                                    in GEOM_Object thePoint1,
00817                                    in GEOM_Object thePoint2);
00818 
00819 
00830     GEOM_Object RotateThreePointsCopy (in GEOM_Object theObject,
00831                                        in GEOM_Object theCentPoint,
00832                                        in GEOM_Object thePoint1,
00833                                        in GEOM_Object thePoint2);
00834 
00842     GEOM_Object Rotate (in GEOM_Object theObject,
00843                         in GEOM_Object theAxis,
00844                         in double theAngle);
00845 
00846 
00855     GEOM_Object RotateCopy (in GEOM_Object theObject,
00856                             in GEOM_Object theAxis,
00857                             in double theAngle);
00858 
00859 
00870     GEOM_Object MultiRotate1D (in GEOM_Object theObject,
00871                                in GEOM_Object theAxis,
00872                                in long theNbTimes);
00873 
00890     GEOM_Object MultiRotate2D (in GEOM_Object theObject,
00891                                in GEOM_Object theAxis,
00892                                in double theAngle,
00893                                in long theNbTimes1,
00894                                in double theStep,
00895                                in long theNbTimes2);
00896 
00903     GEOM_Object MirrorPlane (in GEOM_Object theObject, in GEOM_Object thePlane);
00904 
00912     GEOM_Object MirrorPlaneCopy (in GEOM_Object theObject, in GEOM_Object thePlane);
00913 
00921     GEOM_Object MirrorAxis (in GEOM_Object theObject, in GEOM_Object theAxis);
00922 
00930     GEOM_Object MirrorAxisCopy (in GEOM_Object theObject, in GEOM_Object theAxis);
00931 
00938     GEOM_Object MirrorPoint (in GEOM_Object theObject, in GEOM_Object thePoint);
00939 
00946     GEOM_Object MirrorPointCopy (in GEOM_Object theObject, in GEOM_Object thePoint);
00947 
00954     GEOM_Object OffsetShape (in GEOM_Object theObject, in double theOffset);
00955 
00962     GEOM_Object OffsetShapeCopy (in GEOM_Object theObject, in double theOffset);
00963 
00970     GEOM_Object ProjectShapeCopy (in GEOM_Object theSource, in GEOM_Object theTarget);
00971 
00979     GEOM_Object ScaleShape (in GEOM_Object theObject, in GEOM_Object thePoint,
00980                             in double theFactor);
00981 
00989     GEOM_Object ScaleShapeCopy (in GEOM_Object theObject, in GEOM_Object thePoint,
00990                                 in double theFactor);
00991 
00999     GEOM_Object ScaleShapeAlongAxes (in GEOM_Object theObject,
01000                                      in GEOM_Object thePoint,
01001                                      in double theFactorX,
01002                                      in double theFactorY,
01003                                      in double theFactorZ);
01004 
01013     GEOM_Object ScaleShapeAlongAxesCopy (in GEOM_Object theObject,
01014                                          in GEOM_Object thePoint,
01015                                          in double theFactorX,
01016                                          in double theFactorY,
01017                                          in double theFactorZ);
01018 
01030     GEOM_Object PositionShape (in GEOM_Object theObject,
01031                                in GEOM_Object theStartLCS,
01032                                in GEOM_Object theEndLCS);
01033 
01046     GEOM_Object PositionShapeCopy (in GEOM_Object theObject,
01047                                    in GEOM_Object theStartLCS,
01048                                    in GEOM_Object theEndLCS);
01049 
01059     GEOM_Object PositionAlongPath (in GEOM_Object theObject,
01060                                    in GEOM_Object thePath,
01061                                    in double theDistance,
01062                                    in boolean theCopy,
01063                                    in boolean theReverse);
01064 
01073     GEOM_Object TransformLikeOtherCopy (in GEOM_Object theObject,
01074                                         in GEOM_Object theSample);
01075 
01081     GEOM_Object RecomputeObject (in GEOM_Object theObject);
01082   };
01083   
01084  // # GEOM_I3DPrimOperations:
01091   interface GEOM_I3DPrimOperations : GEOM_IOperations
01092   {
01103     GEOM_Object MakeBoxDXDYDZ (in double theDX, in double theDY, in double theDZ);
01104 
01112     GEOM_Object MakeBoxTwoPnt (in GEOM_Object thePnt1, in GEOM_Object thePnt2);
01113 
01124     GEOM_Object MakeFaceHW (in double theH, in double theW, in short theOrientation);
01133     GEOM_Object MakeFaceObjHW (in GEOM_Object theObj, in double theH, in double theW);
01141     GEOM_Object MakeDiskPntVecR (in GEOM_Object thePnt,
01142                                  in GEOM_Object theVec,
01143                                  in double theR);
01149     GEOM_Object MakeDiskThreePnt (in GEOM_Object thePnt1,
01150                                   in GEOM_Object thePnt2,
01151                                   in GEOM_Object thePnt3);
01152 
01161     GEOM_Object MakeDiskR (in double theR, in short theOrientation);
01162 
01172     GEOM_Object MakeCylinderRH (in double theR, in double theH);
01173 
01182     GEOM_Object MakeCylinderPntVecRH (in GEOM_Object thePnt,
01183                                       in GEOM_Object theAxis,
01184                                       in double      theR,
01185                                       in double      theH);
01186 
01199     GEOM_Object MakeConeR1R2H (in double theR1, in double theR2, in double theH);
01200 
01212     GEOM_Object MakeConePntVecR1R2H (in GEOM_Object thePnt,
01213                                      in GEOM_Object theAxis,
01214                                      in double      theR1,
01215                                      in double      theR2,
01216                                      in double      theH);
01217 
01224     GEOM_Object MakeTorusRR (in double theRMajor,
01225                              in double theRMinor);
01226 
01235     GEOM_Object MakeTorusPntVecRR (in GEOM_Object thePnt,
01236                                    in GEOM_Object theVec,
01237                                    in double theRMajor,
01238                                    in double theRMinor);
01239 
01245     GEOM_Object MakeSphereR (in double theR);
01246 
01253     GEOM_Object MakeSpherePntR (in GEOM_Object thePnt, in double theR);
01254 
01265     GEOM_Object MakePrismVecH (in GEOM_Object theBase,
01266                                in GEOM_Object theVec,
01267                                in double      theH);
01268     /*  \brief The Same Prism but in 2 directions (forward&backward) */
01269     GEOM_Object MakePrismVecH2Ways (in GEOM_Object theBase,
01270                                     in GEOM_Object theVec,
01271                                     in double      theH);
01272     /*  \brief The Same as MakePrismVecH but with scaling */
01273     GEOM_Object MakePrismVecHWithScaling (in GEOM_Object theBase,
01274                                           in GEOM_Object theVec,
01275                                           in double      theH,
01276                                           in double      theScaleFactor);
01277 
01285     GEOM_Object MakePrismTwoPnt (in GEOM_Object theBase,
01286                                  in GEOM_Object thePoint1,
01287                                  in GEOM_Object thePoint2);
01288     /*  \brief The same prism but in two directions forward&backward */
01289     GEOM_Object MakePrismTwoPnt2Ways (in GEOM_Object theBase,
01290                                       in GEOM_Object thePoint1,
01291                                       in GEOM_Object thePoint2);
01292     /*  \brief The Same as MakePrismTwoPnt but with scaling */
01293     GEOM_Object MakePrismTwoPntWithScaling (in GEOM_Object theBase,
01294                                             in GEOM_Object thePoint1,
01295                                             in GEOM_Object thePoint2,
01296                                             in double      theScaleFactor);
01297 
01304     GEOM_Object MakePrismDXDYDZ (in GEOM_Object theBase,
01305                                    in double theDX, in double theDY, in double theDZ);
01306     /*  \brief The same prism but in two directions forward&backward */
01307     GEOM_Object MakePrismDXDYDZ2Ways (in GEOM_Object theBase,
01308                                       in double theDX, in double theDY, in double theDZ);
01309     /*  \brief The Same as MakePrismDXDYDZ but with scaling */
01310     GEOM_Object MakePrismDXDYDZWithScaling (in GEOM_Object theBase,
01311                                             in double theDX, in double theDY, in double theDZ,
01312                                             in double theScaleFactor);
01313 
01314 
01325     GEOM_Object MakeDraftPrism (in GEOM_Object theInitShape,
01326                                 in GEOM_Object theBase,
01327                                 in double theHeight, 
01328                                 in double theAngle,
01329                                 in boolean theFuse);
01330 
01338     GEOM_Object MakePipe (in GEOM_Object theBase, in GEOM_Object thePath);
01339 
01351     GEOM_Object MakeRevolutionAxisAngle (in GEOM_Object theBase,
01352                                          in GEOM_Object theAxis,
01353                                          in double theAngle);
01354     /*  The Same Revolution but in both ways forward&backward */
01355     GEOM_Object MakeRevolutionAxisAngle2Ways (in GEOM_Object theBase,
01356                                               in GEOM_Object theAxis,
01357                                               in double theAngle);
01358 
01371     GEOM_Object MakeFilling (in GEOM_Object theShape,
01372                              in long theMinDeg, in long theMaxDeg,
01373                              in double theTol2D, in double theTol3D,
01374                              in long theNbIter,
01375                              in filling_oper_method theMethod,
01376                              in boolean theApprox);
01377 
01386     GEOM_Object MakeThruSections(in ListOfGO theSeqSections,
01387                                  in boolean theModeSolid,
01388                                  in double thePreci,
01389                                  in boolean theRuled);
01390 
01408     GEOM_Object MakePipeWithDifferentSections (in ListOfGO theSeqBases,
01409                                                in ListOfGO theLocations,
01410                                                in GEOM_Object thePath,
01411                                                in boolean theWithContact ,
01412                                                in boolean theWithCorrection );
01413 
01432     GEOM_Object MakePipeWithShellSections (in ListOfGO theSeqBases,
01433                                            in ListOfGO theSeqSubBases,
01434                                            in ListOfGO theLocations,
01435                                            in GEOM_Object thePath,
01436                                            in boolean theWithContact ,
01437                                            in boolean theWithCorrection );
01438 
01445     GEOM_Object MakePipeShellsWithoutPath (in ListOfGO theSeqBases,
01446                                            in ListOfGO theLocations);
01447 
01460     GEOM_Object MakePipeBiNormalAlongVector (in GEOM_Object theBase,
01461                                              in GEOM_Object thePath,
01462                                              in GEOM_Object theVec);
01463 
01464   };
01465 
01466  // # GEOM_IShapesOperations
01473   interface GEOM_IShapesOperations : GEOM_IOperations
01474   {
01481     GEOM_Object MakeEdge (in GEOM_Object thePnt1, in GEOM_Object thePnt2);
01482 
01493     GEOM_Object MakeEdgeOnCurveByLength (in GEOM_Object theRefCurve,
01494                                          in double      theLength,
01495                                          in GEOM_Object theStartPoint);
01496 
01504     GEOM_Object MakeEdgeWire (in GEOM_Object theWire,
01505                               in double theLinearTolerance,
01506                               in double theAngularTolerance);
01507 
01515     GEOM_Object MakeWire (in ListOfGO theEdgesAndWires,
01516                           in double   theTolerance);
01517 
01525     GEOM_Object MakeFace (in GEOM_Object theWire, in boolean isPlanarWanted);
01526 
01534     GEOM_Object MakeFaceWires (in ListOfGO theWires, in boolean isPlanarWanted);
01535 
01541     GEOM_Object MakeShell (in ListOfGO theFacesAndShells);
01542 
01548     GEOM_Object MakeSolidShell (in GEOM_Object theShell);
01549 
01555     GEOM_Object MakeSolidShells (in ListOfGO theShells);
01556 
01562     GEOM_Object MakeCompound (in ListOfGO theShapes);
01563 
01571     GEOM_Object MakeGlueFaces (in GEOM_Object theShape, in double theTolerance, in boolean doKeepNonSolids);
01572 
01579     ListOfGO GetGlueFaces (in GEOM_Object theShape, in double theTolerance);
01580 
01593     GEOM_Object MakeGlueFacesByList (in GEOM_Object theShape, in double theTolerance,
01594                                      in ListOfGO theFaces, in boolean doKeepNonSolids,
01595                                      in boolean doGlueAllEdges);
01596 
01603     GEOM_Object MakeGlueEdges (in GEOM_Object theShape, in double theTolerance);
01604 
01611     ListOfGO GetGlueEdges (in GEOM_Object theShape, in double theTolerance);
01612 
01621     GEOM_Object MakeGlueEdgesByList (in GEOM_Object theShape,
01622                                      in double theTolerance,
01623                                      in ListOfGO theEdges);
01624 
01633     ListOfGO GetExistingSubObjects (in GEOM_Object theShape,
01634                                     in boolean     theGroupsOnly);
01635 
01641     ListOfGO MakeExplode (in GEOM_Object theShape,
01642                           in long        theShapeType,
01643                           in boolean     isSorted);
01644 
01655     ListOfGO MakeAllSubShapes (in GEOM_Object theShape,
01656                                in long        theShapeType,
01657                                in boolean     isSorted);
01658 
01668     ListOfGO ExtractSubShapes (in GEOM_Object theShape,
01669                                in long        theShapeType,
01670                                in boolean     isSorted);
01671 
01675     ListOfLong SubShapeAllIDs (in GEOM_Object theShape,
01676                                in long        theShapeType,
01677                                in boolean     isSorted);
01678 
01690     ListOfLong GetAllSubShapesIDs (in GEOM_Object theShape,
01691                                    in long        theShapeType,
01692                                    in boolean     isSorted);
01693 
01702     GEOM_Object GetSubShape (in GEOM_Object theMainShape,
01703                              in long        theID);
01704 
01713     ListOfGO MakeSubShapes (in GEOM_Object theMainShape,
01714                             in ListOfLong  theIndices);
01715 
01722     long GetSubShapeIndex (in GEOM_Object theMainShape, in GEOM_Object theSubShape);
01723 
01733     long GetTopologyIndex (in GEOM_Object theMainShape, in GEOM_Object theSubShape);
01734 
01744     string GetShapeTypeString (in GEOM_Object theShape);
01745 
01751     long NumberOfFaces (in GEOM_Object theShape);
01752 
01758     long NumberOfEdges (in GEOM_Object theShape);
01759 
01766     long NumberOfSubShapes (in GEOM_Object theShape,
01767                             in long        theShapeType);
01768 
01774     GEOM_Object ChangeOrientation (in GEOM_Object theShape);
01775 
01783     ListOfLong GetFreeFacesIDs (in GEOM_Object theShape);
01784 
01792     ListOfGO GetSharedShapes (in GEOM_Object theShape1,
01793                               in GEOM_Object theShape2,
01794                               in long        theShapeType);
01795 
01802     ListOfGO GetSharedShapesMulti (in ListOfGO theShapes,
01803                                    in long     theShapeType);
01804 
01815     ListOfGO GetShapesOnPlane (in GEOM_Object theShape,
01816                                in long        theShapeType,
01817                                in GEOM_Object theAx1,
01818                                in shape_state theState);
01830     ListOfGO GetShapesOnPlaneWithLocation (in GEOM_Object theShape,
01831                                            in long        theShapeType,
01832                                            in GEOM_Object theAx1,
01833                                            in GEOM_Object thePnt,
01834                                            in shape_state theState);
01835 
01836 
01837 
01849     ListOfGO GetShapesOnCylinder (in GEOM_Object theShape,
01850                                   in long        theShapeType,
01851                                   in GEOM_Object theAxis,
01852                                   in double      theRadius,
01853                                   in shape_state theState);
01854 
01867     ListOfGO GetShapesOnCylinderWithLocation (in GEOM_Object theShape,
01868                                               in long        theShapeType,
01869                                               in GEOM_Object theAxis,
01870                                               in GEOM_Object thePnt,
01871                                               in double      theRadius,
01872                                               in shape_state theState);
01873 
01884     ListOfGO GetShapesOnSphere (in GEOM_Object theShape,
01885                                 in long        theShapeType,
01886                                 in GEOM_Object theCenter,
01887                                 in double      theRadius,
01888                                 in shape_state theState);
01889 
01902     ListOfGO GetShapesOnQuadrangle (in GEOM_Object theShape,
01903                                     in long        theShapeType,
01904                                     in GEOM_Object theTopLeftPoint,
01905                                     in GEOM_Object theTopRigthPoint,
01906                                     in GEOM_Object theBottomLeftPoint,
01907                                     in GEOM_Object theBottomRigthPoint,
01908                                     in shape_state theState);
01909 
01920     ListOfLong GetShapesOnPlaneIDs (in GEOM_Object theShape,
01921                                     in long        theShapeType,
01922                                     in GEOM_Object theAx1,
01923                                     in shape_state theState);
01924 
01936     ListOfLong GetShapesOnPlaneWithLocationIDs (in GEOM_Object theShape,
01937                                                 in long        theShapeType,
01938                                                 in GEOM_Object theAx1,
01939                                                 in GEOM_Object thePnt,
01940                                                 in shape_state theState);
01941 
01953     ListOfLong GetShapesOnCylinderIDs (in GEOM_Object theShape,
01954                                        in long        theShapeType,
01955                                        in GEOM_Object theAxis,
01956                                        in double      theRadius,
01957                                        in shape_state theState);
01958 
01971     ListOfLong GetShapesOnCylinderWithLocationIDs (in GEOM_Object theShape,
01972                                                    in long        theShapeType,
01973                                                    in GEOM_Object theAxis,
01974                                                    in GEOM_Object thePnt,
01975                                                    in double      theRadius,
01976                                                    in shape_state theState);
01977 
01988     ListOfLong GetShapesOnSphereIDs (in GEOM_Object theShape,
01989                                      in long        theShapeType,
01990                                      in GEOM_Object theCenter,
01991                                      in double      theRadius,
01992                                      in shape_state theState);
01993 
02006     ListOfLong GetShapesOnQuadrangleIDs (in GEOM_Object theShape,
02007                                          in long        theShapeType,
02008                                          in GEOM_Object theTopLeftPoint,
02009                                          in GEOM_Object theTopRigthPoint,
02010                                          in GEOM_Object theBottomLeftPoint,
02011                                          in GEOM_Object theBottomRigthPoint,
02012                                          in shape_state theState);
02013 
02022     ListOfLong GetShapesOnBoxIDs (in GEOM_Object theBox,
02023                                   in GEOM_Object theShape,
02024                                   in long        theShapeType,
02025                                   in shape_state theState);
02026 
02035     ListOfGO GetShapesOnBox (in GEOM_Object theBox,
02036                              in GEOM_Object theShape,
02037                              in long        theShapeType,
02038                              in shape_state theState);
02039 
02048     ListOfLong GetShapesOnShapeIDs (in GEOM_Object theCheckShape,
02049                                     in GEOM_Object theShape,
02050                                     in short       theShapeType,
02051                                     in shape_state theState);
02052 
02061     ListOfGO GetShapesOnShape (in GEOM_Object theCheckShape,
02062                                in GEOM_Object theShape,
02063                                in short       theShapeType,
02064                                in shape_state theState);
02065 
02074     GEOM_Object GetShapesOnShapeAsCompound (in GEOM_Object theCheckShape,
02075                                             in GEOM_Object theShape,
02076                                             in short       theShapeType,
02077                                             in shape_state theState);
02078 
02086     GEOM_Object GetInPlace (in GEOM_Object theShapeWhere,
02087                             in GEOM_Object theShapeWhat);
02088 
02092     GEOM_Object GetInPlaceOld (in GEOM_Object theShapeWhere,
02093                                in GEOM_Object theShapeWhat);
02094 
02109     GEOM_Object GetInPlaceByHistory (in GEOM_Object theShapeWhere,
02110                                      in GEOM_Object theShapeWhat);
02111 
02119     GEOM_Object GetSame (in GEOM_Object theShapeWhere,
02120                                 in GEOM_Object theShapeWhat);
02121 
02129     ListOfLong GetSameIDs (in GEOM_Object theShapeWhere,
02130                            in GEOM_Object theShapeWhat);
02131 
02132   };
02133 
02134  // # GEOM_IBlocksOperations: 
02140   interface GEOM_IBlocksOperations : GEOM_IOperations
02141   {
02142    
02143   //  # Creation of blocks
02144 
02151     GEOM_Object MakeQuad (in GEOM_Object theEdge1,
02152                           in GEOM_Object theEdge2,
02153                           in GEOM_Object theEdge3,
02154                           in GEOM_Object theEdge4);
02155 
02163     GEOM_Object MakeQuad2Edges (in GEOM_Object theEdge1,
02164                                 in GEOM_Object theEdge2);
02165 
02173     GEOM_Object MakeQuad4Vertices (in GEOM_Object thePnt1,
02174                                    in GEOM_Object thePnt2,
02175                                    in GEOM_Object thePnt3,
02176                                    in GEOM_Object thePnt4);
02177 
02186     GEOM_Object MakeHexa (in GEOM_Object theFace1,
02187                           in GEOM_Object theFace2,
02188                           in GEOM_Object theFace3,
02189                           in GEOM_Object theFace4,
02190                           in GEOM_Object theFace5,
02191                           in GEOM_Object theFace6);
02192 
02200     GEOM_Object MakeHexa2Faces (in GEOM_Object theFace1,
02201                                 in GEOM_Object theFace2);
02202 
02203     
02204   //  # Extract elements of blocks and blocks compounds
02205      
02206 
02215     GEOM_Object GetPoint (in GEOM_Object theShape,
02216                           in double      theX,
02217                           in double      theY,
02218                           in double      theZ,
02219                           in double      theEpsilon);
02220 
02227     GEOM_Object GetVertexNearPoint (in GEOM_Object theShape,
02228                                     in GEOM_Object thePoint);
02229 
02236     GEOM_Object GetEdge (in GEOM_Object theShape,
02237                          in GEOM_Object thePoint1,
02238                          in GEOM_Object thePoint2);
02239 
02246     GEOM_Object GetEdgeNearPoint (in GEOM_Object theShape,
02247                                   in GEOM_Object thePoint);
02248 
02255     GEOM_Object GetFaceByPoints (in GEOM_Object theShape,
02256                                  in GEOM_Object thePoint1,
02257                                  in GEOM_Object thePoint2,
02258                                  in GEOM_Object thePoint3,
02259                                  in GEOM_Object thePoint4);
02260 
02267     GEOM_Object GetFaceByEdges (in GEOM_Object theShape,
02268                                 in GEOM_Object theEdge1,
02269                                 in GEOM_Object theEdge2);
02270 
02277     GEOM_Object GetOppositeFace (in GEOM_Object theBlock,
02278                                  in GEOM_Object theFace);
02279 
02286     GEOM_Object GetFaceNearPoint (in GEOM_Object theShape,
02287                                   in GEOM_Object thePoint);
02288 
02295     GEOM_Object GetFaceByNormale (in GEOM_Object theBlock,
02296                                   in GEOM_Object theVector);
02297 
02309     GEOM_Object GetShapesNearPoint (in GEOM_Object theShape,
02310                                     in GEOM_Object thePoint,
02311                                     in long        theShapeType,
02312                                     in double      theTolerance);
02313 
02314    //  #  Extract blocks from blocks compounds
02315      
02316 
02326     boolean IsCompoundOfBlocks (in GEOM_Object theCompound,
02327                                 in long        theMinNbFaces,
02328                                 in long        theMaxNbFaces,
02329                                 out long       theNbBlocks);
02330 
02334     enum BCErrorType
02335     {
02336       /* Each element of the compound should be a Block */
02337       NOT_BLOCK,
02338 
02339       /* An element is a potential block, but has degenerated and/or seam edge(s). */
02340       EXTRA_EDGE,
02341 
02342       /* A connection between two Blocks should be an entire face or an entire edge */
02343       INVALID_CONNECTION,
02344 
02345       /* The compound should be connexe */
02346       NOT_CONNECTED,
02347 
02348       /* The glue between two quadrangle faces should be applied */
02349       NOT_GLUED
02350     };
02351 
02355     struct BCError
02356     {
02357       BCErrorType error;
02358       ListOfLong  incriminated;
02359     };
02360 
02364     typedef sequence<BCError> BCErrors;
02365 
02380     boolean CheckCompoundOfBlocks (in GEOM_Object theCompound,
02381                                    out BCErrors   theErrors);
02382 
02390     string PrintBCErrors (in GEOM_Object theCompound,
02391                           in BCErrors    theErrors);
02392 
02404     GEOM_Object RemoveExtraEdges (in GEOM_Object theShape,
02405                                   in long        theOptimumNbFaces);
02406 
02415     GEOM_Object CheckAndImprove (in GEOM_Object theCompound);
02416 
02426     ListOfGO ExplodeCompoundOfBlocks (in GEOM_Object theCompound,
02427                                       in long        theMinNbFaces,
02428                                       in long        theMaxNbFaces);
02429 
02437     GEOM_Object GetBlockNearPoint (in GEOM_Object theCompound,
02438                                    in GEOM_Object thePoint);
02439 
02446     GEOM_Object GetBlockByParts (in GEOM_Object theCompound,
02447                                  in ListOfGO    theParts);
02448 
02455     ListOfGO GetBlocksByParts (in GEOM_Object theCompound,
02456                                in ListOfGO    theParts);
02457 
02458   // #  Operations on blocks with gluing of result
02459 
02472     GEOM_Object MakeMultiTransformation1D (in GEOM_Object theBlock,
02473                                            in long        theDirFace1,
02474                                            in long        theDirFace2,
02475                                            in long        theNbTimes);
02476 
02485     GEOM_Object MakeMultiTransformation2D (in GEOM_Object theBlock,
02486                                            in long        theDirFace1U,
02487                                            in long        theDirFace2U,
02488                                            in long        theNbTimesU,
02489                                            in long        theDirFace1V,
02490                                            in long        theDirFace2V,
02491                                            in long        theNbTimesV);
02492 
02493   // # Special operation - propagation
02494    
02495 
02505     ListOfGO Propagate (in GEOM_Object theShape);
02506   };
02507 
02508  // # GEOM_IBooleanOperations
02512   interface GEOM_IBooleanOperations : GEOM_IOperations
02513   {
02522     GEOM_Object MakeBoolean (in GEOM_Object theShape1,
02523                              in GEOM_Object theShape2,
02524                              in long theOperation);
02525 
02552     GEOM_Object MakePartition (in ListOfGO   theShapes,
02553                                in ListOfGO   theTools,
02554                                in ListOfGO   theKeepInside,
02555                                in ListOfGO   theRemoveInside,
02556                                in short      theLimit,
02557                                in boolean    theRemoveWebs,
02558                                in ListOfLong theMaterials,
02559                                in short      theKeepNonlimitShapes);
02560 
02575     GEOM_Object MakePartitionNonSelfIntersectedShape (in ListOfGO   theShapes,
02576                                                       in ListOfGO   theTools,
02577                                                       in ListOfGO   theKeepInside,
02578                                                       in ListOfGO   theRemoveInside,
02579                                                       in short      theLimit,
02580                                                       in boolean    theRemoveWebs,
02581                                                       in ListOfLong theMaterials,
02582                                                       in short      theKeepNonlimitShapes);
02583 
02590     GEOM_Object MakeHalfPartition (in GEOM_Object theShape,
02591                                    in GEOM_Object thePlane);
02592   };
02593 
02594  // # GEOM_ICurvesOperations:
02600   interface GEOM_ICurvesOperations : GEOM_IOperations
02601   {
02609     GEOM_Object MakeCirclePntVecR (in GEOM_Object thePnt,
02610                                    in GEOM_Object theVec,
02611                                    in double theR);
02617     GEOM_Object MakeCircleThreePnt (in GEOM_Object thePnt1,
02618                                     in GEOM_Object thePnt2,
02619                                     in GEOM_Object thePnt3);
02626     GEOM_Object MakeCircleCenter2Pnt (in GEOM_Object thePnt1,
02627                                       in GEOM_Object thePnt2,
02628                                       in GEOM_Object thePnt3);
02637     GEOM_Object MakeEllipse (in GEOM_Object thePnt,
02638                              in GEOM_Object theVec,
02639                              in double theRMajor,
02640                              in double theRMinor);
02641 
02651     GEOM_Object MakeEllipseVec (in GEOM_Object thePnt,
02652                                 in GEOM_Object theVec,
02653                                 in double theRMajor,
02654                                 in double theRMinor,
02655                                 in GEOM_Object theVecMaj);
02656 
02664     GEOM_Object MakeArc (in GEOM_Object thePnt1,
02665                          in GEOM_Object thePnt2,
02666                          in GEOM_Object thePnt3);
02667 
02676     GEOM_Object MakeArcCenter (in GEOM_Object theCenter,
02677                                in GEOM_Object thePnt1,
02678                                in GEOM_Object thePnt2,
02679                                in boolean theSense);
02680 
02689     GEOM_Object MakeArcOfEllipse (in GEOM_Object theCenter,
02690                                   in GEOM_Object thePnt1,
02691                                   in GEOM_Object thePnt2);
02692 
02693 
02700     GEOM_Object MakePolyline (in ListOfGO thePoints,
02701                               in boolean  theIsClosed);
02702 
02709     GEOM_Object MakeSplineBezier (in ListOfGO thePoints,
02710                                   in boolean  theIsClosed);
02711 
02720     GEOM_Object MakeSplineInterpolation (in ListOfGO thePoints,
02721                                          in boolean  theIsClosed,
02722                                          in boolean  theDoReordering);
02723 
02735     GEOM_Object MakeCurveParametric(in string thexExpr,
02736                                 in string theyExpr,
02737                                 in string thezExpr,
02738                                 in double theParamMin,
02739                                 in double theParamMax,
02740                                 in double theParamStep,
02741                                 in curve_type theCurveType);
02742 
02754     GEOM_Object MakeCurveParametricNew(in string thexExpr,
02755                     in string theyExpr,
02756                     in string thezExpr,
02757                     in double theParamMin,
02758                     in double theParamMax,
02759                     in long   theParamNbStep,
02760                     in curve_type theCurveType);
02761 
02797     GEOM_Object MakeSketcher (in string theCommand, in ListOfDouble theWorkingPlane);
02798 
02808     GEOM_Object Make3DSketcher (in ListOfDouble theCoordinates);
02809 
02820     GEOM_Object MakeSketcherOnPlane (in string theCommand, in GEOM_Object theWorkingPlane);
02821   };
02822 
02823  // # GEOM_ILocalOperations:
02827   interface GEOM_ILocalOperations : GEOM_IOperations
02828   {
02835     GEOM_Object MakeFilletAll (in GEOM_Object theShape,
02836                                in double      theR);
02837 
02847     GEOM_Object MakeFilletEdges (in GEOM_Object theShape,
02848                                  in double      theR,
02849                                  in ListOfLong  theEdges);
02850     GEOM_Object MakeFilletEdgesR1R2 (in GEOM_Object theShape,
02851                                      in double      theR1,
02852                                      in double      theR2,
02853                                      in ListOfLong  theEdges);
02854 
02864     GEOM_Object MakeFilletFaces (in GEOM_Object theShape,
02865                                  in double      theR,
02866                                  in ListOfLong  theFaces);
02867 
02868     GEOM_Object MakeFilletFacesR1R2 (in GEOM_Object theShape,
02869                                      in double      theR1,
02870                                      in double      theR2,
02871                                      in ListOfLong  theFaces);
02872 
02882     GEOM_Object MakeFillet2D (in GEOM_Object theShape,
02883                               in double      theR,
02884                               in ListOfLong  theVertexes);
02885 
02897     GEOM_Object MakeFillet1D (in GEOM_Object theShape,
02898                               in double      theR,
02899                               in ListOfLong  theVertexes);
02900 
02907     GEOM_Object MakeChamferAll (in GEOM_Object theShape,
02908                                 in double      theD);
02909 
02921     GEOM_Object MakeChamferEdge (in GEOM_Object theShape,
02922                                  in double theD1, in double theD2,
02923                                  in long theFace1, in long theFace2);
02928     GEOM_Object MakeChamferEdgeAD (in GEOM_Object theShape,
02929                                    in double theD, in double theAngle,
02930                                    in long theFace1, in long theFace2);
02931 
02945     GEOM_Object MakeChamferFaces (in GEOM_Object theShape,
02946                                   in double theD1, in double theD2,
02947                                   in ListOfLong theFaces);
02952     GEOM_Object MakeChamferFacesAD (in GEOM_Object theShape,
02953                                     in double theD, in double theAngle,
02954                                     in ListOfLong theFaces);
02955 
02964     GEOM_Object MakeChamferEdges (in GEOM_Object theShape,
02965                                   in double theD1, in double theD2,
02966                                   in ListOfLong theEdges);
02971     GEOM_Object MakeChamferEdgesAD (in GEOM_Object theShape,
02972                                     in double theD, in double theAngle,
02973                                     in ListOfLong theEdges);
02974 
02985     GEOM_Object MakeArchimede (in GEOM_Object theShape,
02986                                in double theWeight,
02987                                in double theWaterDensity,
02988                                in double theMeshDeflection);
02989 
02995     long GetSubShapeIndex (in GEOM_Object theShape, in GEOM_Object theSubShape);
02996   };
02997 
02998  // #  GEOM_IHealingOperations: 
03004   interface GEOM_IHealingOperations : GEOM_IOperations
03005   {
03016     GEOM_Object ProcessShape (in GEOM_Object theShapes,
03017                               in string_array theOperators,
03018                               in string_array theParameters,
03019                               in string_array theValues);
03020 
03032     void GetShapeProcessParameters (out string_array theOperators,
03033                                     out string_array theParameters,
03034                                     out string_array theValues);
03045     void GetOperatorParameters (in string theOperator,
03046                                 out string_array theParameters,
03047                                 out string_array theValues);
03048 
03056     GEOM_Object SuppressFaces (in GEOM_Object theObject, in short_array theFaces);
03057 
03067     GEOM_Object CloseContour (in GEOM_Object theObject, in short_array theWires,
03068                               in boolean isCommonVertex);
03069 
03077     GEOM_Object RemoveIntWires (in GEOM_Object theObject, in short_array theWires);
03078 
03086     GEOM_Object FillHoles (in GEOM_Object theObject, in short_array theWires);
03087 
03094     GEOM_Object Sew (in GEOM_Object theObject, in double theTolerance);
03095 
03107     GEOM_Object DivideEdge (in GEOM_Object theObject, in short theEdgeIndex,
03108                             in double theValue, in boolean isByParameter);
03109 
03118     boolean GetFreeBoundary (in GEOM_Object theObject,
03119                              out ListOfGO theClosedWires,
03120                              out ListOfGO theOpenWires);
03121 
03127     GEOM_Object ChangeOrientation (in GEOM_Object theObject);
03128     GEOM_Object ChangeOrientationCopy (in GEOM_Object theObject);
03129 
03136     GEOM_Object LimitTolerance (in GEOM_Object theObject, in double theTolerance);
03137 
03138   };
03139 
03140  // # GEOM_IInsertOperations:
03145   interface GEOM_IInsertOperations : GEOM_IOperations
03146   {
03150     GEOM_Object MakeCopy (in GEOM_Object theOriginal);
03151 
03159     void Export (in GEOM_Object theObject, in string theFileName, in string theFormatName);
03160 
03171     GEOM_Object ImportFile (in string theFileName, in string theFormatName);
03172 
03179     void ImportTranslators (out string_array theFormats,
03180                             out string_array thePatterns);
03181 
03188     void ExportTranslators (out string_array theFormats,
03189                             out string_array thePatterns);
03190 
03196     long LoadTexture(in string theTextureFile);
03197 
03205     long AddTexture(in long theWidth, in long theHeight, in SALOMEDS::TMPFile theTexture);
03206 
03214     SALOMEDS::TMPFile GetTexture(in long theID, out long theWidth, out long theHeight);
03215 
03220     ListOfLong GetAllTextures();
03221   };
03222 
03223  // # GEOM_IKindOfShape:
03227   interface GEOM_IKindOfShape
03228   {
03229     enum shape_kind {
03230       NO_SHAPE,
03231       //COMPOSITEs
03232       COMPOUND,
03233       COMPSOLID,
03234       SHELL,
03235       WIRE,
03236       // SOLIDs
03238       SPHERE,
03240       CYLINDER,
03242       BOX,
03244       ROTATED_BOX, 
03246       TORUS,   
03248       CONE,   
03250       POLYHEDRON,  
03252       SOLID,       
03253       // FACEs
03255       SPHERE2D,    
03257       CYLINDER2D,
03259       TORUS2D,     
03261       CONE2D,
03263       DISK_CIRCLE,
03265       DISK_ELLIPSE,
03267       POLYGON,     
03269       PLANE,        
03271       PLANAR,      
03273       FACE,      
03274       // EDGEs
03276       CIRCLE,      
03278       ARC_CIRCLE, 
03280       ELLIPSE,    
03282       ARC_ELLIPSE,  
03284       LINE,         
03286       SEGMENT,      
03288       EDGE,       
03289       // VERTEX
03290       VERTEX,
03291       // ADVANCED shapes
03293       ADVANCED    
03294     };
03295   };
03296 
03297  // # GEOM_IMeasureOperations:
03303   interface GEOM_IMeasureOperations : GEOM_IOperations
03304   {
03315     //short KindOfShape (in GEOM_Object   theShape,
03316     GEOM_IKindOfShape::shape_kind KindOfShape (in  GEOM_Object  theShape,
03317                                                out ListOfLong   theIntegers,
03318                                                out ListOfDouble theDoubles);
03319 
03331     void GetPosition (in GEOM_Object theShape,
03332                       out double Ox, out double Oy, out double Oz,
03333                       out double Zx, out double Zy, out double Zz,
03334                       out double Xx, out double Xy, out double Xz);
03335 
03345     void GetBasicProperties (in GEOM_Object theShape,
03346                              out double theLength,
03347                              out double theSurfArea,
03348                              out double theVolume);
03349 
03355     GEOM_Object GetCentreOfMass (in GEOM_Object theShape);
03356 
03357     /*
03358      *  Get the vertex by index for 1D objects depends the edge/wire orientation
03359      *  \param theShape Shape (wire or edge) to find the vertex on it
03360      *  \param theIndex Index of vertex sub-shape
03361      *  \return New GEOM_Object, vertex.
03362      */
03363     GEOM_Object GetVertexByIndex( in GEOM_Object theShape, in long index );
03364 
03373     GEOM_Object GetNormal (in GEOM_Object theFace,
03374                            in GEOM_Object theOptionalPoint);
03375 
03383     void GetInertia (in GEOM_Object theShape,
03384                      out double I11, out double I12, out double I13,
03385                      out double I21, out double I22, out double I23,
03386                      out double I31, out double I32, out double I33,
03387                      out double Ix , out double Iy , out double Iz);
03388 
03397     void GetBoundingBox (in GEOM_Object theShape,
03398                          out double Xmin, out double Xmax,
03399                          out double Ymin, out double Ymax,
03400                          out double Zmin, out double Zmax);
03401 
03410     void GetTolerance (in GEOM_Object theShape,
03411                        out double FaceMin, out double FaceMax,
03412                        out double EdgeMin, out double EdgeMax,
03413                        out double VertMin, out double VertMax);
03414 
03421     boolean CheckShape (in GEOM_Object theShape,
03422                         out string     theDescription);
03423 
03430     boolean CheckShapeWithGeometry (in GEOM_Object theShape,
03431                                     out string     theDescription);
03432 
03439     boolean CheckSelfIntersections (in GEOM_Object theShape,
03440                                     out ListOfLong theIntersections);
03441 
03447     string IsGoodForSolid (in GEOM_Object theShape);
03448 
03454     string WhatIs (in GEOM_Object theShape);
03455 
03464     ListOfBool AreCoordsInside(in GEOM_Object theShape, in ListOfDouble coords, in double tolerance);
03465 
03473     double GetMinDistance (in GEOM_Object theShape1, in GEOM_Object theShape2,
03474                            out double X1, out double Y1, out double Z1,
03475                            out double X2, out double Y2, out double Z2);
03476 
03482     double GetAngle (in GEOM_Object theShape1, in GEOM_Object theShape2);
03483 
03489     double GetAngleBtwVectors (in GEOM_Object theShape1, in GEOM_Object theShape2);
03490 
03494     void PointCoordinates (in GEOM_Object theShape, out double X, out double Y, out double Z);
03495 
03502     double CurveCurvatureByParam (in GEOM_Object theShape, in double theParam);
03503 
03510     double CurveCurvatureByPoint (in GEOM_Object theShape, in GEOM_Object thePoint);
03511 
03519     double MaxSurfaceCurvatureByParam (in GEOM_Object theShape, in double theUParam,
03520                                        in double theVParam);
03521 
03528     double MaxSurfaceCurvatureByPoint (in GEOM_Object theShape, in GEOM_Object thePoint);
03529 
03537     double MinSurfaceCurvatureByParam (in GEOM_Object theShape, in double theUParam,
03538                                        in double theVParam);
03539 
03546     double MinSurfaceCurvatureByPoint (in GEOM_Object theShape, in GEOM_Object thePoint);
03547 
03548   };
03549 
03550  // # GEOM_IGroupOperations:
03554   interface GEOM_IGroupOperations : GEOM_IOperations
03555   {
03562     GEOM_Object CreateGroup (in GEOM_Object theMainShape, in long theShapeType);
03563 
03570     void AddObject (in GEOM_Object theGroup, in long theSubShapeId);
03571 
03578     void RemoveObject (in GEOM_Object theGroup, in long theSubShapeId);
03579 
03585     void UnionList (in GEOM_Object theGroup, in ListOfGO theSubShapes);
03586 
03592     void DifferenceList (in GEOM_Object theGroup, in ListOfGO theSubShapes);
03593 
03599     void UnionIDs (in GEOM_Object theGroup, in ListOfLong theSubShapes);
03600 
03606     void DifferenceIDs (in GEOM_Object theGroup, in ListOfLong theSubShapes);
03607 
03612     long GetType (in GEOM_Object theGroup);
03613 
03619     GEOM_Object GetMainShape (in GEOM_Object theGroup);
03620 
03625     ListOfLong GetObjects (in GEOM_Object theGroup);
03626   };
03627 
03628  // # GEOM_IAdvancedOperations:
03632   interface GEOM_IAdvancedOperations : GEOM_IOperations
03633   {
03648     ListOfGO MakePipeTShape (in double theR1, in double theW1, in double theL1,
03649                              in double theR2, in double theW2, in double theL2,
03650                              in boolean theHexMesh);
03669     ListOfGO MakePipeTShapeWithPosition (in double theR1, in double theW1, in double theL1,
03670                                          in double theR2, in double theW2, in double theL2,
03671                                          in boolean theHexMesh,
03672                                          in GEOM_Object theP1, in GEOM_Object theP2, in GEOM_Object theP3);
03690     ListOfGO MakePipeTShapeChamfer (in double theR1, in double theW1, in double theL1,
03691                                     in double theR2, in double theW2, in double theL2,
03692                                     in double theH, in double theW, in boolean theHexMesh);
03714     ListOfGO MakePipeTShapeChamferWithPosition (in double theR1, in double theW1, in double theL1,
03715                                                 in double theR2, in double theW2, in double theL2,
03716                                                 in double theH, in double theW, in boolean theHexMesh,
03717                                                 in GEOM_Object theP1, in GEOM_Object theP2, in GEOM_Object theP3);
03734     ListOfGO MakePipeTShapeFillet (in double theR1, in double theW1, in double theL1,
03735                                    in double theR2, in double theW2, in double theL2,
03736                                    in double theRF, in boolean theHexMesh);
03757     ListOfGO MakePipeTShapeFilletWithPosition (in double theR1, in double theW1, in double theL1,
03758                                                in double theR2, in double theW2, in double theL2,
03759                                                in double theRF, in boolean theHexMesh,
03760                                                in GEOM_Object theP1, in GEOM_Object theP2, in GEOM_Object theP3);
03761     /*@@ insert new functions before this line @@ do not remove this line @@*/
03762   };
03763 
03764  // # GEOM_Gen:
03770   interface GEOM_Gen : Engines::EngineComponent,SALOMEDS::Driver
03771   {
03776     void Undo (in long theStudyID);
03777 
03778     void Redo (in long theStudyID);
03779 
03787     SALOMEDS::SObject AddInStudy (in SALOMEDS::Study theStudy,
03788                                   in GEOM_Object theObject,
03789                                   in string theName,
03790                                   in GEOM_Object theFather);
03791 
03816     ListOfGO RestoreSubShapesO (in SALOMEDS::Study   theStudy,
03817                                 in GEOM_Object       theObject,
03818                                 in ListOfGO          theArgs,
03819                                 in find_shape_method theFindMethod,
03820                                 in boolean           theInheritFirstArg,
03821                                 in boolean           theAddPrefix);
03822 
03847     ListOfGO RestoreGivenSubShapesO (in SALOMEDS::Study   theStudy,
03848                                      in GEOM_Object       theObject,
03849                                      in ListOfGO          theArgs,
03850                                      in find_shape_method theFindMethod,
03851                                      in boolean           theInheritFirstArg,
03852                                      in boolean           theAddPrefix);
03853 
03878     ListOfGO RestoreSubShapesSO (in SALOMEDS::Study   theStudy,
03879                                  in SALOMEDS::SObject theSObject,
03880                                  in ListOfGO          theArgs,
03881                                  in find_shape_method theFindMethod,
03882                                  in boolean           theInheritFirstArg,
03883                                  in boolean           theAddPrefix);
03884 
03885    // #  Methods to access interfaces for objects creation and transformation
03886     
03887     GEOM_IBasicOperations     GetIBasicOperations    (in long theStudyID) raises (SALOME::SALOME_Exception);
03888     GEOM_ITransformOperations GetITransformOperations(in long theStudyID) raises (SALOME::SALOME_Exception);
03889     GEOM_I3DPrimOperations    GetI3DPrimOperations   (in long theStudyID) raises (SALOME::SALOME_Exception);
03890     GEOM_IShapesOperations    GetIShapesOperations   (in long theStudyID) raises (SALOME::SALOME_Exception);
03891     GEOM_IBooleanOperations   GetIBooleanOperations  (in long theStudyID) raises (SALOME::SALOME_Exception);
03892     GEOM_ICurvesOperations    GetICurvesOperations   (in long theStudyID) raises (SALOME::SALOME_Exception);
03893     GEOM_ILocalOperations     GetILocalOperations    (in long theStudyID) raises (SALOME::SALOME_Exception);
03894     GEOM_IHealingOperations   GetIHealingOperations  (in long theStudyID) raises (SALOME::SALOME_Exception);
03895     GEOM_IInsertOperations    GetIInsertOperations   (in long theStudyID) raises (SALOME::SALOME_Exception);
03896     GEOM_IMeasureOperations   GetIMeasureOperations  (in long theStudyID) raises (SALOME::SALOME_Exception);
03897     GEOM_IBlocksOperations    GetIBlocksOperations   (in long theStudyID) raises (SALOME::SALOME_Exception);
03898     GEOM_IGroupOperations     GetIGroupOperations    (in long theStudyID) raises (SALOME::SALOME_Exception);
03899     GEOM_IAdvancedOperations  GetIAdvancedOperations (in long theStudyID) raises (SALOME::SALOME_Exception);
03900 
03901   //  # Objects Management
03902      
03903 
03908     void RemoveObject (in GEOM_Object theObject);
03909 
03916     GEOM_Object GetObject (in long theStudyID, in string theEntry);
03917 
03925     GEOM_Object AddSubShape (in GEOM_Object theMainShape, in ListOfLong theIndices);
03926 
03927  // #  GEOM_Objects IOR Management
03928     
03933     GEOM_Object GetIORFromString (in string theIOR);
03934 
03939     string GetStringFromIOR (in GEOM_Object theObject);
03940 
03945     string GetDumpName (in string theStudyEntry);
03946 
03951     string_array GetAllDumpNames();
03952 
03958     ListOfGO PublishNamedShapesInStudy(in SALOMEDS::Study theStudy,
03959                                        //in SObject theSObject,
03960                                        in Object theObject);
03961   };
03962 };
03963 
03964 #endif