明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3112|回复: 23

大虾们,帮我看看这个程序为什么会有问题?

  [复制链接]
发表于 2003-10-14 15:56:00 | 显示全部楼层 |阅读模式
(if (not var2) (setq var2 (getvar "dimsd2")))
(if (not var3) (setq var3 (getvar "dimse2")))
(if (not errtmp) (setq errtmp *error*))
(defun err (msg)
  (setq *error* errtmp)
  (setvar "dimsd2" var2)
  (setvar "dimse2" var3)
  (princ)
)

;;;
(defun c:db (/ var2 var3)  
  (setvar "cmdecho" 0)
  (setvar "dimsd2" 1)
  (setvar "dimse2" 1)
  (setq *error* err)
  (initget 1 "L A")
  (setq a (getkword "\n线性标注(L)/对齐标注(A): "))
  (cond        ((= a "L")
         (princ "\n")
         (command "dimlinear" pause pause pause)
        )
        ((= a "A")
         (princ "\n")
         (command "dimaligned" pause pause pause)
        )
  )
  (setvar "dimsd2" var2)
  (setvar "dimse2" var3)
  (setq *error* errtmp)
  (princ)
)
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2003-10-14 16:00:00 | 显示全部楼层
既然VAR2 VAR3在开始就作为全局变量来用,DB命令函数中就不应该将它定义为局部变量。

先说说你的问题吧,我没调试
 楼主| 发表于 2003-10-14 16:00:00 | 显示全部楼层
meflying大哥,我照你的程序来用*error*函数,但为什么有错???
 楼主| 发表于 2003-10-14 16:01:00 | 显示全部楼层
错误: *error* 函数中出错AutoCAD 变量设置被拒绝: "dimsd2" nil
 楼主| 发表于 2003-10-14 16:05:00 | 显示全部楼层
meflying兄,你编的那个画垂直、平行、角平分线程序中,*error*函数像这样用都没问题,这里为啥就有呢???
发表于 2003-10-14 16:09:00 | 显示全部楼层
一看就明白了,这里不是*error*函数出问题,而是(setvar "dimsd2...)出问题,这个变量是不能这个设置的,它是只读的
 楼主| 发表于 2003-10-14 16:13:00 | 显示全部楼层
我把它们两个取消局部变量性质了,但有如下错误:
错误: *error* 函数中出错AutoCAD 变量设置被拒绝: "dimsd2" 13
 楼主| 发表于 2003-10-14 16:18:00 | 显示全部楼层
这是系统提示的错误信息。
那该怎样弄呢?
发表于 2003-10-14 16:21:00 | 显示全部楼层
什么该怎么弄?你都没说要干什么,这两个变量是不能这样设置的。你把所有的(setvar "dimsd1"...)都去掉,程序就不会出错了
 楼主| 发表于 2003-10-14 16:24:00 | 显示全部楼层
这样——
(defun c:db ()
  (setq var2 (getvar "dimsd2"))
  (setq var3 (getvar "dimse2"))
  (setvar "cmdecho" 0)
  (setvar "dimsd2" 1)
  (setvar "dimse2" 1)
  (initget 1 "L A")
  (setq a (getkword "\n线性标注(L)/对齐标注(A): "))
  (cond        ((= a "L")
         (princ "\n")
         (command "dimlinear" pause pause pause)
        )
        ((= a "A")
         (princ "\n")
         (command "dimaligned" pause pause pause)
        )
  )
  (setvar "dimsd2" var2)
  (setvar "dimse2" var3)
  (princ)
)

运行程序没问题,但没有*error*错误处理
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-10-2 14:31 , Processed in 0.181653 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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