DXF图元文件提取与显示(一)

#include "StdAfx.h"
#include "DXFMeta.h"

//图元名称
const string DXFMeta::NAMES[MetaTypes]={"OTHER","LINE","CIRCLE","POLYLINE"};

//************************************
// 图元对象是所有图元的基类,针对DXF的行和偏移
// 的字节数,利用虚函数读取相关图元信息来构建一
// 个图元对象
// Method:    DXFMeta
// FullName:  DXFMeta::DXFMeta
// Access:    public 
// Returns:   
// Qualifier:
// Parameter: UINT rCount	所在DXF文件的行号
// Parameter: UINT seekBytes所在DXF文件的字节
// 偏移位置
// Author:zhengzhe 2011-11-22
//************************************
DXFMeta::DXFMeta(UINT rCount,UINT seekBytes)
{
	m_rowEndIndex=m_rowStartIndex=rCount;
	m_memSeekEndPos=m_memSeekStartPos=seekBytes;
	type = OTHER;
}


DXFMeta::~DXFMeta(void)
{
}

//************************************
// 获取图元名称
// Method:    GetName
// FullName:  DXFMeta::GetName
// Access:    public 
// Returns:   std::string
// Qualifier: const
// Author:zhengzhe 2011-11-22
//************************************
std::string DXFMeta::GetName() const
{
	return NAMES[GetMetaType()];
}

//************************************
// 获取图元类型
// Method:    GetMetaType
// FullName:  DXFMeta::GetMetaType
// Access:    public 
// Returns:   DXFMeta::DXFMetaType
// Qualifier: const
// Author:zhengzhe 2011-11-22
//************************************
DXFMeta::DXFMetaType DXFMeta::GetMetaType() const
{
	return type;
}



//************************************
// 读取一行信息的更新操作,增加一行,并更新读写指针
// 偏移的字节数
// Method:    IncrementCount
// FullName:  DXFMeta::IncrementCount
// Access:    public 
// Returns:   void
// Qualifier:
// Parameter: DXFMeta & meta
// Parameter: char * tmp
// Author:zhengzhe 2011-11-22
//************************************
void DXFMeta::IncrementCount( DXFMeta &meta, char * tmp )
{
	++meta.m_rowEndIndex;
	meta.m_memSeekEndPos+=(strlen(tmp)+1)*sizeof(char);
}

//************************************
// 获取线信息在文档中的结束位置的偏移字节数
// Method:    GetSeekEndPos
// FullName:  DXFLine::GetSeekEndPos
// Access:    virtual public 
// Returns:   UINT
// Qualifier: const
// Author: zhengzhe  2011-11-21
//************************************
UINT DXFMeta::GetSeekEndPos() const
{
	return m_memSeekEndPos;
}


//************************************
// 获取信息结束的行号
// Method:    GetRowEndIndex
// FullName:  DXFMeta::GetRowEndIndex
// Access:    public 
// Returns:   UINT
// Qualifier: const
// Author:zhengzhe 2011-11-21
//************************************
UINT DXFMeta::GetRowEndIndex() const
{
	return m_rowEndIndex;
}

//************************************
// 获取信息开始的行号
// Method:    GetRowStartIndex
// FullName:  DXFMeta::GetRowStartIndex
// Access:    public 
// Returns:   UINT
// Qualifier: const
// Author:zhengzhe 2011-11-21
//************************************
UINT DXFMeta::GetRowStartIndex() const
{
	return m_rowStartIndex;
}
//************************************
// 获取未修改前信息数据的字节大小
// Method:    GetOrgByteSize
// FullName:  DXFMeta::GetOrgByteSize
// Access:    public 
// Returns:   UINT
// Qualifier: const
// Author:zhengzhe 2011-11-21
//************************************
UINT DXFMeta::GetOrgByteSize() const
{
	return m_orgByteSize;
}
//************************************
// 获取修改后信息数据的字节大小
// Method:    GetCurByteSize
// FullName:  DXFMeta::GetCurByteSize
// Access:    public 
// Returns:   UINT  字节数
// Qualifier: const
// Author:zhengzhe 2011-11-21
//************************************
UINT DXFMeta::GetCurByteSize() const
{
	return m_curByteSize;
}

//************************************
// 计算当前字节大小
// Method:    CalCurByteSize
// FullName:  DXFMeta::CalCurByteSize
// Access:    public 
// Returns:   void
// Qualifier:
// Author:zhengzhe 2011-11-21
//************************************
void DXFMeta::CalCurByteSize()
{
	m_curByteSize = m_memSeekEndPos-m_memSeekStartPos;
}

//************************************
// 获取该线段描述开始在文档中偏移的字节位置
// Method:    GetSeekStartPos :
// FullName:  DXFLine::GetSeekStartPos
// Access:    virtual public 
// Returns:   UINT
// Qualifier: const
// Author:zhengzhe 2011-11-21
//************************************
UINT DXFMeta::GetSeekStartPos() const
{
	return m_memSeekStartPos;
}

//************************************
// 显示图元基本信息
// Method:    operator<<
// FullName:  operator<<
// Access:    public 
// Returns:   ostream&
// Qualifier:
// Parameter: ostream & os
// Parameter: const DXFMeta & meta
// Author:zhengzhe 2011-11-21
//************************************
ostream& operator<<( ostream& os,const DXFMeta& meta )
{
	os<<"Meta Info:\n"
		<<"----------------------------------"
		<<"\n\tMeta Name:"<< meta.GetName()
		<<"\n\tOrgInfo Byte Size:"<<meta.GetOrgByteSize()<<"\tCurInfo Byte Size:"<<meta.GetCurByteSize()
		<<"\n\tStart At Line No:"<<meta.m_rowStartIndex<<"\tEnd At Line No:"<<meta.m_rowEndIndex
		<<"\n\tSeek Byte:"<<meta.GetSeekStartPos();
	return os;
}


 

http://blog.csdn.net/password318/article/details/7009939

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值