找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2688|回复: 3

[分享] cad2006-2012自定义实体双击弹出编辑对话框

[复制链接]
发表于 2014-7-24 11:52:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 panfanggui 于 2014-7-24 15:00 编辑

内容搜自论坛:
API专门用来处理实体的双击事件,此API基于新的ARX类AcDbDoubleClickEdit。在AutoCAD2000i中双击实体时,默认的行为是调用相应的实体定义编辑器或对象属性管理器。如果多个实体同时被选中,在选择集中双击实体会弹出对象属性管理器。对于自定义实体,可以重载双击事件,改变默认行为,为此需要从AcDbDoubleClickEdit为每个要处理双击事件的实体派生类。请看下面是一个处理多义线的例子(为节省篇幅,一些代码已经省略):
#include "AcDblClkEdit.h"
class AcDbDoubleClickEditPline : public AcDbDoubleClickEdit
{
public:

...
void startEdit(AcDbEntity *pEnt,AcGePoint3d pt);
void finishEdit(void);
};
为了接受通告消息,在这个类中必需声明两个方法:一个是startEdit(),另一个是finishEdit()。
当应用程序被加载的时候,AcDbDoubleClickEdit类要对要处理的数据库对象增加协议扩展,例如在InitApplication()初始化过程中增加如下的代码:
pPlineEdit = new AcDbDoubleClickEditPline;
AcDbPline::desc()->addX(AcDbDoubleClickEdit::desc(),pPlineEdit);
同样地,在卸载应用程序的时候去除数据库对象的协议扩展,方法如下:
AcDbPline::desc()->delX(AcDbDoubleClickEdit::desc());
要使程序能够被编译,还必需连接AcDblClkEditPE.lib库,并且在InitApplication()中增加如下的代码:
acrxDynamicLinker->loadModule(/*MSG0*/"ACDBLCLKEDITPE.ARX",Adesk::kFalse);

    以上内容对2002-2009应适用。对于cad2010-2012要根据以下描述调整

AcAdDoubleClickEdit 在 arx2010 中 变到哪里了?  
Solution
The AcDbDoubleClickEdit functionality that was exposed in AcDblClkEditPE.arx is now rolled up in AcApp.arx and acad.lib.
For AutoCAD 2010 to make double click extension protocol to work.…
1. Remove any loadModule() calls to AcDblClkEditPE.arx
2. Remove any calls to AcDbDoubleClickEdit::rxinit() as this is now done automatically for us.
3. Include the AcDblClkEdit.h
4. Add ACRX_DEFINE_MEMBERS(AcDbDoubleClickEdit); in one of your .cpp modules

我根据以上描述,修改了网上下的代码,采用vs2010结合平台工具集,分别在arx2006、2008 、2012环境下编译通过。并在cad2006、cad2012运行成功。但2008版本arx,cad2008加载时显示为无效arx文件,不知何故(objectarx2008上的例子编译后,cad2008加载时同样显示)。放上编译通过的3个版本arx文件,望有安装了cad2008的测试一下2008版arx。同时放上源码。

      源码只需设置编译环境,2006-2012均适用,注意根据StdAfx.h中是否有#define ACAD2000_2009,决定是编译cad2006-2009arx还是编译cad2010-2012版arx。

      同时寻求解决:2008版本arx,cad2008加载时显示为无效arx文件的问题,即使ObjectARX 2008\samples\editor\mfcsamps\modal例子(试过多个)用vs2005编译通过,cad2008、cad2009加载均显示为无效arx文件,奇怪的是我原adsarx程序用vs2005移植到cad2008后正常(是静态连接到mfc,多线程/MT),郁闷。(问题已解决,VS2005安装了升级包SP的原因,卸载SP就OK
代码见下帖:
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
 楼主| 发表于 2014-7-24 11:55:16 | 显示全部楼层
上帖子的源码及编译后的arx

YeUserDefEnt2008.rar

27.68 KB, 下载次数: 21, 下载积分: D豆 -1 , 活跃度 1

cad2008arx

YeUserDefEnt2010.rar

30.73 KB, 下载次数: 25, 下载积分: D豆 -1 , 活跃度 1

YeUserDefEntR2006.rar

28.83 KB, 下载次数: 18, 下载积分: D豆 -1 , 活跃度 1

DBLCLKedit.rar

98.73 KB, 下载次数: 22, 下载积分: D豆 -1 , 活跃度 1

售价: 1 D豆  [记录]

源码

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-10-7 13:27:06 | 显示全部楼层
:lol:lol:lol:lol
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

发表于 2014-10-9 14:50:42 | 显示全部楼层
谢谢 辛苦版主了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-5-12 03:19 , Processed in 0.399332 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表