Files
envi-code/SourceCode/Code2026/Dimension/AecDbSymbDrawingIndex.h
T

161 lines
5.7 KiB
C++
Raw Normal View History

2026-09-28 15:28:50 +08:00
#pragma once
#include "AecDbSymbWithText.h"
class AecXDbSymbDrawingIndex : public AecXDbSymbWithText
{
public:
ACRX_DECLARE_MEMBERS(AecXDbSymbDrawingIndex);
private:
const static Adesk::UInt8 g_nVersion;
protected:
ADSGePoint3d m_ptCenter; // 圆心
double m_nRadius; // 图纸单位
double m_nLineWidth; // 线粗(图纸单位)
// 文字参数
TCString m_sIndexLabel; // 索引编号
TCString m_sDrawingLabel; // 图号
// sg add 081210、081217、090108,110209
// 是否保留旧的样式:2——随TDbConfig,1——保留,0——不保留,3——出圈样式
Adesk::UInt8 m_bOldStyle;
Adesk::UInt8 m_bDrawScale; // 是否绘制比例
AcDbHardPointerId m_idScaleStyle; // 比例样式
TCString m_szScaleText; // 比例文字
double m_dScaleTextHeight; // 比例文字字高
double m_dScaleXDist; // 比例文字距圆心的X方向距离
double m_dTextRatio; // 文字控制大小的比例,0为随TDbConfig
// sg add 090720,8.0正式版增加的临时变量,不保存,处理轴网标注的轴号绘制问题
BOOL m_bSymbText;
// TArch9 Data
double m_dScaleYDist; // sg add 120110,比例文字距圆心的Y方向距离
public:
AecXDbSymbDrawingIndex();
~AecXDbSymbDrawingIndex();
virtual BOOL IsValid() const;
//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);
// sg add 120110,根据9.0需求,增加了一个夹点,需要重载这2个函数
virtual Acad::ErrorStatus subMoveGripPointsAt(const AcDbIntArray& indices,
const AcGeVector3d& offset);
virtual Acad::ErrorStatus subMoveStretchPointsAt(const AcDbIntArray& indices,
const AcGeVector3d& offset);
public: // drived from TDbEntity
virtual void GetTips(PtrList<ObjInfoUnit> &) 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 (!!m_sDrawingLabel) ? 2 : 1; }//ok
// sg modify 081218,将该函数的实现放到了CPP中
// virtual void SetSubText(long i, CString sText) {if(i==0)SetIndexLabel(sText);else SetDrawingLabel(sText);}//ok
virtual void SetSubText(long i, CString sText);
virtual SubText* HitTestText(ADSGePoint3d pt)const;
virtual const TCHAR *GetDefaultLayer() const;
//virtual Acad::ErrorStatus DownGradeSave(int nDrawMode, AcDbVoidPtrArray &entSet,
// BOOL *bErase); // sg add 081223,导出低版本
// sg add 090203,查找替换
BOOL GetText(Adesk::UInt32 cookies, AecXDbText &text) const;
// 返回发现的位置,同时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);
// sg add 110211,支持统一标高
virtual bool UnifyElevation(double dElevation = 0.0);
public: // Properties
const TCHAR *GetIndexLabel() const;
void SetIndexLabel(const TCHAR *pszText);
const TCHAR *GetDrawingLabel() const;
void SetDrawingLabel(const TCHAR *pszText);
ADSGePoint3d GetCenter() const;
void SetCenter(ADSGePoint3d pt);
double GetRadius(BOOL bAsPaperUnit = TRUE) const;
void SetRadius(double val, BOOL bAsPaperUnit = TRUE);
double GetLineWidth() const;
void SetLineWidth(double val);
// 将文字位置点提供给国际分轴号使用
double GetTextParam1(ADSGePoint3d &pt1, ADSGePoint3d &pt2) const;
// sg add 081210,sg add 081217
BOOL IsDrawScale() const;
void SetDrawScale(BOOL bDraw);
TCString GetScaleText() const;
void SetScaleText(const TCString &szScaleText);
AcDbObjectId GetScaleStyleId() const;
void SetScaleStyleId(const AcDbObjectId &idScaleStyle);
double GetScaleTextHeight() const;
void SetScaleTextHeight(double dVal);
double GetScaleXDist(BOOL bAsPaperUnit = TRUE) const;
// sg modify 120110,修改接口,增加出图比例的设置
// void SetScaleXDist(double dVal, BOOL bAsPaperUnit = TRUE);
void SetScaleXDist(double dVal, BOOL bAsPaperUnit = TRUE);
// sg add 090108
void SetOldStyle(int nDraw);
int GetOldStyle() const;
// 是否保留旧的样式,考虑基本设定
BOOL IsOldStyle() const;
// sg add 110209,获得圆圈文字样式,考虑了随基本设定的情况
int GetTrueTextStyle() const;
// sg add 090115
double GetTextRatio() const; // 文字控制大小的比例
void SetTextRatio(double dVal);
// sg add 090720,8.0正式版增加的临时变量,不保存,处理轴网标注的轴号绘制问题
void SetSymbText(BOOL bSymbText);
// sg add 120110,比例文字距圆心的Y方向距离
double GetScaleYDist(BOOL bAsPaperUnit = TRUE) const;
void SetScaleYDist(double dVal, BOOL bAsPaperUnit = TRUE);
// sg add 120110,直接提供接口,设置比例文字位置,但是内部保存的还是m_dScaleXDist和m_dScaleYDist
ADSGePoint3d GetScaleTextPt() const;
void SetScaleTextPt(ADSGePoint3d pt);
// sg add 120110,获得比例文字默认的文字位置
ADSGePoint3d GetDefaultScaleTextLocation() const;
private:
void GetTextExtends(const TCHAR *sText, double &dX, double &dY,
BOOL bDrawingLabel = FALSE) const;
};