明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 980|回复: 8

[提问] 求教!强制取消命令时如何返回世界坐标系

[复制链接]
发表于 2022-10-31 08:18:39 | 显示全部楼层 |阅读模式
  1. (defun err(msg)
  2.     (setvar "osmode" osmode)
  3.     (command "UCS" "W")
  4.     (princ msg)
  5.   )
  6.   (setq *error* err)
我在程序中临时旋转了坐标系、想在强制中断命令后自动恢复到世界坐标系、

用上面的代码行不通、想求教一下各位大神有没有更好的方法
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2022-10-31 09:24:21 | 显示全部楼层
这样应该可以:
(defun *error* ( msg )
(if (not (wcmatch (strcase msg t) "*break,*cancel*,*exit*"))
(progn (princ (strcat "\n错误:" msg)) (setvar "osmode" osmode) (command "UCS" "W")))
(princ)
)
发表于 2022-10-31 10:06:35 | 显示全部楼层
本帖最后由 guosheyang 于 2022-10-31 15:35 编辑

测试下这个  顺利执行还是强制esc  都可以返回wcs了
(defun c:test ( / *error* )
      (defun *error* ( msg )
        (if(=(getvar'WORLDUCS)0)(command-s "ucs" ""))
        (if (not (member msg '("Function cancelled" "quit / exit abort")))
            (princ (strcat "\nError: " msg))
        )
        (princ)
    )

    (command-s "ucs" 3 "pause""pause""pause")
    (rtos (getreal "\n 输入实数或按esc键退出或enter键强制产生错误"))
    (command-s "ucs" "")
    (princ)
)
 楼主| 发表于 2022-10-31 13:50:52 | 显示全部楼层
guosheyang 发表于 2022-10-31 10:06
测试下这个  顺利执行还是强制esc  都可以返回wcs了
(defun c:test ( / *error* )
      (defun *error*  ...

谢谢、我试一下
 楼主| 发表于 2022-10-31 13:54:05 | 显示全部楼层
ssyfeng 发表于 2022-10-31 09:24
这样应该可以:
(defun *error* ( msg )
(if (not (wcmatch (strcase msg t) "*break,*cancel*,*exit*")) ...

谢谢、我试一下
 楼主| 发表于 2022-10-31 14:20:06 | 显示全部楼层
guosheyang 发表于 2022-10-31 10:06
测试下这个  顺利执行还是强制esc  都可以返回wcs了
(defun c:test ( / *error* )
      (defun *error*  ...

我试了一下可以的、好像把command改成command-s就可以了
发表于 2022-10-31 15:42:45 | 显示全部楼层
xiaocainiao 发表于 2022-10-31 14:20
我试了一下可以的、好像把command改成command-s就可以了

是吗  把你原来的错误处理函数的command改为command-s试下结果
(defun c:test ( / *error* )
   (defun err(msg)
    (setvar "osmode" osmode)
    (command-s "UCS" "W")
    (princ msg)
  )

    (command-s "ucs" 3 "pause""pause""pause")
    (rtos (getreal "\n 输入实数或按esc键退出或enter键强制产生错误"))
    (command-s "ucs" "")
    (princ)
)
 楼主| 发表于 2022-10-31 16:35:49 | 显示全部楼层
guosheyang 发表于 2022-10-31 15:42
是吗  把你原来的错误处理函数的command改为command-s试下结果
(defun c:test ( / *error* )
   (defun ...

改成 command-s 可以了、我用07版不改也可以、好像就是这块的问题
发表于 2023-6-14 17:14:42 来自手机 | 显示全部楼层
用vl-cmdf应该是可以通用CAD2007和以后的高版本
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-16 20:42 , Processed in 0.156173 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表