X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=idl%2FGEOM_Gen.idl;h=18efa2a0cda928bfd6b79356b9b826e09a79f58d;hb=08ccaeae90bafaa10d27c937559208dce69e275a;hp=2be25f9636f6f95e4e14f97acbae9a91a3775b33;hpb=46fd079b60d3e5c54bd6a4a77bfd99f75806eead;p=modules%2Fgeom.git diff --git a/idl/GEOM_Gen.idl b/idl/GEOM_Gen.idl index 2be25f963..18efa2a0c 100644 --- a/idl/GEOM_Gen.idl +++ b/idl/GEOM_Gen.idl @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -21,7 +21,7 @@ // // File : GEOM_Gen.idl // Author : Sergey RUIN -// + #ifndef __GEOM_GEN__ #define __GEOM_GEN__ @@ -40,6 +40,17 @@ module GEOM enum shape_type { COMPOUND, COMPSOLID, SOLID, SHELL, FACE, WIRE, EDGE, VERTEX, SHAPE }; + /*! + * Marker type + */ + enum marker_type { MT_NONE, MT_POINT, MT_PLUS, MT_STAR, MT_O, MT_X, MT_O_POINT, MT_O_PLUS, + MT_O_STAR, MT_O_X, MT_BALL, MT_RING1, MT_RING2, MT_RING3, MT_USER }; + + /*! + * Marker size + */ + enum marker_size { MS_NONE, MS_10, MS_15, MS_20, MS_25, MS_30, MS_35, + MS_40, MS_45, MS_50, MS_55, MS_60, MS_65, MS_70 }; /*! * State of shape relatively geometrical surface like plane, sphere or cylinder. @@ -100,7 +111,28 @@ module GEOM FSM_GetShapesOnShape, /*! Use GetInPlaceByHistory method (can work only after Partition) */ - FSM_GetInPlaceByHistory + FSM_GetInPlaceByHistory, + + /*! To be used only for multi-transformation result. + * Only this method can be used after multi-transformation. + */ + FSM_MultiTransformed + }; + + /*! + * Kind of method to perform filling operation + * Is used in functions GEOM_Gen.MakeFilling() + */ + enum filling_oper_method + { + /*! Default (standard behaviour) */ + FOM_Default, + + /*! Use edges orientation */ + FOM_UseOri, + + /*! Auto-correct edges orientation */ + FOM_AutoCorrect }; @@ -139,6 +171,33 @@ module GEOM */ shape_type GetShapeType(); + /*! + * Get the topology type of the object value. + * In contrast to the shape type, this function returns type of the most + * top-level sub-shape of the COMPOUND or COMPSOLID, if there is only one + * sub-shape there. + * \sa GetShapeType() + */ + shape_type GetTopologyType(); + + /*! + * Get a minimal type of the top-level shapes contained in the object. + * This function is useful for the compounds only; for simple shapes it + * exactly the same value as GetShapeType(). + * Note, that compounds are procesed recursively. + * \sa GetShapeType(), GetTopologyType(), GetMaxShapeType() + */ + shape_type GetMinShapeType(); + + /*! + * Get a maximal type of the top-level shapes contained in the object. + * This function is useful for the compounds only; for simple shapes it + * exactly the same value as GetShapeType(). + * Note, that compounds are procesed recursively. + * \sa GetShapeType(), GetTopologyType(), GetMinShapeType() + */ + shape_type GetMaxShapeType(); + /*! * Set name of the object. * \param theName is a name which will be associated with this object. @@ -172,6 +231,38 @@ module GEOM */ boolean GetAutoColor(); + /*! + * Set standard point marker for the object + * \param theType standard marker type + * \param theSize marker relative size + */ + void SetMarkerStd(in marker_type theType, in marker_size theSize ); + + /*! + * Set custom point marker for the object. The texture can be added + * by LoadTexture() or AddTexture() functions. + * \param theTextureId texture ID + */ + void SetMarkerTexture(in long theTextureId); + + /*! + * Get type of the point marker assigned to the object + * \return current marker type (MT_NONE if no marker is set) + */ + marker_type GetMarkerType(); + + /*! + * Get size of the point marker assigned to the object + * \return current marker relative size (MS_NONE if no marker is set) + */ + marker_size GetMarkerSize(); + + /*! + * Get texture idenifier of the point marker assigned to the object + * \return marker texture ID (0 if no marker set) + */ + long GetMarkerTexture(); + /*! * Set a Study entry where this object was published. */ @@ -240,7 +331,7 @@ module GEOM * used for object creation */ void SetParameters (in string theParameters); - + /*! * Return list of notebook variables used for object creation separated by ":" symbol */ @@ -316,7 +407,7 @@ module GEOM * \return New GEOM_Object, containing the created point. */ GEOM_Object MakePointWithReference (in GEOM_Object theReference, - in double theX, in double theY, in double theZ); + in double theX, in double theY, in double theZ); /*! * Create a point, corresponding to the given parameter on the given curve. @@ -325,7 +416,30 @@ module GEOM * \return New GEOM_Object, containing the created point. */ GEOM_Object MakePointOnCurve (in GEOM_Object theRefCurve, - in double theParameter); + in double theParameter); + + /*! + * Create a point, corresponding to the given length on the given curve. + * \param theRefCurve The referenced curve. + * \param theLength Length on the referenced curve. + * \return New GEOM_Object, containing the created point. + */ + GEOM_Object MakePointOnCurveByLength (in GEOM_Object theRefCurve, + in double theLength); + + + /*! + * Create a point on the given curve, projecting given point + * \param theRefCurve The referenced curve. + * \param theXParameter X co-ordinate of point to project on curve + * \param theYParameter Y co-ordinate of point to project on curve + * \param theZParameter Z co-ordinate of point to project on curve + * \return New GEOM_Object, containing the created point. + */ + GEOM_Object MakePointOnCurveByCoord (in GEOM_Object theRefCurve, + in double theXParameter, + in double theYarameter, + in double theZPameter); /*! * Create a point, corresponding to the given parameters on the @@ -336,8 +450,22 @@ module GEOM * \return New GEOM_Object, containing the created point. */ GEOM_Object MakePointOnSurface (in GEOM_Object theRefSurf, - in double theUParameter, - in double theVParameter); + in double theUParameter, + in double theVParameter); + + /*! + * Create a point on the given surface, projecting given point + * \param theRefSurf The referenced surface. + * \param theXParameter X co-ordinate of point to project on curve + * \param theYParameter Y co-ordinate of point to project on curve + * \param theZParameter Z co-ordinate of point to project on curve + * \return New GEOM_Object, containing the created point. + */ + GEOM_Object MakePointOnSurfaceByCoord (in GEOM_Object theRefSurf, + in double theXParameter, + in double theYarameter, + in double theZPameter); + /*! * Create a point, on two lines intersection. @@ -345,7 +473,7 @@ module GEOM * \return New GEOM_Object, containing the created point. */ GEOM_Object MakePointOnLinesIntersection (in GEOM_Object theRefLine1, - in GEOM_Object theRefLine2); + in GEOM_Object theRefLine2); /*! * Create a vector, corresponding to tangent to the given parameter on the given curve. @@ -356,7 +484,7 @@ module GEOM * \return New GEOM_Object, containing the created point. */ GEOM_Object MakeTangentOnCurve (in GEOM_Object theRefCurve, - in double theParameter); + in double theParameter); /*! * Create a vector with the given components. @@ -366,8 +494,8 @@ module GEOM * \return New GEOM_Object, containing the created vector. */ GEOM_Object MakeVectorDXDYDZ (in double theDX, - in double theDY, - in double theDZ); + in double theDY, + in double theDZ); /*! * Create a vector between two points. @@ -411,9 +539,9 @@ module GEOM * \return New GEOM_Object, containing the created plane. */ GEOM_Object MakePlaneThreePnt (in GEOM_Object thePnt1, - in GEOM_Object thePnt2, - in GEOM_Object thePnt3, - in double theTrimSize); + in GEOM_Object thePnt2, + in GEOM_Object thePnt3, + in double theTrimSize); /*! * Create a plane, passing through the given point @@ -424,8 +552,8 @@ module GEOM * \return New GEOM_Object, containing the created plane. */ GEOM_Object MakePlanePntVec (in GEOM_Object thePnt, - in GEOM_Object theVec, - in double theTrimSize); + in GEOM_Object theVec, + in double theTrimSize); /*! * Create a plane, similar to the existing one, but with another size of representing face. @@ -434,7 +562,29 @@ module GEOM * \return New GEOM_Object, containing the created plane. */ GEOM_Object MakePlaneFace (in GEOM_Object theFace, - in double theTrimSize); + in double theTrimSize); + + /*! + * Create a plane, by two vectors. + * \param theVec1 Vector1, the plane has to pass through first point of this vector. + * \param theVec Vector2, defining the plane normal direction. + * \param theTrimSize Half size of a side of quadrangle face, representing the plane. + * \return New GEOM_Object, containing the created plane. + */ + GEOM_Object MakePlane2Vec (in GEOM_Object theVec1, + in GEOM_Object theVec2, + in double theTrimSize); + + /*! + * Create a plane, defined by local coordinate system. + * \param theLCS Referenced LCS(Marker). + * \param theTrimSize Half size of a side of quadrangle face, representing the plane. + * \param theOrientation OXY, OYZ or OZX orientation = (1, 2 or 3). + * \return New GEOM_Object, containing the created plane. + */ + GEOM_Object MakePlaneLCS (in GEOM_Object theLCS, + in double theTrimSize, + in double theOrientation); /*! * Create a local coordinate system. @@ -444,8 +594,24 @@ module GEOM * \return New GEOM_Object, containing the created coordinate system. */ GEOM_Object MakeMarker (in double theOX , in double theOY , in double theOZ, - in double theXDX, in double theXDY, in double theXDZ, - in double theYDX, in double theYDY, in double theYDZ); + in double theXDX, in double theXDY, in double theXDZ, + in double theYDX, in double theYDY, in double theYDZ); + + /*! + * Create a local coordinate system from shape. + * \param theShape The initial shape to detect the coordinate system. + * \return New GEOM_Object, containing the created coordinate system. + */ + GEOM_Object MakeMarkerFromShape (in GEOM_Object theShape); + + /*! + * Create a local coordinate system from point and two vectors (DX, DY). + * \param theOrigin Point of coordinate system origin. + * \param theXVec Vector of X direction. + * \param theYVec Vector of Y direction. + * \return New GEOM_Object, containing the created coordinate system. + */ + GEOM_Object MakeMarkerPntTwoVec (in GEOM_Object theOrigin, in GEOM_Object theXVec, in GEOM_Object theYVec); /*! * Create a tangent plane to specified face in the point with specified parameters. @@ -457,9 +623,9 @@ module GEOM * \return New GEOM_Object, containing the face built on tangent plane. */ GEOM_Object MakeTangentPlaneOnFace(in GEOM_Object theFace, - in double theParameterU, - in double theParameterV, - in double theTrimSize); + in double theParameterU, + in double theParameterV, + in double theTrimSize); }; interface GEOM_ITransformOperations : GEOM_IOperations @@ -472,8 +638,8 @@ module GEOM * \return theObject. */ GEOM_Object TranslateTwoPoints (in GEOM_Object theObject, - in GEOM_Object thePoint1, - in GEOM_Object thePoint2); + in GEOM_Object thePoint1, + in GEOM_Object thePoint2); /*! * Translate the given object along the vector, specified @@ -484,7 +650,7 @@ module GEOM * \return New GEOM_Object, containing the translated object. */ GEOM_Object TranslateTwoPointsCopy (in GEOM_Object theObject, - in GEOM_Object thePoint1, + in GEOM_Object thePoint1, in GEOM_Object thePoint2); /*! @@ -494,7 +660,7 @@ module GEOM * \return theObject. */ GEOM_Object TranslateDXDYDZ (in GEOM_Object theObject, - in double theDX, in double theDY, in double theDZ); + in double theDX, in double theDY, in double theDZ); /*! * Translate the given object along the vector, specified @@ -504,7 +670,7 @@ module GEOM * \return New GEOM_Object, containing the translated object. */ GEOM_Object TranslateDXDYDZCopy (in GEOM_Object theObject, - in double theDX, in double theDY, in double theDZ); + in double theDX, in double theDY, in double theDZ); /*! @@ -514,7 +680,7 @@ module GEOM * \return theObject. */ GEOM_Object TranslateVector (in GEOM_Object theObject, - in GEOM_Object theVector); + in GEOM_Object theVector); /*! * Translate the given object along the given vector, @@ -524,7 +690,7 @@ module GEOM * \return New GEOM_Object, containing the translated object. */ GEOM_Object TranslateVectorCopy (in GEOM_Object theObject, - in GEOM_Object theVector); + in GEOM_Object theVector); /*! * Translate the given object along the given vector on given distance, @@ -536,9 +702,9 @@ module GEOM * \return New GEOM_Object, containing the translated object. */ GEOM_Object TranslateVectorDistance (in GEOM_Object theObject, - in GEOM_Object theVector, - in double theDistance, - in boolean theCopy); + in GEOM_Object theVector, + in double theDistance, + in boolean theCopy); /*! * Translate the given object along the given vector a given number times @@ -550,9 +716,9 @@ module GEOM * the shapes, obtained after each translation. */ GEOM_Object MultiTranslate1D (in GEOM_Object theObject, - in GEOM_Object theVector, - in double theStep, - in long theNbTimes); + in GEOM_Object theVector, + in double theStep, + in long theNbTimes); /*! * Conseqently apply two specified translations to theObject specified number of times. @@ -567,12 +733,12 @@ module GEOM * the shapes, obtained after each translation. */ GEOM_Object MultiTranslate2D (in GEOM_Object theObject, - in GEOM_Object theVector1, - in double theStep1, - in long theNbTimes1, - in GEOM_Object theVector2, - in double theStep2, - in long theNbTimes2); + in GEOM_Object theVector1, + in double theStep1, + in long theNbTimes1, + in GEOM_Object theVector2, + in double theStep2, + in long theNbTimes2); /*! * Rotate given object around vector perpendicular to plane containing three points. @@ -583,9 +749,9 @@ module GEOM * \return theObject. */ GEOM_Object RotateThreePoints (in GEOM_Object theObject, - in GEOM_Object theCentPoint, - in GEOM_Object thePoint1, - in GEOM_Object thePoint2); + in GEOM_Object theCentPoint, + in GEOM_Object thePoint1, + in GEOM_Object thePoint2); /*! @@ -598,9 +764,9 @@ module GEOM * \return New GEOM_Object, containing the rotated object. */ GEOM_Object RotateThreePointsCopy (in GEOM_Object theObject, - in GEOM_Object theCentPoint, - in GEOM_Object thePoint1, - in GEOM_Object thePoint2); + in GEOM_Object theCentPoint, + in GEOM_Object thePoint1, + in GEOM_Object thePoint2); /*! * Rotate the given object around the given axis on the given angle. @@ -610,8 +776,8 @@ module GEOM * \return theObject. */ GEOM_Object Rotate (in GEOM_Object theObject, - in GEOM_Object theAxis, - in double theAngle); + in GEOM_Object theAxis, + in double theAngle); /*! @@ -623,8 +789,8 @@ module GEOM * \return New GEOM_Object, containing the rotated object. */ GEOM_Object RotateCopy (in GEOM_Object theObject, - in GEOM_Object theAxis, - in double theAngle); + in GEOM_Object theAxis, + in double theAngle); /*! @@ -637,8 +803,8 @@ module GEOM * shapes, obtained after each rotation. */ GEOM_Object MultiRotate1D (in GEOM_Object theObject, - in GEOM_Object theAxis, - in long theNbTimes); + in GEOM_Object theAxis, + in long theNbTimes); /*! * Rotate the given object around the @@ -656,11 +822,11 @@ module GEOM * shapes, obtained after each transformation. */ GEOM_Object MultiRotate2D (in GEOM_Object theObject, - in GEOM_Object theAxis, - in double theAngle, - in long theNbTimes1, - in double theStep, - in long theNbTimes2); + in GEOM_Object theAxis, + in double theAngle, + in long theNbTimes1, + in double theStep, + in long theNbTimes2); /*! * Replace the given object by an object, @@ -737,7 +903,7 @@ module GEOM * \return theObject. */ GEOM_Object ScaleShape (in GEOM_Object theObject, in GEOM_Object thePoint, - in double theFactor); + in double theFactor); /*! * Scale the given object by the factor, creating its copy before the scaling. @@ -747,7 +913,7 @@ module GEOM * \return New GEOM_Object, containing the scaled shape. */ GEOM_Object ScaleShapeCopy (in GEOM_Object theObject, in GEOM_Object thePoint, - in double theFactor); + in double theFactor); /*! * Scale the given object by different factors along coordinate axes. @@ -788,8 +954,8 @@ module GEOM * \return theObject. */ GEOM_Object PositionShape (in GEOM_Object theObject, - in GEOM_Object theStartLCS, - in GEOM_Object theEndLCS); + in GEOM_Object theStartLCS, + in GEOM_Object theEndLCS); /*! * Modify the Location of the given object by LCS, @@ -804,24 +970,34 @@ module GEOM * \return New GEOM_Object, containing the displaced shape. */ GEOM_Object PositionShapeCopy (in GEOM_Object theObject, - in GEOM_Object theStartLCS, - in GEOM_Object theEndLCS); + in GEOM_Object theStartLCS, + in GEOM_Object theEndLCS); /*! * Modify the Location of the given object by Path, * \param theObject The object to be displaced. * \param thePath Wire or Edge along that the object will be translated. - * \param theDistance progress of Path (0 = actual location, 1 = end of path location). - * \param theCopy is a true or false parameter. true is to create a copy, false to move the object. - * \param theCopy is a true or false parameter. true is to reverse direction, false is to move normal direction. + * \param theDistance progress of Path (0 = actual location, 1 = end of path location). + * \param theCopy is a true or false parameter. true is to create a copy, false to move the object. + * \param theCopy is a true or false parameter. true is to reverse direction, false is to move normal direction. * \return New GEOM_Object, containing the displaced shape. */ - GEOM_Object PositionAlongPath (in GEOM_Object theObject, - in GEOM_Object thePath, - in double theDistance, - in boolean theCopy, - in boolean theReverse); + in GEOM_Object thePath, + in double theDistance, + in boolean theCopy, + in boolean theReverse); + + /*! + * Transform the shape in the same way what was used for the sample shape creation. + * \param theObject The object to be transformed. + * \param theSample The object containing information about required transformation. + * \note Implementation of this method is limited by multi-transformations now. + * \note Internal method. + * \return New GEOM_Object, containing the transformed shape. + */ + GEOM_Object TransformLikeOtherCopy (in GEOM_Object theObject, + in GEOM_Object theSample); /*! * Recompute the shape from its arguments. @@ -873,7 +1049,7 @@ module GEOM * vertical (H) and horisontal (W). * \param theVec defines plane. * \param theH vertical size (height). - * \param theW horisontal size (width). + * \param theW horisontal size (width). * \return New GEOM_Object, containing the created face. */ GEOM_Object MakeFaceObjHW (in GEOM_Object theObj, in double theH, in double theW); @@ -885,17 +1061,17 @@ module GEOM * \return New GEOM_Object, containing the created disk. */ GEOM_Object MakeDiskPntVecR (in GEOM_Object thePnt, - in GEOM_Object theVec, - in double theR); + in GEOM_Object theVec, + in double theR); /*! * Create a disk (circular face), passing through three given points * \param thePnt1, thePnt2, thePnt3 Points, defining the disk. * \return New GEOM_Object, containing the created disk. */ GEOM_Object MakeDiskThreePnt (in GEOM_Object thePnt1, - in GEOM_Object thePnt2, - in GEOM_Object thePnt3); - + in GEOM_Object thePnt2, + in GEOM_Object thePnt3); + /*! * Create a disk specified dimensions along OX-OY coordinate axes, * Center of the disk at point (0, 0, 0). @@ -904,7 +1080,7 @@ module GEOM * \return New GEOM_Object, containing the created disk. */ GEOM_Object MakeDiskR (in double theR, in short theOrientation); - + /*! * Create a cylinder with given radius and height at * the origin of coordinate system. Axis of the cylinder @@ -924,9 +1100,9 @@ module GEOM * \return New GEOM_Object, containing the created cylinder. */ GEOM_Object MakeCylinderPntVecRH (in GEOM_Object thePnt, - in GEOM_Object theAxis, - in double theR, - in double theH); + in GEOM_Object theAxis, + in double theR, + in double theH); /*! * Create a cone with given height and radiuses at @@ -953,10 +1129,10 @@ module GEOM * \return New GEOM_Object, containing the created cone. */ GEOM_Object MakeConePntVecR1R2H (in GEOM_Object thePnt, - in GEOM_Object theAxis, - in double theR1, - in double theR2, - in double theH); + in GEOM_Object theAxis, + in double theR1, + in double theR2, + in double theH); /*! * Create a torus with given radiuses at the origin of coordinate system. @@ -965,7 +1141,7 @@ module GEOM * \return New GEOM_Object, containing the created torus. */ GEOM_Object MakeTorusRR (in double theRMajor, - in double theRMinor); + in double theRMinor); /*! * Create a torus with given center, normal vector and radiuses. @@ -976,9 +1152,9 @@ module GEOM * \return New GEOM_Object, containing the created torus. */ GEOM_Object MakeTorusPntVecRR (in GEOM_Object thePnt, - in GEOM_Object theVec, - in double theRMajor, - in double theRMinor); + in GEOM_Object theVec, + in double theRMajor, + in double theRMinor); /*! * Create a sphere with given radius at the origin of coordinate system. @@ -1005,12 +1181,12 @@ module GEOM * \return New GEOM_Object, containing the created prism. */ GEOM_Object MakePrismVecH (in GEOM_Object theBase, - in GEOM_Object theVec, - in double theH); + in GEOM_Object theVec, + in double theH); /* The Same Prism but in 2 directions (forward&backward) */ GEOM_Object MakePrismVecH2Ways (in GEOM_Object theBase, - in GEOM_Object theVec, - in double theH); + in GEOM_Object theVec, + in double theH); /*! * Create a shape by extrusion of the base shape along a vector, defined by two points. @@ -1020,13 +1196,13 @@ module GEOM * \return New GEOM_Object, containing the created prism. */ GEOM_Object MakePrismTwoPnt (in GEOM_Object theBase, - in GEOM_Object thePoint1, - in GEOM_Object thePoint2); + in GEOM_Object thePoint1, + in GEOM_Object thePoint2); /* The same prism but in two directions forward&backward */ GEOM_Object MakePrismTwoPnt2Ways (in GEOM_Object theBase, - in GEOM_Object thePoint1, - in GEOM_Object thePoint2); - + in GEOM_Object thePoint1, + in GEOM_Object thePoint2); + /*! * Create a shape by extrusion of the base shape along a vector, defined by DX DY DZ. * \param theBase Base shape to be extruded. @@ -1034,7 +1210,7 @@ module GEOM * \return New GEOM_Object, containing the created prism. */ GEOM_Object MakePrismDXDYDZ (in GEOM_Object theBase, - in double theDX, in double theDY, in double theDZ); + in double theDX, in double theDY, in double theDZ); /* The same prism but in two directions forward&backward */ GEOM_Object MakePrismDXDYDZ2Ways (in GEOM_Object theBase, in double theDX, in double theDY, in double theDZ); @@ -1058,12 +1234,12 @@ module GEOM * \return New GEOM_Object, containing the created revolution. */ GEOM_Object MakeRevolutionAxisAngle (in GEOM_Object theBase, - in GEOM_Object theAxis, - in double theAngle); + in GEOM_Object theAxis, + in double theAngle); /* The Same Revolution but in both ways forward&backward */ GEOM_Object MakeRevolutionAxisAngle2Ways (in GEOM_Object theBase, - in GEOM_Object theAxis, - in double theAngle); + in GEOM_Object theAxis, + in double theAngle); /*! * Create a filling from the given compound of contours. @@ -1072,12 +1248,15 @@ module GEOM * \param theTol2D a 2d tolerance to be reached * \param theTol3D a 3d tolerance to be reached * \param theNbIter a number of iteration of approximation algorithm + * \param theMethod Kind of method to perform filling operation. * \return New GEOM_Object, containing the created filling surface. */ GEOM_Object MakeFilling (in GEOM_Object theShape, - in long theMinDeg, in long theMaxDeg, - in double theTol2D, in double theTol3D, - in long theNbIter, in boolean theApprox); + in long theMinDeg, in long theMaxDeg, + in double theTol2D, in double theTol3D, + in long theNbIter, + in filling_oper_method theMethod, + in boolean theApprox); /*! * Create a shell or solid passing through set of sections.Sections should be wires,edges or vertices. @@ -1088,14 +1267,14 @@ module GEOM * \return New GEOM_Object, containing the created shell or solid. */ GEOM_Object MakeThruSections(in ListOfGO theSeqSections, - in boolean theModeSolid, - in double thePreci, + in boolean theModeSolid, + in double thePreci, in boolean theRuled); /*! * Create a shape by extrusion of the profile shape along * the path shape. The path shape can be a wire or an edge. - * the several profiles can be specified in the several locations of path. + * the several profiles can be specified in the several locations of path. * \param theSeqBases - list of Bases shape to be extruded. * \param theLocations - list of locations on the path corresponding * specified list of the Bases shapes. Number of locations @@ -1104,19 +1283,19 @@ module GEOM * \param theWithContact - the mode defining that the section is translated to be in * contact with the spine. * \param - WithCorrection - defining that the section is rotated to be - * orthogonal to the spine tangent in the correspondent point + * orthogonal to the spine tangent in the correspondent point * \return New GEOM_Object, containing the created pipe. */ GEOM_Object MakePipeWithDifferentSections (in ListOfGO theSeqBases, - in ListOfGO theLocations, - in GEOM_Object thePath, - in boolean theWithContact , - in boolean theWithCorrection ); + in ListOfGO theLocations, + in GEOM_Object thePath, + in boolean theWithContact , + in boolean theWithCorrection ); /*! * Create a shape by extrusion of the profile shape along * the path shape. The path shape can be a shell or a face. - * the several profiles can be specified in the several locations of path. + * the several profiles can be specified in the several locations of path. * \param theSeqBases - list of Bases shape to be extruded. * \param theSeqSubBases - list of corresponding subshapes of section shapes. * \param theLocations - list of locations on the path corresponding @@ -1126,15 +1305,15 @@ module GEOM * \param theWithContact - the mode defining that the section is translated to be in * contact with the spine. * \param - WithCorrection - defining that the section is rotated to be - * orthogonal to the spine tangent in the correspondent point + * orthogonal to the spine tangent in the correspondent point * \return New GEOM_Object, containing the created pipe. */ GEOM_Object MakePipeWithShellSections (in ListOfGO theSeqBases, - in ListOfGO theSeqSubBases, - in ListOfGO theLocations, - in GEOM_Object thePath, - in boolean theWithContact , - in boolean theWithCorrection ); + in ListOfGO theSeqSubBases, + in ListOfGO theLocations, + in GEOM_Object thePath, + in boolean theWithContact , + in boolean theWithCorrection ); /*! * Create solids between given sections @@ -1143,11 +1322,11 @@ module GEOM * \return New GEOM_Object, containing the created solids. */ GEOM_Object MakePipeShellsWithoutPath (in ListOfGO theSeqBases, - in ListOfGO theLocations); + in ListOfGO theLocations); /*! * Create a shape by extrusion of the base shape along - * the path shape with constant bi-normal direction along the given vector. + * the path shape with constant bi-normal direction along the given vector. * The path shape can be a wire or an edge. * \param theBase Base shape to be extruded. * \param thePath Path shape to extrude the base shape along it. @@ -1156,9 +1335,9 @@ module GEOM * along the sweep surface. * \return New GEOM_Object, containing the created pipe. */ - GEOM_Object MakePipeBiNormalAlongVector (in GEOM_Object theBase, - in GEOM_Object thePath, - in GEOM_Object theVec); + GEOM_Object MakePipeBiNormalAlongVector (in GEOM_Object theBase, + in GEOM_Object thePath, + in GEOM_Object theVec); }; @@ -1177,12 +1356,26 @@ module GEOM */ GEOM_Object MakeEdge (in GEOM_Object thePnt1, in GEOM_Object thePnt2); + /*! + * Create an edge from specified wire. + * \param theWire source Wire. + * \param theLinearTolerance linear tolerance value + * \param theAngularTolerance angular tolerance value + * \return New GEOM_Object, containing the created edge. + */ + GEOM_Object MakeEdgeWire (in GEOM_Object theWire, + in double theLinearTolerance, + in double theAngularTolerance); + /*! * Create a wire from the set of edges and wires. * \param theEdgesAndWires List of edge and/or wires. + * \param theTolerance Maximum distance between vertices, that will be merged. + * Values less than 1e-07 are equivalent to 1e-07 (Precision::Confusion()). * \return New GEOM_Object, containing the created wire. */ - GEOM_Object MakeWire (in ListOfGO theEdgesAndWires); + GEOM_Object MakeWire (in ListOfGO theEdgesAndWires, + in double theTolerance); /*! * Create a face on the given wire. @@ -1257,7 +1450,25 @@ module GEOM * \return New GEOM_Object, containing a copy of theShape without some faces. */ GEOM_Object MakeGlueFacesByList (in GEOM_Object theShape, in double theTolerance, - in ListOfGO theFaces, in boolean doKeepNonSolids); + in ListOfGO theFaces, in boolean doKeepNonSolids); + + /*! + * Get all sub-shapes and groups of \a theShape, + * that were created already by any other methods. + * \param theShape Any shape. + * \param theGroupsOnly If this parameter is TRUE, only groups will be + * returned, else all found sub-shapes and groups. + * \return List of existing sub-objects of \a theShape. + */ + ListOfGO GetExistingSubObjects (in GEOM_Object theShape, + in boolean theGroupsOnly); + + /*! + * Deprecated method. Use MakeAllSubShapes() instead. + */ + ListOfGO MakeExplode (in GEOM_Object theShape, + in long theShapeType, + in boolean isSorted); /*! * Explode a shape on subshapes of a given type. @@ -1267,23 +1478,30 @@ module GEOM * sorted by coordinates of their gravity centers. * \return List of sub-shapes of type theShapeType, contained in theShape. */ - ListOfGO MakeExplode (in GEOM_Object theShape, - in long theShapeType, - in boolean isSorted); + ListOfGO MakeAllSubShapes (in GEOM_Object theShape, + in long theShapeType, + in boolean isSorted); + + /*! + * Deprecated method. Use GetAllSubShapesIDs() instead. + */ + ListOfLong SubShapeAllIDs (in GEOM_Object theShape, + in long theShapeType, + in boolean isSorted); /*! * Explode a shape on subshapes of a given type. - * Does the same, as the above method, but returns IDs of sub-shapes, - * not GEOM_Objects. It works faster. + * Does the same, as MakeAllSubShapes, but returns IDs of + * sub-shapes, not GEOM_Objects. It works faster. * \param theShape Shape to be exploded. * \param theShapeType Type of sub-shapes to be retrieved. * \param isSorted If this parameter is TRUE, sub-shapes will be * sorted by coordinates of their gravity centers. * \return List of IDs of sub-shapes of type theShapeType, contained in theShape. */ - ListOfLong SubShapeAllIDs (in GEOM_Object theShape, - in long theShapeType, - in boolean isSorted); + ListOfLong GetAllSubShapesIDs (in GEOM_Object theShape, + in long theShapeType, + in boolean isSorted); /*! * Get a sub shape defined by its unique ID inside \a theMainShape @@ -1291,7 +1509,7 @@ module GEOM * Don't try to apply modification operations on them. */ GEOM_Object GetSubShape (in GEOM_Object theMainShape, - in long theID); + in long theID); /*! * Get global index of \a theSubShape in \a theMainShape. @@ -1336,6 +1554,15 @@ module GEOM */ long NumberOfEdges (in GEOM_Object theShape); + /*! + * Count number of subshapes of type \a theShapeType in the given shape. + * \param theShape Shape to count subshapes in. + * \param theShapeType The type of subshapes to count. + * \return Number of subshapes of type \a theShapeType in \a theShape. + */ + long NumberOfSubShapes (in GEOM_Object theShape, + in long theShapeType); + /*! * Reverses an orientation the given shape. * \param theShape Shape to be reversed. @@ -1359,8 +1586,17 @@ module GEOM * \return List of sub-shapes of theShape1, shared with theShape2. */ ListOfGO GetSharedShapes (in GEOM_Object theShape1, - in GEOM_Object theShape2, - in long theShapeType); + in GEOM_Object theShape2, + in long theShapeType); + + /*! + * Get all sub-shapes, shared by all shapes in the list \a theShapes. + * \param theShapes Shapes to find common sub-shapes of. + * \param theShapeType Type of sub-shapes to be retrieved. + * \return List of objects, that are sub-shapes of all given shapes. + */ + ListOfGO GetSharedShapesMulti (in ListOfGO theShapes, + in long theShapeType); /*! * Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively @@ -1373,9 +1609,9 @@ module GEOM * \return List of all found sub-shapes. */ ListOfGO GetShapesOnPlane (in GEOM_Object theShape, - in long theShapeType, - in GEOM_Object theAx1, - in shape_state theState); + in long theShapeType, + in GEOM_Object theAx1, + in shape_state theState); /*! * Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively * the specified plane by the certain way, defined through \a theState parameter. @@ -1388,10 +1624,10 @@ module GEOM * \return List of all found sub-shapes. */ ListOfGO GetShapesOnPlaneWithLocation (in GEOM_Object theShape, - in long theShapeType, - in GEOM_Object theAx1, - in GEOM_Object thePnt, - in shape_state theState); + in long theShapeType, + in GEOM_Object theAx1, + in GEOM_Object thePnt, + in shape_state theState); @@ -1407,10 +1643,29 @@ module GEOM * \return List of all found sub-shapes. */ ListOfGO GetShapesOnCylinder (in GEOM_Object theShape, - in long theShapeType, - in GEOM_Object theAxis, - in double theRadius, - in shape_state theState); + in long theShapeType, + in GEOM_Object theAxis, + in double theRadius, + in shape_state theState); + + /*! + * Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively + * the specified cylinder by the certain way, defined through \a theState parameter. + * \param theShape Shape to find sub-shapes of. + * \param theShapeType Type of sub-shapes to be retrieved. + * \param theAxis Vector (or line, or linear edge), specifying + * axis of the cylinder to find shapes on. + * \param thePnt Point specifying location of the bottom of the cylinder. + * \param theRadius Radius of the cylinder to find shapes on. + * \param theState The state of the subshapes to find. + * \return List of all found sub-shapes. + */ + ListOfGO GetShapesOnCylinderWithLocation (in GEOM_Object theShape, + in long theShapeType, + in GEOM_Object theAxis, + in GEOM_Object thePnt, + in double theRadius, + in shape_state theState); /*! * Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively @@ -1423,10 +1678,10 @@ module GEOM * \return List of all found sub-shapes. */ ListOfGO GetShapesOnSphere (in GEOM_Object theShape, - in long theShapeType, - in GEOM_Object theCenter, - in double theRadius, - in shape_state theState); + in long theShapeType, + in GEOM_Object theCenter, + in double theRadius, + in shape_state theState); /*! * Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively @@ -1459,9 +1714,9 @@ module GEOM * \return List of IDs of all found sub-shapes. */ ListOfLong GetShapesOnPlaneIDs (in GEOM_Object theShape, - in long theShapeType, - in GEOM_Object theAx1, - in shape_state theState); + in long theShapeType, + in GEOM_Object theAx1, + in shape_state theState); /*! * Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively @@ -1475,10 +1730,10 @@ module GEOM * \return List of IDs of all found sub-shapes. */ ListOfLong GetShapesOnPlaneWithLocationIDs (in GEOM_Object theShape, - in long theShapeType, - in GEOM_Object theAx1, - in GEOM_Object thePnt, - in shape_state theState); + in long theShapeType, + in GEOM_Object theAx1, + in GEOM_Object thePnt, + in shape_state theState); /*! * Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively @@ -1492,10 +1747,29 @@ module GEOM * \return List of IDs of all found sub-shapes. */ ListOfLong GetShapesOnCylinderIDs (in GEOM_Object theShape, - in long theShapeType, - in GEOM_Object theAxis, - in double theRadius, - in shape_state theState); + in long theShapeType, + in GEOM_Object theAxis, + in double theRadius, + in shape_state theState); + + /*! + * Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively + * the specified cylinder by the certain way, defined through \a theState parameter. + * \param theShape Shape to find sub-shapes of. + * \param theShapeType Type of sub-shapes to be retrieved. + * \param theAxis Vector (or line, or linear edge), specifying + * axis of the cylinder to find shapes on. + * \param thePnt Point specifying location of the bottom of the cylinder. + * \param theRadius Radius of the cylinder to find shapes on. + * \param theState The state of the subshapes to find. + * \return List of IDs all found sub-shapes. + */ + ListOfLong GetShapesOnCylinderWithLocationIDs (in GEOM_Object theShape, + in long theShapeType, + in GEOM_Object theAxis, + in GEOM_Object thePnt, + in double theRadius, + in shape_state theState); /*! * Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively @@ -1508,10 +1782,10 @@ module GEOM * \return List of IDs of all found sub-shapes. */ ListOfLong GetShapesOnSphereIDs (in GEOM_Object theShape, - in long theShapeType, - in GEOM_Object theCenter, - in double theRadius, - in shape_state theState); + in long theShapeType, + in GEOM_Object theCenter, + in double theRadius, + in shape_state theState); /*! * Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively @@ -1542,9 +1816,9 @@ module GEOM * \return List of IDs of all found sub-shapes. */ ListOfLong GetShapesOnBoxIDs (in GEOM_Object theBox, - in GEOM_Object theShape, - in long theShapeType, - in shape_state theState); + in GEOM_Object theShape, + in long theShapeType, + in shape_state theState); /*! * \brief Find subshapes complying with given status @@ -1555,48 +1829,48 @@ module GEOM * \return List of all found sub-shapes. */ ListOfGO GetShapesOnBox (in GEOM_Object theBox, - in GEOM_Object theShape, - in long theShapeType, - in shape_state theState); + in GEOM_Object theShape, + in long theShapeType, + in shape_state theState); /*! * \brief Find subshapes complying with given status - * \param theCheckShape - the shape to check state of subshapes against + * \param theCheckShape - the shape to check state of subshapes against. It must be a solid. * \param theShape - the shape to explore * \param theShapeType - type of subshape of theShape * \param theState - required state * \return List of IDs of all found sub-shapes. */ ListOfLong GetShapesOnShapeIDs (in GEOM_Object theCheckShape, - in GEOM_Object theShape, - in short theShapeType, - in shape_state theState); + in GEOM_Object theShape, + in short theShapeType, + in shape_state theState); /*! * \brief Find subshapes complying with given status - * \param theCheckShape - the shape to check state of subshapes against + * \param theCheckShape - the shape to check state of subshapes against. It must be a solid. * \param theShape - the shape to explore * \param theShapeType - type of subshape of theShape * \param theState - required state * \return List of all found sub-shapes. */ ListOfGO GetShapesOnShape (in GEOM_Object theCheckShape, - in GEOM_Object theShape, - in short theShapeType, - in shape_state theState); + in GEOM_Object theShape, + in short theShapeType, + in shape_state theState); /*! * \brief Find subshapes complying with given status - * \param theCheckShape - the shape to check state of subshapes against + * \param theCheckShape - the shape to check state of subshapes against. It must be a solid. * \param theShape - the shape to explore * \param theShapeType - type of subshape of theShape * \param theState - required state * \return compound includes all found sub-shapes. */ GEOM_Object GetShapesOnShapeAsCompound (in GEOM_Object theCheckShape, - in GEOM_Object theShape, - in short theShapeType, - in shape_state theState); + in GEOM_Object theShape, + in short theShapeType, + in shape_state theState); /*! * Get sub-shape(s) of \a theShapeWhere, which are @@ -1606,7 +1880,7 @@ module GEOM * \return Group of all found sub-shapes or a single found sub-shape. */ GEOM_Object GetInPlace (in GEOM_Object theShapeWhere, - in GEOM_Object theShapeWhat); + in GEOM_Object theShapeWhat); /*! * Get sub-shape(s) of \a theShapeWhere, which are @@ -1623,7 +1897,7 @@ module GEOM * \return Group of all found sub-shapes or a single found sub-shape. */ GEOM_Object GetInPlaceByHistory (in GEOM_Object theShapeWhere, - in GEOM_Object theShapeWhat); + in GEOM_Object theShapeWhat); /*! * Get sub-shape of theShapeWhere, which are @@ -1633,7 +1907,7 @@ module GEOM * \return found sub-shape. */ GEOM_Object GetSame (in GEOM_Object theShapeWhere, - in GEOM_Object theShapeWhat); + in GEOM_Object theShapeWhat); }; /*! @@ -1654,9 +1928,9 @@ module GEOM * \return New GEOM_Object, containing the created face. */ GEOM_Object MakeQuad (in GEOM_Object theEdge1, - in GEOM_Object theEdge2, - in GEOM_Object theEdge3, - in GEOM_Object theEdge4); + in GEOM_Object theEdge2, + in GEOM_Object theEdge3, + in GEOM_Object theEdge4); /*! * Create a quadrangle face on two edges. @@ -1665,7 +1939,7 @@ module GEOM * \return New GEOM_Object, containing the created face. */ GEOM_Object MakeQuad2Edges (in GEOM_Object theEdge1, - in GEOM_Object theEdge2); + in GEOM_Object theEdge2); /*! * Create a quadrangle face with specified corners. @@ -1674,9 +1948,9 @@ module GEOM * \return New GEOM_Object, containing the created face. */ GEOM_Object MakeQuad4Vertices (in GEOM_Object thePnt1, - in GEOM_Object thePnt2, - in GEOM_Object thePnt3, - in GEOM_Object thePnt4); + in GEOM_Object thePnt2, + in GEOM_Object thePnt3, + in GEOM_Object thePnt4); /*! * Create a hexahedral solid, bounded by the six given faces. Order of @@ -1685,11 +1959,11 @@ module GEOM * \return New GEOM_Object, containing the created solid. */ GEOM_Object MakeHexa (in GEOM_Object theFace1, - in GEOM_Object theFace2, - in GEOM_Object theFace3, - in GEOM_Object theFace4, - in GEOM_Object theFace5, - in GEOM_Object theFace6); + in GEOM_Object theFace2, + in GEOM_Object theFace3, + in GEOM_Object theFace4, + in GEOM_Object theFace5, + in GEOM_Object theFace6); /*! * Create a hexahedral solid between two given faces. @@ -1698,7 +1972,7 @@ module GEOM * \return New GEOM_Object, containing the created solid. */ GEOM_Object MakeHexa2Faces (in GEOM_Object theFace1, - in GEOM_Object theFace2); + in GEOM_Object theFace2); /*! * Extract elements of blocks and blocks compounds @@ -1713,10 +1987,19 @@ module GEOM * \return New GEOM_Object, containing the found vertex. */ GEOM_Object GetPoint (in GEOM_Object theShape, - in double theX, - in double theY, - in double theZ, - in double theEpsilon); + in double theX, + in double theY, + in double theZ, + in double theEpsilon); + + /*! + * Find a vertex of the given shape, which has minimal distance to the given point. + * \param theShape Any shape. + * \param thePoint Point, close to the desired vertex. + * \return New GEOM_Object, containing the found vertex. + */ + GEOM_Object GetVertexNearPoint (in GEOM_Object theShape, + in GEOM_Object thePoint); /*! * Get an edge, found in the given shape by two given vertices. @@ -1725,8 +2008,8 @@ module GEOM * \return New GEOM_Object, containing the found edge. */ GEOM_Object GetEdge (in GEOM_Object theShape, - in GEOM_Object thePoint1, - in GEOM_Object thePoint2); + in GEOM_Object thePoint1, + in GEOM_Object thePoint2); /*! * Find an edge of the given shape, which has minimal distance to the given point. @@ -1735,7 +2018,7 @@ module GEOM * \return New GEOM_Object, containing the found edge. */ GEOM_Object GetEdgeNearPoint (in GEOM_Object theShape, - in GEOM_Object thePoint); + in GEOM_Object thePoint); /*! * Returns a face, found in the given shape by four given corner vertices. @@ -1744,10 +2027,10 @@ module GEOM * \return New GEOM_Object, containing the found face. */ GEOM_Object GetFaceByPoints (in GEOM_Object theShape, - in GEOM_Object thePoint1, - in GEOM_Object thePoint2, - in GEOM_Object thePoint3, - in GEOM_Object thePoint4); + in GEOM_Object thePoint1, + in GEOM_Object thePoint2, + in GEOM_Object thePoint3, + in GEOM_Object thePoint4); /*! * Get a face of block, found in the given shape by two given edges. @@ -1756,8 +2039,8 @@ module GEOM * \return New GEOM_Object, containing the found face. */ GEOM_Object GetFaceByEdges (in GEOM_Object theShape, - in GEOM_Object theEdge1, - in GEOM_Object theEdge2); + in GEOM_Object theEdge1, + in GEOM_Object theEdge2); /*! * Find a face, opposite to the given one in the given block. @@ -1766,7 +2049,7 @@ module GEOM * \return New GEOM_Object, containing the found face. */ GEOM_Object GetOppositeFace (in GEOM_Object theBlock, - in GEOM_Object theFace); + in GEOM_Object theFace); /*! * Find a face of the given shape, which has minimal distance to the given point. @@ -1775,7 +2058,7 @@ module GEOM * \return New GEOM_Object, containing the found face. */ GEOM_Object GetFaceNearPoint (in GEOM_Object theShape, - in GEOM_Object thePoint); + in GEOM_Object thePoint); /*! * Find a face of block, whose outside normale has minimal angle with the given vector. @@ -1784,7 +2067,23 @@ module GEOM * \return New GEOM_Object, containing the found face. */ GEOM_Object GetFaceByNormale (in GEOM_Object theBlock, - in GEOM_Object theVector); + in GEOM_Object theVector); + + /*! + * Find all subshapes of type \a theShapeType of the given shape, + * which have minimal distance to the given point. + * \param theShape Any shape. + * \param thePoint Point, close to the desired shape. + * \param theShapeType Defines what kind of subshapes is searched. + * \param theTolerance The tolerance for distances comparison. All shapes + * with distances to the given point in interval + * [minimal_distance, minimal_distance + theTolerance] will be gathered. + * \return New GEOM_Object, containing a group of all found shapes. + */ + GEOM_Object GetShapesNearPoint (in GEOM_Object theShape, + in GEOM_Object thePoint, + in long theShapeType, + in double theTolerance); /*! * Extract blocks from blocks compounds @@ -1800,9 +2099,9 @@ module GEOM * \return theNbBlocks Number of specified blocks in theCompound. */ boolean IsCompoundOfBlocks (in GEOM_Object theCompound, - in long theMinNbFaces, - in long theMaxNbFaces, - out long theNbBlocks); + in long theMinNbFaces, + in long theMaxNbFaces, + out long theNbBlocks); /*! * Enumeration of Blocks Compound defects. @@ -1853,7 +2152,7 @@ module GEOM * \return theErrors Structure, containing discovered errors and incriminated sub-shapes. */ boolean CheckCompoundOfBlocks (in GEOM_Object theCompound, - out BCErrors theErrors); + out BCErrors theErrors); /*! * Convert sequence of Blocks Compound errors, returned by @@ -1863,15 +2162,20 @@ module GEOM * \return String, describing all the errors in form, suitable for printing. */ string PrintBCErrors (in GEOM_Object theCompound, - in BCErrors theErrors); + in BCErrors theErrors); /*! * Remove all seam and degenerated edges from \a theShape. * Unite faces and edges, sharing one surface. * \param theShape The compound or single solid to remove irregular edges from. + * \param theOptimumNbFaces If more than zero, unite faces only for those solids, + * that have more than theOptimumNbFaces faces. If zero, unite faces always, + * regardsless their quantity in the solid. If negative, do not unite faces at all. + * For blocks repairing recommended value is 6. * \return Improved shape. */ - GEOM_Object RemoveExtraEdges (in GEOM_Object theShape); + GEOM_Object RemoveExtraEdges (in GEOM_Object theShape, + in long theOptimumNbFaces); /*! * Check, if the given shape is a blocks compound. @@ -1891,8 +2195,8 @@ module GEOM * \return List of GEOM_Objects, containing the retrieved blocks. */ ListOfGO ExplodeCompoundOfBlocks (in GEOM_Object theCompound, - in long theMinNbFaces, - in long theMaxNbFaces); + in long theMinNbFaces, + in long theMaxNbFaces); /*! * Find block, containing the given point inside its volume or on boundary. @@ -1902,7 +2206,7 @@ module GEOM * \return New GEOM_Object, containing the found block. */ GEOM_Object GetBlockNearPoint (in GEOM_Object theCompound, - in GEOM_Object thePoint); + in GEOM_Object thePoint); /*! * Find block, containing all the elements, passed as the parts, or maximum quantity of them. @@ -1911,7 +2215,7 @@ module GEOM * \return New GEOM_Object, containing the found block. */ GEOM_Object GetBlockByParts (in GEOM_Object theCompound, - in ListOfGO theParts); + in ListOfGO theParts); /*! * Return all blocks, containing all the elements, passed as the parts. @@ -1920,7 +2224,7 @@ module GEOM * \return List of GEOM_Objects, containing the found blocks. */ ListOfGO GetBlocksByParts (in GEOM_Object theCompound, - in ListOfGO theParts); + in ListOfGO theParts); /*! * Operations on blocks with gluing of result @@ -1938,9 +2242,9 @@ module GEOM * \return New GEOM_Object, containing the result shape. */ GEOM_Object MakeMultiTransformation1D (in GEOM_Object theBlock, - in long theDirFace1, - in long theDirFace2, - in long theNbTimes); + in long theDirFace1, + in long theDirFace2, + in long theNbTimes); /*! * Multi-transformate block and glue the result. @@ -1951,12 +2255,12 @@ module GEOM * \return New GEOM_Object, containing the result shape. */ GEOM_Object MakeMultiTransformation2D (in GEOM_Object theBlock, - in long theDirFace1U, - in long theDirFace2U, - in long theNbTimesU, - in long theDirFace1V, - in long theDirFace2V, - in long theNbTimesV); + in long theDirFace1U, + in long theDirFace2U, + in long theNbTimesU, + in long theDirFace1V, + in long theDirFace2V, + in long theNbTimesV); /*! * Special operation - propagation @@ -1987,8 +2291,8 @@ module GEOM * \return New GEOM_Object, containing the result shape. */ GEOM_Object MakeBoolean (in GEOM_Object theShape1, - in GEOM_Object theShape2, - in long theOperation); + in GEOM_Object theShape2, + in long theOperation); /*! * Perform partition operation. @@ -1997,10 +2301,10 @@ module GEOM * \note Each compound from ListShapes and ListTools will be exploded in order * to avoid possible intersection between shapes from this compound. * \param theLimit Type of resulting shapes (corresponding to TopAbs_ShapeEnum). - # \param KeepNonlimitShapes: if this parameter == 0 - only shapes with - # type <= Limit are kept in the result, - # else - shapes with type > Limit are kept - # also (if they exist) + * \param KeepNonlimitShapes: if this parameter == 0, then only shapes of + * target type (equal to Limit) are kept in the result, + * else standalone shapes of lower dimension + * are kept also (if they exist). * * After implementation new version of PartitionAlgo (October 2006) * other parameters are ignored by current functionality. They are kept @@ -2016,13 +2320,13 @@ module GEOM * \return New GEOM_Object, containing the result shapes. */ GEOM_Object MakePartition (in ListOfGO theShapes, - in ListOfGO theTools, - in ListOfGO theKeepInside, - in ListOfGO theRemoveInside, - in short theLimit, - in boolean theRemoveWebs, - in ListOfLong theMaterials, - in short theKeepNonlimitShapes); + in ListOfGO theTools, + in ListOfGO theKeepInside, + in ListOfGO theRemoveInside, + in short theLimit, + in boolean theRemoveWebs, + in ListOfLong theMaterials, + in short theKeepNonlimitShapes); /*! * Perform partition operation. @@ -2038,13 +2342,13 @@ module GEOM * \return New GEOM_Object, containing the result shapes. */ GEOM_Object MakePartitionNonSelfIntersectedShape (in ListOfGO theShapes, - in ListOfGO theTools, - in ListOfGO theKeepInside, - in ListOfGO theRemoveInside, - in short theLimit, - in boolean theRemoveWebs, - in ListOfLong theMaterials, - in short theKeepNonlimitShapes); + in ListOfGO theTools, + in ListOfGO theKeepInside, + in ListOfGO theRemoveInside, + in short theLimit, + in boolean theRemoveWebs, + in ListOfLong theMaterials, + in short theKeepNonlimitShapes); /*! * Perform partition of the Shape with the Plane @@ -2053,7 +2357,7 @@ module GEOM * \return New GEOM_Object, containing the result shape. */ GEOM_Object MakeHalfPartition (in GEOM_Object theShape, - in GEOM_Object thePlane); + in GEOM_Object thePlane); }; /*! @@ -2070,16 +2374,16 @@ module GEOM * \return New GEOM_Object, containing the created circle. */ GEOM_Object MakeCirclePntVecR (in GEOM_Object thePnt, - in GEOM_Object theVec, - in double theR); + in GEOM_Object theVec, + in double theR); /*! * Create a circle, passing through three given points * \param thePnt1,thePnt2,thePnt3 Points, defining the circle. * \return New GEOM_Object, containing the created circle. */ GEOM_Object MakeCircleThreePnt (in GEOM_Object thePnt1, - in GEOM_Object thePnt2, - in GEOM_Object thePnt3); + in GEOM_Object thePnt2, + in GEOM_Object thePnt3); /*! * Create a circle with given center, with a radius equals the distance from center to Point1 * and on a plane defined by all of three points. @@ -2087,8 +2391,8 @@ module GEOM * \return New GEOM_Object, containing the created circle. */ GEOM_Object MakeCircleCenter2Pnt (in GEOM_Object thePnt1, - in GEOM_Object thePnt2, - in GEOM_Object thePnt3); + in GEOM_Object thePnt2, + in GEOM_Object thePnt3); /*! * Create an ellipse with given center, normal vector and radiuses. * \param thePnt Ellipse center. @@ -2098,9 +2402,9 @@ module GEOM * \return New GEOM_Object, containing the created ellipse. */ GEOM_Object MakeEllipse (in GEOM_Object thePnt, - in GEOM_Object theVec, - in double theRMajor, - in double theRMinor); + in GEOM_Object theVec, + in double theRMajor, + in double theRMinor); /*! * Create an ellipse with given center, normal vector, main axis vector and radiuses. @@ -2112,10 +2416,10 @@ module GEOM * \return New GEOM_Object, containing the created ellipse. */ GEOM_Object MakeEllipseVec (in GEOM_Object thePnt, - in GEOM_Object theVec, - in double theRMajor, - in double theRMinor, - in GEOM_Object theVecMaj); + in GEOM_Object theVec, + in double theRMajor, + in double theRMinor, + in GEOM_Object theVecMaj); /*! * Create an arc of circle, passing through three given points. @@ -2125,8 +2429,8 @@ module GEOM * \return New GEOM_Object, containing the created arc. */ GEOM_Object MakeArc (in GEOM_Object thePnt1, - in GEOM_Object thePnt2, - in GEOM_Object thePnt3); + in GEOM_Object thePnt2, + in GEOM_Object thePnt3); /*! * Create an arc of circle of center C from one point to another @@ -2140,7 +2444,7 @@ module GEOM in GEOM_Object thePnt1, in GEOM_Object thePnt2, in boolean theSense); - + /*! * Create an arc of ellipse of center C and two points P1 P2. * \param theCenter Center point of the arc. @@ -2149,8 +2453,8 @@ module GEOM * \return New GEOM_Object, containing the created arc. */ GEOM_Object MakeArcOfEllipse (in GEOM_Object theCenter, - in GEOM_Object thePnt1, - in GEOM_Object thePnt2); + in GEOM_Object thePnt1, + in GEOM_Object thePnt2); /*! @@ -2170,9 +2474,11 @@ module GEOM /*! * Create B-Spline curve on the set of points. * \param thePoints Sequence of points for the B-Spline curve. + * \param theIsClosed If TRUE, build a closed curve. * \return New GEOM_Object, containing the created B-Spline curve. */ - GEOM_Object MakeSplineInterpolation (in ListOfGO thePoints); + GEOM_Object MakeSplineInterpolation (in ListOfGO thePoints, + in boolean theIsClosed); /*! * Create a sketcher (wire or face), following the textual description, @@ -2209,7 +2515,7 @@ module GEOM * \return New GEOM_Object, containing the created wire. */ GEOM_Object MakeSketcher (in string theCommand, in ListOfDouble theWorkingPlane); - + /*! * Create a 3D sketcher, following the numerical description, * passed through points created by \a theCoordinates argument. \n @@ -2217,7 +2523,7 @@ module GEOM * * "Make3DSketcher[x1, y1, z1, x2, y2, z2, ..., xN, yN, zN]" */ - + GEOM_Object Make3DSketcher (in ListOfDouble theCoordinates); /*! @@ -2244,7 +2550,7 @@ module GEOM * \return New GEOM_Object, containing the result shape. */ GEOM_Object MakeFilletAll (in GEOM_Object theShape, - in double theR); + in double theR); /*! * Perform a fillet on the specified edges of the given shape @@ -2256,12 +2562,12 @@ module GEOM * \return New GEOM_Object, containing the result shape. */ GEOM_Object MakeFilletEdges (in GEOM_Object theShape, - in double theR, - in ListOfLong theEdges); + in double theR, + in ListOfLong theEdges); GEOM_Object MakeFilletEdgesR1R2 (in GEOM_Object theShape, - in double theR1, - in double theR2, - in ListOfLong theEdges); + in double theR1, + in double theR2, + in ListOfLong theEdges); /*! * Perform a fillet on all edges of the specified faces of the given shape. @@ -2273,14 +2579,14 @@ module GEOM * \return New GEOM_Object, containing the result shape. */ GEOM_Object MakeFilletFaces (in GEOM_Object theShape, - in double theR, - in ListOfLong theFaces); - + in double theR, + in ListOfLong theFaces); + GEOM_Object MakeFilletFacesR1R2 (in GEOM_Object theShape, - in double theR1, - in double theR2, - in ListOfLong theFaces); - + in double theR1, + in double theR2, + in ListOfLong theFaces); + /*! * Perform a fillet on face of the specified vertexes of the given shape. * \param theShape Shape, to perform fillet on. @@ -2291,8 +2597,23 @@ module GEOM * \return New GEOM_Object, containing the result shape. */ GEOM_Object MakeFillet2D (in GEOM_Object theShape, - in double theR, - in ListOfLong theVertexes); + in double theR, + in ListOfLong theVertexes); + + /*! + * Perform a fillet on edges of the specified vertexes of the given wire. + * \param theShape Shape, to perform fillet on. + * \param theR Fillet radius. + * \param theVertexes Global indices of vertexes to perform fillet on. + * \note Global index of sub-shape can be obtained, using method + * GEOM_IShapesOperations.GetSubShapeIndex(). + * \note The list of vertices coudl be empty, in this case fillet fill be done + * at all vertices in given wire + * \return New GEOM_Object, containing the result shape. + */ + GEOM_Object MakeFillet1D (in GEOM_Object theShape, + in double theR, + in ListOfLong theVertexes); /*! * Perform a symmetric chamfer on all edges of the given shape. @@ -2301,7 +2622,7 @@ module GEOM * \return New GEOM_Object, containing the result shape. */ GEOM_Object MakeChamferAll (in GEOM_Object theShape, - in double theD); + in double theD); /*! * Perform a chamfer on edges, common to the specified faces. @@ -2315,15 +2636,15 @@ module GEOM * \return New GEOM_Object, containing the result shape. */ GEOM_Object MakeChamferEdge (in GEOM_Object theShape, - in double theD1, in double theD2, - in long theFace1, in long theFace2); + in double theD1, in double theD2, + in long theFace1, in long theFace2); /*! * The Same but with params theD = Chamfer Lenght * and theAngle = Chamfer Angle (Angle in radians) */ GEOM_Object MakeChamferEdgeAD (in GEOM_Object theShape, - in double theD, in double theAngle, - in long theFace1, in long theFace2); + in double theD, in double theAngle, + in long theFace1, in long theFace2); /*! * Perform a chamfer on all edges of the specified faces. @@ -2339,15 +2660,15 @@ module GEOM * \return New GEOM_Object, containing the result shape. */ GEOM_Object MakeChamferFaces (in GEOM_Object theShape, - in double theD1, in double theD2, - in ListOfLong theFaces); + in double theD1, in double theD2, + in ListOfLong theFaces); /*! * The Same but with params theD = Chamfer Lenght * and theAngle = Chamfer Angle (Angle in radians) */ GEOM_Object MakeChamferFacesAD (in GEOM_Object theShape, - in double theD, in double theAngle, - in ListOfLong theFaces); + in double theD, in double theAngle, + in ListOfLong theFaces); /*! * Perform a chamfer on edges, @@ -2358,15 +2679,15 @@ module GEOM * \return New GEOM_Object, containing the result shape. */ GEOM_Object MakeChamferEdges (in GEOM_Object theShape, - in double theD1, in double theD2, - in ListOfLong theEdges); + in double theD1, in double theD2, + in ListOfLong theEdges); /*! * The Same but with params theD = Chamfer Lenght * and theAngle = Chamfer Angle (Angle in radians) */ GEOM_Object MakeChamferEdgesAD (in GEOM_Object theShape, - in double theD, in double theAngle, - in ListOfLong theEdges); + in double theD, in double theAngle, + in ListOfLong theEdges); /*! * Perform an Archimde operation on the given shape with given parameters. @@ -2379,9 +2700,9 @@ module GEOM * by a plane, corresponding to water level. */ GEOM_Object MakeArchimede (in GEOM_Object theShape, - in double theWeight, - in double theWaterDensity, - in double theMeshDeflection); + in double theWeight, + in double theWaterDensity, + in double theMeshDeflection); /*! * Duplicates GEOM_IShapesOperations.GetSubShapeIndex(). @@ -2407,9 +2728,9 @@ module GEOM * \return New GEOM_Object, containing processed shape. */ GEOM_Object ProcessShape (in GEOM_Object theShapes, - in string_array theOperators, - in string_array theParameters, - in string_array theValues); + in string_array theOperators, + in string_array theParameters, + in string_array theValues); /*! * Get default sequence of operators, their parameters and parameters' values @@ -2421,8 +2742,8 @@ module GEOM * as parameters are listed in \a theParameters list. */ void GetShapeProcessParameters (out string_array theOperators, - out string_array theParameters, - out string_array theValues); + out string_array theParameters, + out string_array theValues); /*! * Get parameters and parameters' values for the given Shape Process operation. * In the current implementation the defaults are @@ -2433,8 +2754,8 @@ module GEOM * as parameters are listed in \a theParameters list. */ void GetOperatorParameters (in string theOperator, - out string_array theParameters, - out string_array theValues); + out string_array theParameters, + out string_array theValues); /*! * Remove faces from the given object (shape). @@ -2455,7 +2776,7 @@ module GEOM * \return New GEOM_Object, containing processed shape. */ GEOM_Object CloseContour (in GEOM_Object theObject, in short_array theWires, - in boolean isCommonVertex); + in boolean isCommonVertex); /*! * Remove internal wires and edges from the given object (face). @@ -2495,7 +2816,7 @@ module GEOM * \return New GEOM_Object, containing processed shape. */ GEOM_Object DivideEdge (in GEOM_Object theObject, in short theEdgeIndex, - in double theValue, in boolean isByParameter); + in double theValue, in boolean isByParameter); /*! * Get a list of wires (wrapped in GEOM_Object-s), @@ -2506,8 +2827,8 @@ module GEOM * \return FALSE, if an error(s) occured during the method execution. */ boolean GetFreeBoundary (in GEOM_Object theObject, - out ListOfGO theClosedWires, - out ListOfGO theOpenWires); + out ListOfGO theClosedWires, + out ListOfGO theOpenWires); /*! * Change orientation of the given object. @@ -2517,6 +2838,14 @@ module GEOM GEOM_Object ChangeOrientation (in GEOM_Object theObject); GEOM_Object ChangeOrientationCopy (in GEOM_Object theObject); + /*! + * Try to limit tolerance of the given object by value \a theTolerance. + * \param theObject Shape to be processed. + * \param theTolerance Required tolerance value. + * \return New GEOM_Object, containing processed shape. + */ + GEOM_Object LimitTolerance (in GEOM_Object theObject, in double theTolerance); + }; /*! @@ -2545,6 +2874,8 @@ module GEOM * \param theFileName The file, containing the shape. * \param theFormatName Specify format for the file reading. * Available formats can be obtained with ImportTranslators() method. + * If format 'IGES_SCALE' is used instead 'IGES' length unit will be + * set to 'meter' and result model will be scaled. * \return New GEOM_Object, containing the imported shape. */ GEOM_Object Import (in string theFileName, in string theFormatName); @@ -2556,7 +2887,7 @@ module GEOM * \return Returns available formats and patterns through the arguments. */ void ImportTranslators (out string_array theFormats, - out string_array thePatterns); + out string_array thePatterns); /*! * Get the supported export formats and corresponding patterns for File dialog. @@ -2565,7 +2896,38 @@ module GEOM * \return Returns available formats and patterns through the arguments. */ void ExportTranslators (out string_array theFormats, - out string_array thePatterns); + out string_array thePatterns); + + /*! + * Load texture from file + * \param theTextureFile texture file name + * \return unique texture identifier + */ + long LoadTexture(in string theTextureFile); + + /*! + * Add texture to the study + * \param theWidth texture width in pixels + * \param theHeight texture height in pixels + * \param theTexture texture byte array + * \return unique texture identifier + */ + long AddTexture(in long theWidth, in long theHeight, in SALOMEDS::TMPFile theTexture); + + /*! + * Get previously loaded texture data + * \param theID texture identifier + * \param theWidth texture width in pixels + * \param theHeight texture height in pixels + * \return texture byte array + */ + SALOMEDS::TMPFile GetTexture(in long theID, out long theWidth, out long theHeight); + + /*! + * Get list of all avaiable texture IDs + * \return list of all texture IDs avaiable for the current study + */ + ListOfLong GetAllTextures(); }; /*! @@ -2609,7 +2971,9 @@ module GEOM SEGMENT, // segment EDGE, // other edge // VERTEX - VERTEX + VERTEX, + // ADVANCED shapes + ADVANCED // all advanced shapes (temporary implementation) }; }; @@ -2633,8 +2997,8 @@ module GEOM */ //short KindOfShape (in GEOM_Object theShape, GEOM_IKindOfShape::shape_kind KindOfShape (in GEOM_Object theShape, - out ListOfLong theIntegers, - out ListOfDouble theDoubles); + out ListOfLong theIntegers, + out ListOfDouble theDoubles); /*! * Get position (LCS) of theShape. @@ -2648,9 +3012,9 @@ module GEOM * \return Returns position of the shape through the last nine arguments. */ void GetPosition (in GEOM_Object theShape, - out double Ox, out double Oy, out double Oz, - out double Zx, out double Zy, out double Zz, - out double Xx, out double Xy, out double Xz); + out double Ox, out double Oy, out double Oz, + out double Zx, out double Zy, out double Zz, + out double Xx, out double Xy, out double Xz); /*! * Get summarized length of all wires, @@ -2662,9 +3026,9 @@ module GEOM * \return Returns shape properties through the last three arguments. */ void GetBasicProperties (in GEOM_Object theShape, - out double theLength, - out double theSurfArea, - out double theVolume); + out double theLength, + out double theSurfArea, + out double theVolume); /*! * Get a point, situated at the centre of mass of theShape. @@ -2673,6 +3037,14 @@ module GEOM */ GEOM_Object GetCentreOfMass (in GEOM_Object theShape); + /* + * Get the vertex by index for 1D objects depends the edge/wire orientation + * \param theShape Shape (wire or edge) to find the vertex on it + * \param theIndex Index of vertex subshape + * \return New GEOM_Object, vertex. + */ + GEOM_Object GetVertexByIndex( in GEOM_Object theShape, in long index ); + /*! * Get a vector, representing the normal of theFace. * If the face is not planar, theOptionalPoint is obligatory. @@ -2682,7 +3054,7 @@ module GEOM * \return New GEOM_Object, containing the created normal vector. */ GEOM_Object GetNormal (in GEOM_Object theFace, - in GEOM_Object theOptionalPoint); + in GEOM_Object theOptionalPoint); /*! * Get inertia matrix and moments of inertia of theShape. @@ -2692,10 +3064,10 @@ module GEOM * \return Returns inertia through the last twelve arguments. */ void GetInertia (in GEOM_Object theShape, - out double I11, out double I12, out double I13, - out double I21, out double I22, out double I23, - out double I31, out double I32, out double I33, - out double Ix , out double Iy , out double Iz); + out double I11, out double I12, out double I13, + out double I21, out double I22, out double I23, + out double I31, out double I32, out double I33, + out double Ix , out double Iy , out double Iz); /*! * Get parameters of bounding box of the given shape @@ -2706,9 +3078,9 @@ module GEOM * \return Returns parameters of bounding box through the last six arguments. */ void GetBoundingBox (in GEOM_Object theShape, - out double Xmin, out double Xmax, - out double Ymin, out double Ymax, - out double Zmin, out double Zmax); + out double Xmin, out double Xmax, + out double Ymin, out double Ymax, + out double Zmin, out double Zmax); /*! * Get min and max tolerances of sub-shapes of theShape @@ -2719,9 +3091,9 @@ module GEOM * \return Returns shape tolerances through the last six arguments. */ void GetTolerance (in GEOM_Object theShape, - out double FaceMin, out double FaceMax, - out double EdgeMin, out double EdgeMax, - out double VertMin, out double VertMax); + out double FaceMin, out double FaceMax, + out double EdgeMin, out double EdgeMax, + out double VertMin, out double VertMax); /*! * Check a topology of the given shape. @@ -2730,7 +3102,7 @@ module GEOM * \return TRUE, if the shape "seems to be valid" from the topological point of view. */ boolean CheckShape (in GEOM_Object theShape, - out string theDescription); + out string theDescription); /*! * Check a topology and a geometry of the given shape. @@ -2739,7 +3111,7 @@ module GEOM * \return TRUE, if the shape "seems to be valid". */ boolean CheckShapeWithGeometry (in GEOM_Object theShape, - out string theDescription); + out string theDescription); /*! * Obtain description of the given shape @@ -2756,8 +3128,8 @@ module GEOM * \return Value of the minimal distance between the given shapes. */ double GetMinDistance (in GEOM_Object theShape1, in GEOM_Object theShape2, - out double X1, out double Y1, out double Z1, - out double X2, out double Y2, out double Z2); + out double X1, out double Y1, out double Z1, + out double X2, out double Y2, out double Z2); /*! * Get angle between the given lines or linear edges. @@ -2795,7 +3167,7 @@ module GEOM * \return Value of curvature. */ double MaxSurfaceCurvatureByParam (in GEOM_Object theShape, in double theUParam, - in double theVParam); + in double theVParam); /*! * Get max radius of curvature of surface in the given point @@ -2813,7 +3185,7 @@ module GEOM * \return Value of curvature. */ double MinSurfaceCurvatureByParam (in GEOM_Object theShape, in double theUParam, - in double theVParam); + in double theVParam); /*! * Get min radius of curvature of surface in the given point @@ -2904,6 +3276,135 @@ module GEOM }; + /*! + * GEOM_IAdvancedOperations: Interface for advanced modeling functions. + */ + interface GEOM_IAdvancedOperations : GEOM_IOperations + { + /*! + * Create a T-shape object with specified caracteristics for the main and + * the incident pipes (radius, width, half-length). + * Center of the shape is (0,0,0). The main plane of the T-shape is XOY. + * \param theR1 Internal radius of main pipe + * \param theW1 Width of main pipe + * \param theL1 Half-length of main pipe + * \param theR2 Internal radius of incident pipe (R2 < R1) + * \param theW2 Width of incident pipe (R2+W2 < R1+W1) + * \param theL2 Half-length of incident pipe + * \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true) + * \return List of GEOM_Objects, containing the created shape and propagation groups. + */ + ListOfGO MakePipeTShape (in double theR1, in double theW1, in double theL1, + in double theR2, in double theW2, in double theL2, + in boolean theHexMesh); + /*! + * Create a T-shape object with specified caracteristics for the main and + * the incident pipes (radius, width, half-length). + * The extremities of the main pipe are located on junctions points P1 and P2. + * The extremity of the incident pipe is located on junction point P3. + * \param theR1 Internal radius of main pipe + * \param theW1 Width of main pipe + * \param theL1 Half-length of main pipe + * \param theR2 Internal radius of incident pipe (R2 < R1) + * \param theW2 Width of incident pipe (R2+W2 < R1+W1) + * \param theL2 Half-length of incident pipe + * \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true) + * \param theP1 1st junction point of main pipe + * \param theP2 2nd junction point of main pipe + * \param theP3 Junction point of incident pipe + * \return List of GEOM_Objects, containing the created shape and propagation groups. + */ + ListOfGO MakePipeTShapeWithPosition (in double theR1, in double theW1, in double theL1, + in double theR2, in double theW2, in double theL2, + in boolean theHexMesh, + in GEOM_Object theP1, in GEOM_Object theP2, in GEOM_Object theP3); + /*! + * Create a T-shape object with specified caracteristics for the main and + * the incident pipes (radius, width, half-length). A chamfer is created + * on the junction of the pipes. + * Center of the shape is (0,0,0). The main plane of the T-shape is XOY. + * \param theR1 Internal radius of main pipe + * \param theW1 Width of main pipe + * \param theL1 Half-length of main pipe + * \param theR2 Internal radius of incident pipe (R2 < R1) + * \param theW2 Width of incident pipe (R2+W2 < R1+W1) + * \param theL2 Half-length of incident pipe + * \param theH Height of the chamfer. + * \param theW Width of the chamfer. + * \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true) + * \return List of GEOM_Objects, containing the created shape and propagation groups. + */ + ListOfGO MakePipeTShapeChamfer (in double theR1, in double theW1, in double theL1, + in double theR2, in double theW2, in double theL2, + in double theH, in double theW, in boolean theHexMesh); + /*! + * Create a T-shape object with specified caracteristics for the main and + * the incident pipes (radius, width, half-length). A chamfer is created + * on the junction of the pipes. + * The extremities of the main pipe are located on junctions points P1 and P2. + * The extremity of the incident pipe is located on junction point P3. + * \param theR1 Internal radius of main pipe + * \param theW1 Width of main pipe + * \param theL1 Half-length of main pipe + * \param theR2 Internal radius of incident pipe (R2 < R1) + * \param theW2 Width of incident pipe (R2+W2 < R1+W1) + * \param theL2 Half-length of incident pipe + * \param theH Height of the chamfer. + * \param theW Width of the chamfer. + * \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true) + * \param theP1 1st junction point of main pipe + * \param theP2 2nd junction point of main pipe + * \param theP3 Junction point of incident pipe + * \return List of GEOM_Objects, containing the created shape and propagation groups. + */ + ListOfGO MakePipeTShapeChamferWithPosition (in double theR1, in double theW1, in double theL1, + in double theR2, in double theW2, in double theL2, + in double theH, in double theW, in boolean theHexMesh, + in GEOM_Object theP1, in GEOM_Object theP2, in GEOM_Object theP3); + /*! + * Create a T-shape object with specified caracteristics for the main and + * the incident pipes (radius, width, half-length). A fillet is created + * on the junction of the pipes. + * Center of the shape is (0,0,0). The main plane of the T-shape is XOY. + * \param theR1 Internal radius of main pipe + * \param theW1 Width of main pipe + * \param theL1 Half-length of main pipe + * \param theR2 Internal radius of incident pipe (R2 < R1) + * \param theW2 Width of incident pipe (R2+W2 < R1+W1) + * \param theL2 Half-length of incident pipe + * \param theRF Radius of curvature of fillet. + * \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true) + * \return List of GEOM_Objects, containing the created shape and propagation groups. + */ + ListOfGO MakePipeTShapeFillet (in double theR1, in double theW1, in double theL1, + in double theR2, in double theW2, in double theL2, + in double theRF, in boolean theHexMesh); + /*! + * Create a T-shape object with specified caracteristics for the main and + * the incident pipes (radius, width, half-length). A fillet is created + * on the junction of the pipes. + * The extremities of the main pipe are located on junctions points P1 and P2. + * The extremity of the incident pipe is located on junction point P3. + * \param theR1 Internal radius of main pipe + * \param theW1 Width of main pipe + * \param theL1 Half-length of main pipe + * \param theR2 Internal radius of incident pipe (R2 < R1) + * \param theW2 Width of incident pipe (R2+W2 < R1+W1) + * \param theL2 Half-length of incident pipe + * \param theRF Radius of curvature of fillet. + * \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true) + * \param theP1 1st junction point of main pipe + * \param theP2 2nd junction point of main pipe + * \param theP3 Junction point of incident pipe + * \return List of GEOM_Objects, containing the created shape and propagation groups. + */ + ListOfGO MakePipeTShapeFilletWithPosition (in double theR1, in double theW1, in double theL1, + in double theR2, in double theW2, in double theL2, + in double theRF, in boolean theHexMesh, + in GEOM_Object theP1, in GEOM_Object theP2, in GEOM_Object theP3); + /*@@ insert new functions before this line @@ do not remove this line @@*/ + }; + /*! * GEOM_Gen: Interface to access other GEOM interfaces. * Also contains some methods to access and manage GEOM objects. @@ -2925,9 +3426,9 @@ module GEOM * Returns a SObject where theObject is placed */ SALOMEDS::SObject AddInStudy (in SALOMEDS::Study theStudy, - in GEOM_Object theObject, - in string theName, - in GEOM_Object theFather); + in GEOM_Object theObject, + in string theName, + in GEOM_Object theFather); /*! * Publish sub-shapes, standing for arguments and sub-shapes of arguments @@ -2948,13 +3449,46 @@ module GEOM * operations, where only the first argument has to be considered. * If theObject has only one argument shape, this flag is automatically * considered as True, not regarding really passed value. - * \return True in case of success, False otherwise. + * \param theAddPrefix add prefix "from_" to names of restored sub-shapes, + * and prefix "from_subshapes_of_" to names of partially restored subshapes. + * \return list of published sub-shapes */ - boolean RestoreSubShapesO (in SALOMEDS::Study theStudy, - in GEOM_Object theObject, - in ListOfGO theArgs, - in find_shape_method theFindMethod, - in boolean theInheritFirstArg); + ListOfGO RestoreSubShapesO (in SALOMEDS::Study theStudy, + in GEOM_Object theObject, + in ListOfGO theArgs, + in find_shape_method theFindMethod, + in boolean theInheritFirstArg, + in boolean theAddPrefix); + + /*! + * Publish sub-shapes, standing for arguments and sub-shapes of arguments + * To be used from python scripts out of geompy.addToStudy (non-default usage) + * \param theStudy the study, in which theObject is published already, + * and in which the arguments will be published + * \param theObject published GEOM object, arguments of which will be published + * \param theArgs list of GEOM_Object, operation arguments to be published. + * If this list is empty, all operation arguments will be published + * \param theFindMethod method to search subshapes, corresponding to arguments and + * their subshapes. Value from enumeration GEOM::find_shape_method. + * \param theInheritFirstArg set properties of the first argument for \a theObject. + * Do not publish subshapes in place of arguments, but only + * in place of subshapes of the first argument, + * because the whole shape corresponds to the first argument. + * Mainly to be used after transformations, but it also can be + * usefull after partition with one object shape, and some other + * operations, where only the first argument has to be considered. + * If theObject has only one argument shape, this flag is automatically + * considered as True, not regarding really passed value. + * \param theAddPrefix add prefix "from_" to names of restored sub-shapes, + * and prefix "from_subshapes_of_" to names of partially restored subshapes. + * \return list of published sub-shapes + */ + ListOfGO RestoreGivenSubShapesO (in SALOMEDS::Study theStudy, + in GEOM_Object theObject, + in ListOfGO theArgs, + in find_shape_method theFindMethod, + in boolean theInheritFirstArg, + in boolean theAddPrefix); /*! * Publish sub-shapes, standing for arguments and sub-shapes of arguments @@ -2962,11 +3496,12 @@ module GEOM * Work like the above method, but accepts study object theSObject instead of GEOM_Object. * \param theSObject study object, referencing GEOM object, arguments of which will be published */ - boolean RestoreSubShapesSO (in SALOMEDS::Study theStudy, - in SALOMEDS::SObject theSObject, - in ListOfGO theArgs, - in find_shape_method theFindMethod, - in boolean theInheritFirstArg); + ListOfGO RestoreSubShapesSO (in SALOMEDS::Study theStudy, + in SALOMEDS::SObject theSObject, + in ListOfGO theArgs, + in find_shape_method theFindMethod, + in boolean theInheritFirstArg, + in boolean theAddPrefix); /*! * Methods to access interfaces for objects creation and transformation @@ -2983,6 +3518,7 @@ module GEOM GEOM_IMeasureOperations GetIMeasureOperations (in long theStudyID) raises (SALOME::SALOME_Exception); GEOM_IBlocksOperations GetIBlocksOperations (in long theStudyID) raises (SALOME::SALOME_Exception); GEOM_IGroupOperations GetIGroupOperations (in long theStudyID) raises (SALOME::SALOME_Exception); + GEOM_IAdvancedOperations GetIAdvancedOperations (in long theStudyID) raises (SALOME::SALOME_Exception); /*! * Objects Management @@ -3038,6 +3574,15 @@ module GEOM * into python script to avoid the same names in SMESH script */ string_array GetAllDumpNames(); + + /*! + * Publishes the named subshapes of given object in the study. + * \param theStudy The study in which the object is published + * \param theObject The object which named subshapes are published + */ + ListOfGO PublishNamedShapesInStudy(in SALOMEDS::Study theStudy, + //in SObject theSObject, + in Object theObject); }; };