#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) { }