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

162 lines
6.0 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#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;
};