549 lines
15 KiB
C++
549 lines
15 KiB
C++
// DbFloorPipe.h: interface for the TDbFloorPipe class.
|
||
//
|
||
//////////////////////////////////////////////////////////////////////
|
||
|
||
#if !defined(AFX_DBFLOORPIPE_H__FB55E4F4_567D_4205_B0FB_4106B4EB78CF__INCLUDED_)
|
||
#define AFX_DBFLOORPIPE_H__FB55E4F4_567D_4205_B0FB_4106B4EB78CF__INCLUDED_
|
||
|
||
#if _MSC_VER > 1000
|
||
#pragma once
|
||
#endif // _MSC_VER > 1000
|
||
|
||
#define TEMP_VERSION _T("TEMPVERSIONID") // 临时版本id,8.5
|
||
#define RETURN_LAYER _T("ReturnLayer") // 回水图层
|
||
#define DRAW_SUPPLYPT _T("DrawSupplyPt") // 实际绘制供水点
|
||
#define DRAW_RETURNPT _T("DrawReturnPt") // 实际绘制回水点
|
||
|
||
// add by myy 2014-12-12
|
||
#define DRAW_BORDERLEFTWIDTH _T("DrawBorderLeftWidth") // 边界区左宽度
|
||
#define DRAW_BORDERRIGHTWIDTH _T("DrawBorderRightWidth") // 边界区右宽度
|
||
#define DRAW_BORDERTOPWIDTH _T("DrawBorderTopWidth") // 边界区上宽度
|
||
#define DRAW_BORDERBOTTOMWIDTH _T("DrawBorderBottomWidth") // 边界区下宽度
|
||
#define DRAW_BORDERLEFTDIST _T("DrawBorderLeftDist") // 边界区左间距
|
||
#define DRAW_BORDERRIGHTDIST _T("DrawBorderRightDist") // 边界区左间距
|
||
#define DRAW_BORDERTOPDIST _T("DrawBorderTopDist") // 边界区左间距
|
||
#define DRAW_BORDERBOTTOMDIST _T("DrawBorderBottomDist") // 边界区左间距
|
||
#define DRAW_PIPEOUTDIST _T("PipeOutDist") // 入水、出水点距离
|
||
#define DRAW_ENTRYPT _T("DrawEntryPt") // 开口点
|
||
#define DRAW_ALTERENTRYPT _T("AlterDrawEntryPt") // 实时开口点
|
||
|
||
#define DRAW_BLEFTCHECK _T("BorderLeftCheck") //回折型盘管外区左边间距check是否点击
|
||
#define DRAW_BRGIHTCHECK _T("BorderRightCheck") //回折型盘管外区右边间距check是否点击
|
||
#define DRAW_BTOPCHECK _T("BorderTopCheck") //回折型盘管外区上边间距check是否点击
|
||
#define DRAW_BBOTTOMCHECK _T("BorderBottomCheck") //回折型盘管外区下边间距check是否点击
|
||
|
||
|
||
/*============================================================================*
|
||
* Copyright(c), 1994-2007, Beijing Tangent Engineering Software Co.Ltd.
|
||
* 文 件 名: DbFloorPipe.h
|
||
* 版 本: 1.0——TWT7.0
|
||
2.0——THvac7.5、TWT7.5
|
||
3.0——THvac8.0
|
||
3.0——THvac8.5
|
||
* 作 者:
|
||
* 创建时间:
|
||
* 描 述: 地热盘管实体
|
||
* 归属项目: 暖通
|
||
* 历史记录: 1.2007-10-30 sg modify, 增加了曲率半径、距墙距离等变量
|
||
2.2010-11-15 mcl modify 增加了回水图层的支持;进出口不再多出一小段、
|
||
增加进出口引出夹点,用于发送 手绘盘管命令;支持修改供、回水出口点位置
|
||
为了以前8.2、8.0兼容8.5文件,没有增加版本号,采用底层动态数据存储回
|
||
水图层id及供、回水位置点
|
||
=============================================================================*/
|
||
class PS_EXP TDbFloorPipe : public TDbEntity
|
||
{
|
||
DECLARE_TENTBASE();
|
||
ACRX_DECLARE_MEMBERS(TDbFloorPipe);
|
||
|
||
private:
|
||
static const Adesk::UInt8 g_nVersion;
|
||
|
||
public:
|
||
TDbFloorPipe();
|
||
virtual ~TDbFloorPipe();
|
||
|
||
void SetParam(XPoint ptStart, XPoint ptEnd, int iLeftDist, int iRightDist,
|
||
int iTopDist, int iBottomDist, double dbPGAngle, int nEntryType,
|
||
int nPipeType); // 不统一间距
|
||
|
||
// void SetParam(XPoint ptStart, XPoint ptEnd, int nDist, double dbPGAngle,
|
||
// int nEntryType, int nPipeType);
|
||
// 统一间距,注:不需要间距B时,将nDistB设置为0
|
||
void SetParam(XPoint ptStart, XPoint ptEnd, int nDist, double dbPGAngle,
|
||
int nEntryType, int nPipeType, int nDistB = 0);
|
||
|
||
// add by myy 2015-1-26
|
||
// 回折型盘管设置参数
|
||
void SetParam(XPoint ptStart, XPoint ptEnd, XPoint ptPick, BOOL bSameDist, int iLeftDist, int iRightDist,
|
||
int iTopDist, int iBottomDist, double dBorderLeftWidth, double dBorderRightWidth,
|
||
double dBorderUpWidth, double dBorderDownWidth, double dBorderLeftDist, double dBorderRightDist,
|
||
double dBorderUpDist, double dBorderDownDist, double dbPGAngle, int nEntryType,
|
||
int nPipeType);
|
||
|
||
// 地暖盘管不统一间距
|
||
void SetParam(XPoint ptStart, XPoint ptEnd, XPoint ptPick, int iLeftDist, int iRightDist,
|
||
int iTopDist, int iBottomDist, double dbPGAngle, int nEntryType,
|
||
int nPipeType, int nDistB = 0);
|
||
|
||
// 地暖盘管统一间距
|
||
void SetParam(XPoint ptStart, XPoint ptEnd, XPoint ptPick, int nDist, double dbPGAngle,
|
||
int nEntryType, int nPipeType, int nDistB = 0);
|
||
// change end
|
||
|
||
public:
|
||
XPoint m_ptStart; // 起点
|
||
XPoint m_ptEnd; // 终点
|
||
XPoint m_ptEntry; // 出口点
|
||
|
||
Adesk::UInt16 m_nPipeType; // 盘管样式
|
||
Adesk::UInt16 m_nEntryType; // 出口方向
|
||
double m_dbPGAngle; // 盘管实体的角度
|
||
|
||
double m_dPipeOutDist; // 盘管出口间距 add by cq
|
||
double m_nPipeDist; // 间距
|
||
double m_nPipeLeftDist;
|
||
double m_nPipeRightDist;
|
||
double m_nPipeTopDist;
|
||
double m_nPipeBottomDist;
|
||
|
||
double m_dDistToWall; // 距墙距离,sg add
|
||
double m_dRadius; // 曲率半径
|
||
BOOL m_bWeight; // 是否粗显
|
||
double m_dLineWeight; // 线宽
|
||
|
||
Adesk::UInt16 m_nAreaType; // 划分区域的方式,0:宽度,1:比例,sg add
|
||
double m_dLeftArea; // 左区宽度或比例值
|
||
double m_dRightArea; // 右区宽度或比例值
|
||
|
||
//add by myy 2014-11-12
|
||
double m_dBorderLeftWidth;
|
||
double m_dBorderRightWidth;
|
||
double m_dBorderUpWidth;
|
||
double m_dBorderDownWidth;
|
||
|
||
double m_dInnerLeftDist;
|
||
double m_dInnerRightDist;
|
||
double m_dInnerUpDist;
|
||
double m_dInnerDownDist;
|
||
|
||
double m_dBorderLeftDist;
|
||
double m_dBorderRightDist;
|
||
double m_dBorderUpDist;
|
||
double m_dBorderDownDist;
|
||
|
||
XPoint m_ptPickEntry;
|
||
mutable XPoint m_ptAlterEntryGrip;
|
||
// add end
|
||
|
||
//add by dyw 20150505
|
||
BOOL m_bLeftChk;
|
||
BOOL m_bRightChk;
|
||
BOOL m_bTopChk;
|
||
BOOL m_bBottomChk;
|
||
//add end
|
||
|
||
public: // Set、Get函数
|
||
void SetLeftCheck(BOOL bCheck = TRUE)
|
||
{
|
||
m_bLeftChk = bCheck;
|
||
}
|
||
BOOL IsLeftCheck() const
|
||
{
|
||
return m_bLeftChk;
|
||
}
|
||
|
||
void SetRightCheck(BOOL bCheck = TRUE)
|
||
{
|
||
m_bRightChk = bCheck;
|
||
}
|
||
BOOL IsRightCheck() const
|
||
{
|
||
return m_bRightChk;
|
||
}
|
||
|
||
void SetTopCheck(BOOL bCheck = TRUE)
|
||
{
|
||
m_bTopChk = bCheck;
|
||
}
|
||
BOOL IsTopCheck() const
|
||
{
|
||
return m_bTopChk;
|
||
}
|
||
|
||
void SetBottomCheck(BOOL bCheck = TRUE)
|
||
{
|
||
m_bBottomChk = bCheck;
|
||
}
|
||
BOOL IsBottomCheck() const
|
||
{
|
||
return m_bBottomChk;
|
||
}
|
||
|
||
int GetPipeType() const { // 盘管样式
|
||
return m_nPipeType;
|
||
}
|
||
void SetPipeType(int nType) {
|
||
assertWriteEnabled();
|
||
m_nPipeType = nType;
|
||
ClearDrawPt();
|
||
}
|
||
|
||
int GetEntryType() const { // 出口方向
|
||
return m_nEntryType;
|
||
}
|
||
void SetEntryType(int nType) {
|
||
assertWriteEnabled();
|
||
m_nEntryType = nType;
|
||
ClearDrawPt();
|
||
GetEntryPt();
|
||
}
|
||
|
||
double GetAngle() const { // 角度
|
||
return m_dbPGAngle;
|
||
}
|
||
void SetAngle(double dAngle) {
|
||
assertWriteEnabled();
|
||
m_dbPGAngle = dAngle;
|
||
ClearDrawPt();
|
||
}
|
||
|
||
// void SetPipeDist(double nDist); // sg modify,增加是否给四方向间距赋值的控制
|
||
void SetPipeDist(double nDist, const BOOL &bPassAllDist = TRUE);
|
||
double GetPipeDist() const { // 间距
|
||
return m_nPipeDist;
|
||
}
|
||
BOOL GetSameDist() const { // 是否等间距
|
||
return m_bSameDist;
|
||
}
|
||
void SetSameDist(BOOL bSameDist){
|
||
m_bSameDist = bSameDist;
|
||
}
|
||
|
||
BOOL IsRealSameDist(double &dSameDist); // 实际绘制的盘管是否为等间距
|
||
|
||
double GetPipeOutDist() const;
|
||
|
||
double GetPipeLeftDist() const { // 左、右、上、下间距
|
||
return m_nPipeLeftDist;
|
||
}
|
||
void SetPipeLeftDist(double nDist) {
|
||
assertWriteEnabled();
|
||
m_nPipeLeftDist = nDist;
|
||
}
|
||
|
||
double GetPipeRightDist() const {
|
||
return m_nPipeRightDist;
|
||
}
|
||
void SetPipeRightDist(double nDist) {
|
||
assertWriteEnabled();
|
||
m_nPipeRightDist = nDist;
|
||
}
|
||
|
||
double GetPipeTopDist() const {
|
||
return m_nPipeTopDist;
|
||
}
|
||
void SetPipeTopDist(double nDist) {
|
||
assertWriteEnabled();
|
||
m_nPipeTopDist = nDist;
|
||
}
|
||
|
||
double GetPipeBottomDist() const {
|
||
return m_nPipeBottomDist;
|
||
}
|
||
void SetPipeBottomDist(double nDist) {
|
||
assertWriteEnabled();
|
||
m_nPipeBottomDist = nDist;
|
||
}
|
||
|
||
void SetStartPoint(XPoint pt) { // 起点
|
||
assertWriteEnabled();
|
||
m_ptStart = pt;
|
||
GetEntryPt();
|
||
}
|
||
const XPoint & GetStartPoint() const {
|
||
return m_ptStart;
|
||
}
|
||
|
||
void SetEndPoint(XPoint pt) { // 终点
|
||
assertWriteEnabled();
|
||
m_ptEnd = pt;
|
||
GetEntryPt();
|
||
}
|
||
const XPoint & GetEndPoint() const {
|
||
return m_ptEnd;
|
||
}
|
||
|
||
double GetDistToWall() const { // 距墙距离,sg add
|
||
return m_dDistToWall;
|
||
}
|
||
void SetDistToWall(double dDist) {
|
||
assertWriteEnabled();
|
||
m_dDistToWall = dDist;
|
||
}
|
||
|
||
double GetRadius() const { // 曲率半径
|
||
return m_dRadius;
|
||
}
|
||
void SetRadius(double dRadius) {
|
||
assertWriteEnabled();
|
||
m_dRadius = dRadius;
|
||
}
|
||
|
||
BOOL GetIsWeight() const { // 是否粗显
|
||
return m_bWeight;
|
||
}
|
||
void SetIsWeight(BOOL bWeight) {
|
||
assertWriteEnabled();
|
||
m_bWeight = bWeight;
|
||
}
|
||
|
||
double GetLineWeight() const { // 线宽
|
||
return m_dLineWeight;
|
||
}
|
||
void SetLineWeight(double dLineWeight) {
|
||
assertWriteEnabled();
|
||
m_dLineWeight = dLineWeight;
|
||
}
|
||
|
||
void SetAreaType(int nType) { // 划分区域的方式
|
||
assertWriteEnabled();
|
||
m_nAreaType = nType;
|
||
}
|
||
int GetAreaType() const {
|
||
return m_nAreaType;
|
||
}
|
||
|
||
void SetLeftArea(double dArea) { // 左区宽度或比例值
|
||
assertWriteEnabled();
|
||
m_dLeftArea = dArea;
|
||
}
|
||
double GetLeftArea() const {
|
||
return m_dLeftArea;
|
||
}
|
||
|
||
void SetRightArea(double dArea) { // 右区宽度或比例值
|
||
assertWriteEnabled();
|
||
m_dRightArea = dArea;
|
||
}
|
||
double GetRightArea() const {
|
||
return m_dRightArea;
|
||
}
|
||
|
||
void SetReturnLayer(AcDbObjectId idRet) { // 设置回水图层
|
||
assertWriteEnabled();
|
||
m_idRetLayer = idRet;
|
||
}
|
||
AcDbObjectId GetReturnLayer(AcDbObjectId idRet) { // 设置回水图层
|
||
return m_idRetLayer;
|
||
}
|
||
|
||
void SetDrawSupplyPt(XPoint ptDrawEntry){
|
||
assertWriteEnabled();
|
||
m_ptDrawSupply = ptDrawEntry;
|
||
}
|
||
|
||
void SetDrawReturnPt(XPoint ptDrawEntry){
|
||
assertWriteEnabled();
|
||
m_ptDrawReturn = ptDrawEntry;
|
||
}
|
||
|
||
XPoint GetDrawSupplyPt(){
|
||
return m_ptDrawSupply;
|
||
}
|
||
|
||
XPoint GetDrawReturnPt(){
|
||
return m_ptDrawReturn;
|
||
}
|
||
|
||
void SetHighlight(BOOL bflag){
|
||
assertWriteEnabled();
|
||
m_bIsHighlight = bflag;
|
||
}
|
||
BOOL IsHighlight() const {
|
||
return m_bIsHighlight;
|
||
}
|
||
|
||
// add by myy 2014-11-12
|
||
// 边界区设置左、右、上、下宽度
|
||
void SetBorderLeftWidth(double dWidth) {
|
||
assertWriteEnabled();
|
||
m_dBorderLeftWidth = dWidth;
|
||
}
|
||
double GetBorderLeftWidth() const {
|
||
return m_dBorderLeftWidth;
|
||
}
|
||
|
||
void SetBorderRightWidth(double dWidth) {
|
||
assertWriteEnabled();
|
||
m_dBorderRightWidth = dWidth;
|
||
}
|
||
double GetBorderRightWidth() const {
|
||
return m_dBorderRightWidth;
|
||
}
|
||
|
||
void SetBorderUpWidth(double dWidth) {
|
||
assertWriteEnabled();
|
||
m_dBorderUpWidth = dWidth;
|
||
}
|
||
double GetBorderUpWidth() const {
|
||
return m_dBorderUpWidth;
|
||
}
|
||
|
||
void SetBorderDownWidth(double dWidth) {
|
||
assertWriteEnabled();
|
||
m_dBorderDownWidth = dWidth;
|
||
}
|
||
double GetBorderDownWidth() const {
|
||
return m_dBorderDownWidth;
|
||
}
|
||
|
||
void SetBorderLeftDist(double dDist) {
|
||
assertWriteEnabled();
|
||
m_dBorderLeftDist = dDist;
|
||
}
|
||
double GetBorderLeftDist() const {
|
||
return m_dBorderLeftDist;
|
||
}
|
||
|
||
void SetBorderRightdDist(double dDist) {
|
||
assertWriteEnabled();
|
||
m_dBorderRightDist = dDist;
|
||
}
|
||
double GetBorderRightdDist() const {
|
||
return m_dBorderRightDist;
|
||
}
|
||
|
||
void SetBorderUpdDist(double dDist) {
|
||
assertWriteEnabled();
|
||
m_dBorderUpDist = dDist;
|
||
}
|
||
double GetBorderUpdDist() const {
|
||
return m_dBorderUpDist;
|
||
}
|
||
|
||
void SetBorderDowndDist(double dDist) {
|
||
assertWriteEnabled();
|
||
m_dBorderDownDist = dDist;
|
||
}
|
||
double GetBorderDowndDist() const {
|
||
return m_dBorderDownDist;
|
||
}
|
||
|
||
// 内区设置左、右、上、下间距
|
||
void SetInnerLeftDist(double dDist) {
|
||
assertWriteEnabled();
|
||
m_dInnerLeftDist = dDist;
|
||
}
|
||
double GetInnerLeftDist() const {
|
||
return m_dInnerLeftDist;
|
||
}
|
||
|
||
void SetInnerRightDist(double dDist) {
|
||
assertWriteEnabled();
|
||
m_dInnerRightDist = dDist;
|
||
}
|
||
double GetInnerRightDist() const {
|
||
return m_dInnerRightDist;
|
||
}
|
||
|
||
void SetInnerUpDist(double dDist) {
|
||
assertWriteEnabled();
|
||
m_dInnerUpDist = dDist;
|
||
}
|
||
double GetInnerUpDist() const {
|
||
return m_dInnerUpDist;
|
||
}
|
||
|
||
void SetInnerDownDist(double dDist) {
|
||
assertWriteEnabled();
|
||
m_dInnerDownDist = dDist;
|
||
}
|
||
double GetInnerDownDist() const {
|
||
return m_dInnerDownDist;
|
||
}
|
||
|
||
XPoint GetEntryPt(int iEntryType);
|
||
|
||
const XPoint & GetPickPoint() const {
|
||
return m_ptPickEntry;
|
||
}
|
||
|
||
void SetPipeEntryPt(XPoint ptPickEntry, int nCurPt)
|
||
{
|
||
m_ptPickEntry = ptPickEntry;
|
||
SetEntryType(nCurPt);
|
||
}
|
||
|
||
void SetPickPoint(XPoint ptPick) {
|
||
m_ptPickEntry = ptPick;
|
||
}
|
||
// add end
|
||
|
||
public:
|
||
double GetPipeLength() const; // 获取盘管长度
|
||
double GetMinDist() const; // 获取最小间距,用于倒角,sg add
|
||
|
||
// mcl add 2010.11.16
|
||
XPoint GetStdSupplyPoint() const; // 获取标准(没有设置过m_ptDrawReturn)供水管端位置
|
||
XPoint GetStdReturnPoint() const; // 获取标准(没有设置过m_ptDrawReturn)回水管端位置
|
||
AcGeVector3d GetEntryDir() const; // 获取出口向量
|
||
|
||
static XPoint GetStartDrawPt() ;
|
||
static void ClearStartDrawPt();
|
||
|
||
public: // Override TDbEntity
|
||
virtual Acad::ErrorStatus ExplodeOrDraw2d(XExplodeDraw &dc) const;
|
||
|
||
virtual void CopyPropertiesFrom(AcDbEntity *pSrc, unsigned gMatchFlag);
|
||
virtual Acad::ErrorStatus GetGripText(int idx, CString &cs) const;
|
||
virtual Acad::ErrorStatus subGetClassID(CLSID* pClsid) const;
|
||
virtual void GetTips(DList<TObjInfoUnit> &) const; // 取动态属性显示数据
|
||
|
||
virtual int GetFirstVersion()const {
|
||
return 7;
|
||
}
|
||
virtual bool IsModelEntity() const { // sg add
|
||
return true;
|
||
}
|
||
|
||
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 subGetGripPoints(AcGePoint3dArray& gripPoints,
|
||
AcDbIntArray& osnapModes, AcDbIntArray& geomIds) const;
|
||
virtual Acad::ErrorStatus subMoveGripPointsAt(const AcDbIntArray& indices,
|
||
const AcGeVector3d& offset);
|
||
|
||
virtual Acad::ErrorStatus subTransformBy(const AcGeMatrix3d& xform);
|
||
|
||
virtual Acad::ErrorStatus dwgInFields(AcDbDwgFiler*);
|
||
virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler*) const;
|
||
virtual Acad::ErrorStatus dxfInFields(AcDbDxfFiler*);
|
||
virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler*) const;
|
||
|
||
public:
|
||
void GetEntryInf(XPoint &ptSupply, XPoint &ptReturn); // add by cq 2015-04-16 13:42:46
|
||
protected:
|
||
void GetEntryPt();
|
||
//XPoint GetEntryPt(int iEntryType); // change by myy 2014-12-16 改成public
|
||
void DrawEntryArror(XExplodeDraw &dc, const XPoint &ptArror) const; // 绘制出口方向箭头
|
||
void ClearDrawPt(); // 清除绘制点
|
||
void GetDefaultPick(); // 根据开口方向调整方向点 add by cq 2015-05-05 09:53:08
|
||
protected:
|
||
BOOL m_bSameDist; // 是否统一间距
|
||
BOOL m_bIsHighlight; // 是否选中,以控制是否绘制进出口箭头,不保存
|
||
AcDbObjectId m_idRetLayer; // 回水图层,供水图层就是实体自身图层
|
||
XPoint m_ptDrawSupply; // 实际绘制供水点
|
||
XPoint m_ptDrawReturn; // 实际绘制回水点
|
||
|
||
static XPoint m_ptStartDraw; // 开始绘制点,用于由夹点触发手绘盘管命令获取此点,开始绘制
|
||
|
||
};
|
||
|
||
#endif // !defined(AFX_DBFLOORPIPE_H__FB55E4F4_567D_4205_B0FB_4106B4EB78CF__INCLUDED_)
|