Files
envi-code/SourceCode/Code2026/tg_shs/inc/pipewire/DbFloorPipe.h
T
2026-09-28 15:28:50 +08:00

549 lines
14 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 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_)