190 lines
3.8 KiB
C++
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)
|
|
{
|
|
}
|