明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 968|回复: 0

[提问] error函数恢复过程中原先备份的osmode变量值为空,是怎么回事?

[复制链接]
发表于 2016-5-29 16:58 | 显示全部楼层 |阅读模式
本帖最后由 Gray-wolf 于 2016-5-29 17:03 编辑

  • ;两选择集水平中心对齐
  • (defun c:dq (/ pt1 pt2 ss ss1)
  •   (setq EH-*error*-bak *error*);备份错误处理函数
  •   (defun *error* (msg)
  •     (setvar "OSMODE" os)
  •     (command "_.UNDO" "e")
  •     (setvar "CMDECHO" 1)
  •     (setq *error* EH-*error*-bak)
  •     (print msg)
  •   );*error*
  •   (setvar "CMDECHO" 0)
  •   (command "_.UNDO" "be")
  •   (if (< (setq os (getvar "OSMODE")) 16384)
  •     (setvar "OSMODE" (+ os 16384))
  •   );if
  •   (princ "\n请选择要移动对齐的对象(默认水平中心对齐):")
  •   (setq ss (ssget))
  •   (princ "请选择要目标对象:")
  •   (setq ss1 (ssget))
  •   (setq pt1 (EH-SS-9pt ss 5))
  •   (setq pt2 (EH-SS-9pt ss1 5))
  •   (setq pt2 (list (car pt2) (cadr pt1)))
  •   (vl-cmdf "_.MOVE" ss "" pt1 pt2)
  •   (setvar "OSMODE" os)
  •   (command "_.UNDO" "e")
  •   (setq *error* EH-*error*-bak);恢错误处理函数
  •   (setvar "CMDECHO" 1)
  •   (princ)
  • )
  • 问题:当我选择的目标对象是xline/ray或者目标选择集内包含xline/ray时,
  •     由于eh-ss-9pt函数没有计算xline/ray坐标点的功能而出现
  •     "Automation 错误。 范围无效"
  •     之后程序进入错误处理,但是在错误处理函数以内,之前备份的os变量
  •     变为nil了,这是什么原因?(我知道可以修改eh-ss-9pt来完善程序以便对xline/ray进行计算。在这里我只想知道os为什么会被清空,是被哪个函数清空的,还有什么其它办法可以恢复osmode的值。)
  • 求高手解疑!

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-27 02:05 , Processed in 0.342285 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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