|
设计分享
本人在画图的时候经常要使用到递增数序列,且序列数字间距一致.因此编写了以下程序.供参考.欢迎大家讨论.
******************************************
;生成递增数
;命令:rre
;设计:sjfwhcy
(defun c:rre()
(setq cmdmode (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setq ent (ssget '((0 . "TEXT"))))
;输入生成递增数的个数、数间距及其方向。
(setq number(getint"\n输入递增数的数目或者按Enter键继续:"))
(if number
(setq d (getdist"\n指定距离:"))
(progn
(setq dist(getdist"\n指定距离:"))
(setq d (getdist"\n指定距离:"))
(setq number(fix(+ 0.5(/ dist d))))
)
)
(setq p (list 0 d))
(setq i 0)
(setq s "" entyp 3)
;重复拷贝前一个数,并将拷贝数加1。
(while(/= number 1)
(command "copy" ent "" p "")
(setq ent(entlast))
(setq temp(entget ent))
(setq nwnumber(cdr(assoc 1 temp)))
(setq mtd(strlen nwnumber))
(while entyp
(setq i(1+ i))
(setq h(substr nwnumber i 1))
(setq k(ascii h))
(if(or(< k 48)(> k 57))
(setq s(strcat s h))
(setq entyp nil)
)
)
(setq j(- mtd(- i 1)))
(if(= mtd 1)
(setq j 1))
(setq bk(substr nwnumber i j))
(setq bk(atoi bk))
(setq bk(+ bk 1))
(setq bk(itoa bk))
(setq bk(strcat s bk))
(entmod(subst(cons 1 bk)(assoc 1 temp)temp))
(setq number(1- number))
)
(setvar "cmdecho" cmdmode)
)
(princ)
(princ"\n\t生成递增数程序已加载,输入rre执行。") |
评分
-
查看全部评分
|