ObjectArx学习笔记-获取某一图层上所有直线

简介: //-----------------------------------------------------------------------------//----- acrxEntryPoint.h//-----------------------------------------------------------------------------#include "S
//-----------------------------------------------------------------------------
//----- acrxEntryPoint.h
//-----------------------------------------------------------------------------
#include "StdAfx.h"
#include "resource.h"
#include "dbsymtb.h"

//-----------------------------------------------------------------------------
#define szRDS _RXST("qxzy")

//-----------------------------------------------------------------------------
//----- ObjectARX EntryPoint
class CGetEntsOnLayerApp : public AcRxArxApp {

public:
	CGetEntsOnLayerApp () : AcRxArxApp () {}

	virtual AcRx::AppRetCode On_kInitAppMsg (void *pkt) {
		// TODO: Load dependencies here

		// You *must* call On_kInitAppMsg here
		AcRx::AppRetCode retCode =AcRxArxApp::On_kInitAppMsg (pkt) ;
		
		// TODO: Add your initialization code here

		return (retCode) ;
	}

	virtual AcRx::AppRetCode On_kUnloadAppMsg (void *pkt) {
		// TODO: Add your code here

		// You *must* call On_kUnloadAppMsg here
		AcRx::AppRetCode retCode =AcRxArxApp::On_kUnloadAppMsg (pkt) ;

		// TODO: Unload dependencies here

		return (retCode) ;
	}

	virtual void RegisterServerComponents () {
	}

public:

	// - qxzyGetEntsOnLayer._GetEntsOnLayer command (do not rename)
	static void qxzyGetEntsOnLayer_GetEntsOnLayer(void)
	{
		// Add your code for command qxzyGetEntsOnLayer._GetEntsOnLayer here
		AcDbLayerTable *pLayerTbl;
		acdbHostApplicationServices()->workingDatabase()
			->getSymbolTable(pLayerTbl,AcDb::kForRead);
		if(!pLayerTbl->has(_T("测试")))
		{
			acutPrintf(_T("\n当前图形中未包含\"测试\"图层!"));
			pLayerTbl->close();
			return;
		}

		AcDbObjectId layerId;
		pLayerTbl->getAt(_T("测试"),layerId);
		pLayerTbl->close();

		AcDbBlockTable *pBlkTbl;
		acdbHostApplicationServices()->workingDatabase()
			->getBlockTable(pBlkTbl, AcDb::kForRead);

		AcDbBlockTableRecord *pBlkTblRcd;
		pBlkTbl->getAt(ACDB_MODEL_SPACE, pBlkTblRcd, AcDb::kForRead);
		pBlkTbl->close();

		AcDbBlockTableRecordIterator *pltr;
		pBlkTblRcd->newIterator(pltr);

		AcDbEntity *pEnt;
		for(pltr->start();!pltr->done();pltr->step())
		{
			pltr->getEntity(pEnt, AcDb::kForWrite);

			if(pEnt->layerId() == layerId)
			{
				//whether it's a line
				AcDbLine *pLine = AcDbLine::cast(pEnt);
				if(pLine != NULL);
				{
					pLine->setColorIndex(1);
				}
			}

			pEnt->close();
		}
		delete pltr;
		pBlkTblRcd->close();

	}
} ;

//-----------------------------------------------------------------------------
IMPLEMENT_ARX_ENTRYPOINT(CGetEntsOnLayerApp)

ACED_ARXCOMMAND_ENTRY_AUTO(CGetEntsOnLayerApp, qxzyGetEntsOnLayer, _GetEntsOnLayer, GetEntsOnLayer, ACRX_CMD_TRANSPARENT, NULL)

目录
相关文章
|
4月前
ArcGIS矢量面要素中零碎小面积空洞区域补全与单独部分区域分离并剔除
ArcGIS矢量面要素中零碎小面积空洞区域补全与单独部分区域分离并剔除
|
9月前
|
定位技术
百度地图开发:批量增加折线、多边形覆盖物的封装函数
百度地图开发:批量增加折线、多边形覆盖物的封装函数
48 0
|
4月前
【sgOvalMenu】自定义组件:椭圆形菜单,菜单按钮可以随着椭圆轨迹进行循环运动
【sgOvalMenu】自定义组件:椭圆形菜单,菜单按钮可以随着椭圆轨迹进行循环运动
|
4月前
ArcMap创建渔网从而获取网格状的矢量分区
本文介绍在ArcMap软件中,通过“Create Fishnet”工具创建渔网,从而获得指定大小的矢量格网数据的方法~
ArcMap创建渔网从而获取网格状的矢量分区
|
10月前
|
C# 图形学
C#绘制自定义小人
C#绘制自定义小人
|
11月前
|
存储
零基础VB教程038期:你能走到终点吗?利用事件拖动物体
零基础VB教程038期:你能走到终点吗?利用事件拖动物体
|
11月前
|
数据可视化 数据挖掘 Python
跟着BMC Plant Biology学作图:R语言ggtree圆形树形图并添加分组背景色
跟着BMC Plant Biology学作图:R语言ggtree圆形树形图并添加分组背景色
|
计算机视觉
Qt实用技巧:图形视图框架中图元将矩形边界改为不规则边界(用于选取和碰撞)
Qt实用技巧:图形视图框架中图元将矩形边界改为不规则边界(用于选取和碰撞)
Qt实用技巧:图形视图框架中图元将矩形边界改为不规则边界(用于选取和碰撞)
|
存储 数据可视化
R可视乎|创建乐高版马赛克图
今日内容比较“无用”,觉得比较好玩,所以就做一期“异类”可视化啦!主要介绍下 brickr[1] 包,它将乐高(LEGO) 带入 R 和 tidyverse 生态系统中,该包分为2个部分: • Mosaics(马赛克)[2]:将图像转换为乐高积木的马赛克图像。 • 3D 模型[3]:使用 rgl 包,通过数据表构建 3D 乐高模型。 今天这一期主要介绍第一个部分:
131 0
R可视乎|创建乐高版马赛克图
|
数据可视化 图形学
R可视乎|圆环图
对于饼图,上一次学习《R语言数据可视化之美》的时候主要利用graphics包和ggplot包(可见R可视乎|饼图)。这几天的学习中发现还有一个更加简便的方法——ggpie包。接下来做简单描述,然后进入圆环图的学习。
411 0
R可视乎|圆环图