注册 登录
明经CAD社区 返回首页

风树的个人空间 http://www.mjtd.com/?408117 [收藏] [复制] [分享] [RSS]

日志

(源码)图层操作的几个简单函数

热度 1已有 1118 次阅读2013-11-19 15:18 |系统分类:应用

提供给想学习和刚接触的同学一些参考。

写好后就没用过,一般都是在当前图层新建图元

//头文件及实现文件如下

#pragma once
#ifndef _Cad_Lay_h_ 
#define _Cad_Lay_h_ 
#include "..\Cad_BlockTableRecord_template\Cad_BlockTableRecord_template.h"
using namespace xtcow;
namespace xtcow
{
#define _Cad_Lay_template template<typename DATA_for_handle,typename Containor>//
#define _Cad_Lay_template_QUAL Cad_Lay< DATA_for_handle,Containor>//
template<typename DATA_for_handle=std::wstring,typename Containor=std::vector<DATA_for_handle> >
class Cad_Lay//
{
public:
public:
Cad_Lay(void){};
~Cad_Lay(void){};
static Acad::ErrorStatus set_curLayer( AcDbObjectId &ObjectId,const   wchar_t *  inputLyName, AcDbDatabase *  pDb= acdbHostApplicationServices()->workingDatabase() ,AcCmColor LayerColor=LayerColor,std::wstring Linetype=_T("CONTINUOUS"));
static Acad::ErrorStatus get_all_layer_name(Containor &layerArray,AcDbDatabase *pDb= acdbHostApplicationServices()->workingDatabase());

};

//  Function name    : set_curLayer
//  Description        : 设置当前层
_Cad_Lay_template
 Acad::ErrorStatus _Cad_Lay_template_QUAL::set_curLayer( AcDbObjectId &ObjectId,const   wchar_t *  inputLyName, AcDbDatabase *  pDb ,AcCmColor LayerColor,std::wstring Linetype)
{
AcDbDatabase *  pCurDb  =  pDb;
if  (pCurDb  ==  NULL)
pCurDb  =  acdbHostApplicationServices() -> workingDatabase();
creat_new_layer(ObjectId,inputLyName,LayerColor,Linetype.c_str(),pDb);
AcDbLayerTableRecordPointer spRecord(inputLyName, pCurDb, AcDb::kForRead);
Acad::ErrorStatus es  =  spRecord.openStatus();
if  (es  ==  Acad::eOk)
{
es  =   pCurDb -> setClayer(spRecord -> objectId());
return  es;
//
_Cad_Lay_template
Acad::ErrorStatus  _Cad_Lay_template_QUAL::get_all_layer_name(Containor &layerArray,AcDbDatabase *pDb)
{
Acad::ErrorStatus es=Acad::eOk;
if(pDb==NULL)
return Acad::eInvalidInput;
layerArray.clear();
AcDbLayerTable *pLayerTable=NULL;//建立图层表指针
if((es=pDb->getSymbolTable(pLayerTable,AcDb::kForRead))!=Acad::eOk)//以只读的形式获得
{
pLayerTable->close();
return es;
}
AcDbLayerTableIterator *pLayerTableIterator;//创建一个图层表迭代器
pLayerTable->newIterator(pLayerTableIterator);//图层表迭代器获得资源
pLayerTable->close();//释放图层表指针获得的资源

wchar_t *pLayerName=NULL;
std::wstring name;
for(int i=0;!pLayerTableIterator->done();pLayerTableIterator->step(),i++)
{
AcDbLayerTableRecord *pLayerTableRecord=NULL;//建立AcDbLayerTableRecord指针
pLayerTableIterator->getRecord(pLayerTableRecord,AcDb::kForRead);//AcDbLayerTableRecord指针获得资源
pLayerTableRecord->getName(pLayerName);//使用AcDbLayerTableRecord
name.assign(pLayerName);//这里获得一个字符串资源
layerArray.push_back(name);
delete[] pLayerName;//释放一个字符串资源
pLayerName=NULL;
pLayerTableRecord->close();//释放AcDbLayerTableRecord指针获得资源
}
delete pLayerTableIterator;//释放图层表迭代器
pLayerTableIterator=NULL;
return es;
}

}

#endif

路过

雷人
1

握手

鲜花

鸡蛋

刚表态过的朋友 (1 人)

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-12 01:59 , Processed in 0.096070 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部