Files
envi-code/SourceCode/Code2026/tg_shs/shs_siteplan/GlwPlaceTreeDataManage.cpp
T
2026-09-28 15:28:50 +08:00

190 lines
3.8 KiB
C++

#include "stdafx.h"
#include "GlwPlaceTreeDataManage.h"
#include "GlwGlobalVariable.h"
extern AcDbObjectId InsertBlock(CString &csBlkName, int &iTreeType);
extern double GetRandomSize(double dTreeRad);
CPlaceTreeData::CPlaceTreeData()
{
// 初始化变量
m_iDrawStyle = 0;
m_iTreeType = 0;
m_dRad = 1500;
m_dDis = 5000;
m_dOffset = 0;
m_bIsRotation = TRUE;
m_bIsSetDis = FALSE;
m_bIsRandSize = FALSE;
m_idTreeStyle = NULL;
//测试用
int n = 0;
CString csBlkName = _T("tree1");
while(!m_idTreeStyle.isValid())// 用户没有设值新的树形,使用默认值
{
m_idTreeStyle = InsertBlock(csBlkName, n);
}
// add by xly on 110329 解决图纸切换时,发生崩溃
if (m_idTreeStyle.database()!=curDoc()->database())
{
m_idTreeStyle = InsertBlock(csBlkName, n);
}
AcDbBlockTableRecord *pBTRecord = NULL;
if(acdbOpenObject(pBTRecord, m_idTreeStyle, AcDb::kForRead) != Acad::eOk)
{
m_idTreeStyle = InsertBlock(csBlkName, n);
}
else
pBTRecord->close();
}
CPlaceTreeData::~CPlaceTreeData()
{
}
// 树的绘制类型
int GlwPlaceTreeDataManage::GetDrawType()
{
return m_pTreeData.m_iDrawStyle;
}
// 设置树形
int GlwPlaceTreeDataManage::GetTreeType()
{
int n = 0;
CString csBlkName = _T("tree1");
while(!(m_pTreeData.m_idTreeStyle).isValid())// 用户没有设值新的树形,使用默认值
{
m_pTreeData.m_idTreeStyle = InsertBlock(csBlkName, n);
}
if ((m_pTreeData.m_idTreeStyle).database()!=curDoc()->database())
{
m_pTreeData.m_idTreeStyle = InsertBlock(csBlkName, n);
return m_pTreeData.m_iTreeType;
}
AcDbBlockTableRecord *pBTRecord = NULL;
if(acdbOpenObject(pBTRecord,m_pTreeData.m_idTreeStyle, AcDb::kForRead) != Acad::eOk)
{
m_pTreeData.m_idTreeStyle = InsertBlock(csBlkName, n);
}
else
pBTRecord->close();
}
// 获得图块的ID
AcDbObjectId GlwPlaceTreeDataManage::GetTreeId()
{
return m_pTreeData.m_idTreeStyle;
}
// 获得树间距
double GlwPlaceTreeDataManage::GetTreeDis()
{
return _AS_SYS_UNIT(m_pTreeData.m_dDis);
}
// 获得树的半径
double GlwPlaceTreeDataManage::GetTreeRad(BOOL IsNotDlg)
{
double dRad = 0;
dRad = m_pTreeData.m_dRad;
if (IsNotDlg)
{
if (m_pTreeData.m_bIsRandSize && (m_pTreeData.m_iDrawStyle == 0 || m_pTreeData.m_iDrawStyle == 3))
{
dRad = GetRandomSize(m_pTreeData.m_dRad);
}
}
return _AS_SYS_UNIT(dRad);
}
// 获取偏移量
double GlwPlaceTreeDataManage::GetTreeOffset()
{
return _AS_SYS_UNIT(m_pTreeData.m_dOffset);
}
// 获得间距是否可调
BOOL GlwPlaceTreeDataManage::GetIsSetDis()
{
return m_pTreeData.m_bIsSetDis;
}
BOOL GlwPlaceTreeDataManage::GetIsSetRotation()
{
return m_pTreeData.m_bIsRotation;
}
BOOL GlwPlaceTreeDataManage::GetIsSetRandomSize()
{
return m_pTreeData.m_bIsRandSize;
}
// 设置树的绘制类型
void GlwPlaceTreeDataManage::SetDrawType(int iDrawStyle)
{
m_pTreeData.m_iDrawStyle = iDrawStyle;
}
// 设置树形
void GlwPlaceTreeDataManage::SetTreeType(int iTreeType)
{
m_pTreeData.m_iTreeType = iTreeType;
}
// 设置图块的ID
void GlwPlaceTreeDataManage::SetTreeId(AcDbObjectId idTreeStyle)
{
m_pTreeData.m_idTreeStyle = idTreeStyle;
}
// 设置树的半径
void GlwPlaceTreeDataManage::SetTreeRad(double dRad)
{
m_pTreeData.m_dRad = _AS_MM(dRad);
}
// 设置树间距
void GlwPlaceTreeDataManage::SetTreeDis(double dDis)
{
m_pTreeData.m_dDis = _AS_MM(dDis);
}
// 设置偏移量
void GlwPlaceTreeDataManage::SetTreeOffset(double dOffset)
{
m_pTreeData.m_dOffset = _AS_MM(dOffset);
}
// 设置间距是否可调
void GlwPlaceTreeDataManage::SetIsSetDis(BOOL bIsSetDis)
{
m_pTreeData.m_bIsSetDis = bIsSetDis;
}
// 设置是否可旋转
void GlwPlaceTreeDataManage::SetIsSetRotation(BOOL bIsRotation)
{
m_pTreeData.m_bIsRotation = bIsRotation;
}
//设置是否可以随机大小
void GlwPlaceTreeDataManage::SetIsSetRandSize(BOOL bIsRandSize)
{
m_pTreeData.m_bIsRandSize = bIsRandSize;
}
GlwPlaceTreeDataManage::GlwPlaceTreeDataManage(void)
{
}
GlwPlaceTreeDataManage::~GlwPlaceTreeDataManage(void)
{
}