103 lines
4.0 KiB
C++
103 lines
4.0 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);
|
|
};
|
|
|