///////////////////////////////////////////////////////////////////////////////
|
// Copyright (C) 2002-2016, 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 Teigha(R) software pursuant to a license
|
// agreement with Open Design Alliance.
|
// Teigha(R) Copyright (C) 2002-2016 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 OD_MLEADER_H
|
#define OD_MLEADER_H
|
|
#include "TD_PackPush.h"
|
#include "DbMLeaderStyle.h"
|
#include "DbEntity.h"
|
#include "DbSubentId.h"
|
#include "DbAttribute.h"
|
#include "IntArray.h"
|
|
#define MAX_LEADER_NUMBER 5000
|
#define MAX_LEADERLINE_NUMBER 5000
|
|
class OdDbAttribute;
|
class OdDbMLeaderObjectContextData;
|
|
/** \details
|
This class is the main class used for the multiple leader (MLeader) objects.
|
|
\sa
|
TD_Db
|
|
<group OdDb_Classes>
|
*/
|
class TOOLKIT_EXPORT OdDbMLeader : public OdDbEntity
|
{
|
public:
|
/** \details
|
Enumeration for MLeader move type.
|
*/
|
enum MoveType {
|
/** \details
|
All MLeader points should be moved.
|
*/
|
kMoveAllPoints,
|
|
/** \details
|
All MLeader points should be moved, except the arrowhead points of the leader line.
|
*/
|
kMoveAllExceptArrowHeaderPoints,
|
|
/** \details
|
MLeader content points and dog-leg points should be moved.
|
*/
|
kMoveContentAndDoglegPoints
|
};
|
|
/** \details
|
Enumeration for MLeader GS mark type.
|
*/
|
enum gsMarkType {
|
/** \details
|
No GS mark.
|
*/
|
kNone = 0,
|
|
/** \details
|
GS mark of arrow.
|
*/
|
kArrowMark = 1,
|
|
/** \details
|
GS mark of leader line.
|
*/
|
kLeaderLineMark = kArrowMark + MAX_LEADERLINE_NUMBER,
|
|
/** \details
|
GS mark of dog-leg.
|
*/
|
kDoglegMark = kLeaderLineMark + MAX_LEADERLINE_NUMBER,
|
|
/** \details
|
GS mark of MText content.
|
*/
|
kMTextMark = kDoglegMark + MAX_LEADER_NUMBER,
|
|
/** \details
|
GS mark of MText underline content (includes text frame if present).
|
*/
|
kMTextUnderLineMark = kMTextMark + 1,
|
|
/** \details
|
GS mark of tolerance content.
|
*/
|
kToleranceMark = kMTextUnderLineMark + 1,
|
|
/** \details
|
GS mark of block content.
|
*/
|
kBlockMark = kToleranceMark + 1,
|
|
/** \details
|
GS mark of block attribute content.
|
*/
|
kBlockAttribute = kBlockMark + 1
|
};
|
|
/** \details
|
Enumeration for MLeader properties which can be overridden.
|
*/
|
enum PropertyOverrideType {
|
/** \details
|
Leader line type.
|
*/
|
kLeaderLineType = 0,
|
|
/** \details
|
Leader line color.
|
*/
|
kLeaderLineColor = 1,
|
|
/** \details
|
Leader line type ID.
|
*/
|
kLeaderLineTypeId = 2,
|
|
/** \details
|
Leader line weight.
|
*/
|
kLeaderLineWeight = 3,
|
|
/** \details
|
Enable landing.
|
*/
|
kEnableLanding = 4,
|
|
/** \details
|
Landing gap.
|
*/
|
kLandingGap = 5,
|
|
/** \details
|
Enable dog-leg.
|
*/
|
kEnableDogleg = 6,
|
|
/** \details
|
Dog-leg length.
|
*/
|
kDoglegLength = 7,
|
|
/** \details
|
Arrow symbol ID.
|
*/
|
kArrowSymbolId = 8,
|
|
/** \details
|
Arrow symbol size.
|
*/
|
kArrowSize = 9,
|
|
/** \details
|
MLeader content type.
|
*/
|
kContentType = 10,
|
|
/** \details
|
Text style ID (of MText).
|
*/
|
kTextStyleId = 11,
|
|
/** \details
|
Text left attachment type (of MText).
|
*/
|
kTextLeftAttachmentType = 12,
|
|
/** \details
|
Text angle type (of MText).
|
*/
|
kTextAngleType = 13,
|
|
/** \details
|
Text alignment type (of MText).
|
*/
|
kTextAlignmentType = 14,
|
|
/** \details
|
Text color (of MText).
|
*/
|
kTextColor = 15,
|
|
/** \details
|
Text height (of MText).
|
*/
|
kTextHeight = 16,
|
|
/** \details
|
Enable text frame.
|
*/
|
kEnableFrameText = 17,
|
|
/** \details
|
Enable use of default MText (from MLeaderStyle).
|
*/
|
kDefaultMText = 18,
|
|
/** \details
|
Block content block ID.
|
*/
|
kBlockId = 19,
|
|
/** \details
|
Block content color.
|
*/
|
kBlockColor = 20,
|
|
/** \details
|
Block content scale.
|
*/
|
kBlockScale = 21,
|
|
/** \details
|
Block content rotation.
|
*/
|
kBlockRotation = 22,
|
|
/** \details
|
Block content connection type.
|
*/
|
kBlockConnectionType = 23,
|
|
/** \details
|
MLeader scale.
|
*/
|
kScale = 24,
|
|
/** \details
|
Text right attachment type (of MText).
|
*/
|
kTextRightAttachmentType = 25,
|
|
/** \details
|
Text switch alignment type (of MText).
|
*/
|
kTextSwitchAlignmentType = 26,
|
|
/** \details
|
Text attachment direction (of MText).
|
*/
|
kTextAttachmentDirection = 27,
|
|
/** \details
|
Text top attachment type (of MText).
|
*/
|
kTextTopAttachmentType = 28,
|
|
/** \details
|
Text bottom attachment type (of MText).
|
*/
|
kTextBottomAttachmentType = 29,
|
|
/** \details
|
Extend leader line to text.
|
*/
|
kExtendLeaderToText = 30,
|
|
/** \details
|
Size of bit set.
|
*/
|
kSize = kExtendLeaderToText + 1
|
};
|
|
|
ODDB_DECLARE_MEMBERS(OdDbMLeader);
|
|
OdDbMLeader();
|
|
virtual OdResult dwgInFields (OdDbDwgFiler* filer) ODRX_OVERRIDE;
|
|
virtual void dwgOutFields(OdDbDwgFiler* filer) const ODRX_OVERRIDE;
|
|
virtual OdResult dxfInFields (OdDbDxfFiler* filer) ODRX_OVERRIDE;
|
|
virtual void dxfOutFields(OdDbDxfFiler* filer) const ODRX_OVERRIDE;
|
|
protected:
|
virtual bool subWorldDraw(OdGiWorldDraw* pWd) const ODRX_OVERRIDE;
|
|
virtual void subViewportDraw(OdGiViewportDraw* mode) const ODRX_OVERRIDE;
|
|
virtual OdResult subTransformBy(const OdGeMatrix3d& xform) ODRX_OVERRIDE;
|
|
/** \details
|
Returns all subentity paths by graphic system marker.
|
|
\param type [in] The subentity type being queried. ( Only OdDb::kClassSubentType )
|
\param gsMarker [in] The GS marker of the subentity being queried.
|
\param pickPoint [in] The WCS point being queried. ( Not used )
|
\param xrm [in] The WCS->DCS transformation matrix. ( Not used )
|
\param subentPaths [out] The array of OdDbFullSubentPath objects.
|
\param entAndInsertStack [in] The array of objectIds of the objects that are the nested containers of the subentity.
|
*/
|
|
virtual OdResult subGetSubentPathsAtGsMarker(OdDb::SubentType type, OdGsMarker gsMark,
|
const OdGePoint3d& pickPoint,const OdGeMatrix3d& xfm,
|
OdDbFullSubentPathArray& subentPaths,
|
const OdDbObjectIdArray* pEntAndInsertStack = 0) const ODRX_OVERRIDE;
|
|
/** \details
|
Returns all graphic system marker by subentity paths.
|
|
\param subPath [in] The OdDbFullSubentPath to the subentity.
|
\param gsMarkers [in/out] The array of integer identifiers (GS markers).
|
*/
|
|
virtual OdResult subGetGsMarkersAtSubentPath( const OdDbFullSubentPath& subPath,
|
OdGsMarkerArray& gsMarkers) const ODRX_OVERRIDE;
|
|
/** \details
|
Deletes one or more subentities from an entity.
|
|
\param paths [in] The array of OdDbFullSubentPath objects.
|
*/
|
|
virtual OdResult subDeleteSubentPaths(const OdDbFullSubentPathArray& paths) ODRX_OVERRIDE;
|
|
/** \details
|
Create an object by OdDbFullSubentPath to the subentity.
|
|
\param path [in] The OdDbFullSubentPath to the subentity.
|
*/
|
|
virtual OdDbEntityPtr subSubentPtr(const OdDbFullSubentPath& path) const ODRX_OVERRIDE;
|
|
virtual void subClose() ODRX_OVERRIDE;
|
|
virtual OdResult subExplode(OdRxObjectPtrArray& entitySet) const ODRX_OVERRIDE;
|
|
virtual OdResult subGetGeomExtents(OdGeExtents3d& extents) const ODRX_OVERRIDE;
|
|
virtual OdResult subGetClassID(
|
void* pClsid) const ODRX_OVERRIDE;
|
|
#if 0
|
//////////////////////////////////////////////////////////////////////////////
|
|
virtual OdResult getGripEntityUCS(
|
const void* pGripAppData,
|
OdGeVector3d& normalVec,
|
OdGePoint3d& origin,
|
OdGeVector3d& xAxis) const;
|
|
virtual void gripStatus(
|
const OdDb::GripStat status);
|
|
/////////////////////////////////////////////////////////////////////////////////
|
#endif
|
|
virtual OdResult subGetTransformedCopy(
|
const OdGeMatrix3d& xform,
|
OdDbEntityPtr& pEnt) const;
|
|
|
public:
|
/** \details
|
Sets the override status for the specified PropertyOverrideType.
|
|
\param propertyType [in] PropertyOverrideType which will be set.
|
\param isOverride [in] true if an override for propertyType is to be set, false otherwise.
|
*/
|
void setOverride(
|
PropertyOverrideType propertyType,
|
bool isOverride = true);
|
|
/** \details
|
Returns the override status for the specified PropertyOverrideType.
|
|
\param propertyType [in] PropertyOverrideType for which status is to be returned.
|
|
\remarks
|
Returns true if an override has been set for the specified propertyType, false otherwise.
|
*/
|
bool isOverride(
|
PropertyOverrideType propertyType) const;
|
|
/** \details
|
Sets the MLeader scale, which affects arrowhead size and content scale.
|
|
\param scale [in] The scale value.
|
|
\remarks
|
Returns eOk if successful. Note that this function will set an override
|
for kScale PropertyOverrideType.
|
*/
|
OdResult setScale(
|
double scale);
|
|
/** \details
|
Returns the MLeader scale, which affects arrowhead size and content scale.
|
|
*/
|
double scale() const;
|
|
/** \details
|
Returns the specified attribute from the associated block content.
|
|
\param attdefId [in] ObjectID of an attribute definition.
|
\param pAtt [out] Returned attribute object corresponding to attdefId.
|
|
\remarks
|
If successful, returns eOk.
|
*/
|
OdResult getBlockAttributeValue(
|
OdDbObjectId attdefId,
|
OdDbAttributePtr& pAtt) const;
|
|
/** \details
|
Sets the specified attribute within associated block content.
|
|
\param attdefId [in] ObjectID of attribute definition.
|
\param pAtt [in] Attribute object pointer.
|
|
\remarks
|
Returns eOk if successful.
|
*/
|
OdResult setBlockAttributeValue(
|
OdDbObjectId attdefId,
|
const OdDbAttribute* pAtt);
|
|
/** \details
|
Returns the WCS plane containing this MLeader object.
|
*/
|
OdGePlane plane() const;
|
|
/** \details
|
Sets the WCS plane containing this MLeader object.
|
|
\param plane [in] Place which will contain the MLeader.
|
|
\remarks
|
Note that MLeader geometry will be updated appropriately to reflect the new location.
|
*/
|
void setPlane(
|
const OdGePlane& plane);
|
|
OdGeVector3d normal() const;
|
|
/** \details
|
Moves this MLeader object as specified by an input vector.
|
|
\param vector [in] Vector which specifies the direction and distance of the move.
|
\param moveType [in] Indicates how to move the MLeader.
|
\param bAutoSwitchDogleg [in] If true, automatically switch leader lines after movoing the MLeader.
|
|
\remarks
|
Returns eOk if successful.
|
*/
|
OdResult moveMLeader(
|
const OdGeVector3d& vector,
|
MoveType moveType,
|
bool bAutoSwitchDogleg = true);
|
|
/** \details
|
Returns the the extents of the content for this MLeader.
|
|
\param extents [out] Receives the content extents.
|
|
\remarks
|
Returns eOk if successful.
|
*/
|
OdResult getContentGeomExtents(
|
OdGeExtents3d& extents) const;
|
|
/** \details
|
|
\param leaderIndexes [out] Returned indexes.
|
*/
|
void getLeaderIndexes(
|
OdIntArray& leaderIndexes);
|
|
/** \details
|
Causes a new cluster to be added to this MLeader object, and returns the index of the new cluster.
|
|
\param leaderIndex [out] Index of newly added cluster.
|
|
\remarks
|
A leader cluster consists of a dog-leg and leader lines.
|
*/
|
void addLeader(
|
int& leaderIndex);
|
|
/** \details
|
Removes the leader cluster specified by the passed-in index.
|
|
\param leaderIndex [in] Index of the cluster to be removed.
|
|
\remarks
|
A leader cluster consists of a dog-leg and leader lines.
|
*/
|
void removeLeader(
|
int leaderIndex);
|
|
/** \details
|
|
\param leaderIndexes [out] Receives the indexes of leader lines for this MLeader.
|
|
\remarks
|
Returns eOk if successful.
|
*/
|
void getLeaderLineIndexes(
|
OdIntArray& leaderLineIndexes);
|
|
/** \details
|
Adds a leader line to the leader cluster specified by the supplied index.
|
|
\param leaderIndex [in] Leader cluster index.
|
\param leaderLineIndex [out] Receives the index of the newly added leader line.
|
*/
|
OdResult addLeaderLine(
|
int leaderIndex,
|
int& leaderLineIndex);
|
|
/** \details
|
Adds a new leader line to this MLeader. The first point of the new leader line is passed in.
|
|
\param point [in] Specifies the first point of the new leader line.
|
\param leaderLineIndex [out] Receives the index of the newly added leader line.
|
|
\remarks
|
Returns eOk if successful.
|
*/
|
OdResult addLeaderLine(
|
const OdGePoint3d& point,
|
int& leaderLineIndex);
|
|
/** \details
|
Removes the leader line specified by the passed-in index.
|
|
\param leaderLineIndex [in] Index of the leader line to remove.
|
|
\remarks
|
Note that removal of all leader lines will cause the leader cluster to be removed as well.
|
*/
|
void removeLeaderLine(
|
int leaderLineIndex);
|
|
/** \details
|
Inserts a new first vertex into the specified leader line.
|
|
\param leaderLineIndex [in] Index of the leader line to which the vertex will be added.
|
\param point [in] The position of the vertex.
|
*/
|
OdResult addFirstVertex(
|
int leaderLineIndex, const OdGePoint3d& point);
|
|
/** \details
|
Removes the first vertex from the specified leader line.
|
|
\param leaderLineIndex [in] Index of the leader line from which the first vertex will be removed.
|
|
\remarks
|
Returns eOk if successful.
|
*/
|
OdResult removeFirstVertex(
|
int leaderLineIndex);
|
|
/** \details
|
Returns the first vertex from the specified leader line.
|
|
\param leaderLineIndex [in] Leader line index.
|
\param point [out] Receives the first vertex.
|
|
\remarks
|
Returns eOk if successful.
|
*/
|
OdResult getFirstVertex(
|
int leaderLineIndex,
|
OdGePoint3d& point) const;
|
|
/** \details
|
Sets the first vertex of the specified leader line.
|
|
\param leaderLineIndex [in] Leader line index.
|
\param point [in] New position for the first vertex.
|
|
\remarks
|
Returns eOk if successful. Note that this function only sets the values for an existing
|
first vertex, but does not create any new vertices.
|
*/
|
OdResult setFirstVertex(
|
int leaderLineIndex,
|
const OdGePoint3d& point);
|
|
/** \details
|
Appends a new last vertex onto the specified leader line.
|
|
\param leaderLineIndex [in] Leader line index.
|
\param point [in] The new vertex position.
|
|
\remarks
|
Returns eOk if successful.
|
*/
|
OdResult addLastVertex(
|
int leaderLineIndex,
|
const OdGePoint3d& point);
|
|
/** \details
|
Removes the last vertex from the specified leader line.
|
|
\param leaderLineIndex [in] Leader line index.
|
|
\remarks
|
Returns eOk if successful.
|
*/
|
OdResult removeLastVertex(
|
int leaderLineIndex);
|
|
/** \details
|
Returns the last vertex from the specified leader line.
|
|
\param leaderLineIndex [in] Leader line index.
|
\param point [out] Receives the last vertex from the specified leader line.
|
|
\remarks
|
Returns eOk if successful.
|
*/
|
OdResult getLastVertex(
|
int leaderLineIndex,
|
OdGePoint3d& point) const;
|
|
/** \details
|
Sets the last vertex of the specified leader line.
|
|
\param leaderLineIndex [in] Leader line index.
|
\param point [in] New last vertex for specified leader line.
|
|
\remarks
|
Returns eOk if successful.
|
*/
|
OdResult setLastVertex(
|
int leaderLineIndex,
|
const OdGePoint3d& point);
|
|
/** \details
|
Returns the number of vertices in the specified leader line.
|
|
\param leaderLineIndex [in] Leader line index.
|
\param num [out] Receives the number of vertices in the specified leader line.
|
|
\remarks
|
Returns eOk if successful.
|
*/
|
OdResult numVertices(
|
int leaderLineIndex,
|
int& num) const;
|
|
/** \details
|
Sets the position for a specified vertex in a specified leader line.
|
|
\param leaderLineIndex [in] Leader line index.
|
\param index [in] The index of the vertex to be set.
|
\param point [in] New coordinate value for the specified vertex.
|
|
\remarks
|
Returns eOk if successful.
|
*/
|
OdResult setVertex(
|
int leaderLineIndex,
|
int index,
|
const OdGePoint3d& point);
|
|
/** \details
|
Returns the position of a specified vertex in a specified leader line.
|
|
\param leaderLineIndex [in] Leader line index.
|
\param index [in] The index of the vertex.
|
\param point [out] Receives the position value for the specified vertex.
|
|
\remarks
|
Returns eOk if successful.
|
*/
|
void getVertex(
|
int leaderLineIndex,
|
int index, OdGePoint3d& point);
|
|
/** \details
|
Returns the index of the leader cluster which contains the specified leader line.
|
|
\param leaderLineIndex [in] Leader line index.
|
\param leaderIndex [out] Receives the index of the lead line owner.
|
*/
|
void getLeaderIndex(
|
int leaderLineIndex,
|
int& leaderIndex);
|
|
/** \details
|
Returns the indexes of all leader lines for the specified leader.
|
|
\param leaderIndex [in] Leader index.
|
\param leaderLineIndexes [out] Receives the indexes of the owned leader lines.
|
*/
|
void getLeaderLineIndexes(
|
int leaderIndex,
|
OdIntArray& leaderLineIndexes);
|
|
/** \details
|
Sets the dog-leg direction for the specified leader cluster.
|
|
\param leaderIndex [in] Leader index.
|
\param vector [in] The new dog-leg direction.
|
*/
|
void setDoglegDirection(
|
int leaderIndex,
|
const OdGeVector3d& vector);
|
|
/** \details
|
Returns the dog-leg direction for the specified leader cluster.
|
|
\remarks
|
\param leaderIndex [in] Leader index.
|
\param vector [out] Receives the dog-leg direction.
|
*/
|
void getDoglegDirection(
|
int leaderIndex,
|
OdGeVector3d& vector);
|
|
/** \details
|
Sets the leader line type for this MLeader object.
|
|
\param leaderLineType [in] Leader line type.
|
|
\remarks
|
The kLeaderLineType PropertyOverrideType override will be set as a result of
|
calling this function.
|
*/
|
void setLeaderLineType(
|
OdDbMLeaderStyle::LeaderType leaderLineType);
|
|
/** \details
|
Returns the leader line type for this MLeader object.
|
*/
|
OdDbMLeaderStyle::LeaderType leaderLineType() const;
|
|
/** \details
|
Sets the leader line color for this MLeader.
|
|
\param leaderLineColor [in] Leader line color.
|
|
\remarks
|
The kLeaderLineColor PropertyOverrideType override will be set as a result of
|
calling this function.
|
*/
|
void setLeaderLineColor(
|
const OdCmColor& leaderLineColor);
|
|
/** \details
|
Returns the leader line color for this MLeader.
|
*/
|
OdCmColor leaderLineColor() const;
|
|
/** \details
|
Sets the leader line linetype for this MLeader by OdDbObjectId.
|
|
\param leaderLineTypeId [in] Leader line type ObjectId.
|
|
\remarks
|
The kLeaderLineTypeId PropertyOverrideType override will be set as a result of
|
calling this function.
|
*/
|
void setLeaderLineTypeId(
|
OdDbObjectId leaderLineTypeId);
|
|
/** \details
|
Returns the leader line linetype for this MLeader by OdDbObjectId.
|
*/
|
OdDbObjectId leaderLineTypeId() const;
|
|
/** \details
|
Sets the leader line weight for this MLeader.
|
|
\param leaderLineWeight [in] Leader line weight.
|
|
\remarks
|
The kLeaderLineWeight PropertyOverrideType override will be set as a result of
|
calling this function.
|
*/
|
void setLeaderLineWeight(
|
OdDb::LineWeight leaderLineWeight);
|
|
/** \details
|
Returns the leader line weight for this MLeader.
|
*/
|
OdDb::LineWeight leaderLineWeight() const;
|
|
/** \details
|
Sets the landing gap for this MLeader (gap between the leader tail and associated MText).
|
|
\param landingGap [in] Landing gap (gap between the leader tail and associated MText).
|
|
\remarks
|
The kLandingGap PropertyOverrideType override will be set as a result of
|
calling this function.
|
*/
|
void setLandingGap(
|
double landingGap);
|
|
/** \details
|
Returns the landing gap for this MLeader (gap between the leader tail and associated MText).
|
*/
|
double landingGap() const;
|
|
/** \details
|
Sets the enabled/disabled status for leader landing line.
|
|
\param enableLanding [in] Leader landing line enabled status.
|
|
\remarks
|
The kEnableLanding PropertyOverrideType override will be set as a result of
|
calling this function.
|
*/
|
void setEnableLanding(
|
bool enableLanding);
|
|
/** \details
|
Returns the enabled/disabled status for leader landing line.
|
*/
|
bool enableLanding() const;
|
|
/** \details
|
Sets the enabled/disabled status for dog-leg leader line.
|
|
\param enableDogleg [in] Leader dog-leg line enabled status.
|
|
\remarks
|
The kEnableDogleg PropertyOverrideType override will be set as a result of
|
calling this function.
|
*/
|
void setEnableDogleg(
|
bool enableDogleg);
|
|
/** \details
|
Returns the enabled/disabled status for dog-leg leader line.
|
*/
|
bool enableDogleg() const;
|
|
/** \details
|
Sets the length for the dog-leg of the specified leader cluster.
|
|
\param leaderIndex [in] Leader index.
|
\param dDoglegLength [in] Dog-leg length.
|
|
\remarks
|
The kDoglegLength PropertyOverrideType override will be set as a result of
|
calling this function.
|
*/
|
void setDoglegLength(
|
int leaderIndex,
|
double dDoglegLength);
|
|
/** \details
|
Returns the length for the dog-leg of the specified leader cluster.
|
|
\param leaderIndex [in] Leader index.
|
*/
|
double doglegLength(
|
int leaderIndex );
|
|
//deprecated
|
OdResult setDoglegLength (double doglegLength);
|
//deprecated
|
double doglegLength () const;
|
|
/** \details
|
Sets the arrow symbol for this MLeader (by ObjectId).
|
|
\param arrowSymbolId [in] Arrow symbol ObjectId.
|
|
\remarks
|
The kDoglegLength PropertyOverrideType override will be set as a result of
|
calling this function. If this value is not set, the default arrow symbol
|
will be used.
|
*/
|
void setArrowSymbolId(
|
OdDbObjectId arrowSymbolId);
|
|
/** \details
|
Returns the arrow symbol for this MLeader (by ObjectId).
|
*/
|
OdDbObjectId arrowSymbolId() const;
|
|
/** \details
|
Sets the arrow size for this MLeader object.
|
|
\param arrowSize [in] Arrow size.
|
|
\remarks
|
The kArrowSize PropertyOverrideType override will be set as a result of
|
calling this function.
|
*/
|
void setArrowSize(
|
double arrowSize);
|
|
/** \details
|
Returns the arrow size for this MLeader object.
|
*/
|
double arrowSize() const;
|
|
/** \details
|
Sets the content type for this MLeader object.
|
|
\param contentType [in] Content type.
|
|
\remarks
|
The kContentType PropertyOverrideType override will be set as a result of
|
calling this function.
|
*/
|
void setContentType(
|
OdDbMLeaderStyle::ContentType contentType);
|
|
/** \details
|
Returns the content type for this MLeader object.
|
*/
|
OdDbMLeaderStyle::ContentType contentType() const;
|
|
/** \details
|
Sets the textstyle used by MText content (by ObjectId).
|
|
\param textStyleId [in] OdDbTextStyle ObjectId.
|
|
\remarks
|
The kTextStyleId PropertyOverrideType override will be set as a result of
|
calling this function.
|
*/
|
void setTextStyleId(
|
OdDbObjectId textStyleId);
|
|
/** \details
|
Return the textstyle used by MText content (by ObjectId).
|
*/
|
OdDbObjectId textStyleId() const;
|
|
/** \details
|
Sets the text attachment type used by MText content.
|
|
\param textAttachmentType [in] Text attachment type.
|
\param leaderDirection [in] Text leader direction type.
|
|
\remarks
|
The kTextLeftAttachmentType/kTextRightAttachmentType PropertyOverrideType override
|
will be set as a result of calling this function.
|
*/
|
void setTextAttachmentType(
|
OdDbMLeaderStyle::TextAttachmentType textAttachmentType,
|
OdDbMLeaderStyle::LeaderDirectionType leaderDirection);
|
|
/** \details
|
Returns the text attachment type used by MText content.
|
|
\param leaderDirection [in] Text leader direction type.
|
*/
|
OdDbMLeaderStyle::TextAttachmentType textAttachmentType(
|
OdDbMLeaderStyle::LeaderDirectionType leaderDirection) const;
|
|
/** \details
|
Sets the angle type for MText content, with respect to the last leader line segment.
|
|
\param textAngleType [in] Text text angle type.
|
|
\remarks
|
The kTextAngleType PropertyOverrideType override will be set as a result
|
of calling this function.
|
*/
|
void setTextAngleType(
|
OdDbMLeaderStyle::TextAngleType textAngleType);
|
|
/** \details
|
Returns the angle type for MText content, with respect to the last leader line segment.
|
*/
|
OdDbMLeaderStyle::TextAngleType textAngleType() const;
|
|
/** \details
|
Sets the text alignment type for MText content.
|
|
\param textAlignmentType [in] Text alignment type.
|
|
\remarks
|
The kTextAlignmentType PropertyOverrideType override will be set as a result
|
of calling this function.
|
*/
|
void setTextAlignmentType(
|
OdDbMLeaderStyle::TextAlignmentType textAlignmentType);
|
|
/** \details
|
Returns the text alignment type for MText content.
|
*/
|
OdDbMLeaderStyle::TextAlignmentType textAlignmentType() const;
|
|
/** \details
|
Sets the text color for MText content.
|
|
\param textColor [in] Text color.
|
|
\remarks
|
The kTextColor PropertyOverrideType override will be set as a result
|
of calling this function.
|
*/
|
void setTextColor(const OdCmColor& textColor);
|
|
/** \details
|
Returns the text color for MText content.
|
*/
|
OdCmColor textColor() const;
|
|
/** \details
|
Sets the text height for MText content.
|
|
\param textHeight [in] Text height.
|
|
\remarks
|
The kTextHeight PropertyOverrideType override will be set as a result
|
of calling this function.
|
*/
|
void setTextHeight(
|
double textHeight);
|
|
/** \details
|
Returns the text height for MText content.
|
*/
|
double textHeight() const;
|
|
/** \details
|
Sets the text frame visibility for MText content.
|
|
\param enableFrameText [in] True to enable the text frame, false otherwise.
|
|
\remarks
|
The kEnableFrameText PropertyOverrideType override will be set as a result
|
of calling this function.
|
*/
|
void setEnableFrameText(
|
bool enableFrameText);
|
|
/** \details
|
Returns the text frame visibility for MText content.
|
*/
|
bool enableFrameText() const;
|
|
/** \details
|
Sets the MText object to be associated with this MLeader.
|
|
\param pMText [in] The MText object to associate with this MLeader (if NULL,
|
the default MText defined in the associated MLeaderStyle is used).
|
|
\remarks
|
The kDefaultMText PropertyOverrideType override will be set as a result
|
of calling this function. The supplied MText object can be DBR or non-DBR.
|
*/
|
void setMText(
|
const OdDbMText* pMText);
|
|
/** \details
|
Returns the MText content associated with this MLeader.
|
*/
|
OdDbMTextPtr mtext() const;
|
|
/** \details
|
Sets the referenced block for this MLeader, by block ObjectId.
|
|
\param blockId [in] Block table record ObjectId.
|
|
\remarks
|
The kBlockId PropertyOverrideType override will be set as a result
|
of calling this function.
|
*/
|
void setBlockContentId(
|
OdDbObjectId blockId);
|
|
/** \details
|
Returns the referenced block for this MLeader, by block ObjectId.
|
*/
|
OdDbObjectId blockContentId() const;
|
|
/** \details
|
Sets the color used for block content.
|
|
\param blockColor [in] Block color.
|
|
\remarks
|
The kBlockColor PropertyOverrideType override will be set as a result
|
of calling this function.
|
*/
|
void setBlockColor(
|
const OdCmColor& blockColor);
|
|
/** \details
|
Returns the color used for block content.
|
*/
|
OdCmColor blockColor() const;
|
|
/** \details
|
Sets the scale used by the referenced block.
|
|
\param scale [in] Referenced block scale.
|
|
\remarks
|
The kBlockScale PropertyOverrideType override will be set as a result
|
of calling this function.
|
*/
|
void setBlockScale(
|
const OdGeScale3d& scale);
|
|
/** \details
|
Returns the scale used by the referenced block.
|
*/
|
OdGeScale3d blockScale() const;
|
|
/** \details
|
Sets the rotation used by the referenced block.
|
|
\param rotation [in] Referenced block rotation.
|
|
\remarks
|
The kBlockRotation PropertyOverrideType override will be set as a result
|
of calling this function.
|
*/
|
void setBlockRotation(
|
double rotation);
|
|
/** \details
|
Returns the rotation used by the referenced block.
|
*/
|
double blockRotation() const;
|
|
/** \details
|
Sets the block connection type for this MLeader, which specifies how the
|
referenced block is connected to the leader lines.
|
|
\param blockConnectionType [in] Block connection type.
|
|
\remarks
|
The kBlockConnectionType PropertyOverrideType override will be set as a result
|
of calling this function.
|
*/
|
void setBlockConnectionType(
|
OdDbMLeaderStyle::BlockConnectionType blockConnectionType);
|
|
/** \details
|
Returns the block connection type for this MLeader, which specifies how the
|
referenced block is connected to the leader lines.
|
*/
|
OdDbMLeaderStyle::BlockConnectionType blockConnectionType() const;
|
|
/** \details
|
Sets the annotation scale enabled status for this MLeader.
|
|
\param enableAnnotationScale [in] true if annotation scale is to be enabled, false otherwise.
|
*/
|
void setEnableAnnotationScale(
|
bool enableAnnotationScale);
|
|
/** \details
|
Returns the annotation scale enabled status for this MLeader.
|
*/
|
bool enableAnnotationScale() const;
|
|
/** \details
|
Sets the MLeaderStyle used for this MLeader, by ObjectId.
|
|
\param newStyleId [in] New MLeaderStyle.
|
*/
|
void setMLeaderStyle(
|
OdDbObjectId newStyleId);
|
|
/** \details
|
Returns the MLeaderStyle used for this MLeader, by ObjectId.
|
*/
|
OdDbObjectId MLeaderStyle();
|
|
/** \details
|
Returns the property set for the MLeader, including override values.
|
|
\param mleaderStyle [out] Receives the properties of this MLeader.
|
|
\remarks
|
Returns eOk if successful.
|
*/
|
OdResult getOverridedMLeaderStyle(
|
OdDbMLeaderStyle& mleaderStyle);
|
|
/** \details
|
Sets the context data manager for this MLeader object.
|
|
\param pContextDataManager [in] Pointer to a context data manager.
|
|
\remarks
|
Returns eOk if successful.
|
*/
|
OdResult setContextDataManager(
|
void* pContextDataManager);
|
|
/** \details
|
Returns the context data manager for this MLeader object.
|
*/
|
void* getContextDataManager() const;
|
|
/** \details
|
Sets the position for the block referenced by this MLeader.
|
|
\param position [in] Block position.
|
*/
|
void setBlockPosition(
|
const OdGePoint3d& position);
|
|
/** \details
|
Returns the position for the block referenced by this MLeader.
|
|
\param position [out] Receives the block position.
|
*/
|
void getBlockPosition(
|
OdGePoint3d& position);
|
|
/** \details
|
Sets the location for the MText content associated with this MLeader.
|
|
\param location [in] MLeader mtext location.
|
*/
|
void setTextLocation(
|
const OdGePoint3d& location);
|
|
/** \details
|
Returns the location for the MText content associated with this MLeader.
|
|
\param location [out] Receives the MText location.
|
*/
|
void getTextLocation(
|
OdGePoint3d& location);
|
|
/** \details
|
Sets the location for MLeader tolerance content.
|
|
\param location [in] MLeader tolerance content location
|
|
\remarks
|
Returns eOk if successful.
|
*/
|
OdResult setToleranceLocation(
|
const OdGePoint3d& location);
|
|
/** \details
|
Returns the location for MLeader tolerance content.
|
|
\param location [out] Receives the MLeader tolerance content location.
|
|
Returns eOk if successful.
|
*/
|
OdResult getToleranceLocation(
|
OdGePoint3d& location) const;
|
|
/** \details
|
Sets the arrow head symbol for a specified leader line, by ObjectId.
|
|
\param leaderLineIndex [in] Leader line index.
|
\param arrowSymbolId [in] Arrow symbol ObjectId.
|
|
\remarks
|
Returns eOk if successful.
|
*/
|
void setArrowSymbolId(
|
int leaderLineIndex,
|
OdDbObjectId arrowSymbolId);
|
|
/** \details
|
Returns the arrow head symbol for a specified leader line, by ObjectId.
|
|
\param leaderLineIndex [in] Leader line index.
|
*/
|
OdDbObjectId arrowSymbolId(
|
int leaderLineIndex) const;
|
|
/** \details
|
Returns true if this MLeader has content, false otherwise.
|
*/
|
bool hasContent() const;
|
|
/** \details
|
Returns the connection point of this MLeader, for the speciefied direction.
|
|
\param vect [in] The specified direction.
|
\param point [out] Receives the connection point.
|
*/
|
OdResult connectionPoint(
|
const OdGeVector3d& vect,
|
OdGePoint3d& point) const;
|
|
/** \details
|
Returns the connection point of this MLeader, for the speciefied direction.
|
|
\param vect [in] The specified direction.
|
\param point [out] Receives the connection point.
|
direction The text attachment direction of MText. (Horizontally by default).
|
*/
|
OdResult connectionPoint(
|
const OdGeVector3d& vect,
|
OdGePoint3d& point,
|
OdDbMLeaderStyle::TextAttachmentDirection direction) const;
|
|
/** \details
|
Recomputes the dimension break points.
|
|
\remarks
|
Returns eOk if successful.
|
*/
|
OdResult recomputeBreakPoints();
|
|
/** \details
|
Adds this MLeader object to the Model Space block of the specified database.
|
|
\param pDb [in] Database to which this MLeader object should be added.
|
|
\remarks
|
Returns eOk if successful.
|
*/
|
OdResult postMLeaderToDb(
|
OdDbDatabase* pDb);
|
|
// dim associativity support
|
|
/** \details
|
Updates leader line positions.
|
|
\remarks
|
Returns eOk if successful.
|
*/
|
OdResult updateLeaderLinePosition();
|
|
/** \details
|
Removes the specified leader line's geometry association.
|
|
\param leaderLineIndex [in] Leader line index.
|
|
\remarks
|
Returns eOk if successful.
|
*/
|
OdResult removeLeaderLineRefAssoc(
|
int leaderLineIndex) const;
|
|
/** \details
|
Updates this MLeaders's arrow head, landing gap, dog-leg length, and text height or block scale.
|
|
\param pContext [in] MLeader context data.
|
|
\remarks
|
Returns eOk if successful.
|
*/
|
OdResult updateContentScale(
|
OdDbMLeaderObjectContextData* pContext);
|
|
virtual bool isPlanar() const ODRX_OVERRIDE;
|
virtual OdResult getPlane(OdGePlane& plane, OdDb::Planarity& planarity) const ODRX_OVERRIDE;
|
|
/** \details
|
Sets the text attachment direction of MText.
|
|
\param direction [in] The text attachment direction of MText.
|
*/
|
void setTextAttachmentDirection(
|
OdDbMLeaderStyle::TextAttachmentDirection direction);
|
|
/** \details
|
Returns the text attachment direction of MText.
|
*/
|
OdDbMLeaderStyle::TextAttachmentDirection textAttachmentDirection() const;
|
|
/** \details
|
Enumeration of the individual leader line properties which can be overridden.
|
*/
|
enum LeaderLineOverrideType
|
{
|
/** \details
|
Leader line type (OdDbMLeaderStyle::LeaderType).
|
*/
|
kOverrideLeaderType = 0,
|
/** \details
|
Leader line color.
|
*/
|
kOverrideLineColor,
|
/** \details
|
Leader line linetype ID.
|
*/
|
kOverrideLineTypeId,
|
/** \details
|
Leader line weight.
|
*/
|
kOverrideLineWeight,
|
/** \details
|
Leader line arrow size.
|
*/
|
kOverrideArrowSize,
|
/** \details
|
Leader line arrow symbol.
|
*/
|
kOverrideArrowSymbolId
|
};
|
|
/** \details
|
Returns the override status for the specified line property.
|
|
\param leaderLineIndex [in] leader line index for which status is to be returned.
|
\param value [in] property identifier
|
|
\remarks
|
Returns true if an override has been set for the specified property, false otherwise.
|
(Override is set in the set* functions listed below, which accept leader line index as a first argument)
|
*/
|
bool isOverride(int leaderLineIndex, LeaderLineOverrideType value);
|
|
void setLeaderLineType(
|
int leaderLineIndex,
|
OdDbMLeaderStyle::LeaderType leaderLineType);
|
|
OdDbMLeaderStyle::LeaderType leaderLineType(
|
int leaderLineIndex) const;
|
|
void setLeaderLineColor(
|
int leaderLineIndex,
|
const OdCmColor& leaderLineColor);
|
|
OdCmColor leaderLineColor(
|
int leaderLineIndex) const;
|
|
void setLeaderLineTypeId(
|
int leaderLineIndex,
|
OdDbObjectId leaderLineTypeId);
|
|
OdDbObjectId leaderLineTypeId(
|
int leaderLineIndex) const;
|
|
void setLeaderLineWeight(
|
int leaderLineIndex,
|
OdDb::LineWeight leaderLineWeight);
|
|
OdDb::LineWeight leaderLineWeight(
|
int leaderLineIndex) const;
|
|
void setArrowSize(
|
int leaderLineIndex,
|
double arrowSize);
|
|
double arrowSize(
|
int leaderLineIndex) const;
|
|
/** \details
|
Set extend to text mode.
|
|
\param bSet [in] New value for extend to text mode flag.
|
*/
|
void setExtendLeaderToText(bool bSet);
|
|
/** \details
|
Returns extend to text mode flag.
|
*/
|
bool extendLeaderToText() const;
|
|
protected:
|
virtual OdUInt32 subSetAttributes(OdGiDrawableTraits* pTraits) const ODRX_OVERRIDE;
|
|
virtual void subSetDatabaseDefaults(OdDbDatabase *pDb, bool doSubents) ODRX_OVERRIDE;
|
|
virtual void modified(const OdDbObject* pObj) ODRX_OVERRIDE;
|
};
|
|
/** \details
|
This template class is a specialization of the OdSmartPtr class for OdDbMLeader object pointers.
|
*/
|
typedef OdSmartPtr<OdDbMLeader> OdDbMLeaderPtr;
|
|
#include "TD_PackPop.h"
|
|
#endif // OD_MLEADER_H
|