最近遇到一个怪现象,试了好多方法都解决不了:
坐标超越窗口,无论是用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超出窗口的都能绘制;
请各位大神支支招




网友答:
  1. (defun *error* (msg / )
  2.   ;; 恢复系统变量
  3.   (setvar "CMDECHO" 1)
  4.   (setvar "ATTDIA" 1)
  5.   (setvar "ATTREQ" 1)
  6.   (setvar "OSMODE" 16383)
  7.   
  8.   ;; 添加这些
  9.   (if old-viewmode (setvar "VIEWMODE" old-viewmode))
  10.   (if old-worldview (setvar "WORLDVIEW" old-worldview))
  11.   
  12.   ;; Excel清理
  13.   (if workbook (vlax-invoke-method workbook 'Close 0))
  14.   (if excel-app (vlax-invoke-method excel-app 'Quit))
  15.   (mapcar 'vlax-release-object
  16.           (vl-remove 'nil (list range borders worksheet worksheet0
  17.                                 worksheets workbook excel-app doc)))
  18.   
  19.   ;; 强制刷新
  20.   (command "_.REGEN")
  21.   
  22.   (if (not (or (vl-string-search "QUIT" (strcase msg))
  23.                (vl-string-search "EXIT" (strcase msg))))
  24.     (princ (strcat "\n** error: " msg " **")))
  25.   (princ)
  26. )

  27. (defun c:your-command (/ old-viewmode old-worldview ...)
  28.   ;; 保存原始状态
  29.   (setq old-viewmode (getvar "VIEWMODE"))
  30.   (setq old-worldview (getvar "WORLDVIEW"))
  31.   
  32.   ;; 设置环境
  33.   (setvar "CMDECHO" 0)
  34.   (setvar "OSMODE" 0)
  35.   (setvar "VIEWMODE" 0)
  36.   (setvar "WORLDVIEW" 1)
  37.   (setvar "LIMCHECK" 0)
  38.   
  39.   ;; 你的代码...
  40.   
  41.   (*error* "")  ; 正常退出时也调用清理
  42. )




网友答: 没遇到过。一直都正常,可以在屏幕外画图

网友答:
qifeifei 发表于 2025-12-1 18:43

问题依旧...

网友答: 初步解决办法是:AutoCAD换成ZWCAD
  • 上一篇:【分享】图层状态导出导入
  • 下一篇:没有了