lxdz443 发表于 2015-11-14 08:25:13

关于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版已经不用这个程序了,要是不用的话,可以用哪一个程序来代替。谢谢。

davide888 发表于 2017-12-5 10:24:56

lxdz443 发表于 2015-11-15 08:03
疑问还是没搞清楚,但是程序可以在16版上面用了,我把G版的(gxl-makewipeout pts)函数给屏蔽掉后,程序居 ...

谢谢,问题解决

lxdz443 发表于 2015-11-15 08:03:14

疑问还是没搞清楚,但是程序可以在16版上面用了,我把G版的(gxl-makewipeout pts)函数给屏蔽掉后,程序居然可以使用了,到现在也不清楚到底是那里的问题,就先这样凑合用吧。顺便说一声,有在13版至16版的朋友用wowan1314的右键菜单函数这个程序也提示这个问题的话,可以把主程序那一节里面的(gxl-makewipeout (LIST P1 P2 P4 P3))这行给注销掉应该就可以了。

尘缘一生 发表于 2020-3-27 18:19:38

lxdz443 发表于 2015-11-15 08:03
疑问还是没搞清楚,但是程序可以在16版上面用了,我把G版的(gxl-makewipeout pts)函数给屏蔽掉后,程序居 ...

WIN7 64位系统,也是出这个问题,但是,出现在第一次安装时候,重启就可以了,不明就理。

e2002 发表于 2020-3-28 23:20:02

本帖最后由 e2002 于 2020-3-28 23:22 编辑

楼主如果有源码,按说改了 *error* 控制函数内的 command 调用为 command-s 之后能解决的。

这个问题主要是由于AutoCAD2015在系统架构上做了很大修改,所以很多以前的代码会出现问题,包括他自己提供的 ExpressTools,由于没有人继续维护,所以很多ET的程序同样遇到这个问题。因为ET的错误处理函数写在一个 fas中了,没有提供源码,所以没法改。官方论坛也有很多人提了。

本月初,秋枫在微信上和我谈到这个ET的错误处理函数的问题,他给出了一个解决方法,就是写一个同名的ET错误处理函数,加载替代原有的。这个新的同名函数是根据ET提供了的lisp源码中的那些调用语句,猜测出来的(也算是一种反向工程)。今天正好遇到需要使用 ET的TCount程序,不加载Qf写的这个替代函数,就是没法正常使用TCount的。

Kye 发表于 2021-7-11 09:44:49

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]
查看完整版本: 关于AcWipeout.arx的疑问。