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

119 lines
4.3 KiB
C++
Raw Normal View History

2026-10-04 00:04:20 +08:00
#pragma once
2026-09-28 15:28:50 +08:00
#include "AecDbSymbWithText.h"
#include "ObjInfoUnit.h"
#include "AecDbSymbMultiLeader.h"
2026-10-04 00:04:20 +08:00
#define SCF_AB 0x01 // AB标注
2026-09-28 15:28:50 +08:00
class AecXDbSymbCoord : public AecXDbSymbWithText
{
public:
ACRX_DECLARE_MEMBERS(AecXDbSymbCoord);
private:
const static Adesk::UInt8 g_nVersion;
protected:
2026-10-04 00:04:20 +08:00
Adesk::UInt8 m_nFlag; // 控制标记,后四位用来控制精度TArch6.5
Adesk::UInt8 m_nQuadrant; // 象限0~3
2026-09-28 15:28:50 +08:00
ADSGePoint3d m_ptLocation;
2026-10-04 00:04:20 +08:00
ADSGePoint3d m_ptValue; // 显示的坐标值 x--Y(B), y--X(A)
2026-09-28 15:28:50 +08:00
// TArch6 data
ADSGePoint3d m_ptTurn;
// TArch7 data
AecXDbSymbMultiLeader::TArrowStyle m_nStyle;
// TArch8 data
2026-10-04 00:04:20 +08:00
double m_dText2BaseRatio; // 文字距基线系数,sg add 081113
2026-09-28 15:28:50 +08:00
// TArch9 data
2026-10-04 00:04:20 +08:00
// 基线长度,数据的正负代表方向,用这个100000的数字来表示需要读取默认长度
2026-09-28 15:28:50 +08:00
double m_dTextBaseLen;
public:
AecXDbSymbCoord();
~AecXDbSymbCoord();
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);
virtual Acad::ErrorStatus subMoveGripPointsAt(const AcDbIntArray& indices,
const AcGeVector3d& offset);
virtual Acad::ErrorStatus subMoveStretchPointsAt(const AcDbIntArray& indices,
const AcGeVector3d& offset);
// drived from TDbEntity
2026-10-04 00:04:20 +08:00
virtual void GetTips(PtrList<ObjInfoUnit> &) const; //取动态属性显示数据
2026-09-28 15:28:50 +08:00
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 2; }//ok
virtual SubText* HitTestText(ADSGePoint3d pt)const;
virtual SubText* GetSubText(long iText)const;
virtual void SetSubText(long i, CString sText);
virtual const TCHAR *GetDefaultLayer() const;
2026-10-04 00:04:20 +08:00
// sg add 090629,解决需求平台问题613,支持查找替换操作
2026-09-28 15:28:50 +08:00
BOOL GetText(Adesk::UInt32 cookies, AecXDbText &text) const;
virtual TextPosition FindSubText(const TCHAR *sSubText, TextPosition &posStart,
TextRange *pRange = NULL) const;
virtual TextPosition ReplaceSubText(const TextPosition &posRep,
const TCHAR *sRepText, TextRange *pRange = NULL);
2026-10-04 00:04:20 +08:00
// sg add 110301,支持统一标高
2026-09-28 15:28:50 +08:00
virtual bool UnifyElevation(double dElevation = 0.0);
//virtual Acad::ErrorStatus DownGradeSave(int nDrawMode, AcDbVoidPtrArray &entSet,
// BOOL *bErase);
ADSGePoint3d GetTurnPoint() const;
// Properties
ADSGePoint3d GetLocation() const;
ADSGePoint3d GetValue() const;
BOOL IsAB() const;
BOOL IsPrec2() const;
Adesk::UInt8 GetQuadrant() const;
Adesk::UInt8 GetPrecNum() const;
void SetLocation(ADSGePoint3d pt);
void SetValue(ADSGePoint3d pt);
void SetAB(BOOL bTrue);
void SetPrec2(BOOL bTrue);
void SetQuadrant(Adesk::UInt8 nQuadrant);
void SetTurnPoint(ADSGePoint3d pt);
void SetPrecNum(Adesk::UInt8 iNum);
AecXDbSymbMultiLeader::TArrowStyle GetStyle()const { assertReadEnabled(); return m_nStyle; }
void SetStyle(AecXDbSymbMultiLeader::TArrowStyle style) { assertWriteEnabled(); m_nStyle = style; }
2026-10-04 00:04:20 +08:00
// sg add 081113,bRealDist用来控制,返回“实际距离”(自动乘字高)或“系数”
2026-09-28 15:28:50 +08:00
double GetText2BaseRatio(BOOL bAsPaperUnit = TRUE, BOOL bRealDist = TRUE) const;
void SetText2BaseRatio(double dVal, BOOL bAsPaperUnit = TRUE);
2026-10-04 00:04:20 +08:00
// TArch9 data,文字基线长度
2026-09-28 15:28:50 +08:00
void SetTextBaseLen(double dVal, BOOL bAsPaperUnit = TRUE);
double GetTextBaseLen(BOOL bAsPaperUnit = TRUE) const;
2026-10-04 00:04:20 +08:00
// 文字基线默认长度
2026-09-28 15:28:50 +08:00
double GetDefaultTextBaseLen(BOOL bAsPaperUnit = TRUE) const;
2026-10-04 00:04:20 +08:00
// 文字基线的真实长度
2026-09-28 15:28:50 +08:00
double GetTrueTextBaseLen(BOOL bAsPaperUnit = TRUE) const;
protected:
2026-10-04 00:04:20 +08:00
ADSGePoint3d _GetTurnPoint() const; // 用于对TArch5的升级
2026-09-28 15:28:50 +08:00
};