#pragma once #include "AecDbSymbWithText.h" #include "ObjInfoUnit.h" #include "AecDbSymbMultiLeader.h" #define SCF_AB 0x01 // AB标注 class AecXDbSymbCoord : public AecXDbSymbWithText { public: ACRX_DECLARE_MEMBERS(AecXDbSymbCoord); private: const static Adesk::UInt8 g_nVersion; protected: Adesk::UInt8 m_nFlag; // 控制标记,后四位用来控制精度TArch6.5 Adesk::UInt8 m_nQuadrant; // 象限0~3 ADSGePoint3d m_ptLocation; ADSGePoint3d m_ptValue; // 显示的坐标值 x--Y(B), y--X(A) // TArch6 data ADSGePoint3d m_ptTurn; // TArch7 data AecXDbSymbMultiLeader::TArrowStyle m_nStyle; // TArch8 data double m_dText2BaseRatio; // 文字距基线系数,sg add 081113 // TArch9 data // 基线长度,数据的正负代表方向,用这个100000的数字来表示需要读取默认长度 double m_dTextBaseLen; public: AecXDbSymbCoord(); ~AecXDbSymbCoord(); 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); // drived from TDbEntity virtual void GetTips(PtrList &) const; //取动态属性显示数据 virtual Acad::ErrorStatus GetGripText(int i, CString &cs) const; virtual Acad::ErrorStatus Draw2d(AcGiDraw &dc) const; // virtual int ConvertText(TConvertTextPtr ptr, void *pData=NULL); virtual long GetSubTextNum()const { return 2; }//ok virtual SubText* HitTestText(ADSGePoint3d pt)const; virtual SubText* GetSubText(long iText)const; virtual void SetSubText(long i, CString sText); virtual const TCHAR *GetDefaultLayer() const; // sg add 090629,解决需求平台问题613,支持查找替换操作 BOOL GetText(Adesk::UInt32 cookies, AecXDbText &text) const; virtual TextPosition FindSubText(const TCHAR *sSubText, TextPosition &posStart, TextRange *pRange = NULL) const; virtual TextPosition ReplaceSubText(const TextPosition &posRep, const TCHAR *sRepText, TextRange *pRange = NULL); // sg add 110301,支持统一标高 virtual bool UnifyElevation(double dElevation = 0.0); //virtual Acad::ErrorStatus DownGradeSave(int nDrawMode, AcDbVoidPtrArray &entSet, // BOOL *bErase); ADSGePoint3d GetTurnPoint() const; // Properties ADSGePoint3d GetLocation() const; ADSGePoint3d GetValue() const; BOOL IsAB() const; BOOL IsPrec2() const; Adesk::UInt8 GetQuadrant() const; Adesk::UInt8 GetPrecNum() const; void SetLocation(ADSGePoint3d pt); void SetValue(ADSGePoint3d pt); void SetAB(BOOL bTrue); void SetPrec2(BOOL bTrue); void SetQuadrant(Adesk::UInt8 nQuadrant); void SetTurnPoint(ADSGePoint3d pt); void SetPrecNum(Adesk::UInt8 iNum); AecXDbSymbMultiLeader::TArrowStyle GetStyle()const { assertReadEnabled(); return m_nStyle; } void SetStyle(AecXDbSymbMultiLeader::TArrowStyle style) { assertWriteEnabled(); m_nStyle = style; } // sg add 081113,bRealDist用来控制,返回“实际距离”(自动乘字高)或“系数” double GetText2BaseRatio(BOOL bAsPaperUnit = TRUE, BOOL bRealDist = TRUE) const; void SetText2BaseRatio(double dVal, BOOL bAsPaperUnit = TRUE); // TArch9 data,文字基线长度 void SetTextBaseLen(double dVal, BOOL bAsPaperUnit = TRUE); double GetTextBaseLen(BOOL bAsPaperUnit = TRUE) const; // 文字基线默认长度 double GetDefaultTextBaseLen(BOOL bAsPaperUnit = TRUE) const; // 文字基线的真实长度 double GetTrueTextBaseLen(BOOL bAsPaperUnit = TRUE) const; protected: ADSGePoint3d _GetTurnPoint() const; // 用于对TArch5的升级 };