找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 638|回复: 7

[求助] [已解决]数据库反应器怎么加的啊

[复制链接]

已领礼包: 28个

财富等级: 恭喜发财

发表于 2018-9-11 15:37:30 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 1121443108qaz 于 2018-9-19 23:44 编辑

我这样加为什么一点用都没有,我觉得是我没初始化好,可是网上或书上的教程都有点老了,这是arx2019的,怎么加啊。
  1. //头
  2. class CDbReatorUtil :
  3.         public AcDbDatabaseReactor
  4. {
  5. public:
  6.         CDbReatorUtil();
  7.         ~CDbReatorUtil();
  8.         virtual void objectAppended(const AcDbDatabase* dwg, const AcDbObject* dbObj);
  9. };

  10. //源
  11. CDbReatorUtil::CDbReatorUtil()
  12. {
  13. }


  14. CDbReatorUtil::~CDbReatorUtil()
  15. {
  16. }

  17. void CDbReatorUtil::objectAppended(const AcDbDatabase* dwg, const AcDbObject* dbObj)
  18. {
  19.         if (dbObj->isKindOf(AcDbEntity::desc()))
  20.         {
  21.                 AcDbEntity* pEnt = AcDbEntity::cast(dbObj);
  22.                 pEnt->upgradeOpen();
  23.                 pEnt->setColorIndex(1);
  24.         }
  25.     //这里我尝试过直接acutprintf(L"\n新建了一个物体")也没用
  26. }


  27. //以下是acrxentrypoint.cpp的内容
  28. CDbReatorUtil *pDbreator = NULL;
  29. class CnewApp : public AcRxArxApp {

  30. public:
  31.         CnewApp () : AcRxArxApp () {}
  32.         
  33.         virtual AcRx::AppRetCode On_kInitAppMsg (void *pkt) {
  34.                 AcRx::AppRetCode retCode =AcRxArxApp::On_kInitAppMsg (pkt) ;
  35.                 if (pDbreator==NULL)
  36.                 {
  37.                         pDbreator = new CDbReatorUtil();
  38.                 }
  39.                 return (retCode) ;
  40.         }

  41.         virtual AcRx::AppRetCode On_kUnloadAppMsg (void *pkt)
  42.         {
  43.                 AcRx::AppRetCode retCode =AcRxArxApp::On_kUnloadAppMsg (pkt) ;
  44.                 if (pDbreator!=NULL)
  45.                 {
  46.                         delete pDbreator;
  47.                         pDbreator = NULL;
  48.                 }
  49.                 return (retCode) ;
  50.         }

  51. }


2018.9.19 初始化更改为如下代码成功
  1. class CxxxApp : public AcRxArxApp {
  2. public:
  3.         CxxxApp () : AcRxArxApp () {}
  4.         virtual AcRx::AppRetCode On_kInitAppMsg (void *pkt) {
  5.                 // TODO: Load dependencies here       
  6.                 // You *must* call On_kInitAppMsg here
  7.                 AcRx::AppRetCode retCode =AcRxArxApp::On_kInitAppMsg (pkt) ;       
  8.                 // TODO: Add your initialization code here
  9.                 return (retCode) ;
  10.         }
  11.         virtual AcRx::AppRetCode On_kUnloadAppMsg (void *pkt) {
  12.                 // TODO: Add your code here
  13.                 // You *must* call On_kUnloadAppMsg here
  14.                 AcRx::AppRetCode retCode =AcRxArxApp::On_kUnloadAppMsg (pkt) ;
  15.                 //deleteAcRxClass(CDbReatorUtil::desc());
  16.                 // TODO: Unload dependencies here                               
  17.                 return (retCode) ;
  18.         }
  19.         virtual AcRx::AppRetCode On_kLoadDwgMsg(void *pkt)
  20.         {
  21.                 if (pDbreator==NULL)
  22.                 {
  23.                         pDbreator = new CDbReatorUtil();
  24.                         AcDbDatabase* pdata = acdbHostApplicationServices()->workingDatabase();
  25.                         if (pdata)
  26.                         {
  27.                                 pdata->addReactor(pDbreator);
  28.                         }
  29.                 }
  30.                 else
  31.                 {
  32.                         acutPrintf(L"\n未获得当前数据库指针");
  33.                 }
  34.                 return AcRx::kRetOK;
  35.         }
  36.         virtual  AcRx::AppRetCode On_kUnloadDwgMsg(void* pkt)
  37.         {
  38.                 if (pDbreator != NULL)
  39.                 {
  40.                         acdbHostApplicationServices()->workingDatabase()->removeReactor(pDbreator);
  41.                         delete pDbreator;
  42.                         pDbreator = NULL;
  43.                 }
  44.                 return AcRx::kRetOK;
  45.         }
  46. }

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

已领礼包: 20个

财富等级: 恭喜发财

发表于 2018-9-11 16:05:11 | 显示全部楼层
去看下 ARX 安装目录,SAMPLES/DATABASE/ARXDBG里面的源码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 28个

财富等级: 恭喜发财

 楼主| 发表于 2018-9-11 16:20:24 来自手机 | 显示全部楼层
marting 发表于 2018-9-11 16:05
去看下 ARX 安装目录,SAMPLES/DATABASE/ARXDBG里面的源码

我看了样例里的reactor文件,没效果啊。以前的教程好多是用向导生成的。
来自: 微社区
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6434个

财富等级: 富甲天下

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

使用道具 举报

已领礼包: 28个

财富等级: 恭喜发财

 楼主| 发表于 2018-9-12 13:18:24 | 显示全部楼层
太笨了,找到arxdbg里发现我少了个ACRX_DECLARE_MEMBERS(CDbReatorUtil);,加上后马上就无法解析的外部符号了,lib也按照arxdbg里的加了,还是没解决。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 28个

财富等级: 恭喜发财

 楼主| 发表于 2018-9-12 13:25:36 | 显示全部楼层
错误        LNK2001        无法解析的外部符号 "public: virtual class AcRxClass * __cdecl CDbReatorUtil::isA(void)const " (?isA@CDbReatorUtil@@UEBAPEAVAcRxClass@@XZ)

点评

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

使用道具 举报

已领礼包: 13个

财富等级: 恭喜发财

发表于 2018-9-12 13:29:19 | 显示全部楼层
1121443108qaz 发表于 2018-9-12 13:25
错误        LNK2001        无法解析的外部符号 "public: virtual class AcRxClass * __cdecl CDbReatorUtil::isA(void)c ...

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

使用道具 举报

已领礼包: 28个

财富等级: 恭喜发财

 楼主| 发表于 2018-9-12 14:10:47 来自手机 | 显示全部楼层
LoveArx 发表于 2018-9-12 13:29
注意下派生类的声明,有const的别忘了加上

去掉那句就没错误了,但是反应器还是没效果。加一那句才有错误,我重定义的是objectappended,const都加了
来自: 微社区
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 11:58 , Processed in 0.357917 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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