208 lines
6.8 KiB
C++
208 lines
6.8 KiB
C++
#pragma once
|
|
|
|
#include "aecDbText.h"
|
|
#include "PipePrototype.h"
|
|
|
|
// 文字样式应当有全局的设定
|
|
class CLabelStyle
|
|
{
|
|
private:
|
|
const static Adesk::UInt8 g_nVersion;
|
|
public:
|
|
CLabelStyle();
|
|
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)>g_DimOption::instance()._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 CDbPipeLabel : public CDbPipeAttachment
|
|
, public CLabelStyle
|
|
{
|
|
public:
|
|
ACRX_DECLARE_MEMBERS(CDbPipeLabel);
|
|
private:
|
|
static const Adesk::UInt8 g_nVersion;
|
|
public:
|
|
CDbPipeLabel();
|
|
// 管线标注类别: 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 CDbPipePrototype *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<ObjInfoUnit> &) const;
|
|
//virtual Acad::ErrorStatus subGetClassID(CLSID* pClsid) const;
|
|
virtual Acad::ErrorStatus GetGripText(int idx, CString &cs) const;
|
|
virtual Acad::ErrorStatus Draw2d(AcGiDraw &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 CDbPipeText : public CDbPipeAttachment
|
|
, public CLabelStyle
|
|
{
|
|
public:
|
|
ACRX_DECLARE_MEMBERS(CDbPipeText);
|
|
private:
|
|
static const Adesk::UInt8 g_nVersion;
|
|
public:
|
|
CDbPipeText();
|
|
// 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<ObjInfoUnit> &) const;
|
|
//virtual Acad::ErrorStatus subGetClassID(CLSID* pClsid) const;
|
|
virtual Acad::ErrorStatus Draw2d(AcGiDraw &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);
|
|
};
|