Files
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

1632 lines
44 KiB
C++

#ifndef __DBCONFIG_H
#define __DBCONFIG_H
//#include "entityfield.h"
////////////////////////////////////////////////
// 目前仅存储全局变量
// CFG_PScale,
// CFG_LHeight,
// CFG_WCrude;
// CFG_DrawMode;
#define CONF_HIDE_IWALL 0x01 //隐藏内墙
#define CONF_INVALID_EVER 0x02 //曾经非法使用
#define CONF_INVALID_LAST 0x04 //最近非法使用
#define CONF_HIDE_LEVEL 0x08 //隐藏层间线
#define CONF_PREC2 0x10 //坐标和标高默认2位小数(否则3位)
#define CONF_SINGLE_SECT 0x20 //单剖断(新国标)
#define CONF_CAP_LABEL 0x40 //门窗名称自动转大写
#define CONF_METER_UNIT_DRAW 0x80 //米单位绘制
#define CONF_METER_UNIT_DIM 0x100 //米单位尺寸标注
#define CONF_NO_PRESEL 0x200 //禁止选择预览
extern TARCH_IMPEXP double g_nText2Base;
extern TARCH_IMPEXP double g_nText2BaseRatio;
//extern TARCH_IMPEXP AcDbDatabase *g_pCurrentDb; // sg add 081127
extern TARCH_IMPEXP double g_dDrawIndexTextRatio; // sg add 090512,圆圈文字字高系数
extern TARCH_IMPEXP double g_dAxisLabelTextRatio; // sg add 090512,轴号字高系数
extern TARCH_IMPEXP double g_nCurtainWall3Scale; // sg add 090512,带形窗幕墙改变样式的比例界限
extern TARCH_IMPEXP BOOL g_bCurtainWallFixStyle; // sg add 090512,带形窗幕墙比例改变后是否不改样式
extern TARCH_IMPEXP int g_nCurtainWallStyle; // sg add 090512,带形窗幕墙,不改样式时的设定类型
extern TARCH_IMPEXP BOOL g_bDrawIndexOldStyle;// sg add 090612,圆圈文字不使用旧样式
extern TARCH_IMPEXP BOOL g_bDIOutCircleStyle; // sg add 110124,圆圈文字支持出圈样式
// sg add 110301,增加三角形标高符号、圆点标高符号默认直径或尺寸大小
extern TARCH_IMPEXP double g_dEleTriangleSize;
extern TARCH_IMPEXP double g_dEleDoteSize;
// jsx add 160517,增加十字标高符号默认为线长
extern TARCH_IMPEXP double g_dEleCrossSize;
class TARCH_EXP TDbConfig: public AcDbObject {
#if (ADS>14)
private:
void *operator new[](size_t nSize) { return 0;}
void operator delete[](void *p) {};
void *operator new[](size_t nSize, const TCHAR *file, int line) { return 0;}
#endif
static const Adesk::UInt8 g_nVersion; //当前版本
protected:
// add by gjm for t20 2014/02/13
// 添加三个变量, 分别为 标高标注、坐标标注、符号标注 三个实体记录是否为 随层 或 当前层
bool m_bByLayerForSym; // 符号是否随层 true 为随层
bool m_bByLayerForDOR; // 坐标是否随层 true 为随层
bool m_bByLayerForElev; // 标高是否随层 true 为随层
// end
double m_nPScale; //当前绘图比例
double m_nLHeight; //当前层高
Adesk::UInt16 m_nDrawMode; //绘图方式2D/3D
Adesk::UInt8 m_bSolidFill, m_bLineWeight; //是否填实, 是否加粗
Adesk::UInt8 m_nSpaceDispMode, m_bShowWallBase;
// Add member
double m_nHighBold; //粗线
double m_nElevDiff; //室内外高差=室内-室外
Adesk::UInt8 m_bCheckDim; //尺寸检查开关
Adesk::UInt8 m_bDimAreaUnit; //是否标注面积单位, 已经不再使用
Adesk::UInt32 m_nControlFlag;
// TArch6 data
double m_nText2Base; // 文字到基线的距离,图纸单位
double m_nDetailScale; //详图比例, 当对象比例小于这个比例时,启用详图填充图案和线宽
// 标准填充名称 比例 >= 100
XString m_sHatchDivider1, //隔墙
m_sHatchFill1, //填充墙
m_sHatchFill11, //填充墙1,TArch7
m_sHatchFill21, //填充墙2,TArch7
m_sHatchBrick1, //砖墙柱
m_sHatchRocket1, //石墙柱
m_sHatchConcrete1, //砼墙柱
m_sHatchSteel1; //钢墙柱
// 详图填充名称(一般图案填充)比例 < 100
XString m_sHatchDivider2, //隔墙
m_sHatchFill2, //填充墙
m_sHatchFill12, //填充墙1,TArch7
m_sHatchFill22, //填充墙2,TArch7
m_sHatchBrick2, //砖墙柱
m_sHatchRocket2, //石墙柱
m_sHatchConcrete2,//砼墙柱
m_sHatchSteel2; //钢墙柱
// 线粗细
// 比例 >= 100
double m_nBoldDivider1, //隔墙
m_nBoldFill1, //填充墙
m_nBoldFill11, //填充墙1,TArch7
m_nBoldFill21, //填充墙2,TArch7
m_nBoldBrick1, //砖墙柱
m_nBoldRocket1, //石墙柱
m_nBoldConcrete1, //砼墙柱
m_nBoldSteel1; //钢墙柱
// 比例 < 100
double m_nBoldDivider2, //隔墙
m_nBoldFill2, //填充墙
m_nBoldFill12, //填充墙1,TArch7
m_nBoldFill22, //填充墙2,TArch7
m_nBoldBrick2, //砖墙柱
m_nBoldRocket2, //石墙柱
m_nBoldConcrete2, //砼墙柱
m_nBoldSteel2; //钢墙柱
//标志,TArch7
int m_nDividerFlag, //隔墙
m_nFillFlag, //填充墙
m_nFill1Flag, //填充墙1
m_nFill2Flag, //填充墙2
m_nBrickFlag, //砖墙柱
m_nRocketFlag, //石墙柱
m_nConcreteFlag, //砼墙柱
m_nSteelFlag; //钢墙柱
// 详图线图案图块
AcDbHardPointerId m_idHatchDivider, //隔墙
m_idHatchFill, //填充墙
m_idHatchFill1, //填充墙1,TArch7
m_idHatchFill2, //填充墙2,TArch7
m_idHatchBrick, //砖墙柱
m_idHatchRocket, //石墙柱
m_idHatchConcrete,//砼墙柱
m_idHatchSteel; //钢墙柱
//填充色,TArch7
Adesk::UInt16 m_nDividerColor,
m_nFillColor,
m_nFill1Color,
m_nFill2Color,
m_nBrickColor,
m_nRocketColor,
m_nConcreteColor,
m_nSteelColor;
AcDbHardPointerId m_idLinetypeDote, m_idLinetypeDash;
//TArch7
XString m_sProjectFile;//所属工程数据库
XString m_sLayerStd;//图层标准
//TArch8
double m_nText2BaseRatio;//文字距离基线系数(相对字高)
Adesk::UInt8 m_nSpaceAreaPrecision; // 房间面积标注,小数位数标记,sg add 081126
double m_dDrawingIndexTextRatio; // 索引图名中,文字大小的控制比例,sg add 090115
Adesk::UInt8 m_bOldDrawingIndex; // 索引图名中,圆圈文字文字样式
double m_dEleTriangleSize; // 标高标注中,三角符号的大小,sg add 090212
double m_dEleDoteSize; // 标高标注中,圆点符号的大小
double m_dMultiLeaderDistRatio; // 引出标注,末端对齐,文字距离基线末端的距离系数(相对字高),sg add 090216
TEntityFields m_allFields;//动态数据,树状查询,add by whl on 090401
// TArch9
Adesk::UInt8 m_nArcLenDimType; // sg add 120412,根据9.0需求,增加设置弧长标注样式的设置
// sg add 120413,用于解决旧的尺寸标注,有可能箭头标注大小固定为2的问题,至少让它看上去是一样大的,0表示旧版本,1表示9以上版本
Adesk::UInt8 m_nDealOldDimArrowSize;
//TArch20v3
double m_dEleCrossSize; // 标高标注中,十字标高符号线长
public:
TDbConfig();
~TDbConfig();
// add by gjm 2014/02/13
void SetDORLayerType(bool bValue) {m_bByLayerForSym = bValue;}
void SetSymbolLayerType(bool bValue) {m_bByLayerForDOR = bValue;}
void SetElevLayerType(bool bValue) {m_bByLayerForElev = bValue;}
bool GetDORLayerType() {return m_bByLayerForSym;}
bool GetSymbolLayerType() {return m_bByLayerForDOR;}
bool GetElevLayerType() {return m_bByLayerForElev;}
// end
void SetFromGlobal();
void UpdateToGlobal() const;
//动态扩展数据
const TEntityFields & GetFields()const{return m_allFields;}
TEntityFields& Fields(){return m_allFields;}
double GetPScale() const { return m_nPScale; }
double GetLHeight() const { return m_nLHeight; }
Adesk::UInt16 GetDrawMode() const { return m_nDrawMode; }
Adesk::UInt8 IsSolidFill() const { return m_bSolidFill; }
Adesk::UInt8 IsLineWeight() const { return m_bLineWeight; }
Adesk::UInt8 GetSpaceDispMode() const { return m_nSpaceDispMode; }
Adesk::UInt8 IsShowWallBase() const { return m_bShowWallBase; }
double GetHighBold() const { return m_nHighBold; }
double GetElevDiff() const { return m_nElevDiff; }
Adesk::UInt8 IsCheckDim() const { return m_bCheckDim; }
Adesk::UInt32 GetControlFlag() const { return m_nControlFlag; }
BOOL IsHideIntWall() const { return ((m_nControlFlag&CONF_HIDE_IWALL)!=0); }
BOOL IsHideLevel() const { return ((m_nControlFlag&CONF_HIDE_LEVEL)!=0); }
BOOL IsPrec2() const {
return ((m_nControlFlag&CONF_PREC2)!=0);
}
BOOL IsSingleSect() const {
return ((m_nControlFlag&CONF_SINGLE_SECT)!=0);
}
BOOL IsCapLabel() const {
return ((m_nControlFlag&CONF_CAP_LABEL)!=0);
}
BOOL IsMeterUnitDraw()const{
return ((m_nControlFlag&CONF_METER_UNIT_DRAW)!=0);
}
BOOL IsMeterUnitDim()const{
return ((m_nControlFlag&CONF_METER_UNIT_DIM)!=0);
}
BOOL IsSelectPreview()const{
return ((m_nControlFlag&CONF_NO_PRESEL)==0);
}
AcDbObjectId GetLinetypeDote() const {
return m_idLinetypeDote;
}
AcDbObjectId GetLinetypeDash() const {
return m_idLinetypeDash;
}
// 填充和线粗
double GetText2Base() const {
return m_nText2Base;
}
double GetText2BaseRatio()const
{
return m_nText2BaseRatio;
}
double GetDetailScale() const {
return m_nDetailScale;
}
CString GetHatchDivider(BOOL bDetail) const {
return bDetail? (IsDividerLineHatch()?(LPCTSTR)GetLineHatch(0):(const TCHAR *)m_sHatchDivider2 ): (const TCHAR *)m_sHatchDivider1;
}
CString GetHatchFill(BOOL bDetail) const {
return bDetail? (IsFillLineHatch()?(LPCTSTR)GetLineHatch(1):(const TCHAR *)m_sHatchFill2 ): (const TCHAR *)m_sHatchFill1;
}
CString GetHatchFill1(BOOL bDetail) const {
return bDetail? (IsFill1LineHatch()?(LPCTSTR)GetLineHatch(2):(const TCHAR *)m_sHatchFill12 ): (const TCHAR *)m_sHatchFill11;
}
CString GetHatchFill2(BOOL bDetail) const {
return bDetail? (IsFill2LineHatch()?(LPCTSTR)GetLineHatch(3):(const TCHAR *)m_sHatchFill22 ): (const TCHAR *)m_sHatchFill21;
}
CString GetHatchBrick(BOOL bDetail) const {
return bDetail? (IsBrickLineHatch()?(LPCTSTR)GetLineHatch(4):(const TCHAR *)m_sHatchBrick2 ): (const TCHAR *)m_sHatchBrick1;
}
CString GetHatchRocket(BOOL bDetail) const {
return bDetail? (IsRocketLineHatch()?(LPCTSTR)GetLineHatch(5):(const TCHAR *)m_sHatchRocket2 ): (const TCHAR *)m_sHatchRocket1;
}
CString GetHatchConcrete(BOOL bDetail) const {
return bDetail? (IsConcreteLineHatch()?(LPCTSTR)GetLineHatch(6):(const TCHAR *)m_sHatchConcrete2 ): (const TCHAR *)m_sHatchConcrete1;
}
CString GetHatchSteel(BOOL bDetail) const {
return bDetail? (IsConcreteLineHatch()?(LPCTSTR)GetLineHatch(7):(const TCHAR *)m_sHatchSteel2 ): (const TCHAR *)m_sHatchSteel1;
}
double GetBoldDivider(BOOL bDetail) const {
return (bDetail? m_nBoldDivider2 : m_nBoldDivider1);
}
double GetBoldFill(BOOL bDetail) const {
return (bDetail? m_nBoldFill2 : m_nBoldFill1);
}
double GetBoldFill1(BOOL bDetail) const {
return (bDetail? m_nBoldFill12 : m_nBoldFill11);
}
double GetBoldFill2(BOOL bDetail) const {
return (bDetail? m_nBoldFill22 : m_nBoldFill21);
}
double GetBoldBrick(BOOL bDetail) const {
return (bDetail? m_nBoldBrick2 : m_nBoldBrick1);
}
double GetBoldRocket(BOOL bDetail) const {
return (bDetail? m_nBoldRocket2 : m_nBoldRocket1);
}
double GetBoldConcrete(BOOL bDetail) const {
return (bDetail? m_nBoldConcrete2 : m_nBoldConcrete1);
}
double GetBoldSteel(BOOL bDetail) const {
return (bDetail? m_nBoldSteel2 : m_nBoldSteel1);
}
bool IsDividerLineHatch()const{return m_nDividerFlag!=0;}
bool IsFillLineHatch()const{return m_nFillFlag!=0;}
bool IsFill1LineHatch()const{return m_nFill1Flag!=0;}
bool IsFill2LineHatch()const{return m_nFill2Flag!=0;}
bool IsBrickLineHatch()const{return m_nBrickFlag!=0;}
bool IsRocketLineHatch()const{return m_nRocketFlag!=0;}
bool IsConcreteLineHatch()const{return m_nConcreteFlag!=0;}
bool IsSteelLineHatch()const{return m_nSteelFlag!=0;}
AcDbObjectId GetHatchDividerId()const{return m_idHatchDivider;}
AcDbObjectId GetHatchFillId()const{return m_idHatchFill;}
AcDbObjectId GetHatchFill1Id()const{return m_idHatchFill1;}
AcDbObjectId GetHatchFill2Id()const{return m_idHatchFill2;}
AcDbObjectId GetHatchBrickId()const{return m_idHatchBrick;}
AcDbObjectId GetHatchRocketId()const{return m_idHatchRocket;}
AcDbObjectId GetHatchConcreteId()const{return m_idHatchConcrete;}
AcDbObjectId GetHatchSteelId()const{return m_idHatchSteel;}
CString GetLineHatch(long i)const;
void SetLineHatch(long i,const TCHAR *sPat);
Adesk::UInt16 GetDividerColor()const{return m_nDividerColor;}
Adesk::UInt16 GetFillColor()const{return m_nFillColor;}
Adesk::UInt16 GetFill1Color()const{return m_nFill1Color;}
Adesk::UInt16 GetFill2Color()const{return m_nFill2Color;}
Adesk::UInt16 GetBrickColor()const{return m_nBrickColor;}
Adesk::UInt16 GetRocketColor()const{return m_nRocketColor;}
Adesk::UInt16 GetConcreteColor()const{return m_nConcreteColor;}
Adesk::UInt16 GetSteelColor()const{return m_nSteelColor;}
CString GetProjectFile()const;
CString GetLayerStd()const{return (const TCHAR*)m_sLayerStd;}//ok
void SetText2Base(double val) {
assertWriteEnabled();
m_nText2Base=val;
}
void SetText2BaseRatio(double val) {
assertWriteEnabled();
m_nText2BaseRatio=val;
}
void SetDetailScale(double val) {
assertWriteEnabled();
m_nDetailScale=val;
}
void SetHatchDivider(const TCHAR *szPattern, BOOL bDetail) {
assertWriteEnabled();
if(bDetail)
{
if(IsDividerLineHatch())
SetLineHatch(0,szPattern);
else
m_sHatchDivider2=szPattern;
}
else
m_sHatchDivider1=szPattern;
}
void SetHatchFill(const TCHAR *szPattern, BOOL bDetail) {
assertWriteEnabled();
if(bDetail)
{
if(IsFillLineHatch())
SetLineHatch(1,szPattern);
else
m_sHatchFill2=szPattern;
}
else m_sHatchFill1=szPattern;
}
void SetHatchFill1(const TCHAR *szPattern, BOOL bDetail) {
assertWriteEnabled();
if(bDetail)
{
if(IsFill1LineHatch())
SetLineHatch(2,szPattern);
else
m_sHatchFill12=szPattern;
}
else m_sHatchFill11=szPattern;
}
void SetHatchFill2(const TCHAR *szPattern, BOOL bDetail) {
assertWriteEnabled();
if(bDetail)
{
if(IsFill2LineHatch())
SetLineHatch(3,szPattern);
else
m_sHatchFill22=szPattern;
}
else m_sHatchFill21=szPattern;
}
void SetHatchBrick(const TCHAR *szPattern, BOOL bDetail)
{
assertWriteEnabled();
if(bDetail)
{
if(IsBrickLineHatch())
SetLineHatch(4,szPattern);
else
m_sHatchBrick2=szPattern;
}
else m_sHatchBrick1=szPattern;
}
void SetHatchRocket(const TCHAR *szPattern, BOOL bDetail) {
assertWriteEnabled();
if(bDetail)
{
if(IsRocketLineHatch())
SetLineHatch(5,szPattern);
else
m_sHatchRocket2=szPattern;
}
else m_sHatchRocket1=szPattern;
}
void SetHatchConcrete(const TCHAR *szPattern, BOOL bDetail) {
assertWriteEnabled();
if(bDetail)
{
if(IsConcreteLineHatch())
SetLineHatch(6,szPattern);
else
m_sHatchConcrete2=szPattern;
}
else m_sHatchConcrete1=szPattern;
}
void SetHatchSteel(const TCHAR *szPattern, BOOL bDetail) {
assertWriteEnabled();
if(bDetail)
{
if(IsSteelLineHatch())
SetLineHatch(7,szPattern);
else
m_sHatchSteel2=szPattern;
}
else m_sHatchSteel1=szPattern;
}
void SetBoldDivider(double val, BOOL bDetail) {
assertWriteEnabled();
if(bDetail) m_nBoldDivider2=val;
else m_nBoldDivider1=val;
}
void SetBoldFill(double val, BOOL bDetail) {
assertWriteEnabled();
if(bDetail) m_nBoldFill2=val;
else m_nBoldFill1=val;
}
void SetBoldFill1(double val, BOOL bDetail) {
assertWriteEnabled();
if(bDetail) m_nBoldFill12=val;
else m_nBoldFill11=val;
}
void SetBoldFill2(double val, BOOL bDetail) {
assertWriteEnabled();
if(bDetail) m_nBoldFill22=val;
else m_nBoldFill21=val;
}
void SetBoldBrick(double val, BOOL bDetail) {
assertWriteEnabled();
if(bDetail) m_nBoldBrick2=val;
else m_nBoldBrick1=val;
}
void SetBoldRocket(double val, BOOL bDetail) {
assertWriteEnabled();
if(bDetail) m_nBoldRocket2=val;
else m_nBoldRocket1=val;
}
void SetBoldConcrete(double val, BOOL bDetail) {
assertWriteEnabled();
if(bDetail) m_nBoldConcrete2=val;
else m_nBoldConcrete1=val;
}
void SetBoldSteel(double val, BOOL bDetail) {
assertWriteEnabled();
if(bDetail) m_nBoldSteel2=val;
else m_nBoldSteel1=val;
}
void SetDividerLineHatch(BOOL bTrue){assertWriteEnabled();m_nDividerFlag=bTrue;}
void SetFillLineHatch(BOOL bTrue){assertWriteEnabled();m_nFillFlag=bTrue;}
void SetFill1LineHatch(BOOL bTrue){assertWriteEnabled();m_nFill1Flag=bTrue;}
void SetFill2LineHatch(BOOL bTrue){assertWriteEnabled();m_nFill2Flag=bTrue;}
void SetBrickLineHatch(BOOL bTrue){assertWriteEnabled();m_nBrickFlag=bTrue;}
void SetRocketLineHatch(BOOL bTrue){assertWriteEnabled();m_nRocketFlag=bTrue;}
void SetConcreteLineHatch(BOOL bTrue){assertWriteEnabled();m_nConcreteFlag=bTrue;}
void SetSteelLineHatch(BOOL bTrue){assertWriteEnabled();m_nSteelFlag=bTrue;}
void SetHatchDividerId(AcDbObjectId id){assertWriteEnabled();m_idHatchDivider=id;}
void SetHatchFillId(AcDbObjectId id){assertWriteEnabled();m_idHatchFill=id;}
void SetHatchFill1Id(AcDbObjectId id){assertWriteEnabled();m_idHatchFill1=id;}
void SetHatchFill2Id(AcDbObjectId id){assertWriteEnabled();m_idHatchFill2=id;}
void SetHatchBrickId(AcDbObjectId id){assertWriteEnabled();m_idHatchBrick=id;}
void SetHatchRocketId(AcDbObjectId id){assertWriteEnabled();m_idHatchRocket=id;}
void SetHatchConcreteId(AcDbObjectId id){assertWriteEnabled();m_idHatchConcrete=id;}
void SetHatchSteelId(AcDbObjectId id){assertWriteEnabled();m_idHatchSteel=id;}
void SetDividerColor(Adesk::UInt16 color){assertWriteEnabled();m_nDividerColor=color;}
void SetFillColor(Adesk::UInt16 color){assertWriteEnabled();m_nFillColor=color;}
void SetFill1Color(Adesk::UInt16 color){assertWriteEnabled();m_nFill1Color=color;}
void SetFill2Color(Adesk::UInt16 color){assertWriteEnabled();m_nFill2Color=color;}
void SetBrickColor(Adesk::UInt16 color){assertWriteEnabled();m_nBrickColor=color;}
void SetRocketColor(Adesk::UInt16 color){assertWriteEnabled();m_nRocketColor=color;}
void SetConcreteColor(Adesk::UInt16 color){assertWriteEnabled();m_nConcreteColor=color;}
void SetSteelColor(Adesk::UInt16 color){assertWriteEnabled();m_nSteelColor=color;}
void SetCapLabel(BOOL bTrue) {
assertWriteEnabled();
if(bTrue)
m_nControlFlag |= CONF_CAP_LABEL;
else
m_nControlFlag &= ~CONF_CAP_LABEL;
}
void SetHideIntWall(BOOL bTrue) {
assertWriteEnabled();
if(bTrue)
m_nControlFlag |= CONF_HIDE_IWALL;
else
m_nControlFlag &= ~CONF_HIDE_IWALL;
}
void SetHideLevel(BOOL bTrue) {
assertWriteEnabled();
if(bTrue)
m_nControlFlag |= CONF_HIDE_LEVEL;
else
m_nControlFlag &= ~CONF_HIDE_LEVEL;
}
void SetPrec2(BOOL bTrue) {
assertWriteEnabled();
if(bTrue)
m_nControlFlag |= CONF_PREC2;
else
m_nControlFlag &= ~CONF_PREC2;
}
void SetSingleSect(BOOL bTrue) {
assertWriteEnabled();
if(bTrue) m_nControlFlag |= CONF_SINGLE_SECT;
else m_nControlFlag &= ~CONF_SINGLE_SECT;
}
void SetMeterUnitDraw(BOOL bTrue){
assertWriteEnabled();
if(bTrue)
m_nControlFlag |= CONF_METER_UNIT_DRAW;
else
m_nControlFlag &= ~CONF_METER_UNIT_DRAW;
}
void SetMeterUnitDim(BOOL bTrue){
assertWriteEnabled();
if(bTrue)
m_nControlFlag |= CONF_METER_UNIT_DIM;
else
m_nControlFlag &= ~CONF_METER_UNIT_DIM;
}
void SetSelectPreview(BOOL bTrue) {
assertWriteEnabled();
if(!bTrue)
m_nControlFlag |= CONF_NO_PRESEL;
else
m_nControlFlag &= ~CONF_NO_PRESEL;
}
void SetControlFlag(Adesk::UInt32 nFlag) {assertWriteEnabled(); m_nControlFlag=nFlag; }
void SetPScale(double scl) { if(scl>1E-4){assertWriteEnabled(); m_nPScale=scl;} }
void SetLHeight(double height) { assertWriteEnabled(); m_nLHeight=height; }
void SetDrawMode(Adesk::UInt16 nMode) { assertWriteEnabled(); m_nDrawMode=nMode; }
void SetSolidFill(BOOL bFill) { assertWriteEnabled(); m_bSolidFill = (Adesk::UInt8)bFill; }
void SetLineWeight(BOOL bLWeight) { assertWriteEnabled(); m_bLineWeight=bLWeight; }
void SetSpaceDispMode(int nMode) { assertWriteEnabled(); m_nSpaceDispMode = nMode; }
void SetShowWallBase(BOOL bOn) { assertWriteEnabled(); m_bShowWallBase=bOn;}
void SetHighBold(double nThick) {assertWriteEnabled(); m_nHighBold=nThick; }
void SetElevDiff(double nThick) {assertWriteEnabled(); m_nElevDiff=nThick; }
void SetCheckDim(BOOL bCheck) {assertWriteEnabled(); m_bCheckDim=bCheck; }
//void SetDimAreaUnit(BOOL bTrue) {assertWriteEnabled(); m_bDimAreaUnit=bTrue; }
void SetLinetypeDote(const AcDbObjectId &id) {
assertWriteEnabled();
m_idLinetypeDote=id;
}
void SetLinetypeDash(const AcDbObjectId &id) {
assertWriteEnabled();
m_idLinetypeDash=id;
}
void SetProjectFile(CString sFilePath);
void SetLayerStd(const TCHAR* sStd){
assertWriteEnabled();
m_sLayerStd=sStd;
}
// sg add 08126
void SetSpaceAreaPrecision(int nPrecision) {
assertWriteEnabled();
m_nSpaceAreaPrecision = nPrecision;
}
Adesk::UInt8 GetSpaceAreaPrecision() const {
return m_nSpaceAreaPrecision;
}
// sg add 090115
void SetDrawingIndexTextRatio(double dValue) {
assertWriteEnabled();
m_dDrawingIndexTextRatio = dValue;
}
double GetDrawingIndexTextRatio() const {
return m_dDrawingIndexTextRatio;
}
// sg modify 110124,支持圆圈文字出圈样式
// 0——新样式,1——旧样式,3——出圈样式
// void SetOldDrawingIndex(BOOL bOld) {
void SetOldDrawingIndex(int nValue) {
assertWriteEnabled();
// m_bOldDrawingIndex = bOld;
m_bOldDrawingIndex = nValue;
}
Adesk::UInt8 IsOldDrawingIndex() const {
return m_bOldDrawingIndex;
}
// sg add 090212,三角形标高符号大小
void SetEleTriangleSize(double dValue) {
assertWriteEnabled();
m_dEleTriangleSize = dValue;
}
double GetEleTriangleSize() const {
return m_dEleTriangleSize;
}
void SetEleDoteSize(double dValue) {
assertWriteEnabled();
m_dEleDoteSize = dValue;
}
double GetEleDoteSize() const {
return m_dEleDoteSize;
}
void SetEleCrossSize(double dValue) {
assertWriteEnabled();
m_dEleCrossSize = dValue;
}
double GetEleCrossSize() const {
return m_dEleCrossSize;
}
// sg add 090216
void SetMultiLeaderDistRatio(double dValue) {
assertWriteEnabled();
m_dMultiLeaderDistRatio = dValue;
}
double GetMultiLeaderDistRatio() const {
return m_dMultiLeaderDistRatio;
}
// sg add 090512,轴号字高系数,动态数据
void SetAxisLabelTextRatio(double dValue);
double GetAxisLabelTextRatio() const;
// sg add 090609,带形窗幕墙改变样式的比例界限,动态数据
void SetCurtainWall3Scale(double dValue);
double GetCurtainWall3Scale() const;
// sg add 090609,带形窗幕墙比例改变后是否不改样式,动态数据
void SetCurtainWallFixStyle(BOOL bVal);
Adesk::UInt8 IsCurtainWallFixStyle() const;
// sg add 090609,带形窗幕墙,不改样式时的设定类型,动态数据
void SetCurtainWallStyle(int nValue);
Adesk::UInt8 GetCurtainWallStyle() const;
// sg add 110120,凸窗挡板、转角窗挡板、门窗套是否加保温
void SetProWinSlabInsu(BOOL bValue);
BOOL IsProWinSlabInsu() const;
// sg add 110303,增加单行文字、多行文字、专业词库样式的动态数据
void SetTgSingleTextStyle(CString csStyle);
CString GetTgSingleTextStyle() const;
// sg add 120412,根据9.0需求,增加设置弧长标注样式的设置
void SetArcLenDimType(int nType) {
assertWriteEnabled();
m_nArcLenDimType = nType;
}
int GetArcLenDimType() const {
return m_nArcLenDimType;
}
// sg add 120413,用于解决旧的尺寸标注,有可能箭头标注大小固定为2的问题,至少让它看上去是一样大的,0表示旧版本,1表示9以上版本
int GetDealOldDimArrowSize() const {
return m_nDealOldDimArrowSize;
}
void SetDealOldDimArrowSize(int nSize) {
assertWriteEnabled();
m_nDealOldDimArrowSize = nSize;
}
ACRX_DECLARE_MEMBERS(TDbConfig);
// 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;
virtual resbuf * xData(const TCHAR* regappName = NULL) const;
virtual Acad::ErrorStatus setXData(const resbuf* xdata);
};
TARCH_IMPEXP TDbConfig * GetDwgGlobal(AcDb::OpenMode opMode, AcDbDatabase *pDb = NULL);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include "axlock.h"
#include "acdocman.h"
class TDocLock
{
protected:
AcAxDocLock *m_pDocLock;
public:
TDocLock()
{
m_pDocLock=(acDocManager->isApplicationContext()?
new AcAxDocLock() : NULL);
if(m_pDocLock)
VERIFY(m_pDocLock->lockStatus()==Acad::eOk);
}
~TDocLock()
{
if(m_pDocLock)
delete m_pDocLock;
}
};
// add by gjm 2014/02/13
// 设置坐标标注的图层 (随层/当前层)
inline void DocSetDORLayer(bool bValue)
{
TDocLock vLock;
TDbConfig *p = GetDwgGlobal(AcDb::kForWrite,g_pCurrentDb);
if (p)
{
p->SetDORLayerType(bValue);
p->close();
}
}
// 得到坐标标注的图层 (随层/当前层)
inline bool DocGetDORLayer()
{
TDbConfig *p = GetDwgGlobal(AcDb::kForRead,g_pCurrentDb);
if (p)
{
bool bret = p->GetDORLayerType();
p->close();
return bret;
}
return true;
}
// 设置符号标注的图层 (随层/当前层)
inline void DocSetSymbolLayer(bool bValue)
{
TDocLock vLock;
TDbConfig *p = GetDwgGlobal(AcDb::kForWrite,g_pCurrentDb);
if (p)
{
p->SetSymbolLayerType(bValue);
p->close();
}
}
// 得到符号标注的图层 (随层/当前层)
inline bool DocGetSymbolLayer()
{
TDbConfig *p = GetDwgGlobal(AcDb::kForRead,g_pCurrentDb);
if (p)
{
bool bret = p->GetSymbolLayerType();
p->close();
return bret;
}
return true;
}
// 设置标高标注的图层 (随层/当前层)
inline void DocSetElevLayer(bool bValue)
{
TDocLock vLock;
TDbConfig *p = GetDwgGlobal(AcDb::kForWrite,g_pCurrentDb);
if (p)
{
p->SetElevLayerType(bValue);
p->close();
}
}
// 得到标高标注的图层 (随层/当前层)
inline bool DocGetElevLayer()
{
TDbConfig *p = GetDwgGlobal(AcDb::kForRead, g_pCurrentDb);
if (p)
{
bool bret = p->GetElevLayerType();
p->close();
return bret;
}
return true;
}
// end
inline BOOL DocSetPScale(double nScale)
{
extern bool _docSetPScale(const double &d);
if (_docSetPScale(nScale))
return TRUE;
TDocLock vLock;
BOOL bRet=FALSE;
TDbConfig *p = GetDwgGlobal(AcDb::kForWrite,g_pCurrentDb);
if(p) {
p->SetPScale(nScale);
p->close();
bRet=TRUE;
}
return bRet;
}
inline double DocGetLHeight()
{
TDbConfig *p = GetDwgGlobal(AcDb::kForRead,g_pCurrentDb);
double nRet=(p? p->GetLHeight() : 3000*_UNIT_SCALE);
if(p) p->close();
return nRet;
}
inline BOOL DocSetLHeight(double nHeight)
{
TDocLock vLock;
TDbConfig *p = GetDwgGlobal(AcDb::kForWrite,g_pCurrentDb);
if(p) {
p->SetLHeight(nHeight);
p->close();
return TRUE;
}
return FALSE;
}
inline int DocGetDrawMode()
{
TDbConfig *p = GetDwgGlobal(AcDb::kForRead,g_pCurrentDb);
int nRet = p? p->GetDrawMode() : 3;
if(p) p->close();
return nRet;
}
inline BOOL DocSetDrawMode(int nMode)
{
TDocLock vLock;
TDbConfig *p = GetDwgGlobal(AcDb::kForWrite,g_pCurrentDb);
if(p) {
p->SetDrawMode(nMode);
p->close();
return TRUE;
}
return FALSE;
}
inline double DocGetText2Base()
{
TDbConfig *p = GetDwgGlobal(AcDb::kForRead,g_pCurrentDb);
double nDist = p? p->GetText2Base() : g_nText2Base;
if(p) p->close();
return nDist;
}
inline BOOL DocSetText2Base(double nDist)
{
TDocLock vLock;
TDbConfig *p = GetDwgGlobal(AcDb::kForWrite,g_pCurrentDb);
if(p) {
p->SetText2Base(nDist);
p->close();
return TRUE;
}
return FALSE;
}
inline double DocGetText2BaseRatio()
{
TDbConfig *p = GetDwgGlobal(AcDb::kForRead,g_pCurrentDb);
double nDist = p? p->GetText2BaseRatio() : g_nText2BaseRatio;
if(p) p->close();
return nDist;
}
inline BOOL DocSetText2BaseRatio(double nDist)
{
TDocLock vLock;
TDbConfig *p = GetDwgGlobal(AcDb::kForWrite,g_pCurrentDb);
if(p) {
p->SetText2BaseRatio(nDist);
p->close();
return TRUE;
}
return FALSE;
}
inline BOOL DocGetIsSolidFill()
{
TDbConfig *p = GetDwgGlobal(AcDb::kForRead,g_pCurrentDb);
BOOL bRet = p? p->IsSolidFill() : FALSE;
if(p) p->close();
return bRet;
}
inline BOOL DocSetIsSolidFill(BOOL bTrue)
{
TDocLock vLock;
TDbConfig *p = GetDwgGlobal(AcDb::kForWrite,g_pCurrentDb);
if(p) {
p->SetSolidFill(bTrue);
p->close();
return TRUE;
}
return FALSE;
}
inline BOOL DocGetIsLineWeight()
{
TDbConfig *p = GetDwgGlobal(AcDb::kForRead,g_pCurrentDb);
BOOL bRet = p? p->IsLineWeight() : FALSE;
if(p) p->close();
return bRet;
}
inline BOOL DocSetIsLineWeight(BOOL bTrue)
{
TDocLock vLock;
TDbConfig *p = GetDwgGlobal(AcDb::kForWrite,g_pCurrentDb);
if(p) {
p->SetLineWeight(bTrue);
p->close();
return TRUE;
}
return FALSE;
}
inline double DocGetDetailScale()
{
TDbConfig *p = GetDwgGlobal(AcDb::kForRead,g_pCurrentDb);
double bRet = p? p->GetDetailScale() : 100.0;
if(p) p->close();
return bRet;
}
inline BOOL DocSetDetailScale(double val)
{
TDocLock vLock;
TDbConfig *p = GetDwgGlobal(AcDb::kForWrite,g_pCurrentDb);
if(p) {
p->SetDetailScale(val);
p->close();
return TRUE;
}
return FALSE;
}
inline double DocGetHighBold()
{
TDbConfig *p = GetDwgGlobal(AcDb::kForRead,g_pCurrentDb);
double bRet = p? p->GetHighBold() : 0.4;
if(p) p->close();
return bRet;
}
inline BOOL DocSetHighBold(double bTrue)
{
TDocLock vLock;
TDbConfig *p = GetDwgGlobal(AcDb::kForWrite,g_pCurrentDb);
if(p) {
p->SetHighBold(bTrue);
p->close();
return TRUE;
}
return FALSE;
}
inline int DocGetSpaceDispMode()
{
TDbConfig *p = GetDwgGlobal(AcDb::kForRead,g_pCurrentDb);
int nRet = p? p->GetSpaceDispMode() : 1;
if(p) p->close();
return nRet;
}
inline BOOL DocSetSpaceDispMode(int val)
{
TDocLock vLock;
TDbConfig *p = GetDwgGlobal(AcDb::kForWrite,g_pCurrentDb);
if(p) {
p->SetSpaceDispMode(val);
p->close();
return TRUE;
}
return FALSE;
}
inline BOOL DocGetShowBase()
{
TDbConfig *p = GetDwgGlobal(AcDb::kForRead,g_pCurrentDb);
BOOL bRet = p? p->IsShowWallBase() : FALSE;
if(p) p->close();
return bRet;
}
inline BOOL DocSetShowBase(BOOL bTrue)
{
TDocLock vLock;
TDbConfig *p = GetDwgGlobal(AcDb::kForWrite,g_pCurrentDb);
if(p) {
p->SetShowWallBase(bTrue);
p->close();
return TRUE;
}
return FALSE;
}
inline BOOL DocGetCheckDim()
{
TDbConfig *p = GetDwgGlobal(AcDb::kForRead,g_pCurrentDb);
BOOL bRet = p? p->IsCheckDim() : FALSE;
if(p) p->close();
return bRet;
}
inline BOOL DocSetCheckDim(BOOL bTrue)
{
TDocLock vLock;
TDbConfig *p = GetDwgGlobal(AcDb::kForWrite,g_pCurrentDb);
if(p) {
p->SetCheckDim(bTrue);
p->close();
return TRUE;
}
return FALSE;
}
inline double DocGetElevDiff()
{
TDbConfig *p = GetDwgGlobal(AcDb::kForRead,g_pCurrentDb);
double nRet=(p? p->GetElevDiff() : 0.0);
if(p) p->close();
return nRet;
}
inline BOOL DocSetElevDiff(double nHeight)
{
TDocLock vLock;
TDbConfig *p = GetDwgGlobal(AcDb::kForWrite,g_pCurrentDb);
if(p) {
p->SetElevDiff(nHeight);
p->close();
return TRUE;
}
return FALSE;
}
inline BOOL DocGetInt3DWallVisible()
{
TDbConfig *p = GetDwgGlobal(AcDb::kForRead,g_pCurrentDb);
BOOL nRet=(p? p->IsHideIntWall() : FALSE);
if(p) p->close();
return !nRet;
}
inline BOOL DocSetInt3DWallVisible(BOOL bTrue)
{
BOOL bHide=!bTrue;
TDocLock vLock;
TDbConfig *p = GetDwgGlobal(AcDb::kForWrite,g_pCurrentDb);
if(p) {
p->SetHideIntWall(bHide);
p->close();
return TRUE;
}
return FALSE;
}
inline BOOL DocGetLevelLine()
{
TDbConfig *p = GetDwgGlobal(AcDb::kForRead,g_pCurrentDb);
BOOL nRet=TRUE;
if(p) {
nRet=p->IsHideLevel();
p->close();
nRet=!nRet;
}
return nRet;
}
inline BOOL DocSetLevelLine(BOOL bTrue)
{
BOOL bHide=!bTrue;
TDocLock vLock;
TDbConfig *p = GetDwgGlobal(AcDb::kForWrite,g_pCurrentDb);
if(p) {
p->SetHideLevel(bHide);
p->close();
return TRUE;
}
return FALSE;
}
inline BOOL DocGetPrec2()
{
TDbConfig *p = GetDwgGlobal(AcDb::kForRead,g_pCurrentDb);
BOOL nRet=FALSE;
if(p) {
nRet=p->IsPrec2();
p->close();
}
return nRet;
}
inline BOOL DocSetPrec2(BOOL bTrue)
{
TDocLock vLock;
TDbConfig *p = GetDwgGlobal(AcDb::kForWrite,g_pCurrentDb);
if(p) {
p->SetPrec2(bTrue);
p->close();
return TRUE;
}
return FALSE;
}
inline CString DocGetProjectFile()
{
TDbConfig *p = GetDwgGlobal(AcDb::kForRead,g_pCurrentDb);
CString sRet;
if(p) {
sRet=p->GetProjectFile();
p->close();
}
return sRet;
}
inline BOOL DocSetProjectFile(const TCHAR* sFile)
{
TDocLock vLock;
TDbConfig *p = GetDwgGlobal(AcDb::kForWrite,g_pCurrentDb);
if(p) {
p->SetProjectFile(sFile);
p->close();
return TRUE;
}
return FALSE;
}
inline CString DocGetLayerStd()
{
TDbConfig *p = GetDwgGlobal(AcDb::kForRead,g_pCurrentDb);
CString sRet;
if(p) {
sRet=p->GetLayerStd();
p->close();
}
return sRet;
}
inline BOOL DocSetLayerStd(const TCHAR* sFile)
{
TDocLock vLock;
TDbConfig *p = GetDwgGlobal(AcDb::kForWrite,g_pCurrentDb);
if(p) {
p->SetLayerStd(sFile);
p->close();
return TRUE;
}
return FALSE;
}
#define g_bSelectPreview DocGetSelectPreview()
inline BOOL DocGetSelectPreview()
{
TDbConfig *p = GetDwgGlobal(AcDb::kForRead,g_pCurrentDb);
BOOL bRet=TRUE;
if(p) {
bRet=p->IsSelectPreview();
p->close();
}
return bRet;
}
inline void DocSetSelectPreview(BOOL bTrue)
{
TDbConfig *p = GetDwgGlobal(AcDb::kForWrite,g_pCurrentDb);
if(p) {
p->SetSelectPreview(bTrue);
p->close();
}
}
inline BOOL DocGetMeterUnitDraw()
{
extern bool _docGetMeterUnitDraw(BOOL &bMeter);
BOOL bRet=FALSE;
if (_docGetMeterUnitDraw(bRet))
return bRet;
TDbConfig *p = GetDwgGlobal(AcDb::kForRead,g_pCurrentDb);
if(p) {
bRet=p->IsMeterUnitDraw();
p->close();
}
return bRet;
}
inline void DocSetMeterUnitDraw(BOOL bTrue)
{
extern bool _docSetMeterUnitDraw(const BOOL &bMeter);
if (_docSetMeterUnitDraw(bTrue))
return;
TDbConfig *p = GetDwgGlobal(AcDb::kForWrite,g_pCurrentDb);
if(p) {
p->SetMeterUnitDraw(bTrue);
p->close();
}
Refresh_DIST_SNAP();
}
inline BOOL DocGetMeterUnitDim()
{
TDbConfig *p = GetDwgGlobal(AcDb::kForRead,g_pCurrentDb);
BOOL bRet=FALSE;
if(p) {
bRet=p->IsMeterUnitDim();
p->close();
}
return bRet;
}
inline void DocSetMeterUnitDim(BOOL bTrue)
{
TDbConfig *p = GetDwgGlobal(AcDb::kForWrite,g_pCurrentDb);
if(p) {
p->SetMeterUnitDim(bTrue);
p->close();
}
}
inline int DocGetSpaceAreaPrecision()
{
TDbConfig *p = GetDwgGlobal(AcDb::kForRead, g_pCurrentDb);
int nRet = p? p->GetSpaceAreaPrecision() : 2;
if(p) p->close();
return nRet;
}
inline BOOL DocSetSpaceAreaPrecision(int val)
{
TDbConfig *p = GetDwgGlobal(AcDb::kForWrite,g_pCurrentDb);
if(p) {
p->SetSpaceAreaPrecision(val);
p->close();
return TRUE;
}
return FALSE;
}
inline double DocGetDITextRatio()
{
TDbConfig *p = GetDwgGlobal(AcDb::kForRead, g_pCurrentDb);
double dRet = (p?p->GetDrawingIndexTextRatio():g_dDrawIndexTextRatio);
if (p) p->close();
return dRet;
}
inline BOOL DocSetDITextRatio(double nValue)
{
TDocLock vLock;
TDbConfig *p = GetDwgGlobal(AcDb::kForWrite, g_pCurrentDb);
if (p) {
p->SetDrawingIndexTextRatio(nValue);
p->close();
return TRUE;
}
return FALSE;
}
// 旧圆圈文字样式,8.5起不再使用DocGetOldDrawingIndex、DocSetOldDrawingIndex接口函数
inline BOOL DocGetOldDrawingIndex()
{
TDbConfig *p = GetDwgGlobal(AcDb::kForRead, g_pCurrentDb);
BOOL bRet = p?p->IsOldDrawingIndex():g_bDrawIndexOldStyle;
if (p)
p->close();
return bRet;
}
inline BOOL DocSetOldDrawingIndex(BOOL bTrue)
{
TDocLock vLock;
TDbConfig *p = GetDwgGlobal(AcDb::kForWrite, g_pCurrentDb);
if (p)
{
p->SetOldDrawingIndex(bTrue);
p->close();
return TRUE;
}
return FALSE;
}
// sg add 110124,获得圆圈文字样式,==0,新样式,==1,旧样式,==3,出圈样式
inline int DocGetDrawingIndexStyle()
{
int nRet = 0;
TDbConfig *p = GetDwgGlobal(AcDb::kForRead, g_pCurrentDb);
if (p)
{
nRet = p->IsOldDrawingIndex();
p->close();
}
else
{
nRet = g_bDrawIndexOldStyle?1:0;
nRet = g_bDIOutCircleStyle?3:nRet;
}
return nRet;
}
inline BOOL DocSetDrawingIndexStyle(int nStyle)
{
TDocLock vLock;
TDbConfig *p = GetDwgGlobal(AcDb::kForWrite, g_pCurrentDb);
if (p)
{
p->SetOldDrawingIndex(nStyle);
p->close();
return TRUE;
}
return FALSE;
}
// sg add 090212
inline double DocGetEleTriangleSize()
{
TDbConfig *p = GetDwgGlobal(AcDb::kForRead, g_pCurrentDb);
//double dRet = (p?p->GetEleTriangleSize():3); // sg add 110301,默认值从高级选项中读取
double dRet = (p?p->GetEleTriangleSize():g_dEleTriangleSize);
if (p)
p->close();
return dRet;
}
inline BOOL DocSetEleTriangleSize(double nValue)
{
TDocLock vLock;
TDbConfig *p = GetDwgGlobal(AcDb::kForWrite, g_pCurrentDb);
if (p)
{
p->SetEleTriangleSize(nValue);
p->close();
return TRUE;
}
return FALSE;
}
inline double DocGetEleDoteSize()
{
TDbConfig *p = GetDwgGlobal(AcDb::kForRead, g_pCurrentDb);
//double dRet = (p?p->GetEleDoteSize():0.75); // sg add 110301,默认值从高级选项中读取
double dRet = (p?p->GetEleDoteSize():g_dEleDoteSize*0.5);
if (p)
p->close();
return dRet;
}
inline BOOL DocSetEleDoteSize(double nValue)
{
TDocLock vLock;
TDbConfig *p = GetDwgGlobal(AcDb::kForWrite, g_pCurrentDb);
if (p)
{
p->SetEleDoteSize(nValue);
p->close();
return TRUE;
}
return FALSE;
}
inline double DocGetEleCrossSize()
{
TDbConfig *p = GetDwgGlobal(AcDb::kForRead, g_pCurrentDb);
double dRet = (p?p->GetEleCrossSize():g_dEleCrossSize);
if (p)
p->close();
return dRet;
}
inline BOOL DocSetEleCrossSize(double nValue)
{
TDocLock vLock;
TDbConfig *p = GetDwgGlobal(AcDb::kForWrite, g_pCurrentDb);
if (p)
{
p->SetEleCrossSize(nValue);
p->close();
return TRUE;
}
return FALSE;
}
// sg add 090216
inline double DocGetMultiLeaderDistRatio()
{
TDbConfig *p = GetDwgGlobal(AcDb::kForRead, g_pCurrentDb);
double dRet = (p?p->GetMultiLeaderDistRatio():0.3);
if (p)
p->close();
return dRet;
}
inline BOOL DocSetMultiLeaderDistRatio(double nValue)
{
TDocLock vLock;
TDbConfig *p = GetDwgGlobal(AcDb::kForWrite, g_pCurrentDb);
if (p)
{
p->SetMultiLeaderDistRatio(nValue);
p->close();
return TRUE;
}
return FALSE;
}
// sg add 090512,轴号字高系数
inline double DocGetAxisLabelTextRatio()
{
TDbConfig *p = GetDwgGlobal(AcDb::kForRead, g_pCurrentDb);
double dRet = (p?p->GetAxisLabelTextRatio():g_dAxisLabelTextRatio);
if (p) p->close();
return dRet;
}
inline BOOL DocSetAxisLabelTextRatio(double nValue)
{
TDocLock vLock;
TDbConfig *p = GetDwgGlobal(AcDb::kForWrite, g_pCurrentDb);
if (p) {
p->SetAxisLabelTextRatio(nValue);
p->close();
return TRUE;
}
return FALSE;
}
// sg add 090609,带形窗幕墙改变样式的比例界限
inline double DocGetCurtainWall3Scale()
{
TDbConfig *p = GetDwgGlobal(AcDb::kForRead, g_pCurrentDb);
double dRet = (p?p->GetCurtainWall3Scale():g_nCurtainWall3Scale);
if (p) p->close();
return dRet;
}
inline BOOL DocSetCurtainWall3Scale(double nValue)
{
TDocLock vLock;
TDbConfig *p = GetDwgGlobal(AcDb::kForWrite, g_pCurrentDb);
if (p) {
p->SetCurtainWall3Scale(nValue);
p->close();
return TRUE;
}
return FALSE;
}
// sg add 090609,带形窗幕墙比例改变后是否不改样式
inline BOOL DocGetCurtainWallFixStyle()
{
TDbConfig *p = GetDwgGlobal(AcDb::kForRead, g_pCurrentDb);
BOOL bRet = p?p->IsCurtainWallFixStyle():FALSE;
if (p) p->close();
return bRet;
}
inline BOOL DocSetCurtainWallFixStyle(BOOL bTrue)
{
TDocLock vLock;
TDbConfig *p = GetDwgGlobal(AcDb::kForWrite, g_pCurrentDb);
if (p) {
p->SetCurtainWallFixStyle(bTrue);
p->close();
return TRUE;
}
return FALSE;
}
// sg add 090609,带形窗幕墙,不改样式时的设定类型
inline int DocGetCurtainWallStyle()
{
TDbConfig *p = GetDwgGlobal(AcDb::kForRead, g_pCurrentDb);
int nRet = p? p->GetCurtainWallStyle() : 2;
if(p) p->close();
return nRet;
}
inline BOOL DocSetCurtainWallStyle(int val)
{
TDbConfig *p = GetDwgGlobal(AcDb::kForWrite,g_pCurrentDb);
if(p) {
p->SetCurtainWallStyle(val);
p->close();
return TRUE;
}
return FALSE;
}
// sg add 110120,凸窗挡板、转角窗挡板、门窗套是否加保温
inline BOOL DocGetProWinSlabInsu()
{
TDbConfig *p = GetDwgGlobal(AcDb::kForRead, g_pCurrentDb);
BOOL bRet = p ? p->IsProWinSlabInsu() : TRUE;
if (p)
{
p->close();
}
return bRet;
}
inline BOOL DocSetProWinSlabInsu(BOOL bInsu)
{
TDocLock vLock;
TDbConfig *p = GetDwgGlobal(AcDb::kForWrite,g_pCurrentDb);
if (p)
{
p->SetProWinSlabInsu(bInsu);
p->close();
return TRUE;
}
return FALSE;
}
// sg add 110303,增加单行文字、多行文字、专业词库样式的动态数据
inline CString DocGetTgSingleTextStyle()
{
TDbConfig *p = GetDwgGlobal(AcDb::kForRead, g_pCurrentDb);
CString csStyle = _T("STANDARD");
if (p)
{
csStyle = p->GetTgSingleTextStyle();
p->close();
}
return csStyle;
}
inline BOOL DocSetTgSingleTextStyle(CString &csStyle)
{
TDocLock vLock;
TDbConfig *p = GetDwgGlobal(AcDb::kForWrite, g_pCurrentDb);
if (p)
{
p->SetTgSingleTextStyle(csStyle);
p->close();
return TRUE;
}
return FALSE;
}
// sg add 120412,根据9.0需求,增加设置弧长标注样式的设置
inline int DocGetArcLenDimType()
{
TDbConfig *p = GetDwgGlobal(AcDb::kForRead, g_pCurrentDb);
int nRet = (p?p->GetArcLenDimType():g_nArcLenDimType);
if (p)
{
p->close();
}
return nRet;
}
inline BOOL DocSetArcLenDimType(int nType)
{
TDocLock vLock;
TDbConfig *p = GetDwgGlobal(AcDb::kForWrite, g_pCurrentDb);
if (p)
{
p->SetArcLenDimType(nType);
p->close();
return TRUE;
}
return FALSE;
}
// sg add 120413,用于解决旧的尺寸标注,有可能箭头标注大小固定为2的问题,至少让它看上去是一样大的,0表示旧版本,1表示9以上版本
inline int DocGetDealOldDimArrowSize()
{
TDbConfig *p = GetDwgGlobal(AcDb::kForRead, g_pCurrentDb);
int nRet = (p?p->GetDealOldDimArrowSize():1);
if (p)
{
p->close();
}
return nRet;
}
inline BOOL DocSetDealOldDimArrowSize(int nSide)
{
TDocLock vLock;
TDbConfig *p = GetDwgGlobal(AcDb::kForWrite, g_pCurrentDb);
if (p)
{
p->SetDealOldDimArrowSize(nSide);
p->close();
return TRUE;
}
return FALSE;
}
//
//inline 函数的封装
class TConfigDataTearoff : public TConfigBase
{
public:
TConfigDataTearoff();
virtual ~TConfigDataTearoff();
virtual BOOL DocSetPScale(double nScale);
virtual double DocGetPScale();
virtual double DocGetLHeight();
virtual double DocGetHighBold();
virtual BOOL DocGetDrawMode();
virtual BOOL DocGetIsSolidFill();
virtual BOOL DocGetIsLineWeight();
virtual BOOL DocGetMeterUnitDraw();
virtual void DocSetMeterUnitDraw(BOOL bTrue);
virtual AcDbObjectId InitLayer(const TCHAR *szLayer, BOOL bApplyChange);
virtual int BoolOper(AcDb::BoolOperType nOperType,LPVOID pPoly1,LPVOID pPoly2,LPVOID pPtrListPoly2d);
virtual CString GetCurrentCommand();
virtual void Close();
};
#endif