明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1237|回复: 3

autolisp求助

[复制链接]
发表于 2004-5-30 21:04:00 | 显示全部楼层 |阅读模式
各位帮忙看看到底怎么了?下面程序是个求和程序,中间有段设置放大倍数的,第一次设置后运行良好,第二次 运行的时候恢复到放大倍数1。请问怎么回事。 (defun c:jszl() ;;; / i s a0 a1 tz en1 x sm ac
(setvar "cmdecho" 0)
(setvar "blipmode" 0)
(setq OS (GETVAR "OSMODE")) ;设置捕捉关闭
(setvar "OSMODE" 0)
(princ "\n选取数字")
(setq ss (ssget))
(setq i 0)
(setq S 0)
(setq SM 0)
(repeat (sslength ss)
(setq ssn (ssname ss i))
(setq ssdata (entget ssn))
(setq sstyp (cdr (assoc 0 ssdata)))
(if (= sstyp "TEXT")
(progn
(setq SM (1+ SM))
(setq txt (cdr (assoc 1 ssdata)))
(setq X (atof txt))
(setq S (+ S X))
)
) ;if结束括号
(setq i (1+ i))
)
(if (= scl NIL) (progn (setq scl (getreal "\n放大倍数<1>:")) (if (null scl) (setq scl 1)))
(progn (setq s22 (strcat "\n放大倍数<" (rtos scl 2) ">:"))
(setq scl (getreal s22)))
)


(setvar "OSMODE" 33)
(setq A0 (getpoint"\n选择文字输入点:"))
(setvar "OSMODE" 0)
(setq A1 (polar A0 0 15))
(setq Ac (polar A1 (* pi 0.5) 2.5))
(command "TEXT" "J" "mc" ac 4.5 0 (rtos S 2 1))
(setq en1 (entlast))
(command "scale" en1 "" A0 scl)
(setvar "OSMODE" os)
(prin1)
)
(prompt"\n命令提示符<<jszl>>")
(prin1)
发表于 2004-5-30 22:53:00 | 显示全部楼层
没有测试程序,按下列修改一下试试.可能是第2次运行时,某些变量已经不是初始值了.


(defun c:jszl( / i s a0 a1 tz en1 x sm ac)
发表于 2004-5-30 22:56:00 | 显示全部楼层
把你加颜色的部分换成以下就可以了啊: (setq scl (getreal "\n放大倍数<1>:")) (if (null scl) (setq scl 1))
 楼主| 发表于 2004-5-31 09:40:00 | 显示全部楼层
谢谢两位,我那加颜色的地方就是为了获取原来scl而设的,假若存在直接获取,不存在的话再输入数值,获取的时候假若想修改的话也可以修改。就像offset命令,第一次开cad里面显示“指定偏移距离&lt;通过&gt;”,当第二次运行的时候就显示上次偏移的距离了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-10-1 08:28 , Processed in 0.168500 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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