353 lines
11 KiB
C++
353 lines
11 KiB
C++
#ifndef __DBPSCONFIG_H
|
|
#define __DBPSCONFIG_H
|
|
|
|
/*============================================================================*
|
|
* Copyright(c), 1994-2007, Beijing Tangent Engineering Software Co.Ltd.
|
|
* 作 者: 杨小勇
|
|
* 创建时间: 2003年秋季
|
|
* 描 述: 存储在dwg的全局设置
|
|
* 归属项目: 给排水 暖通
|
|
* 历史记录: 2008-6-26 补头文件注释
|
|
=============================================================================*/
|
|
|
|
#include "AttachmentPrototype.h"
|
|
|
|
#define SHOW_PIPEDIR 0x01 // 管线流向
|
|
|
|
#define WEIGHT_PIPE 0x01 // 管线加粗
|
|
#define WEIGHT_RADIATOR 0x02 // 散热器加粗
|
|
#define WEIGHT_CANAL 0x04 // 方沟加粗
|
|
#define CLOSE_CANAL_POINTEND 0x08 // 方沟端点封闭
|
|
|
|
// 管线系统(给排水和暖通),目前仅存储全局变量
|
|
class PS_EXP TDbPsConfig : public AcDbObject {
|
|
public:
|
|
ACRX_DECLARE_MEMBERS(TDbPsConfig);
|
|
#if (ADS>14)
|
|
private:
|
|
void *operator new[](size_t nSize) { return 0;}
|
|
void operator delete[](void *p) {};
|
|
void *operator new[](size_t nSize, const char *file, int line) { return 0;}
|
|
#endif
|
|
static const Adesk::UInt8 g_nVersion; //当前版本
|
|
public:
|
|
TDbPsConfig() : m_dPipeTextDis(0.5),m_nLineWeight(0),m_bBreakPipe(1),
|
|
m_nPipeOsnap(1),m_nShowFlag(0),m_dBreakWidth(2),m_nSysShowFlag1(0),
|
|
m_nSysShowFlag2(0), m_dSpare1(0),m_dSpare2(0),m_nSpare1(1),m_nSpare2(0),
|
|
m_nSpare3(0),m_nSpare4(2),m_nSpare5(3),m_nSpare6(0) {}
|
|
~TDbPsConfig() {}
|
|
protected:
|
|
double m_dPipeTextDis; // 管线文字边距
|
|
double m_dBreakWidth; // 单线管线遮挡打断宽度
|
|
Adesk::UInt8 m_nLineWeight; // 是否加粗:管线、散热器、
|
|
Adesk::UInt8 m_bBreakPipe; // 管件附件是否打断管件
|
|
Adesk::UInt8 m_nPipeOsnap; // 管线捕捉方式:0-显示的曲线;1-管线基线
|
|
Adesk::UInt16 m_nShowFlag; // 显示标志,eg:流向、...
|
|
Adesk::UInt32 m_nSysShowFlag1;// 管线系统显示标志1
|
|
Adesk::UInt32 m_nSysShowFlag2;// 管线系统显示标志2
|
|
|
|
// 以下为备用数据
|
|
double m_dSpare1;
|
|
double m_dSpare2;
|
|
Adesk::UInt8 m_nSpare1;//设备按比例
|
|
Adesk::UInt8 m_nSpare2;//弯头样式
|
|
// 盘管加粗 mcl use 2010.11.23,盘管跟管线分开 // 使用此值第一位设置方沟中线的显示 cet 2012.10.11 add
|
|
// 使用第二位表示管线的线型比例是否随当前比例变化
|
|
Adesk::Int16 m_nSpare3;
|
|
Adesk::UInt16 m_nSpare4;//管长小数位数 2007-9-13
|
|
Adesk::UInt16 m_nSpare5;//埋深小数位数 2007-9-13
|
|
Adesk::UInt32 m_nSpare6;
|
|
std::map<CString,bool> m_mapSystem; // cet 2015.8.06 add 自定义管线系统开关状态
|
|
public:
|
|
BOOL IsSystemShow(TPipeSys::SysType sysType) const;
|
|
void ShowSystem(TPipeSys::SysType sysType,BOOL bFlag);
|
|
double GetPipeTextDis() const {
|
|
return m_dPipeTextDis;
|
|
}
|
|
double GetBreakWidth() const {
|
|
return m_dBreakWidth;
|
|
}
|
|
Adesk::UInt8 IsBreakPipe() const {
|
|
return m_bBreakPipe;
|
|
}
|
|
Adesk::UInt8 GetPipeOsnap() const {
|
|
return m_nPipeOsnap;
|
|
}
|
|
BOOL IsEqByScale() const{
|
|
return TRUE; //m_nSpare1
|
|
}
|
|
int GetElbowType() const{
|
|
return m_nSpare2;
|
|
}
|
|
|
|
int GetPipeLenPrecision() const{
|
|
if(m_nSpare4 == 0)//考虑旧版默认值都是0,软件对于0位小数指定为99
|
|
return 2;
|
|
else if(m_nSpare4 == 99)
|
|
return 0;
|
|
return m_nSpare4;
|
|
}
|
|
int GetWellDeepPrecision() const{
|
|
if(m_nSpare5 == 0)
|
|
return 3;
|
|
else if(m_nSpare5 == 99)
|
|
return 0;
|
|
return m_nSpare5;
|
|
}
|
|
|
|
void SetPipeTextDis(double dDis) {
|
|
assertWriteEnabled();
|
|
m_dPipeTextDis=dDis;
|
|
}
|
|
void SetBreakWidth(double dWidth) {
|
|
assertWriteEnabled();
|
|
m_dBreakWidth=dWidth;
|
|
}
|
|
void SetBreakPipe(BOOL bBreak) {
|
|
assertWriteEnabled();
|
|
m_bBreakPipe = bBreak;
|
|
}
|
|
void SetPipeOsnap(int nOsnap) {
|
|
assertWriteEnabled();
|
|
m_nPipeOsnap=(Adesk::UInt8)nOsnap;
|
|
}
|
|
void ShowPipeFlowDir(BOOL bFlag=TRUE);
|
|
BOOL IsShowPipeFlowDir() const {
|
|
return (m_nShowFlag&SHOW_PIPEDIR)!=0;
|
|
}
|
|
BOOL IsLineWeight() const { //管线加粗
|
|
return (m_nLineWeight&WEIGHT_PIPE)!=0;
|
|
}
|
|
BOOL IsFloorWeight() const { //盘管加粗
|
|
// cet 2016.8.16 modify 此变量多处使用,按位设置标识
|
|
// return m_nSpare3;
|
|
return ((m_nSpare3 & 0x0004) > 0) ? TRUE : FALSE;
|
|
}
|
|
BOOL IsRadiatorWeight() const { // 散热器加粗
|
|
return (m_nLineWeight&WEIGHT_RADIATOR)!=0;
|
|
}
|
|
void SetLineWeight(BOOL bFlag); // 管线加粗
|
|
void SetRadiatorWeight(BOOL bFlag); // 散热器加粗
|
|
void SetFloorWeight(BOOL bWeight); //盘管加粗
|
|
|
|
void SetEqByScale(BOOL bFlag){
|
|
assertWriteEnabled();
|
|
m_nSpare1 = bFlag;
|
|
}
|
|
void SetElbowType(int iType){
|
|
assertWriteEnabled();
|
|
m_nSpare2 = iType;
|
|
}
|
|
|
|
void SetPipeLenPrecision(int iPrecision){
|
|
assertWriteEnabled();
|
|
m_nSpare4 = iPrecision;
|
|
}
|
|
|
|
void SetWellDeepPrecision(int iPrecision){
|
|
assertWriteEnabled();
|
|
m_nSpare5 = iPrecision;
|
|
}
|
|
|
|
// 查询方沟中线是否显示 cet 2012.10.11 add
|
|
BOOL IsShowPipeCanalMidLine() const;
|
|
// 设置方沟中线是否显示 cet 2012.10.11 add
|
|
void ShowPipeCanalMinLine(BOOL bShow);
|
|
// 方沟是否加粗 cet 2016.8.29 add
|
|
bool IsShowPipeCanalLineWeight() const;
|
|
void ShowPipeCanalLineWeight(bool bShow);
|
|
// 方沟端点是否闭合 cet 2018.1.16 add
|
|
bool IsClosePipeCancalPointEnd() const;
|
|
void ClosePipeCanalPointEnd(bool bClose);
|
|
// 管线线型比例是否随管线比例变化 2012.12.18 add
|
|
BOOL IsRelatePipeLineTypeToCurPScale() const;
|
|
// 管线线型比例是否随管线比例变化 2012.12.18 add
|
|
void RelatePipeLineTypeToCurPScale(bool bReated);
|
|
// 管线系统是否显示 cet 2015.8.06 add
|
|
void ShowCustomPipeSystem(const CString &sSysName, bool bShow);
|
|
bool IsShowCustomPipeSystem(const CString &sSysName);
|
|
// 清除自定义管线系统
|
|
void CleanAllCustomPipeSystem();
|
|
|
|
public:// Overriden function from AcDbObject
|
|
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 subWblockClone(AcRxObject* pOwner,
|
|
AcDbObject*& pClonedObject,
|
|
AcDbIdMapping& idMap,
|
|
Adesk::Boolean isPrimary) const;
|
|
};
|
|
|
|
// 保存DWG全局变量的指针
|
|
PS_IMPEXP TDbPsConfig * GetDwgPsGlobal(AcDb::OpenMode opMode, AcDbDatabase *pDb=NULL);
|
|
|
|
class PS_EXP TPSConfig {
|
|
public:
|
|
TDbPsConfig *m_pConfig;
|
|
public:
|
|
TPSConfig(AcDb::OpenMode opMode=AcDb::kForRead,AcDbDatabase *pDb=NULL):m_pConfig(NULL) {
|
|
m_pConfig=GetDwgPsGlobal(opMode,pDb);
|
|
}
|
|
~TPSConfig() {
|
|
Close();
|
|
}
|
|
void Close() {
|
|
if(m_pConfig) m_pConfig->close();
|
|
m_pConfig = NULL;
|
|
}
|
|
operator AcDbObject & () {
|
|
assert(m_pConfig);
|
|
return *m_pConfig;
|
|
}
|
|
bool operator !() const {
|
|
return m_pConfig==NULL;
|
|
}
|
|
};
|
|
|
|
//2007-1-12 sr add
|
|
inline PS_IMPEXP int GetElbowType(AcDbDatabase *pDb = NULL)
|
|
{
|
|
TPSConfig config(AcDb::kForRead, pDb == NULL ? curDoc()->database() : pDb);
|
|
return !config ? 0 : config.m_pConfig->GetElbowType();
|
|
}
|
|
|
|
inline PS_IMPEXP int GetPipeLenPrecision(AcDbDatabase *pDb = NULL)
|
|
{
|
|
TPSConfig config(AcDb::kForRead, pDb == NULL ? curDoc()->database() : pDb);
|
|
return !config ? 2 : config.m_pConfig->GetPipeLenPrecision();
|
|
}
|
|
|
|
inline PS_IMPEXP int GetWellDeepPrecision(AcDbDatabase *pDb = NULL)
|
|
{
|
|
TPSConfig config(AcDb::kForRead, pDb == NULL ? curDoc()->database() : pDb);
|
|
return !config ? 3 : config.m_pConfig->GetWellDeepPrecision();
|
|
}
|
|
|
|
inline PS_IMPEXP double GetPsPipeTextDis(AcDbDatabase *pDb = NULL)
|
|
{
|
|
TPSConfig config(AcDb::kForRead, pDb == NULL ? curDoc()->database() : pDb);
|
|
return !config ? 0.5 : config.m_pConfig->GetPipeTextDis();
|
|
}
|
|
|
|
inline PS_IMPEXP double GetPsBreakWidth(AcDbDatabase *pDb = NULL)
|
|
{
|
|
TPSConfig config(AcDb::kForRead, pDb == NULL ? curDoc()->database() : pDb);
|
|
return !config ? 2 : config.m_pConfig->GetBreakWidth();
|
|
}
|
|
|
|
inline PS_IMPEXP BOOL IsPsLineWeight(AcDbDatabase *pDb = NULL)
|
|
{
|
|
TPSConfig config(AcDb::kForRead, pDb == NULL ? curDoc()->database() : pDb);
|
|
return !config ? FALSE : config.m_pConfig->IsLineWeight();
|
|
}
|
|
|
|
inline PS_IMPEXP BOOL IsPsEqByScale(AcDbDatabase *pDb = NULL)
|
|
{
|
|
TPSConfig config(AcDb::kForRead, pDb == NULL ? curDoc()->database() : pDb);
|
|
return !config ? FALSE : config.m_pConfig->IsEqByScale();
|
|
}
|
|
|
|
inline PS_IMPEXP BOOL IsPsRadiatorWeight(AcDbDatabase *pDb = NULL)
|
|
{
|
|
TPSConfig config(AcDb::kForRead, pDb == NULL ? curDoc()->database() : pDb);
|
|
return !config ? FALSE : config.m_pConfig->IsRadiatorWeight();
|
|
}
|
|
|
|
inline PS_IMPEXP BOOL IsPsFloorPipeWeight(AcDbDatabase *pDb = NULL)
|
|
{
|
|
TPSConfig config(AcDb::kForRead, pDb == NULL ? curDoc()->database() : pDb);
|
|
return !config ? FALSE : config.m_pConfig->IsFloorWeight();
|
|
}
|
|
|
|
inline PS_IMPEXP BOOL IsPsBreakPipe(AcDbDatabase *pDb = NULL)
|
|
{
|
|
TPSConfig config(AcDb::kForRead, pDb == NULL ? curDoc()->database() : pDb);
|
|
return !config ? TRUE : config.m_pConfig->IsBreakPipe();
|
|
}
|
|
inline PS_IMPEXP int GetPSPipeOsnap(AcDbDatabase *pDb = NULL)
|
|
{
|
|
TPSConfig config(AcDb::kForRead, pDb == NULL ? curDoc()->database() : pDb);
|
|
return !config ? 1 : config.m_pConfig->GetPipeOsnap();
|
|
}
|
|
inline PS_IMPEXP BOOL IsPsShowPipeFlowDir(AcDbDatabase *pDb = NULL)
|
|
{
|
|
TPSConfig config(AcDb::kForRead, pDb == NULL ? curDoc()->database() : pDb);
|
|
return !config ? FALSE : config.m_pConfig->IsShowPipeFlowDir();
|
|
}
|
|
/* cet 2017.9.27 del 废弃代码
|
|
//查询管线系统的显示属性
|
|
inline PS_IMPEXP BOOL IsPsSystemShow(TPipeSys::SysType sysType, AcDbDatabase *pDb = NULL)
|
|
{
|
|
TPSConfig config(AcDb::kForRead, pDb == NULL ? curDoc()->database() : pDb);
|
|
return !config ? TRUE : config.m_pConfig->IsSystemShow(sysType);
|
|
}
|
|
//设置管线系统的显示属性
|
|
inline PS_IMPEXP void PsShowSystem(TPipeSys::SysType sysType,BOOL bFlag, AcDbDatabase *pDb = NULL)
|
|
{
|
|
TPSConfig config(AcDb::kForWrite, pDb == NULL ? curDoc()->database() : pDb);
|
|
if(!!config)
|
|
config.m_pConfig->ShowSystem(sysType,bFlag);
|
|
}
|
|
*/
|
|
// 查询方沟中线是否显示 cet 2012.10.11 add
|
|
inline PS_IMPEXP BOOL IsShowPipeCanalMidLine(AcDbDatabase *pDb = NULL)
|
|
{
|
|
TPSConfig config(AcDb::kForRead, pDb == NULL ? curDoc()->database() : pDb);
|
|
return !config ? TRUE : config.m_pConfig->IsShowPipeCanalMidLine();
|
|
}
|
|
|
|
// 设置方沟中线是否显示 cet 2012.10.11 add
|
|
inline PS_IMPEXP void ShowPipeCanalMinLine(BOOL bShow, AcDbDatabase *pDb = NULL)
|
|
{
|
|
TPSConfig config(AcDb::kForWrite, pDb == NULL ? curDoc()->database() : pDb);
|
|
if(!!config)
|
|
config.m_pConfig->ShowPipeCanalMinLine(bShow);
|
|
}
|
|
|
|
// 管线线型比例是否随管线比例变化 2012.12.18 add
|
|
inline PS_IMPEXP BOOL IsRelatePipeLineTypeToCurPScale(AcDbDatabase *pDb = NULL)
|
|
{
|
|
TPSConfig config(AcDb::kForRead, pDb == NULL ? curDoc()->database() : pDb);
|
|
return !config ? TRUE : config.m_pConfig->IsRelatePipeLineTypeToCurPScale();
|
|
}
|
|
|
|
// 方沟是否加粗 cet 2016.8.29 add
|
|
inline PS_IMPEXP BOOL IsShowPipeCanalLineWeight(AcDbDatabase *pDb = NULL)
|
|
{
|
|
TPSConfig config(AcDb::kForRead, pDb == NULL ? curDoc()->database() : pDb);
|
|
return !config ? FALSE : config.m_pConfig->IsShowPipeCanalLineWeight();
|
|
}
|
|
|
|
// 方沟是否加粗 cet 2016.8.29 add
|
|
inline PS_IMPEXP void ShowPipeCanalLineWeight(BOOL bShow, AcDbDatabase *pDb = NULL)
|
|
{
|
|
TPSConfig config(AcDb::kForWrite, pDb == NULL ? curDoc()->database() : pDb);
|
|
if(!!config)
|
|
config.m_pConfig->ShowPipeCanalLineWeight(bShow);
|
|
}
|
|
|
|
// 方沟端点是否闭合 cet 2018.1.16 add
|
|
inline PS_IMPEXP bool IsClosePipeCancalPointEnd(AcDbDatabase *pDb = NULL)
|
|
{
|
|
TPSConfig config(AcDb::kForRead, pDb == NULL ? curDoc()->database() : pDb);
|
|
return !config ? FALSE : config.m_pConfig->IsClosePipeCancalPointEnd();
|
|
}
|
|
// 方沟端点是否闭合 cet 2018.1.16 add
|
|
inline PS_IMPEXP void ClosePipeCanalPointEnd(bool bClose, AcDbDatabase *pDb = NULL)
|
|
{
|
|
TPSConfig config(AcDb::kForWrite, pDb == NULL ? curDoc()->database() : pDb);
|
|
if(!!config)
|
|
config.m_pConfig->ClosePipeCanalPointEnd(bClose);
|
|
}
|
|
|
|
// 管线线型比例是否随管线比例变化 2012.12.18 add
|
|
inline PS_IMPEXP void RelatePipeLineTypeToCurPScale(bool bReated, AcDbDatabase *pDb = NULL)
|
|
{
|
|
TPSConfig config(AcDb::kForWrite, pDb == NULL ? curDoc()->database() : pDb);
|
|
if(!!config)
|
|
config.m_pConfig->RelatePipeLineTypeToCurPScale(bReated);
|
|
}
|
|
|
|
#endif |