📄 modelspace.cpp
字号:
///////////////////////////////////////////////////////////
// ModelSpace.cpp
// Implementation of the Class ModelSpace
// Created on: 18-二月-2009 17:17:29
// Original author: pangyj
///////////////////////////////////////////////////////////
#include "StdAfx.h"
#include "ModelSpace.h"
#include "Layer.h"
ModelSpace::ModelSpace(){
idObjectMap.clear();
lastId = NULLID;
}
ModelSpace::~ModelSpace(){
}
unsigned long ModelSpace::AddObjectToModelSpace(EntityObject*& pObj){
if (!pObj)
{
return NULLID;
}
++ lastId;//assign a new id
entities.addNode(lastId);
//添加到map中,以备后用
idObjectMap.insert(pair<unsigned long,void*>(lastId,pObj));
pObj->id(lastId);
return lastId;
}
ErrorStatus ModelSpace::close(EntityObject*& pEnt){
pEnt->modeStatus(eClosed);
return eOk;
}
ErrorStatus ModelSpace::write(fstream &f)
{
return eOk;
}
ErrorStatus ModelSpace::erase(unsigned long id)
{
entities.removeByValue(id);
layers.removeByValue(id);
EntityObject *pEnt = NULL;
if (open(pEnt,id,forRead) !=eOk)
{
return eError;
}
if (pEnt)
{
pEnt->erase();
}
delete pEnt;
pEnt = NULL;
this->idObjectMap.erase(id);
return eOk;
}
ErrorStatus ModelSpace::open(EntityObject*& pEnt, unsigned long id, OpenMode mode)
{
if (idObjectMap.empty())
{
pEnt = NULL;
return eError;
}
UEMAP::iterator iter;
iter = idObjectMap.find(id);
if (iter == idObjectMap.end())
{
return eError;
}
pEnt =(EntityObject*)(iter->second);
return eOk;
}
lit_list<unsigned long> &ModelSpace::subEntityIds()
{
return this->entities;
}
ErrorStatus ModelSpace::open(EntityObject *& pEnt,const char * sName,OpenMode mode)
{
if (layers.isEmpty())
{
return eError;
}
lit_node<unsigned long>* pCureNode = layers.get_head();
while (pCureNode)
{
Layer * pLayer = NULL;
if (open((EntityObject*&)pLayer,pCureNode->get_value(),forRead) != eOk)
{
return eError;
}
pCureNode = pCureNode->next();
if (!pLayer)
{
continue;
}
if (strcmpi(pLayer->name(),sName) == 0)
{
pEnt = pLayer;
return eOk;
}
}
return eError;
}
bool ModelSpace::isEmpty()const
{
if (layers.isEmpty() && entities.isEmpty())
{
return true;
}
return false;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -