342 lines
8.2 KiB
C++
342 lines
8.2 KiB
C++
#if !defined(AFX_DBDOUBLELINEPIPEREDUCER_H__9B474D6E_3235_445C_B357_D4A49B6BFB1B__INCLUDED_)
|
|
#define AFX_DBDOUBLELINEPIPEREDUCER_H__9B474D6E_3235_445C_B357_D4A49B6BFB1B__INCLUDED_
|
|
|
|
#if _MSC_VER > 1000
|
|
#pragma once
|
|
#endif // _MSC_VER > 1000
|
|
|
|
/*============================================================================*
|
|
* Copyright(c), 1994-2007, Beijing Tangent Engineering Software Co.Ltd.
|
|
* 作 者: 陈恩涛
|
|
* 创建时间: 2010-2-26
|
|
* 描 述: 双线水管大小接头
|
|
* 归属项目: 给排水
|
|
* 历史记录:
|
|
=============================================================================*/
|
|
|
|
#include "DbEquipment.h"
|
|
#include "TGripData.h"
|
|
|
|
#define GRIP_MAXNUM_DBPIPE_REDUCER 10 // cet 2012.11.6 add. 大小接头点最大数目
|
|
|
|
class PS_EXP TDbDoubleLinePipeReducer : public TDbEquipment
|
|
{
|
|
DECLARE_TENTBASE();
|
|
ACRX_DECLARE_MEMBERS(TDbDoubleLinePipeReducer);
|
|
private:
|
|
|
|
static const Adesk::UInt8 g_nVersion;
|
|
|
|
private:
|
|
|
|
double m_dLength; //异径管管中心的水平距离
|
|
double m_dSPipeDiameter; //起点处水管直径
|
|
double m_dEPipeDiameter; //终点处水管直径
|
|
double m_dSPipeFlangeDist; //起点处管径圆心到法兰外侧的距离
|
|
double m_dEPipeFlangeDist; //终点处管径圆心到法兰外侧的距离
|
|
double m_dEFlangeDiameter; //终点处法兰的直径
|
|
double m_dSFlangeDiameter; //起点处法兰的直径
|
|
double m_dEFlangeThick; //终点处的法兰厚度
|
|
double m_dSFlangeThick; //起点处的法兰厚度
|
|
AcGePoint3d m_ptStart; //起点位置
|
|
Adesk::Int16 m_nType; //管件类型: 异径管(俗称:同心大小头)偏心异径管(俗称:偏心大小头)
|
|
Adesk::Int16 m_nLinkType; //双线水管的链接方式:焊接 :法兰链接
|
|
double m_dAngle;
|
|
Adesk::Int16 m_nSpare; //空余变量
|
|
double m_dSpare; //空余变量
|
|
XString m_strSpare; //空余变量
|
|
static TWT_GRIPAPPDATA s_gripAppData[GRIP_MAXNUM_DBPIPE_REDUCER]; // cet 2012.11.6 add 保存夹点数据
|
|
|
|
public:
|
|
|
|
double GetLenght()
|
|
{
|
|
return m_dLength;
|
|
}
|
|
|
|
void SetLenght(double dLen)
|
|
{
|
|
assertWriteEnabled();
|
|
m_dLength = dLen;
|
|
ModifyInterfacePt();
|
|
}
|
|
|
|
double GetSPipeDiameter()
|
|
{
|
|
return m_dSPipeDiameter;
|
|
}
|
|
|
|
void SetSPipeDiameter(double dDiameter)
|
|
{
|
|
assertWriteEnabled();
|
|
m_dSPipeDiameter = dDiameter;
|
|
ModifyInterfacePt();
|
|
}
|
|
|
|
double GetEPipeDiameter()
|
|
{
|
|
return m_dEPipeDiameter;
|
|
}
|
|
|
|
void SetEPipeDiameter(double dDiameter)
|
|
{
|
|
assertWriteEnabled();
|
|
m_dEPipeDiameter = dDiameter;
|
|
ModifyInterfacePt();
|
|
}
|
|
|
|
double GetSPipeFlangeDist()
|
|
{
|
|
return m_dSPipeFlangeDist;
|
|
}
|
|
|
|
void SetSPipeFlangeDist(double dDist)
|
|
{
|
|
assertWriteEnabled();
|
|
m_dSPipeFlangeDist = dDist;
|
|
ModifyInterfacePt();
|
|
}
|
|
|
|
double GetEPipeFlangeDist()
|
|
{
|
|
return m_dEPipeFlangeDist;
|
|
}
|
|
|
|
void SetEPipeFlangeDist(double dDist)
|
|
{
|
|
assertWriteEnabled();
|
|
m_dEPipeFlangeDist = dDist;
|
|
ModifyInterfacePt();
|
|
}
|
|
|
|
double GetSFlangeDiameter()
|
|
{
|
|
return m_dSFlangeDiameter;
|
|
}
|
|
|
|
void SetSFlangeDiameter(double dDiameter)
|
|
{
|
|
assertWriteEnabled();
|
|
m_dSFlangeDiameter = dDiameter;
|
|
ModifyInterfacePt();
|
|
}
|
|
|
|
double GetEFlangeDiameter()
|
|
{
|
|
return m_dEFlangeDiameter;
|
|
}
|
|
|
|
void SetEFlangeDiameter(double dDiameter)
|
|
{
|
|
assertWriteEnabled();
|
|
m_dEFlangeDiameter = dDiameter;
|
|
ModifyInterfacePt();
|
|
}
|
|
|
|
double GetSFlangeThick()
|
|
{
|
|
return m_dSFlangeThick;
|
|
}
|
|
|
|
void SetSFlangeThick(double dThick)
|
|
{
|
|
assertWriteEnabled();
|
|
m_dSFlangeThick = dThick;
|
|
ModifyInterfacePt();
|
|
}
|
|
|
|
double GetEFlangeThick()
|
|
{
|
|
return m_dEFlangeThick;
|
|
}
|
|
|
|
void SetEFlangeThick(double dThick)
|
|
{
|
|
assertWriteEnabled();
|
|
m_dEFlangeThick = dThick;
|
|
ModifyInterfacePt();
|
|
}
|
|
|
|
AcGePoint3d GetStartPosition()
|
|
{
|
|
return m_ptStart;
|
|
}
|
|
|
|
void SetStartPosition(const AcGePoint3d &ptStart)
|
|
{
|
|
assertWriteEnabled();
|
|
m_ptStart = ptStart;
|
|
ModifyInterfacePt();
|
|
}
|
|
|
|
int GetType()
|
|
{
|
|
return m_nType;
|
|
}
|
|
|
|
void SetType(int nType)
|
|
{
|
|
assertWriteEnabled();
|
|
m_nType = nType;
|
|
ModifyInterfacePt();
|
|
}
|
|
|
|
int GetLinkType()
|
|
{
|
|
return m_nLinkType;
|
|
}
|
|
|
|
void SetLinkType(int nType)
|
|
{
|
|
assertWriteEnabled();
|
|
m_nLinkType = nType;
|
|
ModifyInterfacePt();
|
|
}
|
|
|
|
double GetAngle()
|
|
{
|
|
return m_dAngle;
|
|
}
|
|
|
|
void SetAngle(double dAngle)
|
|
{
|
|
assertWriteEnabled();
|
|
m_dAngle = dAngle;
|
|
ModifyInterfacePt();
|
|
}
|
|
|
|
int GetNSpare()
|
|
{
|
|
return m_nSpare;
|
|
}
|
|
|
|
void SetNSpare(int nSpare)
|
|
{
|
|
assertWriteEnabled();
|
|
m_nSpare = nSpare;
|
|
}
|
|
|
|
double GetDSpare()
|
|
{
|
|
return m_nSpare;
|
|
}
|
|
|
|
void SetDSpare(double dSpare)
|
|
{
|
|
assertWriteEnabled();
|
|
m_dSpare = dSpare;
|
|
}
|
|
|
|
XString GetStrSpare()
|
|
{
|
|
return m_nSpare;
|
|
}
|
|
|
|
void SetStrSpare(const XString& strSpare)
|
|
{
|
|
assertWriteEnabled();
|
|
m_strSpare = strSpare;
|
|
}
|
|
|
|
void AddPipeReducerInterface();
|
|
// 当参数变化时,修改接口位置
|
|
void ModifyInterfacePt();
|
|
|
|
public:
|
|
|
|
TDbDoubleLinePipeReducer();
|
|
|
|
virtual ~TDbDoubleLinePipeReducer();
|
|
|
|
// 根据夹点索引获得,该索引类型和夹点提示 cet 2012.11.6 add
|
|
void ExplainGripIndex(int nIndex, bool &bCmd, CString &sTip) const;
|
|
// 获得起点、中点、终点 cet 2012.11.7 add
|
|
void GetPoints(AcGePoint3d &ptS, AcGePoint3d &ptMid, AcGePoint3d &ptE) const;
|
|
|
|
public: // Override TDbEntity
|
|
|
|
virtual Acad::ErrorStatus GetGripText(int idx, CString &cs) const;
|
|
virtual void CopyPropertiesFrom(AcDbEntity *pSrc, unsigned gMatchFlag);
|
|
virtual Acad::ErrorStatus subGetClassID(CLSID* pClsid) const;
|
|
virtual Acad::ErrorStatus ExplodeOrDraw2d(XExplodeDraw &dc) const;
|
|
virtual Acad::ErrorStatus ExplodeOrDraw3d(XExplodeDraw &dc) const;
|
|
|
|
virtual void GetTips(DList<TObjInfoUnit> &) const; //取动态属性显示数据
|
|
virtual void UpdateLinkage(const XPoint &ptAt, TPipeSys::SysType st,
|
|
const DList<AcDbObjectId> &idPipes);
|
|
virtual BOOL CanLinkSide(const AcDbObjectId &idPipe, int nPos) const;
|
|
virtual int GetFirstVersion()const{return 8;}
|
|
|
|
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 dwgInFields (AcDbDwgFiler*);
|
|
virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler*) const;
|
|
virtual Acad::ErrorStatus dxfInFields (AcDbDxfFiler*);
|
|
virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler*) const;
|
|
virtual Acad::ErrorStatus subGetGeomExtents(AcDbExtents& extents) const;
|
|
virtual Acad::ErrorStatus subTransformBy(const AcGeMatrix3d& xform);
|
|
virtual Acad::ErrorStatus subDeepClone(AcDbObject* pOwner,
|
|
AcDbObject*& pClonedObject,
|
|
AcDbIdMapping& idMap,
|
|
Adesk::Boolean isPrimary) const;
|
|
|
|
public:
|
|
|
|
// cet 2012.11.6 add 支持夹点启动绘制命令
|
|
#if ADS > 15
|
|
virtual Acad::ErrorStatus subGetGripPoints(AcDbGripDataPtrArray& grips,
|
|
const double curViewUnitSize,
|
|
const int gripSize,
|
|
const AcGeVector3d& curViewDir,
|
|
const int bitflags) const;
|
|
|
|
virtual Acad::ErrorStatus subMoveGripPointsAt(const AcDbVoidPtrArray& appData,
|
|
const AcGeVector3d& offset,
|
|
const int bitflags);
|
|
#endif
|
|
|
|
virtual Acad::ErrorStatus subGetGripPoints(AcGePoint3dArray& gripPoints,
|
|
AcDbIntArray& osnapModes,
|
|
AcDbIntArray& geomIds) const;
|
|
|
|
virtual Acad::ErrorStatus subMoveGripPointsAt(const AcDbIntArray& indices,
|
|
const AcGeVector3d& offset);
|
|
|
|
void UpdateInterface();
|
|
|
|
public:
|
|
|
|
enum LINKTYPE
|
|
{
|
|
eCenter = 0,//同心
|
|
eUp, //偏心顶平
|
|
eDown, //偏心底平
|
|
eJointing, //焊接
|
|
eFlangeLink,//法兰链接
|
|
eStart,
|
|
eEnd,
|
|
eMove,
|
|
};
|
|
|
|
private:
|
|
|
|
Acad::ErrorStatus MoveGSPointsAt(const AcDbIntArray& indices, const AcGeVector3d& offset);
|
|
// 绘制焊接连接
|
|
Acad::ErrorStatus DrawJointing3d(XExplodeDraw &dc) const;
|
|
Acad::ErrorStatus DrawPolyMesh(const XPoint &ptS, const XPoint &ptE, double nRadius, XExplodeDraw &dc) const;
|
|
// 绘制终点法兰
|
|
void DrawEFlange(XExplodeDraw &dc, const AcGePoint3d &ptStart) const;
|
|
// 绘制起点法兰
|
|
void DrawSFlange(XExplodeDraw &dc, const AcGePoint3d &ptStart) const;
|
|
|
|
};
|
|
|
|
#endif // !defined(AFX_DBDOUBLELINEPIPEREDUCER_H__9B474D6E_3235_445C_B357_D4A49B6BFB1B__INCLUDED_)
|