#pragma once #include "aecdbentitybaseex.h" #include "ObjInfoUnit.h" class AecXDbText; class AecXDbDrawingName : public AecXDbEntityBaseEx { protected: static Adesk::Int16 g_nVersion; ADSGePoint3d m_ptLocation; // 位置点 TCString m_szNameText; // 图名文字 TCString m_szScaleText; // 比例文字 double m_dRotation; // 旋转角度 double m_dNameHeight; // 图名高度 double m_dScaleHeight; // 比例高度 double m_dLineWidth; // 粗线宽度 double m_dMultiple; // 比例距图名距离, 图名字高的倍数 AcDbHardPointerId m_idNameStyle; // 图名样式 AcDbHardPointerId m_idScaleStyle; // 比例样式 BOOL m_bShowScale; // 是否显示比例 Adesk::UInt16 m_iDrawStyle; // 标注方式 Adesk::UInt16 m_colorText; // 文字颜色 BOOL m_bShowRegion; // 显示区域线 add by hh 2013-10-15 ADSGePoint3d m_ptMidLoc; // sg add 090112,中下对齐时的位置点 public: ACRX_DECLARE_MEMBERS(AecXDbDrawingName); // Constructor / Destructor AecXDbDrawingName(); //virtual Acad::ErrorStatus subGetClassID(CLSID* pClsid) const; virtual Acad::ErrorStatus dwgInFields(AcDbDwgFiler* filer); virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler* filer) const; virtual Acad::ErrorStatus dxfInFields(AcDbDxfFiler* filer); virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler* filer) const; virtual Acad::ErrorStatus subTransformBy(const AcGeMatrix3d& xform); 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 subGetOsnapPoints(AcDb::OsnapMode osnapMode, INT_PTR gsSelectionMark, const AcGePoint3d& pickPoint, const AcGePoint3d& lastPoint, const AcGeMatrix3d& viewXform, AcGePoint3dArray& snapPoints, AcDbIntArray& geomIds) const; virtual Acad::ErrorStatus subMoveGripPointsAt(const AcDbIntArray& indices, const AcGeVector3d& offset); //virtual Acad::ErrorStatus DownGradeSave(int nDrawMode, AcDbVoidPtrArray &entSet, BOOL *bErase); virtual Acad::ErrorStatus Draw2d(AcGiDraw &dc) const; virtual int GetFirstVersion()const { return 7; }//ok virtual BOOL IsValid() const; virtual void CopyPropertiesFrom(AcDbEntity *pSrcEntity, unsigned gMatchFlag); virtual void GetTips(PtrList &) const; Acad::ErrorStatus GetGripText(int idx, CString &cs) const; const TCHAR *GetDefaultLayer() 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 GetSubTextNum()const { return m_bShowScale ? 2 : 1; }//ok virtual void SetSubText(long i, CString sText); // sg add 110301,支持统一标高 virtual bool UnifyElevation(double dElevation = 0.0); // 读入读出 void SetLocation(const ADSGePoint3d &ptLocation) { AssertWriteEnabled(); m_ptLocation = ptLocation; } void SetNameText(const TCString &szNameText) { AssertWriteEnabled(); m_szNameText = szNameText; } void SetScaleText(const TCString &szScaleText) { AssertWriteEnabled(); m_szScaleText = szScaleText; } void SetRotation(double dRotation) { AssertWriteEnabled(); m_dRotation = dRotation; } void SetNameHeight(double dNameHeight) { AssertWriteEnabled(); m_dNameHeight = dNameHeight; } void SetScaleHeight(double dScaleHeight) { AssertWriteEnabled(); m_dScaleHeight = dScaleHeight; } void SetLineWidth(double dLineWidth) { AssertWriteEnabled(); m_dLineWidth = dLineWidth; } void SetMultiple(double dMultiple) { AssertWriteEnabled(); m_dMultiple = dMultiple; } void SetNameStyleId(const AcDbObjectId &idNameStyle) { AssertWriteEnabled(); m_idNameStyle = idNameStyle; } void SetScaleStyleId(const AcDbObjectId &idScaleStyle) { AssertWriteEnabled(); m_idScaleStyle = idScaleStyle; } void SetShowScale(BOOL bShowScale) { AssertWriteEnabled(); m_bShowScale = bShowScale; } void SetDrawStyle(int iDrawStyle) { AssertWriteEnabled(); m_iDrawStyle = iDrawStyle; } ADSGePoint3d GetLocation() const { assertReadEnabled(); return m_ptLocation; } TCString GetNameText() const { assertReadEnabled(); return m_szNameText; } TCString GetScaleText() const { assertReadEnabled(); return m_szScaleText; } double GetRotation() const { assertReadEnabled(); return m_dRotation; } double GetNameHeight() const { assertReadEnabled(); return m_dNameHeight; } double GetScaleHeight() const { assertReadEnabled(); return m_dScaleHeight; } double GetLineWidth() const { assertReadEnabled(); return m_dLineWidth; } double GetMultiple() const { assertReadEnabled(); return m_dMultiple; } AcDbObjectId GetNameStyleId() const { assertReadEnabled(); return m_idNameStyle; } AcDbObjectId GetScaleStyleId() const { assertReadEnabled(); return m_idScaleStyle; } BOOL GetShowScale() const { assertReadEnabled(); return m_bShowScale; } int GetDrawStyle() const { assertReadEnabled(); return m_iDrawStyle; } // sg add 090112 void SetMidLocation(const ADSGePoint3d &ptLoc) { AssertWriteEnabled(); m_ptMidLoc = ptLoc; } ADSGePoint3d GetMidLocation() const { assertReadEnabled(); return m_ptMidLoc; } // sg add 090610,增加颜色设置接口 void SetTextColor(Adesk::UInt16 color) { AssertWriteEnabled(); m_colorText = color; } Adesk::UInt16 GetTextColor() const { return m_colorText; } ADSGePoint3d GetScaleLocation() const; // 比例绘制点 ADSGePoint3d GetNameDrawPt() const; // sg add 090325,图名绘制点 // add by hh 2013-10-15 区域PL线接口 // 设置区域轮廓 void SetRegionPoly(const AcGePoint3dArray& arPts); // 取得区域Poly BOOL GetRegionPoly(GePoly2D* pPoly) const; BOOL IsShowRegion() const { return m_bShowRegion; } void SetShowRegion(BOOL bShow) { assertWriteEnabled(); m_bShowRegion = bShow; } protected: BOOL GetText(int i, AecXDbText&text)const; AcGeVector3d GetVector() const; double GetOffset() const; // sg add 090112 void GetBottomCenterPt(); // 根据m_ptLocation得到m_ptMidLoc点 ADSGePoint3d GetBottomLeftPt() const; // 根据m_ptMidLoc得到左下对齐点 // sg add 090325,根据Beta1中的图名居中对齐点,得到Beta2中的包括比例部分的居中对齐点 void GetCenterPtIncludeScale(); // sg add 090327,获取整个符号长度/线长(沿布局转角方向) double GetTotalLen() const; double GetLineLen() const; };