关于AcWipeout.arx的疑问。
我电脑上面安装了07版,12版和16版,加载wowan1314的右键菜单函数这个插件提示调用(*push-error-using-command*)前无法从 *error* 调用(command)。建议将(command)调用转换为(command-s)。我把(command)改为(command-s)后加载直接退出了,以前提问过这个问题,链接:http://bbs.mjtd.com/thread-113823-1-1.html。没有解决,我看了源文件,里面用到了Gu_xl版主的(gxl-makewipeout pts)这个函数,函数链接:http://bbs.mjtd.com/thread-100884-1-1.html。发现里面有调用到AcWipeout.arx,我搜索了一下电脑发现在07版和12版的安装目录下面都有这个程序,但是在16版本下面没有这个,是不是16版已经不用这个程序了,要是不用的话,可以用哪一个程序来代替。谢谢。lxdz443 发表于 2015-11-15 08:03
疑问还是没搞清楚,但是程序可以在16版上面用了,我把G版的(gxl-makewipeout pts)函数给屏蔽掉后,程序居 ...
谢谢,问题解决 疑问还是没搞清楚,但是程序可以在16版上面用了,我把G版的(gxl-makewipeout pts)函数给屏蔽掉后,程序居然可以使用了,到现在也不清楚到底是那里的问题,就先这样凑合用吧。顺便说一声,有在13版至16版的朋友用wowan1314的右键菜单函数这个程序也提示这个问题的话,可以把主程序那一节里面的(gxl-makewipeout (LIST P1 P2 P4 P3))这行给注销掉应该就可以了。 lxdz443 发表于 2015-11-15 08:03
疑问还是没搞清楚,但是程序可以在16版上面用了,我把G版的(gxl-makewipeout pts)函数给屏蔽掉后,程序居 ...
WIN7 64位系统,也是出这个问题,但是,出现在第一次安装时候,重启就可以了,不明就理。
本帖最后由 e2002 于 2020-3-28 23:22 编辑
楼主如果有源码,按说改了 *error* 控制函数内的 command 调用为 command-s 之后能解决的。
这个问题主要是由于AutoCAD2015在系统架构上做了很大修改,所以很多以前的代码会出现问题,包括他自己提供的 ExpressTools,由于没有人继续维护,所以很多ET的程序同样遇到这个问题。因为ET的错误处理函数写在一个 fas中了,没有提供源码,所以没法改。官方论坛也有很多人提了。
本月初,秋枫在微信上和我谈到这个ET的错误处理函数的问题,他给出了一个解决方法,就是写一个同名的ET错误处理函数,加载替代原有的。这个新的同名函数是根据ET提供了的lisp源码中的那些调用语句,猜测出来的(也算是一种反向工程)。今天正好遇到需要使用 ET的TCount程序,不加载Qf写的这个替代函数,就是没法正常使用TCount的。 win10,CAD2021,把G版的函数注释了 也不起作用,尘缘一生大侠的说的重启也不管用,网上搜了下,参考这个链接 https://autocadtips1.com/2014/01/25/autolisp-closed-objects-to-wipeout-updated/
将G版的gxl-makewipeout函数中下面这句
;;;(if (not (member "acwipeout.arx" (arx)))
;;; (arxload "acwipeout.arx")
;;;)
修改为如下这句
;;;(strlen (vl-princ-to-string (vlax-get-acad-object))) 39 =>39就是32位Autocad
(setq LenId (strlen (vl-princ-to-string (vlax-get-acad-object))))
(cond
((= LenId 39)
(if (not (member "acwipeout.arx" (arx)))
(arxload "acwipeout.arx")
);_32位 cad
);_case1=>39就是32位Autocad
((eq47 LenId)
(if (not (member "acismui.arx" (arx)))
(arxload "acismui.arx")
);_64位 cad
);case 2 =>47就是64位Autocad https://autocadtips1.com/2014/01/25/autolisp-closed-objects-to-wipeout-updated/
(t)
);_cond
问题解决了
页:
[1]