xinxirong 发表于 2016-2-14 17:18:22

vlr-dwg-reactor :vlr-endDwgOpen反应器问题

我想让cad2008支持高版本的dwg文件,在打开文件后立即判断文件版本,如果版本高于2007,则转换成低版后再打开。
试着让Lisp去实现这个功能,因为lisp比较通用,以后移植到其它版本比较方便。
:vlr-endDwgOpen,但打开高版的dwg文件根本就不能中断(alert),现在想用arx的办法也不行,好像没有这种接口?
(defun *begin_dwg_open_callbak*
       (reactor calls)
(alert (strcat (vl-prin1-to-stringreactor)
   (vl-prin1-to-stringcalls)
   )
   )
)

(setq *begin_dwg_open*
(vlr-editor-reactor
    "Fsxm.app"
    '((:vlr-beginDwgOpen . *begin_dwg_open_callbak*))
)
)

(vlr-set-notification *begin_dwg_open* 'all-documents)

ivde 发表于 2016-2-14 20:47:46

低的能打开高的,Autodesk还忙活那么多版本早该倒闭了

Gu_xl 发表于 2016-2-14 22:15:13

不要想了,无法实现的!

xinxirong 发表于 2016-2-18 17:59:31

arx的AcEditorReactor::beginDwgOpen跟vlist VLR的函数作用是一样的,打开高版本的dwg一样无效,
用过很多种方法:
一、acdbHostApplicationServices()->
                registerSelectFileCallback(_T("AdskFileOpen"),
                fileOpenCB, true, false);
二、commandWillStart(const ACHAR* cmdStr)
都没有我想要的文件名。
看来要用函数hook,这是我最不想用的,因为每个版本的cad需要中断的位置都不一样,打上补丁也会有变化.
页: [1]
查看完整版本: vlr-dwg-reactor :vlr-endDwgOpen反应器问题