Files
envi-code/SourceCode/Code2026/Dimension/AecDbRadiusDim.h
T
2026-09-28 15:28:50 +08:00

103 lines
3.9 KiB
C++

#pragma once
#include "AecDbEntityBaseEx.h"
#include "TextPosition.h"
#include "objinfounit.h"
#include "TextRange.h"
#include <vector>
class AecXDbText;
class AecXDbRadiusDim : public AecXDbEntityBaseEx
{
public:
ACRX_DECLARE_MEMBERS(AecXDbRadiusDim);
private:
const static Adesk::UInt8 g_nVersion;
protected:
Adesk::UInt16 m_nDimFlag; //控制标记
ADSGePoint3d m_ptCenter, m_ptOnArc;
double m_nDimLen; //尺寸线长度, 正表示在内侧, 负表示在外侧
TCString m_sText; //用户给的尺寸
ADSGePoint3d m_ptText;
AcDbHardPointerId m_idDimStyle; //尺寸标注类型, 提供文字颜色和精度
public:
AecXDbRadiusDim();
~AecXDbRadiusDim();
//virtual BOOL IsValid() const;
virtual void CopyPropertiesFrom(AcDbEntity *pSrcEntity, unsigned gMatchFlag);
//virtual Acad::ErrorStatus subGetClassID(CLSID* pClsid) const;
virtual Acad::ErrorStatus dwgInFields(AcDbDwgFiler*);
virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler*) const;
virtual Acad::ErrorStatus dxfInFields(AcDbDxfFiler*);
virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler*) const;
virtual Acad::ErrorStatus subGetGripPoints(AcGePoint3dArray& gripPoints,
AcDbIntArray& osnapModes,
AcDbIntArray& geomIds) const;
virtual Acad::ErrorStatus subGetGripPoints(AcDbGripDataPtrArray& grips,
const double curViewUnitSize,
const int gripSize,
const AcGeVector3d& curViewDir,
const int bitflags) const;
virtual Acad::ErrorStatus subGetStretchPoints(AcGePoint3dArray & stretchPoints) const;
virtual Acad::ErrorStatus subTransformBy(const AcGeMatrix3d& xform);
virtual Acad::ErrorStatus subMoveGripPointsAt(const AcDbIntArray& indices,
const AcGeVector3d& offset);
virtual Acad::ErrorStatus subMoveStretchPointsAt(const AcDbIntArray& indices,
const AcGeVector3d& offset);
virtual Acad::ErrorStatus subGetOsnapPoints(AcDb::OsnapMode osnapMode,
INT_PTR gsSelectionMark,
const AcGePoint3d& pickPoint,
const AcGePoint3d& lastPoint,
const AcGeMatrix3d& viewXform,
AcGePoint3dArray& snapPoints,
AcDbIntArray& geomIds) const;
// drived from TDbEntity
virtual DrawModeType GetDrawType() const;
virtual void GetTips(PtrList<ObjInfoUnit> &) const; //取动态属性显示数据
virtual Acad::ErrorStatus GetGripText(int i, CString &cs) const;
virtual const TCHAR *GetDefaultLayer() const;
virtual Acad::ErrorStatus Draw2d(AcGiDraw &dc) const;
virtual int ConvertText(TConvertTextPtr ptr, void *pData = NULL);
// 返回发现的位置,同时posStart往前移动(以便继续找下一个使用),
virtual TextPosition FindSubText(const TCHAR *sSubText, TextPosition &posStart, TextRange *pRange = NULL) const;
// 返回下一次查找的开始位置
virtual TextPosition ReplaceSubText(const TextPosition &posRep, const TCHAR *sRepText, TextRange *pRange = NULL);
virtual long GeSubTextNum()const { return 1; }//ok
virtual void SeSubText(long i, CString sText) { SetText(sText); }//ok
// Helper Method
BOOL ConvertFrom(const AcDbRadialDimension *pDim);
// sg add 101116,支持统一标高
virtual bool UnifyElevation(double dElevation = 0.0);
//virtual Acad::ErrorStatus DownGradeSave(int nDrawMode, AcDbVoidPtrArray &entSet,
// BOOL *bErase); // jsx add 160922 支持导低版本
// Properties
ADSGePoint3d GetDimStartPoint() const;
ADSGePoint3d GetDimEndPoint() const;
ADSGePoint3d GetDimCenter() const;
double GetDimLen(BOOL bAsPaperUnit = TRUE) const;
AcDbObjectId GetStyleId() const;
double GetRadius() const {
return m_ptCenter.Distance2d(m_ptOnArc);
}
ADSGePoint3d GetTextPos(BOOL *bIsDefault = NULL) const;
ADSGePoint3d GetDefaultTextPos() const;
TCString GetText(BOOL *bIsDefault = NULL) const;
TCString GetDefaultText() const;
BOOL IsDiameter() const;
void GetDimText(AecXDbText &text) const;
void SetDimEndPoint(ADSGePoint3d ptEnd);
void SetDimCenter(ADSGePoint3d ptCen);
void SetDimLen(double nLen, BOOL bAsPaperUnit = TRUE);
void SetStyleId(AcDbObjectId id);
void SetTextPos(ADSGePoint3d ptPos);
void SetText(const TCHAR *pszText);
void SetDiameter(BOOL bTrue);
};