⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 modelspace.cpp

📁 我自己写的代码 可能比较简单 我实现了模拟图层的功能
💻 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 + -