2026-10-04 00:04:20 +08:00
|
|
|
|
#pragma once
|
2026-09-28 15:28:50 +08:00
|
|
|
|
#include "AecDbSymbWithText.h"
|
|
|
|
|
|
#include "GePoly2D.h"
|
|
|
|
|
|
#include "ObjInfoUnit.h"
|
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
#define SYMB_SECTION_DIM_DIR 0x01 // 标注方向
|
|
|
|
|
|
#define SYMB_SECTION_START_INDEX 0x02 // 标记始端是否有文字
|
|
|
|
|
|
#define SYMB_SECTION_END_INDEX 0x04 // 标记终端是否有文字
|
|
|
|
|
|
#define SYMB_SECTION_VIEW_DIR2 0x08 // 非正交的情况,有2个剖视方向
|
2026-09-28 15:28:50 +08:00
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 剖切符号
|
2026-09-28 15:28:50 +08:00
|
|
|
|
class AecXDbText;
|
|
|
|
|
|
class AecXDbSymbSection : public AecXDbSymbWithText
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
struct GripData
|
|
|
|
|
|
{
|
|
|
|
|
|
GripData(): m_idx(-1)
|
|
|
|
|
|
, m_bDrawFrame(false)
|
|
|
|
|
|
, m_pt0(AcGePoint3d::kOrigin)
|
|
|
|
|
|
, m_pt1(AcGePoint3d::kOrigin)
|
|
|
|
|
|
, m_pt2(AcGePoint3d::kOrigin)
|
|
|
|
|
|
, m_pt3(AcGePoint3d::kOrigin) {}
|
2026-10-04 00:04:20 +08:00
|
|
|
|
int m_idx; // 索引
|
2026-09-28 15:28:50 +08:00
|
|
|
|
AcGePoint3d m_pt0, m_pt1, m_pt2, m_pt3;
|
2026-10-04 00:04:20 +08:00
|
|
|
|
bool m_bDrawFrame; // 是否绘制剖切框
|
2026-09-28 15:28:50 +08:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
ACRX_DECLARE_MEMBERS(AecXDbSymbSection);
|
|
|
|
|
|
|
|
|
|
|
|
// data members
|
|
|
|
|
|
public:
|
|
|
|
|
|
static double g_nLineWidth;
|
|
|
|
|
|
static double g_nSegLength;
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
const static Adesk::UInt8 g_nVersion;
|
|
|
|
|
|
|
|
|
|
|
|
Adesk::UInt8 m_bViewLine;
|
|
|
|
|
|
GePoly2D m_poly;
|
|
|
|
|
|
double m_nViewDir;
|
|
|
|
|
|
|
|
|
|
|
|
TCString m_sText;
|
|
|
|
|
|
ADSGePoint3d m_ptText1, m_ptText2;
|
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// add by lgy 20120319,9.0需求要求添加以下变量
|
|
|
|
|
|
ADSGePoint3d m_ptSIndex; // 剖面图号文字位置点,ECS坐标系下
|
2026-09-28 15:28:50 +08:00
|
|
|
|
ADSGePoint3d m_ptEIndex;
|
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
TCString m_sDrawingIndex; // 剖面图号的文字内容
|
|
|
|
|
|
AcDbHardPointerId m_idIndexStyle; // 文字样式
|
|
|
|
|
|
double m_dIndexHeight; // 文字字高
|
|
|
|
|
|
double m_dText2BaseRatio; // 图号距文字基线系数
|
2026-09-28 15:28:50 +08:00
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
Adesk::UInt16 m_nFlag; // 标记位
|
2026-09-28 15:28:50 +08:00
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
double m_nViewDir2; // 终点处的剖视方向
|
2026-09-28 15:28:50 +08:00
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
AecXDbSymbSection();
|
|
|
|
|
|
virtual ~AecXDbSymbSection();
|
|
|
|
|
|
|
|
|
|
|
|
virtual BOOL IsValid() const;
|
|
|
|
|
|
virtual void CopyPropertiesFrom(AcDbEntity *pSrcEntity, unsigned gMatchFlag);
|
|
|
|
|
|
|
|
|
|
|
|
//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;
|
|
|
|
|
|
|
|
|
|
|
|
// AcDbEntity overrides
|
|
|
|
|
|
virtual Acad::ErrorStatus subGetGripPoints(
|
|
|
|
|
|
AcGePoint3dArray& gripPoints,
|
|
|
|
|
|
AcDbIntArray& osnapMasks,
|
|
|
|
|
|
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 subMoveGripPointsAt(
|
|
|
|
|
|
const AcDbIntArray& indices,
|
|
|
|
|
|
const AcGeVector3d& offset);
|
|
|
|
|
|
|
|
|
|
|
|
virtual Acad::ErrorStatus subMoveGripPointsAt(const AcDbVoidPtrArray& appData
|
|
|
|
|
|
, const AcGeVector3d& offset
|
|
|
|
|
|
, const int bitflags);
|
|
|
|
|
|
|
|
|
|
|
|
virtual Acad::ErrorStatus subGetStretchPoints(
|
|
|
|
|
|
AcGePoint3dArray& stretchPoints) const;
|
|
|
|
|
|
virtual Acad::ErrorStatus subMoveStretchPointsAt(
|
|
|
|
|
|
const AcDbIntArray& indices,
|
|
|
|
|
|
const AcGeVector3d& offset);
|
|
|
|
|
|
virtual Acad::ErrorStatus subTransformBy(const AcGeMatrix3d& xform);
|
|
|
|
|
|
|
|
|
|
|
|
public: // from TDbEntity
|
|
|
|
|
|
virtual Acad::ErrorStatus Draw2d(AcGiDraw &dc) const;
|
|
|
|
|
|
//virtual Acad::ErrorStatus DownGradeSave(int nDrawMode, AcDbVoidPtrArray &entSet,
|
|
|
|
|
|
// BOOL *bErase);
|
|
|
|
|
|
|
|
|
|
|
|
virtual void GetTips(PtrList<ObjInfoUnit> &) const;
|
|
|
|
|
|
Acad::ErrorStatus GetGripText(int idx, CString &cs) const;
|
|
|
|
|
|
virtual int ConvertText(TConvertTextPtr ptr, void *pData = NULL);
|
|
|
|
|
|
|
|
|
|
|
|
virtual long GetSubTextNum()const { return 2; }//ok
|
|
|
|
|
|
virtual SubText*HitTestText(ADSGePoint3d pt)const;
|
|
|
|
|
|
virtual void SetSubText(long i, CString sText);
|
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// sg add 090626,解决需求平台问题1416,支持查找替换操作
|
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);
|
|
|
|
|
|
|
|
|
|
|
|
public: // Properties
|
|
|
|
|
|
void GetPoly2D(GePoly2D &poly) const;
|
|
|
|
|
|
void SetPoly2D(const GePoly2D &poly);
|
|
|
|
|
|
|
|
|
|
|
|
double GetViewDirection() const;
|
|
|
|
|
|
void SetViewDirection(double vec);
|
|
|
|
|
|
|
|
|
|
|
|
double GetViewDirection2() const;
|
|
|
|
|
|
void SetViewDirection2(double vec);
|
|
|
|
|
|
|
|
|
|
|
|
const TCHAR *GetText() const;
|
|
|
|
|
|
void SetText(const TCHAR * pStr);
|
|
|
|
|
|
|
|
|
|
|
|
BOOL HasViewLine() const;
|
|
|
|
|
|
void SetViewLine(BOOL bTrue);
|
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// nPos为0表示起点端,1为终点端
|
2026-09-28 15:28:50 +08:00
|
|
|
|
ADSGePoint3d GetDefaultTextLocation(int nPos) const;
|
|
|
|
|
|
ADSGePoint3d GetTextLocation(int nPos, BOOL bEcsPoint = FALSE) const;
|
|
|
|
|
|
void SetTextLocation(int nPos, ADSGePoint3d pt);
|
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// add by lgy 20120417,为剖面图号属性增加相应接口
|
|
|
|
|
|
// 剖面图号的文字内容
|
2026-09-28 15:28:50 +08:00
|
|
|
|
TCString GetDrawingIndex() const;
|
|
|
|
|
|
void SetDrawingIndex(CString strDrawingIndex);
|
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 文字样式
|
2026-09-28 15:28:50 +08:00
|
|
|
|
AcDbObjectId GetIndexStyleId() const;
|
|
|
|
|
|
void SetIndexStyleId(AcDbObjectId id);
|
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 文字字高
|
2026-09-28 15:28:50 +08:00
|
|
|
|
double GetIndexHeight() const;
|
|
|
|
|
|
void SetIndexHeight(double dHeight);
|
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 获得图号标注方向,0为剖切方向,1为剖视方向
|
2026-09-28 15:28:50 +08:00
|
|
|
|
int GetDimDirection() const;
|
|
|
|
|
|
void SetDimDirection(int nDir);
|
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 始端是否有文字
|
2026-09-28 15:28:50 +08:00
|
|
|
|
BOOL GetIsHasIndexS() const;
|
|
|
|
|
|
void SetIsHasIndexS(BOOL bHas);
|
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 终端是否有文字
|
2026-09-28 15:28:50 +08:00
|
|
|
|
BOOL GetIsHasIndexE() const;
|
|
|
|
|
|
void SetIsHasIndexE(BOOL bHas);
|
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 返回图号文字距基线系数
|
2026-09-28 15:28:50 +08:00
|
|
|
|
double GetText2BaseRatios() const;
|
|
|
|
|
|
void SetText2BaseRatios(double dText2BaseRatio);
|
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// nPos为0表示起点端,1为终点端
|
2026-09-28 15:28:50 +08:00
|
|
|
|
ADSGePoint3d GetDefaultIndexLocation(int nPos) const;
|
|
|
|
|
|
ADSGePoint3d GetIndexLocation(int nPos, BOOL bEcsPoint = FALSE) const;
|
|
|
|
|
|
void SetIndexLocation(int nPos, ADSGePoint3d pt);
|
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 是否为非正交(非垂直)的剖切符号
|
2026-09-28 15:28:50 +08:00
|
|
|
|
BOOL GetNonPerpendicularitySection() const;
|
|
|
|
|
|
void SetNonPerpendicularitySection(BOOL bYes);
|
|
|
|
|
|
|
|
|
|
|
|
bool hasLastPoint() const;
|
|
|
|
|
|
void setLastPoint(const AcGePoint3d &pt);
|
|
|
|
|
|
AcGePoint3d getLastPoint() const;
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// add by lgy 20120322,将文字基点由世界坐标系转换为实体坐标系
|
|
|
|
|
|
// 获取ECS原点,文字位置参考点
|
2026-09-28 15:28:50 +08:00
|
|
|
|
AcGePoint2d GetEcsOriginPt(int nPos) const;
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 获得X轴Y轴
|
2026-09-28 15:28:50 +08:00
|
|
|
|
void GetEcsAxisVector(AcGeVector2d &xAxis, AcGeVector2d &yAxis, int nPos) const;
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 由ecs转换成为wcs
|
2026-09-28 15:28:50 +08:00
|
|
|
|
ADSGePoint3d GetWcsTextPt(int nPos) const;
|
|
|
|
|
|
|
|
|
|
|
|
double GetEndViewLineDir() const;
|
|
|
|
|
|
|
|
|
|
|
|
AcGiDraw::TextAlignment GetIndexTextAlignment(int nPos) const;
|
|
|
|
|
|
double GetIndexTextRotation(int nPos) const;
|
|
|
|
|
|
|
|
|
|
|
|
void getGripPoints(AcGePoint3dArray& gripPoints) const;
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
mutable std::vector<GripData> m_GripDatas;
|
|
|
|
|
|
};
|