idl/GEOM_Gen.idl

Go to the documentation of this file.
00001 // Copyright (C) 2005  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
00002 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
00003 // 
00004 // This library is free software; you can redistribute it and/or
00005 // modify it under the terms of the GNU Lesser General Public
00006 // License as published by the Free Software Foundation; either 
00007 // version 2.1 of the License.
00008 // 
00009 // This library is distributed in the hope that it will be useful 
00010 // but WITHOUT ANY WARRANTY; without even the implied warranty of 
00011 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
00012 // Lesser General Public License for more details.
00013 //
00014 // You should have received a copy of the GNU Lesser General Public  
00015 // License along with this library; if not, write to the Free Software 
00016 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
00017 //
00018 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
00019 //
00020 //  File   : GEOM_Gen.idl
00021 //  Author : Sergey RUIN
00022 
00023 #ifndef __GEOM_GEN__
00024 #define __GEOM_GEN__
00025 
00026 #include "SALOME_Exception.idl"
00027 #include "SALOME_Component.idl"
00028 #include "SALOMEDS.idl"
00029 
00030 #include "SALOME_GenericObj.idl"
00031 
00032 module GEOM
00033 {
00037   enum shape_type { COMPOUND, COMPSOLID, SOLID, SHELL,
00038                  FACE, WIRE, EDGE, VERTEX, SHAPE };
00039 
00040 
00045   enum shape_state
00046   {
00048     ST_ON,
00049 
00055     ST_OUT,
00056 
00061     ST_ONOUT,
00062 
00069     ST_IN,
00070 
00075     ST_ONIN
00076   };
00077 
00078   typedef sequence<string>      string_array;
00079   typedef sequence<short>       short_array;
00080   typedef sequence<long>        ListOfLong;
00081   typedef sequence<double>      ListOfDouble;
00082 
00083   interface GEOM_Object;
00084 
00085   typedef sequence<GEOM_Object> ListOfGO;
00086 
00090   interface GEOM_Object : SALOME::GenericObj
00091   {
00092 
00096     string GetEntry();
00097 
00101     long GetStudyID();
00102 
00106     long GetType();
00107 
00111     shape_type GetShapeType();
00112 
00117     void SetName (in string theName);
00118 
00122     string GetName();
00123 
00127     void SetStudyEntry (in string theEntry);
00128 
00132     string GetStudyEntry();
00133 
00139     ListOfGO GetDependency();
00140 
00145     ListOfGO GetLastDependency();
00146 
00150     long getShape();
00151 
00161     SALOMEDS::TMPFile GetShapeStream();
00162 
00163     /*
00164      *  Returns True if this object is not a sub shape of another object.
00165      */
00166     boolean IsMainShape();
00167 
00168     /*
00169      *  Get a list of ID's of sub shapes in the main shape.
00170      *  \note Internal method, suppopsed to be used only by GEOM_Client
00171      */
00172     ListOfLong GetSubShapeIndices();
00173 
00174     /*
00175      *  Get a main shape object to which this object is a sub shape
00176      *  \note Internal method, suppopsed to be used only by GEOM_Client
00177      */
00178     GEOM_Object GetMainShape();
00179 
00180     /*
00181      *  Return true if geom object representes a shape.
00182      *  For example, method return false for GEOM_MARKER
00183      */
00184      boolean IsShape();
00185   };
00186 
00187 
00191   interface GEOM_IOperations : SALOME::GenericObj
00192   {
00196     boolean IsDone();
00197 
00203     void SetErrorCode (in string theErrorID);
00204 
00208     string GetErrorCode();
00209 
00213     long GetStudyID();
00214 
00218     void StartOperation();
00219 
00223     void FinishOperation();
00224 
00228     void AbortOperation();
00229   };
00230 
00235   interface GEOM_IBasicOperations : GEOM_IOperations
00236   {
00244     GEOM_Object MakePointXYZ (in double theX, in double theY, in double theZ);
00245 
00255     GEOM_Object MakePointWithReference (in GEOM_Object theReference,
00256                          in double theX, in double theY, in double theZ);
00257 
00264     GEOM_Object MakePointOnCurve (in GEOM_Object theRefCurve,
00265                       in double theParameter);
00266 
00267     
00276      GEOM_Object MakeTangentOnCurve (in GEOM_Object theRefCurve,
00277                          in double theParameter);
00278 
00286     GEOM_Object MakeVectorDXDYDZ (in double theDX,
00287                       in double theDY,
00288                       in double theDZ);
00289 
00296     GEOM_Object MakeVectorTwoPnt (in GEOM_Object thePnt1, in GEOM_Object thePnt2);
00297 
00305     GEOM_Object MakeLine (in GEOM_Object thePnt, in GEOM_Object theDir);
00306 
00313     GEOM_Object MakeLineTwoPnt (in GEOM_Object thePnt1, in GEOM_Object thePnt2);
00314 
00323     GEOM_Object MakePlaneThreePnt (in GEOM_Object thePnt1,
00324                        in GEOM_Object thePnt2,
00325                        in GEOM_Object thePnt3,
00326                        in double theTrimSize);
00327 
00336     GEOM_Object MakePlanePntVec (in GEOM_Object thePnt,
00337                      in GEOM_Object theVec,
00338                      in double theTrimSize);
00339 
00346     GEOM_Object MakePlaneFace (in GEOM_Object theFace,
00347                       in double theTrimSize);
00348 
00356     GEOM_Object MakeMarker (in double theOX , in double theOY , in double theOZ,
00357                    in double theXDX, in double theXDY, in double theXDZ,
00358                    in double theYDX, in double theYDY, in double theYDZ);
00359      
00369     GEOM_Object MakeTangentPlaneOnFace(in GEOM_Object theFace,
00370                            in double theParameterU,
00371                            in double theParameterV,
00372                            in double theTrimSize);
00373   };
00374 
00375   interface GEOM_ITransformOperations : GEOM_IOperations
00376   {
00384     GEOM_Object TranslateTwoPoints (in GEOM_Object theObject,
00385                         in GEOM_Object thePoint1,
00386                         in GEOM_Object thePoint2);
00387 
00396     GEOM_Object TranslateTwoPointsCopy (in GEOM_Object theObject,
00397                          in GEOM_Object thePoint1,
00398                                         in GEOM_Object thePoint2);
00399 
00406     GEOM_Object TranslateDXDYDZ (in GEOM_Object theObject,
00407                      in double theDX, in double theDY, in double theDZ);
00408 
00416     GEOM_Object TranslateDXDYDZCopy (in GEOM_Object theObject,
00417                          in double theDX, in double theDY, in double theDZ);
00418 
00419 
00426     GEOM_Object TranslateVector (in GEOM_Object theObject,
00427                      in GEOM_Object theVector);
00428 
00436     GEOM_Object TranslateVectorCopy (in GEOM_Object theObject,
00437                          in GEOM_Object theVector);
00438 
00448     GEOM_Object MultiTranslate1D (in GEOM_Object theObject,
00449                       in GEOM_Object theVector,
00450                       in double theStep,
00451                       in long theNbTimes);
00452 
00465     GEOM_Object MultiTranslate2D (in GEOM_Object theObject,
00466                       in GEOM_Object theVector1,
00467                       in double theStep1,
00468                       in long theNbTimes1,
00469                       in GEOM_Object theVector2,
00470                       in double theStep2,
00471                       in long theNbTimes2);
00472 
00480     GEOM_Object Rotate (in GEOM_Object theObject,
00481                in GEOM_Object theAxis,
00482                in double theAngle);
00483 
00492     GEOM_Object RotateCopy (in GEOM_Object theObject,
00493                    in GEOM_Object theAxis,
00494                    in double theAngle);
00495 
00505     GEOM_Object MultiRotate1D (in GEOM_Object theObject,
00506                       in GEOM_Object theAxis,
00507                       in long theNbTimes);
00508 
00524     GEOM_Object MultiRotate2D (in GEOM_Object theObject,
00525                       in GEOM_Object theAxis,
00526                       in double theAngle,
00527                       in long theNbTimes1,
00528                       in double theStep,
00529                       in long theNbTimes2);
00530 
00537     GEOM_Object MirrorPlane (in GEOM_Object theObject, in GEOM_Object thePlane);
00538 
00546     GEOM_Object MirrorPlaneCopy (in GEOM_Object theObject, in GEOM_Object thePlane);
00547 
00555     GEOM_Object MirrorAxis (in GEOM_Object theObject, in GEOM_Object theAxis);
00556 
00564     GEOM_Object MirrorAxisCopy (in GEOM_Object theObject, in GEOM_Object theAxis);
00565 
00572     GEOM_Object MirrorPoint (in GEOM_Object theObject, in GEOM_Object thePoint);
00573 
00580     GEOM_Object MirrorPointCopy (in GEOM_Object theObject, in GEOM_Object thePoint);
00581 
00588     GEOM_Object OffsetShape (in GEOM_Object theObject, in double theOffset);
00589 
00596     GEOM_Object OffsetShapeCopy (in GEOM_Object theObject, in double theOffset);
00597 
00605     GEOM_Object ScaleShape (in GEOM_Object theObject, in GEOM_Object thePoint,
00606                    in double theFactor);
00607 
00615     GEOM_Object ScaleShapeCopy (in GEOM_Object theObject, in GEOM_Object thePoint,
00616                     in double theFactor);
00617 
00621     GEOM_Object PositionShape (in GEOM_Object theObject,
00622                       in GEOM_Object theStartLCS,
00623                       in GEOM_Object theEndLCS);
00624 
00629     GEOM_Object PositionShapeCopy (in GEOM_Object theObject,
00630                        in GEOM_Object theStartLCS,
00631                        in GEOM_Object theEndLCS);
00632   };
00633 
00639   interface GEOM_I3DPrimOperations : GEOM_IOperations
00640   {
00650     GEOM_Object MakeBoxDXDYDZ (in double theDX, in double theDY, in double theDZ);
00651 
00659     GEOM_Object MakeBoxTwoPnt (in GEOM_Object thePnt1, in GEOM_Object thePnt2);
00660 
00669     GEOM_Object MakeCylinderRH (in double theR, in double theH);
00670 
00679     GEOM_Object MakeCylinderPntVecRH (in GEOM_Object thePnt,
00680                           in GEOM_Object theAxis,
00681                           in double      theR,
00682                           in double      theH);
00683 
00695     GEOM_Object MakeConeR1R2H (in double theR1, in double theR2, in double theH);
00696 
00708     GEOM_Object MakeConePntVecR1R2H (in GEOM_Object thePnt,
00709                          in GEOM_Object theAxis,
00710                          in double      theR1,
00711                          in double      theR2,
00712                          in double      theH);
00713 
00720     GEOM_Object MakeTorusRR (in double theRMajor,
00721                     in double theRMinor);
00722 
00731     GEOM_Object MakeTorusPntVecRR (in GEOM_Object thePnt,
00732                        in GEOM_Object theVec,
00733                        in double theRMajor,
00734                        in double theRMinor);
00735 
00741     GEOM_Object MakeSphereR (in double theR);
00742 
00749     GEOM_Object MakeSpherePntR (in GEOM_Object thePnt, in double theR);
00750 
00760     GEOM_Object MakePrismVecH (in GEOM_Object theBase,
00761                       in GEOM_Object theVec,
00762                       in double      theH);
00763 
00771     GEOM_Object MakePrismTwoPnt (in GEOM_Object theBase,
00772                      in GEOM_Object thePoint1,
00773                      in GEOM_Object thePoint2);
00774 
00782     GEOM_Object MakePipe (in GEOM_Object theBase, in GEOM_Object thePath);
00783 
00793     GEOM_Object MakeRevolutionAxisAngle (in GEOM_Object theBase,
00794                           in GEOM_Object theAxis,
00795                           in double theAngle);
00796 
00806     GEOM_Object MakeFilling (in GEOM_Object theShape,
00807                     in long theMinDeg, in long theMaxDeg,
00808                     in double theTol2D, in double theTol3D,
00809                     in long theNbIter);
00810 
00819     GEOM_Object MakeThruSections(in ListOfGO theSeqSections,
00820                      in boolean theModeSolid,
00821                      in double thePreci,
00822                                  in boolean theRuled);
00823 
00839     GEOM_Object MakePipeWithDifferentSections (in ListOfGO theSeqBases,
00840                                 in ListOfGO theLocations,
00841                                 in GEOM_Object thePath,
00842                                 in boolean theWithContact ,
00843                                 in boolean theWithCorrection );
00844     
00845   };
00846 
00852   interface GEOM_IShapesOperations : GEOM_IOperations
00853   {
00860     GEOM_Object MakeEdge (in GEOM_Object thePnt1, in GEOM_Object thePnt2);
00861 
00867     GEOM_Object MakeWire (in ListOfGO theEdgesAndWires);
00868 
00876     GEOM_Object MakeFace (in GEOM_Object theWire, in boolean isPlanarWanted);
00877 
00885     GEOM_Object MakeFaceWires (in ListOfGO theWires, in boolean isPlanarWanted);
00886 
00892     GEOM_Object MakeShell (in ListOfGO theFacesAndShells);
00893 
00899     GEOM_Object MakeSolidShell (in GEOM_Object theShell);
00900 
00906     GEOM_Object MakeSolidShells (in ListOfGO theShells);
00907 
00913     GEOM_Object MakeCompound (in ListOfGO theShapes);
00914 
00921     GEOM_Object MakeGlueFaces (in GEOM_Object theShape, in double theTolerance);
00922 
00931     ListOfGO MakeExplode (in GEOM_Object theShape,
00932                  in long        theShapeType,
00933                  in boolean     isSorted);
00934 
00945     ListOfLong SubShapeAllIDs (in GEOM_Object theShape,
00946                       in long        theShapeType,
00947                       in boolean     isSorted);
00948 
00954     GEOM_Object GetSubShape (in GEOM_Object theMainShape,
00955                     in long        theID);
00956 
00963     long GetSubShapeIndex (in GEOM_Object theMainShape, in GEOM_Object theSubShape);
00964 
00973     long GetTopologyIndex (in GEOM_Object theMainShape, in GEOM_Object theSubShape);
00974 
00984     string GetShapeTypeString (in GEOM_Object theShape);
00985 
00991     long NumberOfFaces (in GEOM_Object theShape);
00992 
00998     long NumberOfEdges (in GEOM_Object theShape);
00999 
01005     GEOM_Object ChangeOrientation (in GEOM_Object theShape);
01006 
01013     ListOfLong GetFreeFacesIDs (in GEOM_Object theShape);
01014 
01022     ListOfGO GetSharedShapes (in GEOM_Object theShape1,
01023                      in GEOM_Object theShape2,
01024                      in long        theShapeType);
01025 
01036     ListOfGO GetShapesOnPlane (in GEOM_Object theShape,
01037                       in long        theShapeType,
01038                       in GEOM_Object theAx1,
01039                       in shape_state theState);
01040 
01052     ListOfGO GetShapesOnCylinder (in GEOM_Object theShape,
01053                       in long        theShapeType,
01054                       in GEOM_Object theAxis,
01055                       in double      theRadius,
01056                       in shape_state theState);
01057 
01068     ListOfGO GetShapesOnSphere (in GEOM_Object theShape,
01069                     in long        theShapeType,
01070                     in GEOM_Object theCenter,
01071                     in double      theRadius,
01072                     in shape_state theState);
01073 
01086     ListOfGO GetShapesOnQuadrangle (in GEOM_Object theShape,
01087                                     in long        theShapeType,
01088                                     in GEOM_Object theTopLeftPoint,
01089                                     in GEOM_Object theTopRigthPoint,
01090                                     in GEOM_Object theBottomLeftPoint,
01091                                     in GEOM_Object theBottomRigthPoint,
01092                                     in shape_state theState);
01093 
01104     ListOfLong GetShapesOnPlaneIDs (in GEOM_Object theShape,
01105                         in long        theShapeType,
01106                         in GEOM_Object theAx1,
01107                         in shape_state theState);
01108 
01120     ListOfLong GetShapesOnCylinderIDs (in GEOM_Object theShape,
01121                            in long        theShapeType,
01122                            in GEOM_Object theAxis,
01123                            in double      theRadius,
01124                            in shape_state theState);
01125 
01136     ListOfLong GetShapesOnSphereIDs (in GEOM_Object theShape,
01137                          in long        theShapeType,
01138                          in GEOM_Object theCenter,
01139                          in double      theRadius,
01140                          in shape_state theState);
01141 
01154     ListOfLong GetShapesOnQuadrangleIDs (in GEOM_Object theShape,
01155                                          in long        theShapeType,
01156                                          in GEOM_Object theTopLeftPoint,
01157                                          in GEOM_Object theTopRigthPoint,
01158                                          in GEOM_Object theBottomLeftPoint,
01159                                          in GEOM_Object theBottomRigthPoint,
01160                                          in shape_state theState);
01161 
01169     GEOM_Object GetInPlace (in GEOM_Object theShapeWhere,
01170                    in GEOM_Object theShapeWhat);
01171   };
01172 
01178   interface GEOM_IBlocksOperations : GEOM_IOperations
01179   {
01190     GEOM_Object MakeQuad (in GEOM_Object theEdge1,
01191                  in GEOM_Object theEdge2,
01192                  in GEOM_Object theEdge3,
01193                  in GEOM_Object theEdge4);
01194 
01201     GEOM_Object MakeQuad2Edges (in GEOM_Object theEdge1,
01202                     in GEOM_Object theEdge2);
01203 
01210     GEOM_Object MakeQuad4Vertices (in GEOM_Object thePnt1,
01211                        in GEOM_Object thePnt2,
01212                        in GEOM_Object thePnt3,
01213                        in GEOM_Object thePnt4);
01214 
01221     GEOM_Object MakeHexa (in GEOM_Object theFace1,
01222                  in GEOM_Object theFace2,
01223                  in GEOM_Object theFace3,
01224                  in GEOM_Object theFace4,
01225                  in GEOM_Object theFace5,
01226                  in GEOM_Object theFace6);
01227 
01234     GEOM_Object MakeHexa2Faces (in GEOM_Object theFace1,
01235                     in GEOM_Object theFace2);
01236 
01249     GEOM_Object GetPoint (in GEOM_Object theShape,
01250                  in double      theX,
01251                  in double      theY,
01252                  in double      theZ,
01253                  in double      theEpsilon);
01254 
01261     GEOM_Object GetEdge (in GEOM_Object theShape,
01262                 in GEOM_Object thePoint1,
01263                 in GEOM_Object thePoint2);
01264 
01271     GEOM_Object GetEdgeNearPoint (in GEOM_Object theShape,
01272                       in GEOM_Object thePoint);
01273 
01280     GEOM_Object GetFaceByPoints (in GEOM_Object theShape,
01281                      in GEOM_Object thePoint1,
01282                      in GEOM_Object thePoint2,
01283                      in GEOM_Object thePoint3,
01284                      in GEOM_Object thePoint4);
01285 
01292     GEOM_Object GetFaceByEdges (in GEOM_Object theShape,
01293                     in GEOM_Object theEdge1,
01294                     in GEOM_Object theEdge2);
01295 
01302     GEOM_Object GetOppositeFace (in GEOM_Object theBlock,
01303                      in GEOM_Object theFace);
01304 
01311     GEOM_Object GetFaceNearPoint (in GEOM_Object theShape,
01312                       in GEOM_Object thePoint);
01313 
01320     GEOM_Object GetFaceByNormale (in GEOM_Object theBlock,
01321                       in GEOM_Object theVector);
01322 
01336     boolean IsCompoundOfBlocks (in GEOM_Object theCompound,
01337                     in long        theMinNbFaces,
01338                     in long        theMaxNbFaces,
01339                     out long       theNbBlocks);
01340 
01344     enum BCErrorType
01345     {
01346       /* Each element of the compound should be a Block */
01347       NOT_BLOCK,
01348 
01349       /* An element is a potential block, but has degenerated and/or seam edge(s). */
01350       EXTRA_EDGE,
01351 
01352       /* A connection between two Blocks should be an entire face or an entire edge */
01353       INVALID_CONNECTION,
01354 
01355       /* The compound should be connexe */
01356       NOT_CONNECTED,
01357 
01358       /* The glue between two quadrangle faces should be applied */
01359       NOT_GLUED
01360     };
01361 
01365     struct BCError
01366     {
01367       BCErrorType error;
01368       ListOfLong  incriminated;
01369     };
01370 
01374     typedef sequence<BCError> BCErrors;
01375 
01389     boolean CheckCompoundOfBlocks (in GEOM_Object theCompound,
01390                        out BCErrors   theErrors);
01391 
01399     string PrintBCErrors (in GEOM_Object theCompound,
01400                  in BCErrors    theErrors);
01401 
01408     GEOM_Object RemoveExtraEdges (in GEOM_Object theShape);
01409 
01417     GEOM_Object CheckAndImprove (in GEOM_Object theCompound);
01418 
01427     ListOfGO ExplodeCompoundOfBlocks (in GEOM_Object theCompound,
01428                           in long        theMinNbFaces,
01429                           in long        theMaxNbFaces);
01430 
01438     GEOM_Object GetBlockNearPoint (in GEOM_Object theCompound,
01439                        in GEOM_Object thePoint);
01440 
01447     GEOM_Object GetBlockByParts (in GEOM_Object theCompound,
01448                      in ListOfGO    theParts);
01449 
01456     ListOfGO GetBlocksByParts (in GEOM_Object theCompound,
01457                       in ListOfGO    theParts);
01458 
01474     GEOM_Object MakeMultiTransformation1D (in GEOM_Object theBlock,
01475                             in long        theDirFace1,
01476                             in long        theDirFace2,
01477                             in long        theNbTimes);
01478 
01487     GEOM_Object MakeMultiTransformation2D (in GEOM_Object theBlock,
01488                             in long        theDirFace1U,
01489                             in long        theDirFace2U,
01490                             in long        theNbTimesU,
01491                             in long        theDirFace1V,
01492                             in long        theDirFace2V,
01493                             in long        theNbTimesV);
01494 
01507     ListOfGO Propagate (in GEOM_Object theShape);
01508   };
01509 
01513   interface GEOM_IBooleanOperations : GEOM_IOperations
01514   {
01523     GEOM_Object MakeBoolean (in GEOM_Object theShape1,
01524                     in GEOM_Object theShape2,
01525                     in long theOperation);
01526 
01540     GEOM_Object MakePartition (in ListOfGO   theShapes,
01541                       in ListOfGO   theTools,
01542                       in ListOfGO   theKeepInside,
01543                       in ListOfGO   theRemoveInside,
01544                       in short      theLimit,
01545                       in boolean    theRemoveWebs,
01546                       in ListOfLong theMaterials);
01547 
01554     GEOM_Object MakeHalfPartition (in GEOM_Object theShape,
01555                        in GEOM_Object thePlane);
01556   };
01557 
01562   interface GEOM_ICurvesOperations : GEOM_IOperations
01563   {
01571     GEOM_Object MakeCirclePntVecR (in GEOM_Object thePnt,
01572                        in GEOM_Object theVec,
01573                        in double theR);
01579     GEOM_Object MakeCircleThreePnt (in GEOM_Object thePnt1,
01580                         in GEOM_Object thePnt2,
01581                         in GEOM_Object thePnt3);
01582 
01591     GEOM_Object MakeEllipse (in GEOM_Object thePnt,
01592                     in GEOM_Object theVec,
01593                     in double theRMajor,
01594                     in double theRMinor);
01595 
01603     GEOM_Object MakeArc (in GEOM_Object thePnt1,
01604                 in GEOM_Object thePnt2,
01605                 in GEOM_Object thePnt3);
01606 
01612     GEOM_Object MakePolyline (in ListOfGO thePoints);
01613 
01619     GEOM_Object MakeSplineBezier (in ListOfGO thePoints);
01620 
01626     GEOM_Object MakeSplineInterpolation (in ListOfGO thePoints);
01627 
01662     GEOM_Object MakeSketcher (in string theCommand, in ListOfDouble theWorkingPlane);
01663 
01673     GEOM_Object MakeSketcherOnPlane (in string theCommand, in GEOM_Object theWorkingPlane);
01674   };
01675 
01679   interface GEOM_ILocalOperations : GEOM_IOperations
01680   {
01687     GEOM_Object MakeFilletAll (in GEOM_Object theShape,
01688                       in double      theR);
01689 
01699     GEOM_Object MakeFilletEdges (in GEOM_Object theShape,
01700                      in double      theR,
01701                      in ListOfLong  theEdges);
01702 
01712     GEOM_Object MakeFilletFaces (in GEOM_Object theShape,
01713                      in double      theR,
01714                      in ListOfLong  theFaces);
01715 
01722     GEOM_Object MakeChamferAll (in GEOM_Object theShape,
01723                     in double      theD);
01724 
01736     GEOM_Object MakeChamferEdge (in GEOM_Object theShape,
01737                      in double theD1, in double theD2,
01738                      in long theFace1, in long theFace2);
01739 
01753     GEOM_Object MakeChamferFaces (in GEOM_Object theShape,
01754                       in double theD1, in double theD2,
01755                       in ListOfLong theFaces);
01756 
01767     GEOM_Object MakeArchimede (in GEOM_Object theShape,
01768                       in double theWeight,
01769                       in double theWaterDensity,
01770                       in double theMeshDeflection);
01771 
01776     long GetSubShapeIndex (in GEOM_Object theShape, in GEOM_Object theSubShape);
01777   };
01778 
01783   interface GEOM_IHealingOperations : GEOM_IOperations
01784   {
01795     GEOM_Object ProcessShape (in GEOM_Object theShapes,
01796                      in string_array theOperators,
01797                      in string_array theParameters,
01798                      in string_array theValues);
01799 
01809     void GetShapeProcessParameters (out string_array theOperators,
01810                         out string_array theParameters,
01811                         out string_array theValues);
01821     void GetOperatorParameters (in string theOperator,
01822                     out string_array theParameters,
01823                     out string_array theValues);
01824 
01832     GEOM_Object SuppressFaces (in GEOM_Object theObject, in short_array theFaces);
01833 
01843     GEOM_Object CloseContour (in GEOM_Object theObject, in short_array theWires,
01844                      in boolean isCommonVertex);
01845 
01853     GEOM_Object RemoveIntWires (in GEOM_Object theObject, in short_array theWires);
01854 
01862     GEOM_Object FillHoles (in GEOM_Object theObject, in short_array theWires);
01863 
01870     GEOM_Object Sew (in GEOM_Object theObject, in double theTolerance);
01871 
01883     GEOM_Object DivideEdge (in GEOM_Object theObject, in short theEdgeIndex,
01884                    in double theValue, in boolean isByParameter);
01885 
01894     boolean GetFreeBoundary (in GEOM_Object theObject,
01895                     out ListOfGO theClosedWires,
01896                     out ListOfGO theOpenWires);
01897 
01903     GEOM_Object ChangeOrientation (in GEOM_Object theObject);
01904     GEOM_Object ChangeOrientationCopy (in GEOM_Object theObject);
01905 
01906   };
01907 
01912   interface GEOM_IInsertOperations : GEOM_IOperations
01913   {
01917     GEOM_Object MakeCopy (in GEOM_Object theOriginal);
01918 
01926     void Export (in GEOM_Object theObject, in string theFileName, in string theFormatName);
01927 
01936     GEOM_Object Import (in string theFileName, in string theFormatName);
01937 
01944     void ImportTranslators (out string_array theFormats,
01945                    out string_array thePatterns);
01946 
01953     void ExportTranslators (out string_array theFormats,
01954                    out string_array thePatterns);
01955   };
01956 
01962   interface GEOM_IMeasureOperations : GEOM_IOperations
01963   {
01973     void GetBasicProperties (in GEOM_Object theShape,
01974                     out double theLength,
01975                     out double theSurfArea,
01976                     out double theVolume);
01977 
01983     GEOM_Object GetCentreOfMass (in GEOM_Object theShape);
01984 
01992     void GetInertia (in GEOM_Object theShape,
01993                out double I11, out double I12, out double I13,
01994                out double I21, out double I22, out double I23,
01995                out double I31, out double I32, out double I33,
01996                out double Ix , out double Iy , out double Iz);
01997 
02006     void GetBoundingBox (in GEOM_Object theShape,
02007                 out double Xmin, out double Xmax,
02008                 out double Ymin, out double Ymax,
02009                 out double Zmin, out double Zmax);
02010 
02019     void GetTolerance (in GEOM_Object theShape,
02020                  out double FaceMin, out double FaceMax,
02021                  out double EdgeMin, out double EdgeMax,
02022                  out double VertMin, out double VertMax);
02023 
02030     boolean CheckShape (in GEOM_Object theShape,
02031                out string     theDescription);
02032 
02039     boolean CheckShapeWithGeometry (in GEOM_Object theShape,
02040                         out string     theDescription);
02041 
02047     string WhatIs (in GEOM_Object theShape);
02048 
02056     double GetMinDistance (in GEOM_Object theShape1, in GEOM_Object theShape2,
02057                   out double X1, out double Y1, out double Z1,
02058                   out double X2, out double Y2, out double Z2);
02059 
02060 
02064     void PointCoordinates (in GEOM_Object theShape, out double X, out double Y, out double Z);
02065   };
02066 
02067 
02071   interface GEOM_IGroupOperations : GEOM_IOperations
02072   {
02079     GEOM_Object CreateGroup (in GEOM_Object theMainShape, in long theShapeType);
02080 
02087     void AddObject (in GEOM_Object theGroup, in long theSubShapeId);
02088 
02095     void RemoveObject (in GEOM_Object theGroup, in long theSubShapeId);
02096 
02102     void UnionList (in GEOM_Object theGroup, in ListOfGO theSubShapes);
02103 
02109     void DifferenceList (in GEOM_Object theGroup, in ListOfGO theSubShapes);
02110 
02116     void UnionIDs (in GEOM_Object theGroup, in ListOfLong theSubShapes);
02117 
02123     void DifferenceIDs (in GEOM_Object theGroup, in ListOfLong theSubShapes);
02124 
02129     long GetType (in GEOM_Object theGroup);
02130 
02136     GEOM_Object GetMainShape (in GEOM_Object theGroup);
02137 
02142     ListOfLong GetObjects (in GEOM_Object theGroup);
02143   };
02144 
02145 
02150   interface GEOM_Gen : Engines::Component,SALOMEDS::Driver
02151   {
02156     void Undo (in long theStudyID);
02157 
02158     void Redo (in long theStudyID);
02159 
02166     SALOMEDS::SObject AddInStudy (in SALOMEDS::Study theStudy,
02167                       in GEOM_Object theObject,
02168                       in string theName,
02169                       in GEOM_Object theFather);
02170 
02174     GEOM_IBasicOperations     GetIBasicOperations    (in long theStudyID) raises (SALOME::SALOME_Exception);
02175     GEOM_ITransformOperations GetITransformOperations(in long theStudyID) raises (SALOME::SALOME_Exception);
02176     GEOM_I3DPrimOperations    GetI3DPrimOperations   (in long theStudyID) raises (SALOME::SALOME_Exception);
02177     GEOM_IShapesOperations    GetIShapesOperations   (in long theStudyID) raises (SALOME::SALOME_Exception);
02178     GEOM_IBooleanOperations   GetIBooleanOperations  (in long theStudyID) raises (SALOME::SALOME_Exception);
02179     GEOM_ICurvesOperations    GetICurvesOperations   (in long theStudyID) raises (SALOME::SALOME_Exception);
02180     GEOM_ILocalOperations     GetILocalOperations    (in long theStudyID) raises (SALOME::SALOME_Exception);
02181     GEOM_IHealingOperations   GetIHealingOperations  (in long theStudyID) raises (SALOME::SALOME_Exception);
02182     GEOM_IInsertOperations    GetIInsertOperations   (in long theStudyID) raises (SALOME::SALOME_Exception);
02183     GEOM_IMeasureOperations   GetIMeasureOperations  (in long theStudyID) raises (SALOME::SALOME_Exception);
02184     GEOM_IBlocksOperations    GetIBlocksOperations   (in long theStudyID) raises (SALOME::SALOME_Exception);
02185     GEOM_IGroupOperations     GetIGroupOperations    (in long theStudyID) raises (SALOME::SALOME_Exception);
02186 
02195     void RemoveObject (in GEOM_Object theObject);
02196 
02203     GEOM_Object GetObject (in long theStudyID, in string theEntry);
02204 
02212     GEOM_Object AddSubShape (in GEOM_Object theMainShape, in ListOfLong theIndices);
02213 
02222     GEOM_Object GetIORFromString (in string theIOR);
02223 
02228     string GetStringFromIOR (in GEOM_Object theObject);
02229 
02234     string GetDumpName (in string theStudyEntry);
02235 
02240     string_array GetAllDumpNames();
02241   };
02242 };
02243 
02244 #endif