找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1269|回复: 9

[讨论]:如何实现自动加载ARX模块

[复制链接]
发表于 2002-10-17 14:24:10 | 显示全部楼层 |阅读模式

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

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

×
开发完成ARX模块以后,如何通过安装程序安装完成后,启动AutoCAD就自动加载上?目前我只能做到先启动AutoCAD,然后将ARX模块采用加载命令添加到历史,以后才每次自动加载。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-10-17 17:20:37 | 显示全部楼层

Re: [讨论]:如何实现自动加载ARX模块

最初由 EMeiMonkey 发布
[B]开发完成ARX模块以后,如何通过安装程序安装完成后,启动AutoCAD就自动加载上?目前我只能做到先启动AutoCAD,然后将ARX模块采用加载命令添加到历史,以后才每次自动加载。 [/B]


你的应用程序应该有自己的PROFILE吧。

有几个方法:

1、修改你的搜索目录中的ACAD.RX文件,里面加入要加载的ARX文件名就可以。

2、修改你的菜单组对应的同名的MNL文件,里面加入加载代码。

3、修改注册表,需要运行过一次,然后以后就自动加载了。

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

使用道具 举报

 楼主| 发表于 2002-10-17 18:05:39 | 显示全部楼层
谢谢XDSoft !
我还有一个问题,在用加载应用对话框中列出了一个已经加载的Arx等应用,有些是灰的,不能修改,是如何实现的呢,还有,我看到加载的有些还是*.mnl文件,这又是如何实现的呢?万分感谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-10-17 18:38:08 | 显示全部楼层
最初由 EMeiMonkey 发布
[B]谢谢XDSoft !
我还有一个问题,在用加载应用对话框中列出了一个已经加载的Arx等应用,有些是灰的,不能修改,是如何实现的呢,还有,我看到加载的有些还是*.mnl文件,这又是如何实现的呢?万分感谢! [/B]


ACAD加载菜单的机制是,加载一个菜单后比如ABC.MNU,会自动查找ABC.MNL,如果这个文件有,就加载它。这个MNL实际上就是一个LISP文件,扩展名不同而已。在这个文件中你加上(arxload "yourApp")就可以加载你需要的ARX文件了。

APPLOAD对话框有些项变灰,是因为这些应用程序定义成了不允许卸载。

当ARX加载后,默认的ARX程序是不允许卸载的,如果希望能卸载,在acrxEntryPoint() 的AcRx::kInitAppMsg 消息处理中,加入解锁代码:

下面是部分代码:


  1. [FONT=courier new]
  2. acrxEntryPoint(AcRx::AppMsgCode msg, void* pkt)
  3. {
  4.         switch (msg) {
  5.         case AcRx::kInitAppMsg:
  6.                 InitModule(_hdllInstance, DLL_PROCESS_ATTACH, NULL);
  7.                 [color=blue]acrxUnlockApplication(pkt);[/color]
  8. [/FONT]
复制代码


下面是帮助文件:


  1. [FONT=courier new]
  2. acrxUnlockApplication Global Function bool

  3. acrxUnlockApplication(

  4. void* appId);

  5. appId Input void* from second parameter to acrxEntryPoint() during AcRx::kInitAppMsg call

  6. When ObjectARX applications are initially loaded, they are locked so they cannot be unloaded until AutoCAD shuts down. This function is a "C" code wrapper for:

  7. acrxDynamicLinker->unlockApplication(appId);

  8. which unlocks an application, thus making it unloadable at any time thereafter.

  9. The appId argument is the void* passed in as the second parameter to the application's acrxEntryPoint() function during the AcRx::kInitAppMsg call that occurs when the application is initially loaded.

  10. Only the void* passed into acrxEntryPoint() during the AcRx::kInitAppMsg call is valid to be used by this function. So, if this function will be called at any other time the void* passed in during the AcRx::kInitAppMsg call must be stored for later use.

  11. Returns 1 if the application is successfully unlocked; otherwise, returns 0.

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

使用道具 举报

 楼主| 发表于 2002-10-18 08:57:30 | 显示全部楼层
哦,我明白了,谢谢斑竹!
我把这一行注释掉就不能卸载了:acrxDynamicLinker->unlockApplication(pkt);
不知大家研究过这样一个ARX模块没有:SWFileConv.arx
这个是在先装完AutoCAD后再装SolidWorks时,SolidWorks安装程序提示安装的一个转换AutoCAD图纸文件的Arx应用模块,大家看看它的SWFileConv.mnl文件,研究研究肯定受益非浅:

(defun xw-place-menu (/ i)
  (setq i 1)
  (while (< i 50)
    (if (menucmd (strcat "P" (itoa i) ".1=?"))
      (setq i (+ i 1))
      (progn
          (if (> i 2)
              (setq i (- i 2))
            (if (> i 1)
                (setq i 1)
              (setq i 2)))
        (menucmd (strcat "P" (itoa i) "=+SWFILECONV.pop1"))
        (setq i 50)))))




(xw-place-menu)
(command "toolbar" "SWFILECONV.TB_XW" "show")

他的SWFileConv.mns文件是这样的:
***MENUGROUP=SWFILECONV
***POP1
**FILE
ID_FileImport          [&XchangeWorks]
ID_TRANSLATE        [输入(&I)...]_translatethrusw
ID_RUN        [&Part Modeler...]_runsw
                [--]
ID_HELP         [关于 XchangeWorks(&A)...]_aboutxchangeworks

***TOOLBARS
**TB_XW
**XW
ID_TB_XW       [_Toolbar("XchangeWorks", _Floating, _Show, 300, 300, 1)]
ID_TRANSLATE   [_Button("输入", "xwimport16.bmp", "xwimport24.bmp")]_translatethrusw
ID_RUN         [_Button("Part Modeler", "xwpm16.bmp", "xwpm24.bmp")]_runsw

按照斑竹的提示,我找到了ACAD.RX文件,并打开结果如下:
swfileconv.arx
说明他是采用ACAD.RX文件加载的。
每次AutoCad启动时,其Arx模块及菜单都自动加载,即使在AutoCad退出前手工把其菜单卸载,下次AutoCad启动时菜单又自动出现了。
还有,不知道大家注意到没有,其菜单文件中这一行“***POP1”,然后通过SWFileConv.mnl文件的lisp程序自动计算菜单出现的位置,真是高明!值得我们参考。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-10-18 09:17:34 | 显示全部楼层
我还没有搞明白的是它的菜单是怎么自动加载上去的?是不是在Arx里面调用加载菜单上去的?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2006-11-16 11:52:22 | 显示全部楼层
请教。我就是先装CAD后装SW的,以后总是出现不能加载swfileconv.mun。如何把代码加载呢?
谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-11-17 17:47:04 | 显示全部楼层
谢谢XDsoft斑竹,我前段时间也一样,不知道怎么在菜单名命令加载arx文件,现在可以做成菜单,用菜单命令方式加载并执行了。谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-23 22:40 , Processed in 0.225976 second(s), 47 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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