-// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2013 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
HEXAGON
};
+ /*!
+ * \brief Object creation parameters
+ *
+ * Is returned by GEOM_Object::GetCreationInformation()
+ */
+ struct Parameter
+ {
+ string name;
+ //any value;
+ string value;
+ };
+ typedef sequence<Parameter> Parameters;
+
+ struct CreationInformation
+ {
+ string operationName;
+ Parameters params;
+ };
+
typedef sequence<string> string_array;
typedef sequence<short> short_array;
interface GEOM_Object;
typedef sequence<GEOM_Object> ListOfGO;
+ typedef sequence<SALOMEDS::SObject> object_list;
//# GEOM_Object
/*!
* \brief Return list of notebook variables used for object creation separated by ":" symbol
*/
string GetParameters();
+
+ /*!
+ * \brief Return name of operation and values of parameters used for object creation
+ */
+ CreationInformation GetCreationInformation();
};
- // # GEOM_IOperations:
+ // # GEOM_IOperations:
/*!
* \brief Basic methods of all geometric operations
*/
in GEOM_Object thePath,
in GEOM_Object theVec);
+
+ /*!
+ * \brief Make a thick solid from a surface shape (face or shell)
+ * \param theObject Surface from which the thick solid is made
+ * \param theThickness Value of the thickness
+ * \param isCopy To make a copy of \a theObject ot to modify \a theObject.
+ * \return New GEOM_Object, containing the created pipe if isCopy = true
+ * or the modified object if isCopy = false
+ */
+ GEOM_Object MakeThickening (in GEOM_Object theObject,
+ in double theThickness,
+ in boolean isCopy);
+
+
/*!
* \brief Build a middle path of a pipe-like shape.
*
GEOM_Object RemoveExtraEdges (in GEOM_Object theShape,
in long theOptimumNbFaces);
+ /*!
+ * \brief Performs union faces of \a theShape.
+ *
+ * Unite faces sharing one surface.
+ * \param theShape The compound or single solid that contains faces to perform union.
+ * \return Improved shape.
+ */
+ GEOM_Object UnionFaces (in GEOM_Object theShape);
+
/*!
* \brief Check, if the given shape is a blocks compound.
*
in GEOM_Object theShape2,
in long theOperation);
+ /*!
+ * \brief Perform fusion boolean operation on list of objects.
+ * \param theShapes Shapes to be fused.
+ * \return New GEOM_Object, containing the result shape.
+ */
+ GEOM_Object MakeFuseList (in ListOfGO theShapes);
+
+ /*!
+ * \brief Perform common boolean operation on list of objects.
+ * \param theShapes Shapes for common operation.
+ * \return New GEOM_Object, containing the result shape.
+ */
+ GEOM_Object MakeCommonList (in ListOfGO theShapes);
+
+ /*!
+ * \brief Perform cutting of list of objects from theMainShape.
+ * \param theMainShape the object for cut operation.
+ * \param theShapes Shapes to be cut from theMainShape (tools).
+ * \return New GEOM_Object, containing the result shape.
+ */
+ GEOM_Object MakeCutList (in GEOM_Object theMainShape,
+ in ListOfGO theShapes);
+
/*!
* \brief Perform partition operation.
*
*/
GEOM_Object Sew (in GEOM_Object theObject, in double theTolerance);
+ /*!
+ * Sewing of the given object. Allows non-manifold sewing.
+ * \param theObject Shape to be processed.
+ * \param theTolerance Required tolerance value.
+ * \return New GEOM_Object, containing processed shape.
+ */
+ GEOM_Object SewAllowNonManifold(in GEOM_Object theObject, in double theTolerance);
+
+ /*!
+ * Rebuild the topology of theCompound of solids by removing
+ * of the faces that are shared by several solids.
+ * \param theCompound Shape to be processed.
+ * \return New GEOM_Object, containing processed shape.
+ */
+ GEOM_Object RemoveInternalFaces (in GEOM_Object theCompound);
+
/*!
* \brief Addition of a point to a given edge object.
* \param theObject Shape to be processed.
/*!
* \brief Get parameters of bounding box of the given shape
* \param theShape Shape to obtain bounding box of.
+ * \param precise TRUE for precise computation; FALSE for fast one.
* \param Xmin,Xmax Output. Limits of shape along OX axis.
* \param Ymin,Ymax Output. Limits of shape along OY axis.
* \param Zmin,Zmax Output. Limits of shape along OZ axis.
* \return Returns parameters of bounding box through the last six arguments.
*/
void GetBoundingBox (in GEOM_Object theShape,
+ in boolean precise,
out double Xmin, out double Xmax,
out double Ymin, out double Ymax,
out double Zmin, out double Zmax);
/*!
* \brief Get bounding box of the given shape
* \param theShape Shape to obtain bounding box of.
+ * \param precise TRUE for precise computation; FALSE for fast one.
* \return New GEOM_Object, containing the created bounding box.
*/
- GEOM_Object MakeBoundingBox (in GEOM_Object theShape);
+ GEOM_Object MakeBoundingBox (in GEOM_Object theShape,
+ in boolean precise);
/*!
* \brief Get min and max tolerances of sub-shapes of theShape
*/
interface GEOM_IAdvancedOperations : GEOM_IOperations
{
+ // T-Shape WITHOUT Thickness reduction
+
/*!
* \brief Create a T-shape object with specified caracteristics for the main and
* the incident pipes (radius, width, half-length).
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);
+
+ // T-Shape WITH Thickness reduction
+
+ /*!
+ * \brief 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 theRL Internal radius of left thickness reduction
+ * \param theWL Width of left thickness reduction
+ * \param theLtransL Length of left transition part
+ * \param theLthinL Length of left thin part
+ *
+ * \param theRR Internal radius of right thickness reduction
+ * \param theWR Width of right thickness reduction
+ * \param theLtransR Length of right transition part
+ * \param theLthinR Length of right thin part
+ *
+ * \param theRI Internal radius of incident thickness reduction
+ * \param theWI Width of incident thickness reduction
+ * \param theLtransI Length of incident transition part
+ * \param theLthinI Length of incident thin part
+ *
+ * \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true)
+ * \return List of GEOM_Object, containing the created shape and propagation groups.
+ */
+ ListOfGO MakePipeTShapeTR (in double theR1, in double theW1, in double theL1,
+ in double theR2, in double theW2, in double theL2,
+ in double theRL, in double theWL, in double theLtransL, in double theLthinL,
+ in double theRR, in double theWR, in double theLtransR, in double theLthinR,
+ in double theRI, in double theWI, in double theLtransI, in double theLthinI,
+ in boolean theHexMesh);
+ /*!
+ * \brief 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 theRL Internal radius of left thickness reduction
+ * \param theWL Width of left thickness reduction
+ * \param theLtransL Length of left transition part
+ * \param theLthinL Length of left thin part
+ *
+ * \param theRR Internal radius of right thickness reduction
+ * \param theWR Width of right thickness reduction
+ * \param theLtransR Length of right transition part
+ * \param theLthinR Length of right thin part
+ *
+ * \param theRI Internal radius of incident thickness reduction
+ * \param theWI Width of incident thickness reduction
+ * \param theLtransI Length of incident transition part
+ * \param theLthinI Length of incident thin part
+ *
+ * \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_Object, containing the created shape and propagation groups.
+ */
+ ListOfGO MakePipeTShapeTRWithPosition
+ (in double theR1, in double theW1, in double theL1,
+ in double theR2, in double theW2, in double theL2,
+ in double theRL, in double theWL, in double theLtransL, in double theLthinL,
+ in double theRR, in double theWR, in double theLtransR, in double theLthinR,
+ in double theRI, in double theWI, in double theLtransI, in double theLthinI,
+ in boolean theHexMesh,
+ in GEOM_Object theP1, in GEOM_Object theP2, in GEOM_Object theP3);
+ /*!
+ * \brief 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 theRL Internal radius of left thickness reduction
+ * \param theWL Width of left thickness reduction
+ * \param theLtransL Length of left transition part
+ * \param theLthinL Length of left thin part
+ *
+ * \param theRR Internal radius of right thickness reduction
+ * \param theWR Width of right thickness reduction
+ * \param theLtransR Length of right transition part
+ * \param theLthinR Length of right thin part
+ *
+ * \param theRI Internal radius of incident thickness reduction
+ * \param theWI Width of incident thickness reduction
+ * \param theLtransI Length of incident transition part
+ * \param theLthinI Length of incident thin part
+ *
+ * \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_Object, containing the created shape and propagation groups.
+ */
+ ListOfGO MakePipeTShapeTRChamfer
+ (in double theR1, in double theW1, in double theL1,
+ in double theR2, in double theW2, in double theL2,
+ in double theRL, in double theWL, in double theLtransL, in double theLthinL,
+ in double theRR, in double theWR, in double theLtransR, in double theLthinR,
+ in double theRI, in double theWI, in double theLtransI, in double theLthinI,
+ in double theH, in double theW, in boolean theHexMesh);
+ /*!
+ * \brief 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 theRL Internal radius of left thickness reduction
+ * \param theWL Width of left thickness reduction
+ * \param theLtransL Length of left transition part
+ * \param theLthinL Length of left thin part
+ *
+ * \param theRR Internal radius of right thickness reduction
+ * \param theWR Width of right thickness reduction
+ * \param theLtransR Length of right transition part
+ * \param theLthinR Length of right thin part
+ *
+ * \param theRI Internal radius of incident thickness reduction
+ * \param theWI Width of incident thickness reduction
+ * \param theLtransI Length of incident transition part
+ * \param theLthinI Length of incident thin part
+ *
+ * \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_Object, containing the created shape and propagation groups.
+ */
+ ListOfGO MakePipeTShapeTRChamferWithPosition
+ (in double theR1, in double theW1, in double theL1,
+ in double theR2, in double theW2, in double theL2,
+ in double theRL, in double theWL, in double theLtransL, in double theLthinL,
+ in double theRR, in double theWR, in double theLtransR, in double theLthinR,
+ in double theRI, in double theWI, in double theLtransI, in double theLthinI,
+ in double theH, in double theW, in boolean theHexMesh,
+ in GEOM_Object theP1, in GEOM_Object theP2, in GEOM_Object theP3);
+ /*!
+ * \brief 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 theRL Internal radius of left thickness reduction
+ * \param theWL Width of left thickness reduction
+ * \param theLtransL Length of left transition part
+ * \param theLthinL Length of left thin part
+ *
+ * \param theRR Internal radius of right thickness reduction
+ * \param theWR Width of right thickness reduction
+ * \param theLtransR Length of right transition part
+ * \param theLthinR Length of right thin part
+ *
+ * \param theRI Internal radius of incident thickness reduction
+ * \param theWI Width of incident thickness reduction
+ * \param theLtransI Length of incident transition part
+ * \param theLthinI Length of incident thin part
+ *
+ * \param theRF Radius of curvature of fillet.
+ * \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true)
+ * \return List of GEOM_Object, containing the created shape and propagation groups.
+ */
+ ListOfGO MakePipeTShapeTRFillet
+ (in double theR1, in double theW1, in double theL1,
+ in double theR2, in double theW2, in double theL2,
+ in double theRL, in double theWL, in double theLtransL, in double theLthinL,
+ in double theRR, in double theWR, in double theLtransR, in double theLthinR,
+ in double theRI, in double theWI, in double theLtransI, in double theLthinI,
+ in double theRF, in boolean theHexMesh);
+ /*!
+ * \brief 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 theRL Internal radius of left thickness reduction
+ * \param theWL Width of left thickness reduction
+ * \param theLtransL Length of left transition part
+ * \param theLthinL Length of left thin part
+ *
+ * \param theRR Internal radius of right thickness reduction
+ * \param theWR Width of right thickness reduction
+ * \param theLtransR Length of right transition part
+ * \param theLthinR Length of right thin part
+ *
+ * \param theRI Internal radius of incident thickness reduction
+ * \param theWI Width of incident thickness reduction
+ * \param theLtransI Length of incident transition part
+ * \param theLthinI Length of incident thin part
+ *
+ * \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_Object, containing the created shape and propagation groups.
+ */
+ ListOfGO MakePipeTShapeTRFilletWithPosition
+ (in double theR1, in double theW1, in double theL1,
+ in double theR2, in double theW2, in double theL2,
+ in double theRL, in double theWL, in double theLtransL, in double theLthinL,
+ in double theRR, in double theWR, in double theLtransR, in double theLthinR,
+ in double theRI, in double theWI, in double theLtransI, in double theLthinI,
+ in double theRF, in boolean theHexMesh,
+ in GEOM_Object theP1, in GEOM_Object theP2, in GEOM_Object theP3);
+
/*!
* This function allows to create a disk already divided into blocks. It
* can be use to create divided pipes for later meshing in hexaedra.
* \param theR Radius of the disk
* \param theRatio Relative size of the central square diagonal against the disk diameter
* \param theOrientation Plane on which the disk will be built
+ * \param thePattern Division pattern. It can be GEOM.SQUARE or GEOM.HEXAGON
* \return New GEOM_Object, containing the created shape.
*/
GEOM_Object MakeDividedDisk (in double theR,
* \param theVec Vector, normal to the plane of the disk.
* \param theR Disk radius.
* \param theRatio Relative size of the central square diagonal against the disk diameter
+ * \param thePattern Division pattern. It can be GEOM.SQUARE or GEOM.HEXAGON
* \return New GEOM_Object, containing the created disk.
*/
GEOM_Object MakeDividedDiskPntVecR ( in GEOM_Object thePnt,
* Builds a cylinder prepared for hexa meshes
* \param theR Radius of the cylinder
* \param theH Height of the cylinder
+ * \param thePattern Division pattern. It can be GEOM.SQUARE or GEOM.HEXAGON
* \return New GEOM_Object, containing the created shape.
*/
GEOM_Object MakeDividedCylinder (in double theR,
in double theH,
in pattern thePattern );
+ /*!
+ *
+ * Create a smoothing surface from a set of points
+ * \param thelPoints list of points
+ * \return New GEOM_Object, containing the created shape.
+ */
+ GEOM_Object MakeSmoothingSurface (in ListOfGO thelPoints);
/*@@ insert new functions before this line @@ do not remove this line @@*/
};
ListOfGO PublishNamedShapesInStudy(in SALOMEDS::Study theStudy,
//in SObject theSObject,
in Object theObject);
+
+ /*!
+ * \brief Creates a new folder
+ *
+ * Creates a new container (folder) for any GEOM objects.
+ * Folder will have name theName.
+ * If theFather is not NULL, the folder is placed under theFather object.
+ * Otherwise, the folder takes place under root 'Geometry' object.
+ *
+ * \param theName name of the folder
+ * \param theFather parent object
+ * \return SObject represented the created folder.
+ */
+ SALOMEDS::SObject CreateFolder (in string theName,
+ in SALOMEDS::SObject theFather);
+
+ /*!
+ * \brief Moves object to the specified folder
+ *
+ * The moved object should be first published in the study.
+ * \param theObject GEOM object to move
+ * \param theFolder target folder
+ */
+ void MoveToFolder (in GEOM_Object theObject,
+ in SALOMEDS::SObject theFolder);
+
+ /*!
+ * \brief Moves list of objects to the specified folder
+ *
+ * The moved objects should be first published in the study.
+ * \param theListOfGO list of GEOM objects to move
+ * \param theFolder target folder
+ */
+ void MoveListToFolder (in ListOfGO theListOfGO,
+ in SALOMEDS::SObject theFolder);
+
+ /*!
+ * \brief Moves objects to the specified position
+ *
+ * This function is used in the drag-n-drop functionality.
+ *
+ * \param what objects being moved
+ * \param where parent object where objects are moved to
+ * \param row position in the parent object's children list at which objects are moved
+ */
+ void Move( in object_list what,
+ in SALOMEDS::SObject where,
+ in long row );
};
};