///////////////////////////////////////////////////////////////////////////////
// Copyright (C) 2002-2025, Open Design Alliance (the "Alliance").
// All rights reserved.
//
// This software and its documentation and related materials are owned by
// the Alliance. The software may only be incorporated into application
// programs owned by members of the Alliance, subject to a signed
// Membership Agreement and Supplemental Software License Agreement with the
// Alliance. The structure and organization of this software are the valuable
// trade secrets of the Alliance and its suppliers. The software is also
// protected by copyright law and international treaty provisions. Application
// programs incorporating this software must include the following statement
// with their copyright notices:
//
// This application incorporates Open Design Alliance software pursuant to a license
// agreement with Open Design Alliance.
// Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance.
// All rights reserved.
//
// By use of this software, its documentation or related materials, you
// acknowledge and accept the above terms.
///////////////////////////////////////////////////////////////////////////////
#ifndef _ODTV_SUBGROUPDATA_H_INCLUDED_
#define _ODTV_SUBGROUPDATA_H_INCLUDED_
#include "TvSceneIObject.h"
#include "TvGeometryData.h"
class OdTvVisualStyleId;
class OdPointCloudScanDatabase;
class OdPointCloudProjectDatabase;
class OdPointCloudDataSource;
//DOM-IGNORE-BEGIN
typedef OdRxObject OdDbBaseDatabase;
//DOM-IGNORE-END
/** \details
This is an abstract interface class for an group object.
*/
class ODTV_EXPORT OdTvSubGroupData : public OdTvIObject
{
public:
/** \details
Retrieves the current name of the group object.
\param rc [out] A pointer to a value of type that contains the result of the retrieve operation.
\returns The current name of the group object.
\remarks
The name is an arbitrary non-empty string that can contain letters, digits, blank spaces,
underscores, and some special characters, but cannot contain inadmissible letters
("<", ">", "\", "/", ":", ";", "?", ",", "*", "|", "=", "'", quotation marks and some special characters created with Unicode fonts).
If the rc parameter is not null and the group object name was successfully returned, the rc parameter accepts the tvOk value; otherwise it contains an appropriate error code.
*/
virtual OdString getName(OdTvResult* rc = nullptr) const = 0;
/** \details
Sets a new name for the group object.
\param sName [in] A new name of the group object.
\returns A value of type that contains the result of the operation.
\remarks
The name is an arbitrary non-empty string that can contain letters, digits, blank spaces,
underscores, and some special characters, but cannot contain inadmissible letters
("<", ">", "\", "/", ":", ";", "?", ",", "*", "|", "=", "'", quotation marks and some special characters created with Unicode fonts).
If the new name of the group object was successfully set, the method returns the tvOk value; otherwise it returns an appropriate error code.
*/
virtual OdTvResult setName(const OdString& sName) = 0;
/** \details
Returns true if and only if the sub group has no geometries
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns true if and only if the y has no sub groups, ies or inserts.
\remarks
If the rc parameter is not null and the flag value has been successfully returned, the rc parameter accepts tvOk value; otherwise it contains an
appropriate error code.
*/
virtual bool isEmpty(OdTvResult* rc = nullptr) const = 0;
/** \details
Rotates the object around the X, Y and Z axes.
\param x [in] A rotation angle around the X-axis (in degrees).
\param y [in] A rotation angle around the Y-axis (in degrees).
\param z [in] A rotation angle around the Z-axis (in degrees).
\returns A value of the type that contains the result of the operation.
\remarks
If the object has been successfully rotated, the method returns tvOk; otherwise it returns an appropriate error code.
The method joins the appropriate rotation matrix to the object's transformation matrix.
*/
virtual OdTvResult rotate(double x, double y, double z) = 0;
/** \details
Rotates the object around a specified arbitrary vector.
\param aVector [in] An arbitrary vector.
\param ang [in] A rotation angle in degrees.
\param center [in] A rotation center point.
\returns A value of the type that contains the result of the operation.
\remarks
If the object has been successfully rotated, the method returns tvOk; otherwise it returns an appropriate error code.
The method joins the appropriate rotation matrix to the object's transformation matrix.
*/
virtual OdTvResult rotateAxis(const OdTvVector& aVector, double ang, const OdTvPoint& center = OdTvPoint::kOrigin) = 0;
/** \details
Moves the object geometry along the X, Y, Z axes.
\param x [in] A translation distance along the X-axis (in degrees).
\param y [in] A translation distance along the Y-axis (in degrees).
\param z [in] A translation distance along the Z-axis (in degrees).
\returns A value of the type that contains the result of the operation.
\remarks
If the object has been successfully moved, the method returns tvOk; otherwise it returns an appropriate error code.
The method joins the translation matrix to the object's transformation matrix.
*/
virtual OdTvResult translate(double x, double y, double z) = 0;
/** \details
Moves the object geometry along a specified vector for a distance that is equal to the vector length.
\param aVector [in] A translation vector.
\returns A value of the type that contains the result of the operation.
\remarks
If the object has been successfully moved, the method returns tvOk; otherwise it returns an appropriate error code.
The method joins the translation matrix to the object's transformation matrix.
*/
virtual OdTvResult translate(const OdTvVector& aVector) = 0;
/** \details
Scales the object along the X, Y and Z axes using specified multipliers.
\param x [in] A scale multiplier for the X-axis.
\param y [in] A scale multiplier for the Y-axis.
\param z [in] A scale multiplier for the Z-axis.
\returns A value of the type that contains the result of the operation.
\remarks
If the object has been successfully scaled, the method returns tvOk; otherwise it returns an appropriate error code.
The method joins the scaling matrix to the object's transformation matrix.
*/
virtual OdTvResult scale(double x, double y, double z) = 0;
/** \details
Sets a new transformation matrix that can rotate, translate (move) and scale the object.
\param matrix [in] A transformation matrix object.
\returns A value of the type that contains the result of the operation.
\remarks
If the transformation matrix has been successfully set, the method returns tvOk; otherwise it returns an appropriate error code.
*/
virtual OdTvResult setModelingMatrix(const OdTvMatrix& matrix) = 0;
/** \details
Retrieves the current transformation matrix for the object.
A transformation matrix can rotate, translate (move) and scale the object.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns The transformation matrix represented as an instance of the class.
\remarks
If the rc parameter is not null and the transformation matrix has been successfully returned, the rc parameter accepts tvOk value; otherwise it contains an
appropriate error code.
*/
virtual OdTvMatrix getModelingMatrix(OdTvResult* rc = nullptr) const = 0;
/** \details
Appends a new transformation matrix to the object.
Appending a new transformation matrix means that the new matrix and existing matrix will be multiplied.
\param matrix [in] A new transformation matrix object to append.
\returns A value of the type that contains the result of the operation.
\remarks
If the new transformation matrix has been successfully appended, the method returns tvOk; otherwise it returns an appropriate error code.
*/
virtual OdTvResult appendModelingMatrix(const OdTvMatrix& matrix) = 0;
/** \details
Sets a new color for the object.
\param color [in] A new color value to be set.
\returns A value of type that contains the result of the operation.
\remarks
If a new color was successfully set, the method returns the tvOk value; otherwise it returns an appropriate error code.
\sa
*/
virtual OdTvResult setColor(const OdTvColorDef& color) = 0;
/** \details
Retrieves the current color of the object.
\param rc [out] A pointer to a value of type that contains the result of the retrieve operation.
\returns The current color represented with an object.
\remarks
The returned color definition object represents a color in RGB format, an inherited color, or a color index in the palette.
If the rc parameter is not null and the current color definition object was successfully returned, the rc parameter accepts the tvOk value; otherwise it contains an appropriate error code.
\sa
*/
virtual OdTvColorDef getColor(OdTvResult* rc = nullptr) = 0;
/** \details
Sets a new lineweight for the object.
\param lw [in] A new lightweight definition to be set.
\returns A value of type that contains the result of the operation.
\remarks
If the new lightweight was successfully set, the method returns the tvOk value; otherwise it returns an appropriate error code.
\sa
*/
virtual OdTvResult setLineWeight(const OdTvLineWeightDef& lw) = 0;
/** \details
Retrieves the current lineweight for the object.
\param rc [out] A pointer to a value of type that contains the result of the retrieve operation.
\returns The current lineweight definition object applied to the object.
\remarks
If the rc parameter is not null and the current lightweight definition object was successfully returned, the rc parameter accepts the tvOk value; otherwise it contains an appropriate error code.
\sa
*/
virtual OdTvLineWeightDef getLineWeight(OdTvResult* rc = nullptr) = 0;
/** \details
Sets a new linetype for the object.
\param lt [in] A new linetype definition object to be set.
\returns A value of type that contains the result of the operation.
\remarks
If the new linetype definition object was successfully set, the method returns the tvOk value; otherwise it returns an appropriate error code.
\sa
*/
virtual OdTvResult setLinetype(const OdTvLinetypeDef& lt) = 0;
/** \details
Retrieves the current linetype for the object.
\param rc [out] A pointer to a value of type that contains the result of the retrieve operation.
\returns The current linetype definition object applied to the object.
\remarks
If the rc parameter is not null and the current linetype definition object was successfully returned, the rc parameter accepts the tvOk value; otherwise it contains an appropriate error code.
\sa
*/
virtual OdTvLinetypeDef getLinetype(OdTvResult* rc = nullptr) = 0;
/** \details
Sets the linetype scale value for the group.
\param linetypeScale [in] A new linetype scale value.
\returns A value of the type that contains the result of the operation.
\remarks
If the linetype scale has been successfully applied, the method returns tvOk, otherwise it returns an appropriate error code.
\sa
*/
virtual OdTvResult setLinetypeScale(double linetypeScale) = 0;
/** \details
Retrieves the current linetype scale of the group.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns The current linetype scale value.
\remarks
If the rc parameter is not null and the linetype scale value has been successfully returned, the rc parameter accepts the tvOk value; otherwise it contains an
appropriate error code.
\sa
*/
virtual double getLinetypeScale(OdTvResult* rc = nullptr) = 0;
/** \details
Sets a new layer for the object.
\param layer [in] A new layer definition object to be set.
\returns A value of type that contains the result of the operation.
\remarks
If the new layer definition object was successfully set, the method returns the tvOk value; otherwise it returns an appropriate error code.
\sa
*/
virtual OdTvResult setLayer(const OdTvLayerDef& layer) = 0;
/** \details
Retrieves the current layer for the object.
\param rc [out] A pointer to a value of type that contains the result of the retrieve operation.
\returns The current layer definition object applied to the object.
\remarks
If the rc parameter is not null and the current layer definition object was successfully returned, the rc parameter accepts the tvOk value; otherwise it contains an appropriate error code.
\sa
*/
virtual OdTvLayerDef getLayer(OdTvResult* rc = nullptr) = 0;
/** \details
Set a new visibility property value for the object.
\param visible [in] A new visibility definition object to be set.
\returns A value of type that contains the result of the operation.
\remarks
If the new visibility definition object was successfully set, the method returns the tvOk value; otherwise it returns an appropriate error code.
*/
virtual OdTvResult setVisibility(const OdTvVisibilityDef& visible) = 0;
/** \details
Retrieves the current visibility property value for the object.
\param rc [out] A pointer to a value of type that contains the result of the retrieve operation.
\returns The current visibility definition object applied to the object.
\remarks
If the rc parameter is not null and the current visibility definition object was successfully returned, the rc parameter accepts the tvOk value; otherwise it contains an appropriate error code.
*/
virtual OdTvVisibilityDef getVisibility(OdTvResult* rc = nullptr) const = 0;
/** \details
Sets the transparency property value for the object.
\param transparency [in] A new transparency property value.
\returns A value of the type that contains the result of the operation.
\remarks
If the transparency property value has been successfully applied, the method returns tvOk; otherwise it returns an appropriate error code.
*/
virtual OdTvResult setTransparency(const OdTvTransparencyDef& transparency) = 0;
/** \details
Retrieves the transparency property value for the object.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns The current transparency property value for the object.
\remarks
If the rc parameter is not null and the transparency property value has been successfully returned; the rc parameter accepts the tvOk value, otherwise it contains an
appropriate error code.
*/
virtual OdTvTransparencyDef getTransparency(OdTvResult* rc = nullptr) = 0;
/** \details
Sets the material for the object.
\param material [in] A material definition object.
\returns A value of type that contains the result of the operation.
\remarks
If the material has been successfully applied, the method returns tvOk; otherwise it returns an appropriate error code.
\sa
*/
virtual OdTvResult setMaterial(const OdTvMaterialDef& material) = 0;
/** \details
Retrieves the current material applied to the object.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns The current material definition for the .
\remarks
If the rc parameter is not null and the material definition has been successfully returned, the rc parameter accepts the tvOk value; otherwise it contains an
appropriate error code.
\sa
*/
virtual OdTvMaterialDef getMaterial(OdTvResult* rc = nullptr) const = 0;
/** \details
Sets a material mapper for the object. The material mapper is used to map the materials.
\param mapper [in] A material mapper definition object to be applied.
\returns A value of the type that contains the result of the operation.
\remarks
If the material mapper has been successfully applied, the method returns tvOk; otherwise it returns an appropriate error code.
\sa
*/
virtual OdTvResult setMaterialMapper(const OdTvMapperDef& mapper) = 0;
/** \details
Retrieves the current material mapper definition that is applied to the object.
The material mapper is used to map the materials.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns The current material mapper definition for the object.
\remarks
If the rc parameter is not null and the material mapper definition has been successfully returned, the rc parameter accepts the tvOk value; otherwise it contains an
appropriate error code.
\sa
*/
virtual OdTvMapperDef getMaterialMapper(OdTvResult* rc = nullptr) const = 0;
/** \details
Sets a new visual style for the sub group. The visual style should be compatible with the visual style assigned to the view.
This functionality should be used very carefully. The typical case for it is the customization of the highlighting.
\param vsId [in] An identifier of the visual style object.
\returns A value of the type that contains the result of the operation.
\remarks
If the visual style was successfully applied, the method returns tvOk; otherwise it returns an appropriate error code.
\sa
*/
virtual OdTvResult setVisualStyle(const OdTvVisualStyleId& vsId) = 0;
/** \details
Retrieves the current visual style applied to the sub group.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns The identifier of the current visual style object associated with the sub group.
\remarks
If the rc parameter is not null and the new visual style object's identifier was successfully returned, the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
\sa
*/
virtual OdTvVisualStyleId getVisualStyle(OdTvResult* rc = nullptr) const = 0;
/** \details
Adds a view object in which the object is displayed. By default the object is displayed in all views.
\param viewId [in] An identifier of a view object.
\returns A value of type that determines whether the addition of a view was successful or not.
\remarks
If the new view object was successfully added, the method returns the tvOk value; otherwise it returns an appropriate error code.
*/
virtual OdTvResult addViewDependency(const OdTvGsViewId& viewId) = 0;
/** \details
Removes a specified view object from the list of views in which the object can be displayed.
\param viewId [in] An identifier of a view object that should be removed.
\returns A value of type that determines whether the view object was successfully removed.
\remarks
If the specified view object was successfully removed, the method returns the tvOk value; otherwise it returns an appropriate error code.
*/
virtual OdTvResult removeViewDependency(const OdTvGsViewId& viewId) = 0;
/** \details
Removes all view dependencies of the object. This means that the object is displayed in all views.
\returns A value of type that contains the result of the operation.
\remarks
If all view dependencies were successfully removed, the method returns the tvOk value; otherwise it returns an appropriate error code.
*/
virtual OdTvResult removeViewDependencies() = 0;
/** \details
Checks whether the object is a view-dependent object.
The object is view dependent when it is displayed in specified views; otherwise it is view independent.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns true if the object is view dependent; otherwise the method returns false.
\remarks
If the rc parameter is not null and the view-dependent check was successful, the rc parameter accepts the tvOk value; otherwise it contains an appropriate error code.
*/
virtual bool isViewDependent(OdTvResult* rc = nullptr) = 0;
/** \details
Retrieves the set of views in which the object is displayed, if it is view dependent.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An array of view identifiers in which the object is displayed.
\remarks
If the rc parameter is not null and the array of view identifiers was successfully returned, the rc parameter accepts the tvOk value; otherwise it contains an appropriate error code.
*/
virtual OdTvGsViewIdsArray getViewDependencies(OdTvResult* rc = nullptr) = 0;
//DOM-IGNORE-BEGIN
//**************************************************************************************
// Group of the methods for the creating (inserting) the geometry in the sub group
//**************************************************************************************
//DOM-IGNORE-END
/** \details
Adds a simple line to the y.
\param start [in] A start (first) point of the line.
\param end [in] An end (second) point of the line.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An identifier for the created line object if the line has been successfully added;
otherwise it returns a null identifier.
\remarks
If the rc parameter is not null and the line has been created and added, the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
\sa
*/
virtual OdTvGeometryDataId appendPolyline(const OdTvPoint& start, const OdTvPoint& end, OdTvResult* rc = nullptr) = 0;
/** \details
Adds a polyline to the y.
\param points [in] An array of polyline points.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An identifier for the created polyline object if the polyline has been successfully added;
otherwise it returns a null identifier.
\remarks
If the rc parameter is not null and the polyline has been created and added, the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
\sa
*/
virtual OdTvGeometryDataId appendPolyline(const OdTvPointArray& points, OdTvResult* rc = nullptr) = 0;
/** \details
Adds a polyline to the y.
\param nPoints [in] A number of polyline points.
\param points [in] A pointer to the beginning of the polyline points array.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An identifier for the created polyline object if the polyline has been successfully added;
otherwise it returns a null identifier.
\remarks
If the rc parameter is not null and the polyline has been created and added, the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
\sa
*/
virtual OdTvGeometryDataId appendPolyline(OdInt32 nPoints, const OdTvPoint* points, OdTvResult* rc = nullptr) = 0;
/** \details
Adds an unfilled circle to the y.
\param firstPoint [in] A first point of the circle.
\param secondPoint [in] A second point of the circle.
\param thirdPoint [in] A third point of the circle.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An identifier for the created circle object if the circle has been successfully added;
otherwise it returns a null identifier.
\remarks
If the rc parameter is not null and the circle has been created and added, the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
\sa
*/
virtual OdTvGeometryDataId appendCircle(const OdTvPoint& firstPoint, const OdTvPoint& secondPoint, const OdTvPoint& thirdPoint, OdTvResult* rc = nullptr) = 0;
/** \details
Adds an unfilled circle (via radius) to the y.
\param center [in] A circle center point.
\param radius [in] A circle radius value.
\param normal [in] A circle normal vector.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An identifier for the created circle object if the circle has been successfully added;
otherwise it returns a null identifier.
\remarks
If the rc parameter is not null and the circle has been created and added, the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
\sa
*/
virtual OdTvGeometryDataId appendCircle(const OdTvPoint& center, double radius, const OdTvVector& normal, OdTvResult* rc = nullptr) = 0;
/** \details
Adds an unfilled circle arc to the y.
\param startPoint [in] A circle arc start point.
\param middlePoint [in] A circle arc middle point.
\param endPoint [in] A circle arc end point.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An identifier for the created circle arc if it has been successfully added;
otherwise it returns a null identifier.
\remarks
If the rc parameter is not null and the circle arc has been created and added, the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
\sa
*/
virtual OdTvGeometryDataId appendCircleArc(const OdTvPoint& startPoint, const OdTvPoint& middlePoint, const OdTvPoint& endPoint, OdTvResult* rc = nullptr) = 0;
/** \details
Adds a circle wedge to the y.
\param startPoint [in] A circle wedge start point.
\param middlePoint [in] A circle wedge middle point.
\param endPoint [in] A circle wedge end point.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An identifier for the created circle wedge if it has been successfully added;
otherwise it returns a null identifier.
\remarks
If the rc parameter is not null and the circle wedge has been created and added, the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
\sa
*/
virtual OdTvGeometryDataId appendCircleWedge(const OdTvPoint& startPoint, const OdTvPoint& middlePoint, const OdTvPoint& endPoint, OdTvResult* rc = nullptr) = 0;
/** \details
Adds an unfilled ellipse to the y.
\param centerPoint [in] A point that represents the ellipse center.
\param majorPoint [in] A point that represents the ellipse major radius.
\param minorPoint [in] A point that represents the ellipse minor radius.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An identifier for the created ellipse if it has been successfully added;
otherwise it returns a null identifier.
\remarks
If the rc parameter is not null and the ellipse has been created and added, the rc parameter accepts the tvOk value,
otherwise it contains an appropriate error code.
\sa
*/
virtual OdTvGeometryDataId appendEllipse(const OdTvPoint& centerPoint, const OdTvPoint& majorPoint, const OdTvPoint& minorPoint, OdTvResult* rc = nullptr) = 0;
/** \details
Adds an unfilled elliptical arc to the y.
\param centerPoint [in] A point that represents the ellipse center.
\param majorPoint [in] A point that represents the ellipse major radius.
\param minorPoint [in] A point that represents the ellipse minor radius.
\param startAng [in] The start angle for the elliptical arc.
\param endAng [in] The end angle for the elliptical arc.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An identifier for the created elliptical arc if it has been successfully added;
otherwise it returns a null identifier.
\remarks
If the rc parameter is not null and the elliptical arc has been created and added, the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
\sa
*/
virtual OdTvGeometryDataId appendEllipticArc(const OdTvPoint& centerPoint, const OdTvPoint& majorPoint, const OdTvPoint& minorPoint, double startAng, double endAng, OdTvResult* rc = nullptr) = 0;
/** \details
Adds an unfilled polygon to the y.
\param points [in] A polygon's vertices.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An identifier for the created polygon if it has been successfully added;
otherwise it returns a null identifier.
\remarks
If the rc parameter is not null and the polygon has been created and added, the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
\sa
*/
virtual OdTvGeometryDataId appendPolygon(const OdTvPointArray& points, OdTvResult* rc = nullptr) = 0;
/** \details
Adds an unfilled polygon to the y.
\param nPoints [in] A polygon vertex quantity.
\param points [in] A pointer to an array that contains polygon vertices.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An identifier for the created polygon if it has been successfully added;
otherwise it returns a null identifier.
\remarks
If the rc parameter is not null and the polygon has been created and added, the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
\sa
*/
virtual OdTvGeometryDataId appendPolygon(OdInt32 nPoints, const OdTvPoint* points, OdTvResult* rc = nullptr) = 0;
/** \details
Adds a shell to the y.
\param points [in] An array of points that represents shell vertices.
\param faces [in] An array that represents faces.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An identifier for the created shell if it has been successfully added;
otherwise it returns a null identifier.
\remarks
If the rc parameter is not null and the shell has been created and added, the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
Each face is represented in the face array in the following way: the first value is the number of face vertices, and other values
are the indices from the points array. The next value is the number of the next face's vertices followed by the indices
of the face vertices in the point array, and so on.
\sa
*/
virtual OdTvGeometryDataId appendShell(const OdTvPointArray& points, const OdInt32Array& faces, OdTvResult* rc = nullptr) = 0;
/** \details
Adds a shell to the y.
\param nPoints [in] A shell vertex quantity.
\param points [in] A pointer to an array that contains shell vertices.
\param faceListSize [in] A size of the face array.
\param faces [in] A pointer to an array of faces.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An identifier for the created shell if it has been successfully added;
otherwise it returns a null identifier.
\remarks
If the rc parameter is not null and the shell has been created and added, the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
Each face is represented in the face array in the following way: the first value is the number of face vertices, and other values
are the indices from the points array. The next value is the number of the next face vertices followed by the indices
of the face vertices in the point array, and so on.
\sa
*/
virtual OdTvGeometryDataId appendShell(OdInt32 nPoints, const OdTvPoint* points, OdInt32 faceListSize, const OdInt32* faces, OdTvResult* rc = nullptr) = 0;
/** \details
Adds a cylinder to the y as a shell.
\param point1 [in] A center point of the first cylinder circle.
\param point2 [in] A center point of the second cylinder circle.
\param radius [in] A cylinder radius.
\param caps [in] An option that determines whether caps of the cylinder are rendered.
\param nDiv [in] The quantity of edges that join the two circles and form the cylindrical surface.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An identifier for the created shell if it has been successfully added;
otherwise it returns a null identifier.
\remarks
If the rc parameter is not null and the shell has been created and added, the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
\sa
*/
virtual OdTvGeometryDataId appendShellFromCylinder(const OdTvPoint& point1, const OdTvPoint& point2, double radius, OdTvCylinderData::Capping caps = OdTvCylinderData::kBoth, int nDiv = 10, OdTvResult* rc = nullptr) = 0;
/** \details
Adds a cylinder to the y as a shell.
\param nPoints [in] A quantity of center points for cylinder circles.
\param points [in] A pointer to the beginning of the array of center points for cylinder circles.
\param nRadii [in] A size of the circle radius array.
\param radii [in] A pointer to the beginning of the circle radius values array.
\param caps [in] An option that determines whether caps of the cylinder are rendered.
\param nDiv [in] The quantity of edges that join the circles and form the cylindrical surface.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An identifier for the created shell if it has been successfully added;
otherwise it returns a null identifier.
\remarks
If the rc parameter is not null and the shell has been created and added, the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
This method can create cylindrical objects with different radii, for example cones.
\sa
*/
virtual OdTvGeometryDataId appendShellFromCylinder(OdInt32 nPoints, const OdTvPoint* points, OdInt32 nRadii, const double* radii, const OdTvCylinderData::Capping& caps = OdTvCylinderData::kBoth, int nDiv = 10, OdTvResult* rc = nullptr) = 0;
/** \details
Adds a sphere to the y as a shell.
\param center [in] A sphere center.
\param radius [in] A sphere radius.
\param axis [in] A vector that specifies the sphere axis.
\param primeMeridian [in] A vector that specifies the sphere prime meridian.
\param nDiv [in] A value that determines the quantity of vertices, faces and edges for the created shell.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An identifier for the created shell if it has been successfully added;
otherwise it returns a null identifier.
\remarks
If the rc parameter is not null and the shell has been created and added, the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
\sa
*/
virtual OdTvGeometryDataId appendShellFromSphere(const OdTvPoint& center, double radius, const OdTvVector& axis = OdTvVector(0., 1., 0.), const OdTvVector& primeMeridian = OdTvVector(1., 0., 0.), int nDiv = 10, OdTvResult* rc = nullptr) = 0;
/** \details
Adds a box to the y as a shell.
\param centerPt [in] A box center.
\param dLength [in] A box length.
\param dWidth [in] A box width.
\param dHeight [in] A box height.
\param baseNormal [in] A vector that specifies the box height direction (by other words defines the base plane).
\param lengthDir [in] A vector that specifies the box length direction.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An identifier for the created shell if it has been successfully added;
otherwise it returns a null identifier.
\remarks
If the rc parameter is not null and the shell has been created and added, the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
\sa
*/
virtual OdTvGeometryDataId appendShellFromBox(const OdTvPoint& centerPt, double dLength, double dWidth, double dHeight, const OdTvVector& baseNormal = OdTvVector::kZAxis, const OdTvVector& lengthDir = OdTvVector::kXAxis, OdTvResult* rc = nullptr) = 0;
/** \details
Adds a mesh to the y.
\param nRows [in] A count of mesh rows.
\param nColumns [in] A count of mesh columns.
\param verticesArray [in] An array of mesh vertices.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An identifier for the created mesh if it has been successfully added;
otherwise it returns a null identifier.
\remarks
If the rc parameter is not null and the mesh has been created and added, the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
\sa
*/
virtual OdTvGeometryDataId appendMesh(OdUInt32 nRows, OdUInt32 nColumns, const OdTvPointArray& verticesArray, OdTvResult* rc = nullptr) = 0;
/** \details
Adds a mesh to the y.
\param nRows [in] A count of mesh rows.
\param nColumns [in] A count of mesh columns.
\param nVertices [in] A count of mesh vertices.
\param vertices [in] A pointer to the beginning of the mesh vertices array.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An identifier for the created mesh if it has been successfully added;
otherwise it returns a null identifier.
\remarks
If the rc parameter is not null and the mesh has been created and added; the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
\sa
*/
virtual OdTvGeometryDataId appendMesh(OdUInt32 nRows, OdUInt32 nColumns, OdUInt32 nVertices, const OdTvPoint* vertices, OdTvResult* rc = nullptr) = 0;
/** \details
Adds a sphere to the y.
\param center [in] A sphere center.
\param radius [in] A sphere radius.
\param axis [in] A vector that specifies the sphere axis.
\param primeMeridian [in] A vector that specifies the sphere prime meridian.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An identifier for the created sphere if it has been successfully added;
otherwise it returns a null identifier.
\remarks
If the rc parameter is not null and the sphere has been created and added, the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
\sa
*/
virtual OdTvGeometryDataId appendSphere(const OdTvPoint& center, double radius, const OdTvVector& axis = OdTvVector(0., 1., 0.), const OdTvVector& primeMeridian = OdTvVector(1., 0., 0.), OdTvResult* rc = nullptr) = 0;
/** \details
Adds a cylinder to the y.
\param point1 [in] A center point of the first cylinder circle.
\param point2 [in] A center point of the second cylinder circle.
\param radius [in] A cylinder radius.
\param caps [in] An option that determines whether caps of the cylinder are rendered.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An identifier for the created cylinder if it has been successfully added;
otherwise it returns a null identifier.
\remarks
If the rc parameter is not null and the cylinder has been created and added, the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
\sa
*/
virtual OdTvGeometryDataId appendCylinder(const OdTvPoint& point1, const OdTvPoint& point2, double radius, OdTvCylinderData::Capping caps = OdTvCylinderData::kBoth, OdTvResult* rc = nullptr) = 0;
/** \details
Adds a cylinder to the y.
\param points [in] An array of center points for cylinder circles.
\param radii [in] An array of circle radii values.
\param caps [in] An option that determines whether caps of the cylinder are rendered.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An identifier for the created cylinder if it has been successfully added;
otherwise it returns a null identifier.
\remarks
If the rc parameter is not null and the cylinder has been created and added, the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
This method can create a cylindric object with different radii, for example cones.
\sa
*/
virtual OdTvGeometryDataId appendCylinder(const OdTvPointArray& points, const OdDoubleArray& radii, OdTvCylinderData::Capping caps = OdTvCylinderData::kBoth, OdTvResult* rc = nullptr) = 0;
/** \details
Adds a poly cylinder to the y.
\param nPoints [in] A quantity of center points for cylinder circles.
\param points [in] A pointer to the beginning of the array of center points for cylinder circles.
\param nRadii [in] A size of the circle radius array.
\param radii [in] A pointer to the beginning of the circle radius values array.
\param caps [in] An option that determines whether caps of the cylinder are rendered.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An identifier for the created cylinder if it has been successfully added;
otherwise it returns a null identifier.
\remarks
If the rc parameter is not null and the cylinder has been created and added, the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
This method can create a cylindric object with different radii (a poly cylinder), for example cones.
\sa
*/
virtual OdTvGeometryDataId appendCylinder(OdInt32 nPoints, const OdTvPoint* points, OdInt32 nRadii, const double* radii, const OdTvCylinderData::Capping& caps = OdTvCylinderData::kBoth, OdTvResult* rc = nullptr) = 0;
/** \details
Adds a box to the y.
\param centerPt [in] A box center.
\param dLength [in] A box length.
\param dWidth [in] A box width.
\param dHeight [in] A box height.
\param baseNormal [in] A vector that specifies the box height direction (by other words defines the base plane).
\param lengthDir [in] A vector that specifies the box length direction.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An identifier for the created shell if it has been successfully added;
otherwise it returns a null identifier.
\remarks
If the rc parameter is not null and the shell has been created and added, the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
\sa
*/
virtual OdTvGeometryDataId appendBox(const OdTvPoint& centerPt, double dLength, double dWidth, double dHeight, const OdTvVector& baseNormal = OdTvVector::kZAxis, const OdTvVector& lengthDir = OdTvVector::kXAxis, OdTvResult* rc = nullptr) = 0;
/** \details
Adds a brep to the y.
\param brep [in] A brep object.
\param pDb [in] The database object for this brep.
\param pMaterialResolver [in] Pointer to the material resolver.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An identifier for the text object if it has been successfully created and added to the y;
otherwise it returns a null identifier.
\remarks
If the rc parameter is not null and the text object has been created and added, the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
*/
virtual OdTvGeometryDataId appendBrep(const OdBrBrep& brep, OdDbBaseDatabase* pDb, OdTvResult* rc = nullptr) = 0;
/** \details
Adds a text to the y.
\param ref_point [in] A starting point for the text.
\param msg [in] Text content.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An identifier for the text object if it has been successfully created and added to the y;
otherwise it returns a null identifier.
\remarks
If the rc parameter is not null and the text object has been created and added, the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
\sa
*/
virtual OdTvGeometryDataId appendText(const OdTvPoint& ref_point, const OdString& msg, OdTvResult* rc = nullptr) = 0;
/** \details
Adds a NURBS to the y.
\param degree [in] A curve degree value.
\param controlPoints [in] An array of control points.
\param weights [in] An array of weights.
\param knots [in] An array of knots.
\param start [in] A start value.
\param end [in] An end value.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An identifier for the created NURBS if it has been successfully added;
otherwise it returns a null identifier.
\remarks
If the rc parameter is not null and the NURBS has been created and added, the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
\sa
*/
virtual OdTvGeometryDataId appendNurbs(unsigned int degree, const OdTvPointArray& controlPoints, const OdDoubleArray& weights, const OdDoubleArray& knots, double start = 0., double end = 1., double knotTol = 1.0e-9, OdTvResult* rc = nullptr) = 0;
/** \details
Adds a NURBS to the y.
\param degree [in] A curve degree value.
\param nControlPoints [in] A quantity of the control points.
\param controlPoints [in] A pointer to the beginning of the control points array.
\param weights [in] A pointer to the beginning of the array of weights.
\param nKnots [in] A quantity of knots.
\param knots [in] A pointer to the beginning of the array of knots.
\param start [in] A start value.
\param end [in] An end value.
\param knotTol [in] A knot tolerance. Default value is 1.0e-9.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An identifier for the created NURBS if it has been successfully added;
otherwise it returns a null identifier.
\remarks
If the rc parameter is not null and the NURBS has been created and added, the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
\sa
*/
virtual OdTvGeometryDataId appendNurbs(unsigned int degree, unsigned int nControlPoints, const OdTvPoint* controlPoints, const double* weights, unsigned int nKnots, const double* knots, double start = 0., double end = 1., double knotTol = 1.0e-9, OdTvResult* rc = nullptr) = 0;
/** \details
Adds an infinite line to the y.
\param first [in] A first point.
\param second [in] A second point.
\param ilt [in] A type of line (ray or line).
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An identifier for the created line if it has been successfully added;
otherwise it returns a null identifier.
\remarks
If the rc parameter is not null and the line has been created and added, the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
\sa
*/
virtual OdTvGeometryDataId appendInfiniteLine(const OdTvPoint& first, const OdTvPoint& second, OdTvInfiniteLineData::Type ilt, OdTvResult* rc = nullptr) = 0;
/** \details
Adds an image to the y.
\param imageId [in] An identifier of the image object to be appended.
\param origin [in] A point that specifies the position where the image should be inserted.
\param u [in] A U-vector.
\param v [in] A V-vector.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An identifier for the image object if it has been successfully created and added; otherwise it returns a null identifier.
\remarks
If the rc parameter is not null and the image object has been created and added, the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
\sa
*/
virtual OdTvGeometryDataId appendRasterImage(OdTvRasterImageId imageId, const OdTvPoint& origin, const OdTvVector& u, const OdTvVector& v, OdTvResult* rc = nullptr) = 0;
/** \details
Adds a point cloud to the y.
\param points [in] An array of points.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An identifier for the point cloud object if it has been successfully created and added;
otherwise it returns a null identifier.
\remarks
If the rc parameter is not null and the point cloud has been created and added, the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
*/
virtual OdTvGeometryDataId appendPointCloud(const OdTvPointArray& points, OdTvResult* rc = nullptr) = 0;
/** \details
Adds a point cloud to the y.
\param nPoints [in] A quantity of points.
\param points [in] A pointer to the beginning of the point array.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An identifier for the point cloud object if it has been successfully created and added;
otherwise it returns a null identifier.
\remarks
If the rc parameter is not null and the point cloud has been created and added, the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
*/
virtual OdTvGeometryDataId appendPointCloud(OdInt32 nPoints, const OdTvPoint* points, OdTvResult* rc = nullptr) = 0;
/** \details
Adds a point cloud to the y.
\param pDataSource [in] A pointer to data source object.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An identifier for the RCS point cloud object if it has been successfully created and added;
otherwise it returns a null identifier.
\remarks
If the rc parameter is not null and the point cloud has been created and added, the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
*/
virtual OdTvGeometryDataId appendPointCloud(OdPointCloudDataSourcePtr pDataSource, OdTvResult* rc = nullptr) = 0;
/** \details
Adds a grid to the y.
\param origin [in] A grid origin.
\param firstPoint [in] A grid first point.
\param secondPoint [in] A grid second point.
\param firstCount [in] A grid cell count along the first axis.
\param secondCount [in] A grid cell count along the second axis.
\param type [in] A grid type.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An identifier for the grid object if it has been successfully created and added;
otherwise it returns a null identifier.
\remarks
If the rc parameter is not null and the grid has been created and added, the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
A grid is a planar object and is represented as a set of faces.
The origin determines the starting point for the grid.
The first and second point determine the measurement vectors along two grid axes.
The firstCount and secondCount specify the quantity of grid cells along both axes.
\sa
*/
virtual OdTvGeometryDataId appendGrid(const OdTvPoint& origin, const OdTvPoint& firstPoint = OdTvPoint(1., 0., 0.), const OdTvPoint& secondPoint = OdTvPoint(0., 1., 0.),
OdInt32 firstCount = 0, OdInt32 secondCount = 0, const OdTvGridData::Type type = OdTvGridData::kQuadratic, OdTvResult* rc = nullptr) = 0;
/** \details
Adds a plane colored area to the y.
\param points [in] An array of the area points.
\param faces [in] An array of the point indices that determine the area faces.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An identifier for the appended area object if it has been successfully created and added;
otherwise it returns a null identifier.
\remarks
If the rc parameter is not null and the area has been created and added, the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
An area is a planar object and is represented with a set of faces.
Each face is defined with a quantity of points and a set of indices from the points array that determines the face configuration.
*/
virtual OdTvGeometryDataId appendColoredShape(const OdTvPointArray& points, const OdInt32Array& faces, OdTvResult* rc = nullptr) = 0;
/** \details
Adds a plane colored area to the y.
\param nPoints [in] A size of the points array.
\param points [in] A pointer to the beginning of the area points array.
\param faceListSize [in] A size of the array of the point indices that determine the area faces.
\param faces [in] An array of the point indices that determine the area faces.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An identifier for the appended area object if it has been successfully created and added;
otherwise it returns a null identifier.
\remarks
If the rc parameter is not null and the area has been created and added, the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
An area is a planar object and is represented with a set of faces.
Each face is defined with a quantity of points and a set of indices from the points array that determine the face configuration.
*/
virtual OdTvGeometryDataId appendColoredShape(OdInt32 nPoints, const OdTvPoint* points, OdInt32 faceListSize, const OdInt32* faces, OdTvResult* rc = nullptr) = 0;
/** \details
Adds an insert object to the y.
\param blockId [in] An identifier of the block object that is added as an insert object.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An identifier for the appended insert object if it has been successfully created and added;
otherwise it returns a null identifier.
\remarks
If the rc parameter is not null and the insert object has been created and added, the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
\sa
*/
virtual OdTvGeometryDataId appendInsert(const OdTvBlockId& blockId, OdTvResult* rc = nullptr) = 0;
/** \details
Adds a RCS point cloud data to the y.
\param pScanDb [in] A pointer to scan database (.rcs).
\param pProjDb [in] A pointer to host project database (.rcp). It may be nullptr.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An identifier for the RCS point cloud object if it has been successfully created and added;
otherwise it returns a null identifier.
\remarks
If the rc parameter is not null and the RCS point cloud has been created and added, the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
*/
virtual OdTvGeometryDataId appendRcsPointCloud(OdPointCloudScanDatabasePtr pScanDb,
OdPointCloudProjectDatabasePtr pProjDb = nullptr, OdTvResult* rc = nullptr) = 0;
/** \details
Adds a RCS point cloud data to the y.
\param pDataSource [in] A pointer to data source object.
\param outputFilePath [in] A file path for the .rcs file which will be the data storage for the object.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An identifier for the RCS point cloud object if it has been successfully created and added;
otherwise it returns a null identifier.
\remarks
If the rc parameter is not null and the RCS point cloud has been created and added, the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
If the 'outputFilePath' is empty, the file was saved in the temporary files folder (which will be returned by odrxSystemServices()->getTemporaryPath())
with generated unique name
*/
virtual OdTvGeometryDataId appendRcsPointCloud(OdPointCloudDataSourcePtr pDataSource, const OdString& outputFilePath = OdString(), OdTvResult* rc = nullptr) = 0;
/** \details
Adds a progressive mesh to the y.
\param points [in] An array of points that represents mesh vertices.
\param faces [in] An array that represents faces.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An identifier for the created progressive mesh if it has been successfully added;
otherwise it returns a null identifier.
\remarks
If the rc parameter is not null and the shell has been created and added, the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
Each face is represented in the face array in the following way: the first value is the number of face vertices, and other values
are the indices from the points array. The next value is the number of the next face's vertices followed by the indices
of the face vertices in the point array, and so on.
\sa
*/
virtual OdTvGeometryDataId appendProgressiveMesh(const OdTvPointArray& points, const OdInt32Array& faces, OdTvResult* rc = nullptr) = 0;
/** \details
Adds a progressive mesh to the y.
\param nPoints [in] A mesh vertex quantity.
\param points [in] A pointer to an array that contains mesh vertices.
\param faceListSize [in] A size of the face array.
\param faces [in] A pointer to an array of faces.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An identifier for the created shell if it has been successfully added;
otherwise it returns a null identifier.
\remarks
If the rc parameter is not null and the progressive mesh has been created and added, the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
Each face is represented in the face array in the following way: the first value is the number of face vertices, and other values
are the indices from the points array. The next value is the number of the next face vertices followed by the indices
of the face vertices in the point array, and so on.
\sa
*/
virtual OdTvGeometryDataId appendProgressiveMesh(OdInt32 nPoints, const OdTvPoint* points, OdInt32 faceListSize, const OdInt32* faces, OdTvResult* rc = nullptr) = 0;
/** \details
Adds a sub group object to the sub group.
\param name [in] A sub group object's name.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns An identifier for the appended sub group if it has been successfully created and added;
otherwise it returns a null identifier.
\remarks
If the rc parameter is not null and the sub group has been created and added, the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
*/
virtual OdTvGeometryDataId appendSubGroup(OdString name = OdString::kEmpty, OdTvResult* rc = nullptr) = 0;
/** \details
Removes geometry data with the specified identifier from the y.
\param geomId [in] A geometry data identifier.
\returns A value of type that contains the result of the write operation.
\remarks
If the specified geometry data has been successfully removed, the method returns tvOk; otherwise it returns an appropriate error code.
*/
virtual OdTvResult removeGeometryData(const OdTvGeometryDataId& geomId) = 0;
/** \details
Clears all geometry data that the y contains.
\returns A value of type that contains the result of the write operation.
\remarks
If all geometry data has been successfully removed from the y, the method returns tvOk; otherwise it returns an appropriate error code.
*/
virtual OdTvResult clearGeometriesData() = 0;
/** \details
Returns a smart pointer to an iterator object to get sequential access to the y geometry data objects.
\param rc [out] A pointer to a value of type that contains the result of the operation.
\returns A smart pointer to the iterator.
\remarks
If the rc parameter is not null and the iterator returned by the method is correct, the rc parameter accepts the tvOk value;
otherwise it contains an appropriate error code.
If the rc parameter is null (or not passed in the calling subroutine),
you can check whether the correct iterator was returned by the method
by checking whether the returned smart pointer is not nullptr.
*/
virtual OdTvGeometryDataIteratorPtr getGeometryDataIterator(OdTvResult* rc = nullptr) = 0;
};
/** \details
A data type that represents a smart pointer to an object.
*/
typedef OdTvSmartPtr OdTvSubGroupDataPtr;
#endif // _ODTV_SUBGROUPDATA_H_INCLUDED_