Files
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

152 lines
6.7 KiB
C++

#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<ObjInfoUnit> &) 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;
};