求助,写几行中间对齐的平行文本
本帖最后由 gogozb 于 2022-11-10 16:38 编辑(defun c:wz (/ int1 y0)
(setq int1 (getint "\n输入指定文本数目:"))
(if (= int1 nil)
(setq int1 1)
)
(setq wb (getpoint "\n 要写入文本的位置:"))
(repeat int1
(setq y0 (cadr wb))
(setq pw (list (car wb)y0))
(command "text" "m"pw2.50int1 )
(princ "\nOK")
(print y0)
(setq y0 (+ y0 10))
(print y0)
) ;end repeat int1
(princ)
)
以上代做得不到想要的结果,请问是哪里出错了。
(setq y0 (+ y0 10))这句不行,因为y0是一个点 给你加了一点判断与控制文本的变量
[*]你还可以改改
[*](defun c:wz (/ int1 jj wb int2 y0 n)
[*](setq int1 (getint "\n输入指定文本数目:"))
[*](if (= int1 nil)
[*] (setq int1 1)
[*])
[*](setq jj (getreal "\n 指定文本行间距:"));指定文本行间距
[*](setq wb (getpoint "\n 要写入文本的位置:"))
[*](setq int2 (getstring "\n输入第一行文本:"))
[*](setq y0 (cadr wb))
[*](setq n 1);控制文字输入次数
[*](repeat int1
[*] (setq pw (list (car wb)y0))
[*] (command "text" "m"pw2.50int2 )
[*] (if (and (/= int1 1) (<n int1)) ;判断文本数目是否大于1与输入文本次数是否小于指定的文本数目,大于1与小于指定文本数目则执行if里面代码
[*] (setq int2 (getstring "\n输入文本:"))
[*] )
[*] (setq n (1+ n))
[*] (print y0)
[*] (setq y0 (+ y0 jj))
[*] (print y0)
[*]) ;end repeat int1
[*](princ)
[*])
飞雪神光 发表于 2022-11-10 17:52
(setq y0 (cadr wb))放到repeat上(外)面
谢谢您,不善于检查啊,最近才开始学习autolisp,visual lisp有哪些调试技巧,感觉vba的编辑器好用,摸索好久还是没弄明白,还请赐教。 (setq y0 (cadr wb))放到repeat上(外)面 本帖最后由 萧●﹏●明 于 2022-11-11 22:19 编辑
楼上说的是对的,把(setq y0 (cadr wb))放在循环外面就行了不然每次循环y0 值就会重置后面写的修改坐标Y值得代码都没用 gogozb 发表于 2022-11-10 18:00
谢谢您,不善于检查啊,最近才开始学习autolisp,visual lisp有哪些调试技巧,感觉vba的编辑器好用,摸索 ...
我用的飞诗编辑器 调试什么的都很方便 萧●﹏●明 发表于 2022-11-11 22:57
给你加了一点判断与控制文本的变量
[*]你还可以改改
谢谢您,受教了。 gogozb 发表于 2022-11-14 15:14
谢谢您,受教了。
我也才开始学,学了一点皮毛:lol 飞雪神光 发表于 2022-11-12 12:18
我用的飞诗编辑器 调试什么的都很方便
您好,可以分享“飞诗lisp”此软件吗,网上找来用不了。我安装cad2020版本,麻烦分享一份给我,邮箱:1065886598@qq.com。谢谢!
页:
[1]
2