Itasca C++ Interface
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Static Public Attributes | List of all members
body::IBodySet Class Referenceabstract

A container for a single "set" of body-block elements. A body-block set is a named collection of body-block elements (points, edges, polygons, blocks) as an organization layer. More...

#include <ibodyset.h>

Public Member Functions

virtual const GeomBase * getGeomBase () const =0
 
virtual IThinggetIThing ()=0
 Return an IThing interface for this object.
 
virtual const IThinggetIThing () const =0
 Return a const IThing interface for this object.
 
virtual IBodySetgetNext ()=0
 Return the next IBodySet object in the global list, or 0 if it is the last set.
 
virtual const IBodySetgetNext () const =0
 Return the next IBodySet object in the global list, or 0 if it is the last set.
 
virtual IString getName () const =0
 Returns the name associated with the geometry set.
 
virtual uint32 getGeometryCode () const =0
 
virtual uint32 getGroupCode () const =0
 Returns a notification code (see INoticeManager) indicating that a group assignemnt on some element of the set.
 
virtual uint32 getExtraCode () const =0
 Returns a notification code (see INoticeManager) indicating a possible extra variable change on some element of the set.
 
virtual uint32 getEdgeRatioChangedCode () const =0
 Returns notification code for edgeRatio changed.
 
virtual uint32 getEdgeZoneSizeChangedCode () const =0
 Returns notification code for edge zone size changed.
 
virtual uint32 getZoneMultiplierCode () const =0
 Returns notification code for block zone multiplier changed.
 
virtual IGeomPointcreatePoint (const DVect &pos)=0
 
virtual IGeomPointgetFirstPoint ()=0
 Returns the first IGeomPoint of all those contained in the set. Call IGeomPoint::getNextPoint() to traverse the list. May return 0.
 
virtual const IGeomPointgetFirstPoint () const =0
 Returns the first IGeomPoint of all those contained in the set. Call IGeomPoint::getNextPoint() to traverse the list. May return 0.
 
virtual IGeomPointfindPointWithID (uint64 id)=0
 Find the IGeomPoint with ID number matching id. This search will take less than linear time. May return 0.
 
virtual const IGeomPointfindPointWithID (uint64 id) const =0
 Find the IGeomPoint with ID number matching id. This search will take less than linear time. May return 0.
 
virtual IGeomPointfindClosestPointV (const DVect &pos, const double &radius=limits< double >::max(), bool validate=true)=0
 
virtual const IGeomPointfindClosestPointV (const DVect &pos, const double &radius=limits< double >::max(), bool validate=true) const =0
 
virtual IContainergetPointContainer ()=0
 Returns an IContainer interface pointer for the container of all IGeomPoint objects.
 
virtual const IContainergetPointContainer () const =0
 Returns an IContainer interface pointer for the container of all IGeomPoint objects.
 
virtual IGeomEdgecreateEdge (IGeomPoint *end1, IGeomPoint *end2)=0
 
virtual IGeomEdgegetFirstEdge ()=0
 Returns the first IGeomEdge object of all those contained in the set. Call IGeomEdge::getNextEdge to traverse the list. May return 0.
 
virtual const IGeomEdgegetFirstEdge () const =0
 Returns the first IGeomEdge object of all those contained in the set. Call IGeomEdge::getNextEdge to traverse the list. May return 0.
 
virtual IGeomEdgefindEdgeWithID (uint64 id)=0
 Find the IGeomEdge with ID number matching id. This search will take less than linear time. May return 0.
 
virtual const IGeomEdgefindEdgeWithID (uint64 id) const =0
 Find the IGeomEdge with ID number matching id. This search will take less than linear time. May return 0.
 
virtual IGeomEdgefindClosestEdge (const DVect &pos, const double &radius=limits< double >::max())=0
 
virtual const IGeomEdgefindClosestEdge (const DVect &pos, const double &radius=limits< double >::max()) const =0
 
virtual IGeomEdgefindMatchingEdge (const IGeomPoint *end1, const IGeomPoint *end2)=0
 Searches for an existing edge data structure with nodes matching end1 and end2 (either way).
 
virtual const IGeomEdgefindMatchingEdge (const IGeomPoint *end1, const IGeomPoint *end2) const =0
 Searches for an existing edge data structure with nodes matching end1 and end2 (either way).
 
virtual IContainergetEdgeContainer ()=0
 Returns an IContainer interface pointer for the container of all IGeomEdge objects.
 
virtual const IContainergetEdgeContainer () const =0
 Returns an IContainer interface pointer for the container of all IGeomEdge objects.
 
virtual IGeomPolycreatePoly ()=0
 
virtual IGeomPolygetFirstPoly ()=0
 Returns the first IGeomPoly object of all those contained in the set. Call IGeomPoly::getNextPoly to traverse the list. May return 0.
 
virtual const IGeomPolygetFirstPoly () const =0
 Returns the first IGeomPoly object of all those contained in the set. Call IGeomPoly::getNextPoly to traverse the list. May return 0.
 
virtual IGeomPolyfindPolyWithID (uint64 id)=0
 Find the IGeomPoly with ID number matching id. This search will take less than linear time. May return 0.
 
virtual const IGeomPolyfindPolyWithID (uint64 id) const =0
 Find the IGeomPoly with ID number matching id. This search will take less than linear time. May return 0.
 
virtual IGeomPolyfindClosestPoly (const DVect &pos, const double &radius=limits< double >::max())=0
 
virtual const IGeomPolyfindClosestPoly (const DVect &pos, const double &radius=limits< double >::max()) const =0
 
virtual IGeomEdgeaddNodeToPoly (IGeomPoly *poly, IGeomPoint *point)=0
 
virtual IGeomEdgeclosePoly (IGeomPoly *poly)=0
 
virtual IContainergetPolyContainer ()=0
 Returns an IContainer interface pointer for the container of all IGeomPoly objects.
 
virtual const IContainergetPolyContainer () const =0
 Returns an IContainer interface pointer for the container of all IGeomPoly objects.
 
virtual IContainer::signal_typegetPointMovedSignal () const =0
 Returns a signal that gets called every time a point is moved.
 
virtual IContainer::signal_typegetEdgeMovedSignal () const =0
 Returns a signal that gets called every time an edge is moved.
 
virtual IContainer::signal_typegetPolyMovedSignal () const =0
 Returns a signal that gets called every time a polygon is moved.
 
virtual QList< const IGeomPoly * > getEdgeConnectedMesh (const IGeomPoly *face) const =0
 Return a list of all of those polygons in the current set that are edge connected with /a poly.
 
virtual QList< const IGeomEdge * > getVertexConnectedMesh (const IGeomEdge *edge) const =0
 Return a list of all of those edges in the current set that are vertex connected with /a edge.
 
virtual QList< const IGeomEdge * > getVertexConnectedEdges (const IGeomPoint *point) const =0
 Return a list of all of those edges in the current set that are vertex connected with /a point.
 
virtual bool sharePoint (const IGeomEdge *edge1, const IGeomEdge *edge2, const IGeomPoint **shared=0) const =0
 
virtual QPair< IBodyBlock *, IBodyBlock * > getFaceConnectedBlocks (const IGeomPoly *face) const =0
 Return pair of blocks connected to the face.
 
virtual IGeomPolyfindMatchingFace (const FArray< const IGeomPoint * > &points)=0
 Finds the face that matches the provided points. If no match can be found returns zero (null-pointer).
 
virtual const IGeomPolyfindMatchingFace (const FArray< const IGeomPoint * > &points) const =0
 Finds the face that matches the provided points. If no match can be found returns zero (null-pointer).
 
virtual IBodyBlockcreateBlock (FArray< DVect > *points=0, IBodyBlock::blockType blocktype=IBodyBlock::blockType::Hexahedron, IGroupID *addgroup=0)=0
 
virtual bool getValidateFlag () const =0
 return value of validateFlag (used by createBlock)
 
virtual void setValidateFlag (bool flag)=0
 sets validate flag (used by createBlock)
 
virtual void deleteBlock (IBodyBlock *block)=0
 erase block and all its faces, edges, points if they are free (not belong to other blocks).
 
virtual IBodyBlockgetFirstBlock ()=0
 Returns the first IBodyBlock object of all those contained in the set. Call IGeomPoly::getNextBlock to traverse the list. May return 0.
 
virtual const IBodyBlockgetFirstBlock () const =0
 Returns the first IBodyBlock object of all those contained in the set. Call IGeomPoly::getNextBlock to traverse the list. May return 0.
 
virtual IBodyBlockfindBlockWithID (uint64 id)=0
 Find the IBodyBlock with ID number matching id. This search will take less than linear time. May return 0.
 
virtual const IBodyBlockfindBlockWithID (uint64 id) const =0
 Find the IBodyBlock with ID number matching id. This search will take less than linear time. May return 0.
 
virtual IContainergetBlockContainer ()=0
 Returns an IContainer interface pointer for the container of all IBodyBlock objects.
 
virtual const IContainergetBlockContainer () const =0
 
virtual void setTolerance (double tolerance)=0
 
virtual bool getAutoTolerance () const =0
 get flag auto-tolerance on/off – if it is on, tolerance will be set based on recommended tolerance allways.
 
virtual double getRecommendedTolerance () const =0
 Return the recommended/default tolerance. For the current tolerance setting, call getTolerance().
 
virtual double getTolerance () const =0
 Get tolerance used in the body set methods.
 
virtual void Translate (const DVect &vec, const IRange *filter=0)=0
 Adds vector to all points in the filter.
 
virtual void MoveX (double val, const IRange *filter=0)=0
 Makes X component of all points in the filter val.
 
virtual void MoveY (double val, const IRange *filter=0)=0
 Makes Y component of all points in the filter val.
 
virtual void MoveZ (double val, const IRange *filter=0)=0
 Makes Z component of all points in the filter val.
 
virtual bool getProxyBlock (uint64 faceID, FArray< DVect > &proxyBlock, bool useAdjacent=false, IBodyBlock::blockType blocktype=IBodyBlock::blockType::Default) const =0
 
virtual QList< FArray< DVect > > getProxyBlocks (uint64 faceID, QList< bool > *validB, IBodyBlock::blockType blocktype=IBodyBlock::blockType::Default, QList< FArray< uint64 > > *adjacentFaces=0, QList< IBodyBlock::blockValidState > *proxyState=0) const =0
 
virtual bool proxyBlocksForExtrusionFromFaces (QMap< const IGeomPoly *, FArray< DVect > > &proxyBlocks, const QList< uint64 > &facesIDs, bool keepShape, QString &message, double *distance=0, const DVect *origin=0, const double radius=0.0, const QString axis="") const =0
 
virtual const std::vector< const IBodyFace * > & getAxialSymmetryLastFaces () const =0
 
virtual double getDihedralCut (bool rad=true) const =0
 get dihedralCut that is in use by getProxyBlocks (default 3Pi/4). If flag rad=false, returns angle in degree.
 
virtual void setDihedralCut (double cut, bool rad=true)=0
 set dihedralCut that is in use by getProxyBlocks (default 3Pi/4). If flag rad=false, assumes angle in degree.
 
virtual void computeMidpoints (const IBodyBlock *block, const IGeomPoly *face, const DVect &midfacePointIn, DVect &midfacePointOut, FArray< DVect > &edgesMidp) const =0
 
virtual bool getArrestTriangle () const =0
 
virtual QList< const IGeomSet * > getExternalGeomSets () const =0
 returns list of external geometric set object, that the body set works with
 
virtual void listObjectAlongLine (const DVect &beg, const DVect &e, const double &radius, FArray< const IGeomPoint * > *retPoints, FArray< QPair< const IGeomEdge *, DVect > > *retEdges, FArray< QPair< const IGeomPoly *, DVect > > *intersectPolyPoints) const =0
 returns a list of external objects along the line. All objects returned will be sorted by the distance from the "beg" point.
 
virtual void listObjectAlongCone (const DVect &origin, const DVect &begining, const double &angle, FArray< const IGeomPoint * > *retPoints, FArray< QPair< const IGeomEdge *, DVect > > *retEdges, FArray< QPair< const IGeomPoly *, DVect > > *intersectPolyPoints, const double *depth=0, uint32 whatToReturnFlag=0, FArray< const IBodyBlock * > *retBlocks=0) const =0
 
virtual void listObjectAlongCylinder (const DVect &origin, const DVect &begining, const double &radius, FArray< const IGeomPoint * > *retPoints, FArray< QPair< const IGeomEdge *, DVect > > *retEdges, FArray< QPair< const IGeomPoly *, DVect > > *intersectPolyPoints, const double *depth=0, uint32 whatToReturnFlag=0, FArray< const IBodyBlock * > *retBlocks=0) const =0
 
virtual void selectedEdgeControlPoints (QList< QPair< const IBodyEdge *, uint32 > > &selectedCP) const =0
 returns list of selected control points in the form <edge,indexCP>, where edge is a pointer to an edge and indexCP – control point index.
 
virtual void selectEdgeControlPoint (const IBodyEdge *, uint32 indexCP) const =0
 
virtual void deselectEdgeControlPoint (const IBodyEdge *, uint32 indexCP) const =0
 
virtual void clearAllSelectedControlPoints () const =0
 
virtual void selectedFaceControlPoints (QSet< uint64 > &selectedEncodedCpIds) const =0
 
virtual uint64 countSelectedFaceControlPoints () const =0
 returns the number of selected face control points
 
virtual bool isSelectedFaceControlPoint (uint64 encodedFaceControlPointId) const =0
 return whether the specified control point is selected
 
virtual uint64 selectedControlPointFaceID () const =0
 return the ID of the face that holds selected control points
 
virtual void selectFaceControlPoint (const IBodyFace *, uint32 indexN, uint32 indexM) const =0
 
virtual void deselectFaceControlPoint (const IBodyFace *, uint32 indexN, uint32 indexM) const =0
 
virtual std::vector< const IThing * > marqueeDeepSelect (bool perspective, const FArray< DVect > &nearSelRect, const FArray< DVect > &farSelRect, const DVect &selectionDirection, TType objType) const =0
 
virtual bool getDihedralBasedValidation () const =0
 return flag if dihedral measure is used in validation of the block.
 
virtual int importFromFlac3D (IParse *par, const IString &fileName, bool fileRecord=true)=0
 imports flac3d grid file, returns zero on success, throws exceptions if somthing wrong. Register input file if fileRecord=true (default).
 
virtual void validateAllBlocks (uint32 *numberOfNotValid=0)=0
 validates cellspace for edges faces and blocks and computes validState for all blocks. May provide number of not blocks.
 
virtual bool makeAllHexBySplitBlocks (QString *message=0)=0
 Make all hex by splitting blocks (all quad face are split)
 

Static Public Member Functions

static void removeProxyBlockMiddlePoints (FArray< DVect > &a)
 
static uint64 encodeFaceCpID (uint64 faceID, quint16 n, quint16 m)
 encode face id, n and m into a uint64 control point id
 
static void decodeFaceCpID (uint64 cpID, uint64 *faceID, quint16 *n, quint16 *m)
 decode a uint64 control point id into its component parts
 

Static Public Attributes

static const TType type_ = 0x53a89c9f
 The type identification number for this class, for use in convert_cast() and convert_getcast().
 

Detailed Description

A container for a single "set" of body-block elements. A body-block set is a named collection of body-block elements (points, edges, polygons, blocks) as an organization layer.

Member Function Documentation

◆ addNodeToPoly()

virtual IGeomEdge * body::IBodySet::addNodeToPoly ( IGeomPoly * poly,
IGeomPoint * point )
pure virtual

Adds a node to the polygon, by creating and adding an edge object from the free end of the last edge to this point. Returns the edge created. The first point added will create an edge of length zero (from the point to the point). The second point added will expand the first edge, and so will return 0 since no new edge is created. Additional points will create additional edges, returning the edges created.

◆ closePoly()

virtual IGeomEdge * body::IBodySet::closePoly ( IGeomPoly * poly)
pure virtual

Closes the IGeomPoly by created an edge connecting the free end of the first edge to the free end of the second. Will cause an exception if this is not possible for any reason. Returns the edge created.

◆ computeMidpoints()

virtual void body::IBodySet::computeMidpoints ( const IBodyBlock * block,
const IGeomPoly * face,
const DVect & midfacePointIn,
DVect & midfacePointOut,
FArray< DVect > & edgesMidp ) const
pure virtual

computeMidpoints: inpout - block, it's face, input midpoint. Output midfacepointOut(exactly on bilinear surface), edges midpoints. on a quad:calculates edges midpoints from a face midpoint using bilinear survace interpolation. Should work on both planar and non-planar faces-quads. the input midpoint should be somewhere near the surface. It will be projected on a bilinear surface along the normal line. edges midpoints are not nessery "mid points" but somewhere on a edge according to bilinear split. on a triangle : input face midpoint does not mater. midfacePointOut – will be face centroid, all edges midpoints will be edges centroids – true mid points.

◆ createBlock()

virtual IBodyBlock * body::IBodySet::createBlock ( FArray< DVect > * points = 0,
IBodyBlock::blockType blocktype = IBodyBlock::blockType::Hexahedron,
IGroupID * addgroup = 0 )
pure virtual

Creates an IBodyBlock object associated with this set from array of points If an id number is not specified it is given one automatically. If an IBodyBlock object with that id number already exists, an exception occurs. blocktype enumerator specifies type of the block created. If validateFlag is set (set by default) it will check first if the proposed block is valid (does not intersect others and shares atleast one common face) against all others blocks: if it is not valid nothing will happen and null (0) will be returned.

◆ createEdge()

virtual IGeomEdge * body::IBodySet::createEdge ( IGeomPoint * end1,
IGeomPoint * end2 )
pure virtual

Creates a new IGeomEdge object associated with this container, from point end1 to point end2. Either end1 or end2 may be null, in which case the created edge is not valid. If an id number is not specified it is given one automatically. If an IGeomEdge object with that id number already exists, an exception occurs.

◆ createPoint()

virtual IGeomPoint * body::IBodySet::createPoint ( const DVect & pos)
pure virtual

Creates a new IGeomPoint object associated with the set, at position pos. If id is specified it is created with that id number, else one is assigned. Will cause an error if id is specified and a point with that id number already exists.

◆ createPoly()

virtual IGeomPoly * body::IBodySet::createPoly ( )
pure virtual

Creates an IGeomPoly object associated with this set, in an invalid state. If an id number is not specified it is given one automatically. If an IGeomPoly object with that id number already exists, an exception occurs.

◆ findClosestEdge() [1/2]

virtual const IGeomEdge * body::IBodySet::findClosestEdge ( const DVect & pos,
const double & radius = limits< double >::max() ) const
pure virtual

Find the IGeomEdge who's location is closest to pos, within a limiting distance of radius. May return 0. Currently takes linear time, but hopefully will take nearly constant time in the future.

◆ findClosestEdge() [2/2]

virtual IGeomEdge * body::IBodySet::findClosestEdge ( const DVect & pos,
const double & radius = limits< double >::max() )
pure virtual

Find the IGeomEdge who's location is closest to pos, within a limiting distance of radius. May return 0. Currently takes linear time, but hopefully will take nearly constant time in the future.

◆ findClosestPointV() [1/2]

virtual const IGeomPoint * body::IBodySet::findClosestPointV ( const DVect & pos,
const double & radius = limits< double >::max(),
bool validate = true ) const
pure virtual

Find the IGeomPoint who's location is closest to pos, within a limiting distance of radius. May return 0. Currently takes linear time, but hopefully will take nearly constant time in the future.

◆ findClosestPointV() [2/2]

virtual IGeomPoint * body::IBodySet::findClosestPointV ( const DVect & pos,
const double & radius = limits< double >::max(),
bool validate = true )
pure virtual

Find the IGeomPoint who's location is closest to pos, within a limiting distance of radius. May return 0. Currently takes linear time, but hopefully will take nearly constant time in the future.

◆ findClosestPoly() [1/2]

virtual const IGeomPoly * body::IBodySet::findClosestPoly ( const DVect & pos,
const double & radius = limits< double >::max() ) const
pure virtual

Find the IGeomPoly who's location is closest to pos, within a limiting distance of radius. May return 0. Currently takes linear time, but hopefully will take nearly constant time in the future.

◆ findClosestPoly() [2/2]

virtual IGeomPoly * body::IBodySet::findClosestPoly ( const DVect & pos,
const double & radius = limits< double >::max() )
pure virtual

Find the IGeomPoly who's location is closest to pos, within a limiting distance of radius. May return 0. Currently takes linear time, but hopefully will take nearly constant time in the future.

◆ getAxialSymmetryLastFaces()

virtual const std::vector< const IBodyFace * > & body::IBodySet::getAxialSymmetryLastFaces ( ) const
pure virtual

after an axial symmetry command is processed, this function can be called to get a list of the last layer of faces that was added so the GUI can select them

◆ getGeometryCode()

virtual uint32 body::IBodySet::getGeometryCode ( ) const
pure virtual

Returns a notification code (see INoticeManager) indicating a geomtric change on some element of the set. This includes object creation/destruction, point movement, etc.

◆ getProxyBlock()

virtual bool body::IBodySet::getProxyBlock ( uint64 faceID,
FArray< DVect > & proxyBlock,
bool useAdjacent = false,
IBodyBlock::blockType blocktype = IBodyBlock::blockType::Default ) const
pure virtual

On the supplied faceID provides a proxy block that can be added to the BodySet by "body create ..." command. Returns true if provided proxyBlock is valid(does not intersect others blocks). If flag useAdjacent is true –it will try produce proxi block with best fit possible attachment to adjacent blocks as well. if useAdjacent is true, the parameter blockType is ignored (allways Default)

◆ getProxyBlocks()

virtual QList< FArray< DVect > > body::IBodySet::getProxyBlocks ( uint64 faceID,
QList< bool > * validB,
IBodyBlock::blockType blocktype = IBodyBlock::blockType::Default,
QList< FArray< uint64 > > * adjacentFaces = 0,
QList< IBodyBlock::blockValidState > * proxyState = 0 ) const
pure virtual

On the supplied faceID returns a list of proxy blocks: blocks extruded from the face along external normal; blocks attached to all pars (face –adjacent face); blocks attached to all triplet faces (face – adjacent face – attached by edge face) to the BodySet by "body create ..." command. Returns true if provided proxyBlock is valid(does not intersect others blocks). All pairs of faces (and triplets of faces) are taken into account if dihedral angle with the face is less than diherdalCut (default 3Pi/4). adjacentFaces, if non-zero and if falidateFlag=false, will contain corresponding faces id, used to create proxy blocks (validation of the proxy blocks will be not done and validB not set). if adjacentFaces non-zero and if falidateFlag=true (default case), will contain all faces that are detected as adjacent using tolerance (see getTolerance())

◆ listObjectAlongCone()

virtual void body::IBodySet::listObjectAlongCone ( const DVect & origin,
const DVect & begining,
const double & angle,
FArray< const IGeomPoint * > * retPoints,
FArray< QPair< const IGeomEdge *, DVect > > * retEdges,
FArray< QPair< const IGeomPoly *, DVect > > * intersectPolyPoints,
const double * depth = 0,
uint32 whatToReturnFlag = 0,
FArray< const IBodyBlock * > * retBlocks = 0 ) const
pure virtual

returns list of external objects allong the cone. All object returned will be sorted by the distance from the "begining" point. All objects before "begining" will be discarded origin – point of origin of the cone. If "depth" privided – only object withing distance "depth" from the begining along the cone line ( "origin","begining") will be returned. if whatToReturnFlag = 0 (default), it will return external objects only (from geom. sets), if whatToreturnFlag = 1 it will return objects from the body set only, if whatToReturnFlag >= 2 – it will return objects from geom.sets and the body sets.

◆ listObjectAlongCylinder()

virtual void body::IBodySet::listObjectAlongCylinder ( const DVect & origin,
const DVect & begining,
const double & radius,
FArray< const IGeomPoint * > * retPoints,
FArray< QPair< const IGeomEdge *, DVect > > * retEdges,
FArray< QPair< const IGeomPoly *, DVect > > * intersectPolyPoints,
const double * depth = 0,
uint32 whatToReturnFlag = 0,
FArray< const IBodyBlock * > * retBlocks = 0 ) const
pure virtual

returns list of external objects allong the cylinder. All object returned will be sorted by the distance from the "begining" point. All objects before "begining" will be discarded origin – point of origin of the cylinder(defines cylinder direction along with begining – from origin to begining). If "depth" privided – only object withing distance "depth" from the begining along the cylinder line ( "origin","begining") will be returned. if whatToReturnFlag = 0 (default), it will return external objects only (from geom. sets), if whatToreturnFlag = 1 it will return objects from the body set only, if whatToReturnFlag >= 2 – it will return objects from geom.sets and the body sets.

◆ marqueeDeepSelect()

virtual std::vector< const IThing * > body::IBodySet::marqueeDeepSelect ( bool perspective,
const FArray< DVect > & nearSelRect,
const FArray< DVect > & farSelRect,
const DVect & selectionDirection,
TType objType ) const
pure virtual

return a list of objects within a selection rectangle by using deep selection; a boolean tells whether perspective or parallel projection is being used; 4 points, in counter-clockwise order, define a rectangle at the near side of the viewing frustrum; 4 points, in counter-clockwise order, define a rectangle at the far side of the frustrum, for use with perspective projection; a vector indicates the direction of the selection rectangle (near to far); the type of object to return is indicated; this function should not do the actual selection, just return a list of objects.

◆ proxyBlocksForExtrusionFromFaces()

virtual bool body::IBodySet::proxyBlocksForExtrusionFromFaces ( QMap< const IGeomPoly *, FArray< DVect > > & proxyBlocks,
const QList< uint64 > & facesIDs,
bool keepShape,
QString & message,
double * distance = 0,
const DVect * origin = 0,
const double radius = 0.0,
const QString axis = "" ) const
pure virtual

For the supplied faces (facesIDs) returns proxy blocks to create a layer of new blocks attached to the faces. Returns true for success. The keep-shape argument applies to linear extrusions and determines whether the shape of the starting face will be duplicated at the end of the extrusion based on edge end point positions and edge control points (not face control points). "Message" is empty if successful. All faces must be external and all adjacent pairs of faces must form an angle more than dihedralcut. Populates proxyBlocks with (face – proxy block) map. Blocks are extruded from the faces in the direction of simple average of external normals of the faces. Distance, if supplied, is the extrusion distance. By default it is computed from average diagonal of attached blocks extent. If distance is supplied with value 0.0L the default distance will be returned. If origin is supplied, distance is required and will be interpretted as an angle of up to 90 degrees and proxy blocks will sweep through the angle about the specified axis using origin as the center of rotation. When origin is supplied, radius and axis are required. Axis should be "X", "Y" or "Z".

◆ removeProxyBlockMiddlePoints()

static void body::IBodySet::removeProxyBlockMiddlePoints ( FArray< DVect > & a)
inlinestatic

Function proxyBlocksForExtrusionFromFaces() added points in the middle of an array to simulate curvature; call this function to remove those middle points

◆ selectedFaceControlPoints()

virtual void body::IBodySet::selectedFaceControlPoints ( QSet< uint64 > & selectedEncodedCpIds) const
pure virtual

returns a set of selected control points where each element is encoded: (face ID << 32) + (n << 16) + m. returns a hash set for speed in finding a particular selection;

◆ setTolerance()

virtual void body::IBodySet::setTolerance ( double tolerance)
pure virtual

Set tollerance for considering points be the same in all spatiall seach if it set to 0.0 – default tolerance will be used


The documentation for this class was generated from the following file: