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) 低的能打开高的,Autodesk还忙活那么多版本早该倒闭了 不要想了,无法实现的! arx的AcEditorReactor::beginDwgOpen跟vlist VLR的函数作用是一样的,打开高版本的dwg一样无效,
用过很多种方法:
一、acdbHostApplicationServices()->
registerSelectFileCallback(_T("AdskFileOpen"),
fileOpenCB, true, false);
二、commandWillStart(const ACHAR* cmdStr)
都没有我想要的文件名。
看来要用函数hook,这是我最不想用的,因为每个版本的cad需要中断的位置都不一样,打上补丁也会有变化.
页:
[1]