浅谈ObjectARX智能指针AcDbObjectPointer的用法

本文介绍了ARX智能指针AcDbObjectPointer在C++中的应用,重点阐述了如何通过智能指针打开和管理AutoCAD对象,避免手动关闭对象的问题。通过分析AcDbObjectPointer的析构函数和常用成员函数,如open(), close(), acquire()等,揭示了智能指针自动管理对象生命周期的机制。" 132174526,17051167,Python爬虫:获取音乐节门票信息实战,"['网络爬虫', 'Python开发', '数据抓取', '数据存储', '数据可视化']
摘要由CSDN通过智能技术生成

前言

用ARX智能指针打开对象,可以不在乎是否close,
但同时也要注意这个变量的作用域(生命周期)问题,
ARX智能指针,他的原理是利用类的析构造函数特性自动关闭对象.

这里的智能指针指的是AcDbObjectPointer这一类使用AcDbObjectPointerBase基类派生的类模板统称.

下面是打开示例.

void testOpen()
{
	ads_point pt;
	ads_name ent;
	if (RTNORM != acedEntSel(NULL,ent,pt))
	{
		return;
	}
	AcDbObjectId objId;
	acdbGetObjectId(objId,ent);
	//使用ARX智能指针打开对象,实体类对象可以使用这种方式直接打开.
	AcDbObjectPointer<AcDbBlockReference> pBlkRef(objId,AcDb::kForRead);
	//判断是否打开成功
	//注意ARX智能指针使用智能指针成员函数的时候是点符号"."不是指针符号"->"
	if (Acad::eOk != pBlkRef.openStatus())
	{
		//根据情况做打开失败处理
		acutPrintf(_T("\n打开对象失败!,错误码: %s"),acadErrorStatusText(pBlkRef.openStatus()));
		return;
		//continue;
		//break;
	}
	//打开成功,可以使用对象的指针了注意是指针"->"符号.
	AcGePoint3d ptInsert2 = pBlkRef->position();
	//智能指针打开,close再是必须的处理.
	//close可以多次执行,某些特殊情况,智能指针也需要手动close,所以不会出问题.

	//下面示意创建一个新的对象.
	//先声明pCircle对象
	AcDbObjectPointer<AcDbCirc
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值