永发信息网

输入文字的lsp

答案:1  悬赏:10  手机版
解决时间 2021-03-12 17:38
  • 提问者网友:回忆在搜索
  • 2021-03-12 08:04
大侠您好,我想请教一个问题,我想输入一个起始数字,一个增值,一个个数值,就能在屏幕上以文字的形式显示出递增的一列数字来,是对自动编号的特别版,但是发现总是有点出入,不得已求教大侠的了。用的是Mtext让其在屏幕显示的,但似乎基点不太好设置,用空格可以隔开的吗??例子如下,
(defun c:1()
(if(not (setq n1 (getint "\n输入起始值<1>:")))
(setq n1 1)
)
(if(not (setq zn (getint "\n输入增加值<1>:")))
(setq zn 1)
)
(setq m 0)
(setq n (getint "\n输入个数:"))
(setq p1 (getpoint "\n输入文字的第一角点:"))
(setq p2 (getpoint "\n输入文字的第二角点:"))
(setq mtext_list (list n1))
(repeat n
(setq n1 (+ n1 zn))
(setq mtext_list (cons n1 mtext_list))
(setq mtext_list (reverse mtext_list)) ;;想用列表将一系列数字列出
)
(command "mtext")
(repeat n
(setq mm (nth m mtext_list))
(command p1 p2 mm) ;;p1 ,p2为多行文字的第一角点和第二角点
(setq m (+ 1 m))
)
(command "")
(prin1)
)
最佳答案
  • 五星知识达人网友:孤独的牧羊人
  • 2021-03-12 08:52
第一点:
建议用text命令。
第二点:
不要把一个command命令打断,中间掺和很多其他的语句。
一个例子请参考:
(defun c:sign ( / nstart I1 hight pt prestr)
(setvar "cmdecho" 0) (setvar "highlight" 0)
(setq nstart (getint "\n起始序号<1>: "))
(if (null nstart) (setq nstart 1))
(setq step (getint "\n步长<1>: "))
(if (null step) (setq step 1))
(setq prestr (getstring "\n后缀字符串(回车表示没有): "))
(princ "\n几号字<") (princ (/ (getvar "textsize") 1))
(princ ">: ")
(setq hight (getreal))
(if (null hight) (setq hight (getvar "textsize"))
(setq hight (*I1 hight))
);if
(while (setq pt (getpoint "\n写字点: "))
(command "text" "m" pt hight "" (strcat (itoa nstart) prestr))
(setq nstart (+ nstart step))
);while
(setvar "cmdecho" 1) (setvar "highlight" 1)
(princ)
);*c:sign
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯