最近遇到一个怪现象,试了好多方法都解决不了:
坐标超越窗口,无论是用command、vl-cmdf还是用entmake,均画线失败。不提示错误,但也不显示;
但是如果开始窗口缩放合适大小,就能正确输出;
另外如果窗口太小,取点又漂移;
已经将捕捉关闭了
(setvar "cmdecho" 0)
(setvar "osmode" 0)
(setvar "attdia" 0)
(setvar "attreq" 0); 0=使用默认值,不提示输入属性
(defun *error* (msg)
(setvar "cmdecho" 1)
(setvar "attdia" 1)
(setvar "attreq" 1)
(setvar "osmode" 16383)
(if workbook (vlax-invoke-method workbook 'Close 0));;; 清理对象
(if excel-app (vlax-invoke-method excel-app 'Quit))
(mapcar 'vlax-release-object (vl-remove 'nil (list range borders worksheet worksheet0 worksheets workbook excel-app doc)));; 释放对象
(if (not (or (vl-string-search "QUIT" (strcase msg)) (vl-string-search "EXIT" (strcase msg)))) (princ (strcat "\n** error: " msg " **")))
)
只有这一个Autolisp有问题,其他Autolisp超出窗口的都能绘制;
请各位大神支支招
网友答:
网友答: 没遇到过。一直都正常,可以在屏幕外画图网友答:
问题依旧...网友答: 初步解决办法是:AutoCAD换成ZWCAD
坐标超越窗口,无论是用command、vl-cmdf还是用entmake,均画线失败。不提示错误,但也不显示;
但是如果开始窗口缩放合适大小,就能正确输出;
另外如果窗口太小,取点又漂移;
已经将捕捉关闭了
(setvar "cmdecho" 0)
(setvar "osmode" 0)
(setvar "attdia" 0)
(setvar "attreq" 0); 0=使用默认值,不提示输入属性
(defun *error* (msg)
(setvar "cmdecho" 1)
(setvar "attdia" 1)
(setvar "attreq" 1)
(setvar "osmode" 16383)
(if workbook (vlax-invoke-method workbook 'Close 0));;; 清理对象
(if excel-app (vlax-invoke-method excel-app 'Quit))
(mapcar 'vlax-release-object (vl-remove 'nil (list range borders worksheet worksheet0 worksheets workbook excel-app doc)));; 释放对象
(if (not (or (vl-string-search "QUIT" (strcase msg)) (vl-string-search "EXIT" (strcase msg)))) (princ (strcat "\n** error: " msg " **")))
)
只有这一个Autolisp有问题,其他Autolisp超出窗口的都能绘制;
请各位大神支支招
网友答:

- (defun *error* (msg / )
- ;; 恢复系统变量
- (setvar "CMDECHO" 1)
- (setvar "ATTDIA" 1)
- (setvar "ATTREQ" 1)
- (setvar "OSMODE" 16383)
-
- ;; 添加这些
- (if old-viewmode (setvar "VIEWMODE" old-viewmode))
- (if old-worldview (setvar "WORLDVIEW" old-worldview))
-
- ;; Excel清理
- (if workbook (vlax-invoke-method workbook 'Close 0))
- (if excel-app (vlax-invoke-method excel-app 'Quit))
- (mapcar 'vlax-release-object
- (vl-remove 'nil (list range borders worksheet worksheet0
- worksheets workbook excel-app doc)))
-
- ;; 强制刷新
- (command "_.REGEN")
-
- (if (not (or (vl-string-search "QUIT" (strcase msg))
- (vl-string-search "EXIT" (strcase msg))))
- (princ (strcat "\n** error: " msg " **")))
- (princ)
- )
- (defun c:your-command (/ old-viewmode old-worldview ...)
- ;; 保存原始状态
- (setq old-viewmode (getvar "VIEWMODE"))
- (setq old-worldview (getvar "WORLDVIEW"))
-
- ;; 设置环境
- (setvar "CMDECHO" 0)
- (setvar "OSMODE" 0)
- (setvar "VIEWMODE" 0)
- (setvar "WORLDVIEW" 1)
- (setvar "LIMCHECK" 0)
-
- ;; 你的代码...
-
- (*error* "") ; 正常退出时也调用清理
- )
网友答: 没遇到过。一直都正常,可以在屏幕外画图网友答:
qifeifei 发表于 2025-12-1 18:43
问题依旧...网友答: 初步解决办法是:AutoCAD换成ZWCAD