162 lines
6.0 KiB
C++
162 lines
6.0 KiB
C++
#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;
|
||
};
|
||
|