#pragma once #include "AecDbEntityBaseEx.h" #include "TextPosition.h" #include "objinfounit.h" #include "TextRange.h" #include 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 &) 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); };