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

216 lines
7.4 KiB
C++

#ifndef __DBPIPELABEL_H
#define __DBPIPELABEL_H
/*============================================================================*
* Copyright(c), 1994-2007, Beijing Tangent Engineering Software Co.Ltd.
* 作 者: 杨小勇
* 创建时间: 2003年秋季
* 描 述: 1管中文字 2管径标注(独立于管线) TWT 7.6开始使用
* 归属项目: 给排水 暖通
* 历史记录: 2008-6-26 补头文件注释
=============================================================================*/
#include "DbText.h"
//#include "DbEntity.h"
#include "PipePrototype.h"
// 文字样式应当有全局的设定
class PS_EXP TLabelStyle{
private:
const static Adesk::UInt8 g_nVersion;
public:
TLabelStyle();
protected:
AcDbHardPointerId m_idTextStyle;// 文字样式
double m_dTextHeight; // 文字高度
double m_dTextRotation; // 旋转角度
public:// Properties
AcDbObjectId GetTextStyleId() const { return m_idTextStyle; }
double GetTextHeight() const { return m_dTextHeight; }
void SetTextStyleId(AcDbObjectId id) { m_idTextStyle = id; }
void SetTextHeight(double dHeight) { m_dTextHeight = dHeight; }
void SetTextRotation(double dRot) { m_dTextRotation = dRot; }
public:
virtual double GetTextRotation() const { return m_dTextRotation; }
virtual BOOL IsTextRotated() const { return (fabs(m_dTextRotation)>_angSnap); }
public:
virtual BOOL IsValid() const;
virtual void CopyPropertiesFrom(AcDbEntity *pSrc, unsigned gMatchFlag);
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 subTransformBy(const AcGeMatrix3d& xform);
};
// 管线标注
class PS_EXP TDbPipeLabel : public TDbPipeAttachment,public TLabelStyle {
public:
DECLARE_TENTBASE();
ACRX_DECLARE_MEMBERS(TDbPipeLabel);
private:
static const Adesk::UInt8 g_nVersion;
public:
TDbPipeLabel();
// 管线标注类别: 0、普通管 1、风管
enum PipeType
{
kCommon=0,
kDuct=1,
kPipeDnDim, // cet 2014.6.3 add 管径标注
};
protected:
PipeType m_typePipe; // 管线类别,默认kCommon
XString m_sLeftText; // 文字左边内容
double m_dDistToPipe; // 距管线距离,左为正
double m_dPipeWidth; // 管的宽度或者直径
double m_dPipeHeight; // 管的高度
public:
PipeType GetPipeType() const {
return m_typePipe;
}
void SetPipeType(PipeType type) {
assertWriteEnabled();
m_typePipe = type;
}
double GetDistToPipe() const {
return m_dDistToPipe;
}
void SetDistToPipe(double dDist) {
assertWriteEnabled();
m_dDistToPipe=dDist;
}
const TCHAR* GetLeftText() const {
return (const TCHAR*)m_sLeftText;
}
void SetLeftText(const TCHAR* sText) {
assertWriteEnabled();
m_sLeftText = sText;
}
double GetPipeDiameter() const { // 标注中的管径
return GetPipeWidth();
}
void SetPipeDiameter(double dDiameter) {
SetPipeWidth(dDiameter);
}
double GetPipeWidth() const { // 标注中的宽度(用于风管)
return m_dPipeWidth;
}
void SetPipeWidth(double dWidth) {
assertWriteEnabled();
m_dPipeWidth = dWidth;
}
double GetPipeHeight() const { // 标注中的高度(用于风管)
return m_dPipeHeight;
}
void SetPipeHeight(double dHeight) {
assertWriteEnabled();
m_dPipeHeight = dHeight;
}
double GetMinLabelTextLen() const;
public:
XPoint GetLabelLocation() const;// 文字的坐标
XString GetLabelText() const;//标注
public:
virtual BOOL IsValid() const;
virtual BOOL IsSureSingle() const { return FALSE; } //sr Modify to FALSE 1管可以多标注
virtual BOOL IsSingle(const TDbPipePrototype *pipe) const;
virtual BOOL IsCheckSysType() const { return FALSE;}
virtual double GetTextRotation() const;
virtual long GetSubTextNum()const{return 1;} // cet 2014.6.3 add 支持双击修改
virtual void SetSubText(long i,CString sText); // cet 2014.6.3 add 支持双击修改
virtual void CopyPropertiesFrom(AcDbEntity *pSrc, unsigned gMatchFlag);
virtual void GetTips(DList<TObjInfoUnit> &) const;
virtual Acad::ErrorStatus subGetClassID(CLSID* pClsid) const;
virtual Acad::ErrorStatus GetGripText(int idx, CString &cs) const;
virtual Acad::ErrorStatus ExplodeOrDraw2d(XExplodeDraw &dc) const;
virtual Acad::ErrorStatus GetExtents(XPoint &ptLow,XPoint &ptUp) const;
virtual int GetFirstVersion()const{return 6;}
public: // Override AcDbEntity
Acad::ErrorStatus subGetOsnapPoints(AcDb::OsnapMode osnapMode,
INT_PTR gsSelectionMark,
const AcGePoint3d& ptPick,
const AcGePoint3d& lastPoint,
const AcGeMatrix3d& viewXform,
AcGePoint3dArray& snapPoints,
AcDbIntArray& geomIds) const;
virtual Acad::ErrorStatus subClose();
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 subGetStretchPoints(AcGePoint3dArray & stretchPoints) const;
virtual Acad::ErrorStatus subMoveGripPointsAt(const AcDbIntArray& indices,
const AcGeVector3d& offset);
virtual Acad::ErrorStatus subMoveStretchPointsAt(const AcDbIntArray& indices,
const AcGeVector3d& offset);
virtual Acad::ErrorStatus subTransformBy(const AcGeMatrix3d& xform);
private:
Acad::ErrorStatus MoveGSPointsAt(const AcDbIntArray& indices,const AcGeVector3d& offset);
};
// 管线文字
class PS_EXP TDbPipeText : public TDbPipeAttachment,public TLabelStyle {
DECLARE_TENTBASE();
ACRX_DECLARE_MEMBERS(TDbPipeText);
private:
static const Adesk::UInt8 g_nVersion;
public:
TDbPipeText();
// cet 2014.6.3 add 标注文字类型 -1 未知 0 管径标注文字 1 管线文字
int DimTextType();
void DimTextType(Adesk::Int8 nDimTextType);
protected:
XString m_sText; //文字内容
public:
const TCHAR* GetText() const {
return (const TCHAR*)m_sText;
}
void SetText(const TCHAR* sText, bool bUpdatePipe = false) {
assertWriteEnabled();
// cet 2014.7.7 add 更新管线中标注信息, 更新失败时不修改标注内容
if (bUpdatePipe && !UpdateLinkedPipe(sText))
{
return;
}
m_sText = sText;
}
public:
virtual BOOL IsValid() const;
virtual BOOL IsCheckSysType() const { return FALSE;}
virtual double GetTextRotation() const;
virtual double GetWidth() const ;
virtual void CopyPropertiesFrom(AcDbEntity *pSrc, unsigned gMatchFlag);
virtual void GetTips(DList<TObjInfoUnit> &) const;
virtual Acad::ErrorStatus subGetClassID(CLSID* pClsid) const;
virtual Acad::ErrorStatus ExplodeOrDraw2d(XExplodeDraw &dc) const;
virtual Acad::ErrorStatus GetGripText(int idx, CString &cs) const;
virtual long GetSubTextNum()const{return 1;}//ok
virtual void SetSubText(long i,CString sText);
virtual int GetFirstVersion()const{return 6;}
public: // Override AcDbEntity
virtual Acad::ErrorStatus dwgInFields (AcDbDwgFiler*);
virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler*) const;
virtual Acad::ErrorStatus dxfInFields (AcDbDxfFiler*);
virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler*) const;
private:
// cet 2014.7.7 add 更新管线关联的标注信息
bool UpdateLinkedPipe(const CString &sDimText);
};
#endif