返回介绍

补充说明

发布于 2023-08-09 23:10:33 字数 2161 浏览 0 评论 0 收藏 0

1. 在自定义实体类函数中添加了读函数 (assertReadEnabled)和写函数 (assertWriteEnabled),函数说明:

断言对象当前状态一定被读方式打开,该函数多用于自定义实体的属性操作函数中。

void assertReadEnabled() const;

断言对象当前状态一定被写方式打开,该函数多用于自定义实体的属性操作函数中。

void assertWriteEnabled(Mdesk::Boolean autoUndo = true,
		Mdesk::Boolean recordModified = true,
		Mdesk::Boolean setSaveModifyed = true
		);

上述的函数主要为“退回”操作及“保存”的操作;如不加则会在上述操作中出现异常。

2. 在打碎虚函数(explode)中,我们进行了具体的添加实体的操作,在此处我们可以根据需要设置一些属性。

3. 在绘制函数中,我们调用打碎虚函数(explode),并对 绘图时使用的环境参数AcGiWorldDraw进行了如下设置: wd- >subEntityTraits().setLineWeight(pEnt->lineWeight())... 即为我们在explode中对实体设置的属性,在CAD控件中显示出来。

4. 在自定义实体类的头文件中,我们在类名下定义了如下声明:

//使用MCRX_DECLARE_MEMBERS宏定义类的类型信息函数,宏的第一个参数是类的类名
	ACRX_DECLARE_MEMBERS(MyCustomEntity);
	在源文件中进一步说明:
	ACRX_DXF_DEFINE_MEMBERS(
	MyCustomEntity, //自定义实体的类名
	McDbEntity,//自定义实体的基类
	AcDb::kDHL_CURRENT,//当前文件版本
	AcDb::kMReleaseCurrent,//当前控件版本
	AcDbProxyEntity::kAllAllowedBits,//代理实体处理标志
	MyCustomEntity,//Dfx0组码对应值
	MxDrawObj Test Custom Entity//类说明
	);

此信息在实体信息中能够看到。

5. 在dwgInFields和dwgOutFields,我们进行了写档与归档的操作,使用了我们定义的宏:

#define MYCUSTOMENTITY_VERSION 1		//版本号

在自定义实体增加新的内容,如:新增一条线,我们则需要判断版本,根据获取到的版本号对是否使用线进行判断。

在读与写的操作中,我们使用了参数AcDbDwgFiler 进行具体的读写,此类可读写绝大多数用到的数据,但是读写必须保持同步,及此实例中在dwgOutFields先pFiler->writeInt(MYCUSTOMENTITY_VERSION),dwgOutFields需要先pFiler->readInt(&lVar),才能获取正确的数据。

6. 使用控件的移动函数move,或者点击自定义实体的夹点进行拖动,需要实现dwgInFields、dwgOutFields和moveGripPointsAt。

控件其他例程说明:

在控件安装目录下的samples\CustomEntity\ CustomEntity.sln例程,演示了自定义实体现。在例程实现连接块CLinkBlock自定义实体,CLinkLine自定义实体。

CLinkBlock类显示通过块引用显示,绘图捕捉点通过块记录中的块属性定义文本来确定,当该实体被编辑后,会自动移动与该实体连接的连接线,实现连动效果。

CLinkLine 类实现一个线段实体功能,并带有长度标注功能。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文