求助高手-----改为记忆数字递增-----(祥图编号)-----标题要长 要长
这里面有三个命令,第一个是设置圆的半径(RC),第二个是设置字体大小,字体倾斜度,并输入数字《1或A,任意数都行》(BB),第三个能记忆圆的半径,字体大小,字体倾斜度,但不能记忆输入的数字(BC),要求在第三个命令里也能记忆上一次输入的数字并递增1,比如说在(BB)里输入的是 3,在第三个命令(BC)里能自动输入数字 4 ,再(BC)就是数字 5 ;在(BB)里输入的是 A2 ,在第三个命令(BC)里能自动输入数字 A3 再(BC)就是 A4
在 给大家代码如下
本帖最后由 zhuquanmao 于 2012-4-9 00:28 编辑
看看楼下的代码 我这里成了
留个脚印 我怎么不行啊。。。。 设置一个全局变量行么? ;;这是一个对祥图进行标号的小程序
(defun C:bb (/ rr r pt1 pt2 pt3 ang)
(setq old_osmode (getvar "osmode"))
(setvar "cmdecho" 0)
(setq rr (getvar "circlerad"))
(initget (+ 2 4))
(setq r (getreal (strcat "\n请输入标号圆半径 < " (rtos rr) ">:")))
;如标号圆半径未输入,提示输入标号圆半径
(if (null r)
(setq r rr)
)
(initget (+ 2 4))
(if (not (numberp bh))
(progn
(setq bh (getint "\n输入起始号<1>:"))
(if (= nil bh)
(setq bh 1)
)
)
(progn
(setq bh (getint (strcat "\n输入起始号<" (itoa bh) ">:")))
(if (= nil bh)
(setq bh bh)
)
)
)
(if (null qz)
(setq qz (getstring "\n前缀<无>:"))
(progn
(setq qz (getstring (strcat "\n前缀<" qz ">:")))
(setq qz qz)
)
)
(setq pt1 (getpoint "\n请输入第一点: "))
(while pt1
(setq pt2 (getpoint pt1 "\n请输入第二点: "))
(if pt2
(progn
(setvar "osmode" 0)
(command "_.line" pt1 pt2 "")
(setq ang (angle pt1 pt2))
(setq pt3 (polar pt2 ang r))
(command "circle" pt3 r)
(command "text" "mc" pt3r 0 (strcat qz (itoa bh)))
(setq bh (1+ bh))
(setvar "osmode" old_osmode)
(setq pt1 (getpoint "\n请输入第一点: "))
)
(setq pt1 nil)
)
)
(setvar "cmdecho" 1)
(prin1)
)
;;; 文字结尾
叮咚 发表于 2012-4-8 20:03 static/image/common/back.gif
;;这是一个对祥图进行标号的小程序
(defun C:bb (/ rr r pt1 pt2 pt3 ang)
(setq old_osmode (getvar " ...
刚进行了一个测试,发现有点问题呢!
当第一次输入BB命令时,默认输入是数字1,当再一次用BB命令时,默认输入是数字2,当回车时,输入能消失!
错误: 参数类型错误: fixnump: nil
有这个错误呢! xingyun300 发表于 2012-4-8 20:19 static/image/common/back.gif
刚进行了一个测试,发现有点问题呢!
当第一次输入BB命令时,默认输入是数字1,当再一次用BB命令时,默 ...
你看提示了吗?
我试了,怎么没错啊
叮咚 发表于 2012-4-8 20:24 static/image/common/back.gif
你看提示了吗?
我试了,怎么没错啊
做了一个视频,你看看是怎么会事!
这个问题会在我的“明细表”帖子中得到详细回答,敬请期待! ;;这是一个对祥图进行标号的小程序
(defun C:bb (/ rr r pt1 pt2 pt3 ang)
(setq old_osmode (getvar "osmode"))
(setvar "cmdecho" 0)
(setq rr (getvar "circlerad"))
(initget (+ 2 4))
(setq r (getreal (strcat "\n请输入标号圆半径 < " (rtos rr) ">:")))
;如标号圆半径未输入,提示输入标号圆半径
(if (null r)
(setq r rr)
)
(initget (+ 2 4))
(if (not (numberp bh))
(progn
(setq bh (getint "\n输入起始号<1>:"))
(if (= nil bh)
(setq bh 1)
)
)
(progn
(setq bh00 bh)
(setq bh (getint (strcat "\n输入起始号<" (itoa bh00) ">:")))
(if (= nil bh)
(setq bh bh00)
)
)
)
(if (= "" qz)
(setq qz (getstring "\n前缀<无>:"))
(progn
(setq qz00 qz)
(setq qz (getstring (strcat "\n前缀<" qz00 ">:")))
(if (= "" qz)
(setq qz qz00)
)
)
)
(setq pt1 (getpoint "\n请输入第一点: "))
(while pt1
(setq pt2 (getpoint pt1 "\n请输入第二点: "))
(if pt2
(progn
(setvar "osmode" 0)
(command "_.line" pt1 pt2 "")
(setq ang (angle pt1 pt2))
(setq pt3 (polar pt2 ang r))
(command "circle" pt3 r)
(command "text" "mc" pt3r 0 (strcat qz (itoa bh)))
(setq bh (1+ bh))
(setvar "osmode" old_osmode)
(setq pt1 (getpoint "\n请输入第一点: "))
)
(setq pt1 nil)
)
)
(setvar "cmdecho" 1)
(prin1)
)
;;; 文字结尾
叮咚 发表于 2012-4-8 20:54 static/image/common/back.gif
;;这是一个对祥图进行标号的小程序
(defun C:bb (/ rr r pt1 pt2 pt3 ang)
(setq old_osmode (getvar " ...
这次运行不了,直接出现错误了,哥们,还要帮忙改改呀!!!
命令: bb
请输入标号圆半径 < 0>:50
输入起始号<1>:
; 错误: 参数类型错误: stringp nil
页:
[1]
2