关于文字处理的lsp,哪位大神帮我看下代码啊
本帖最后由 伪书虫86 于 2014-7-15 08:51 编辑程序目标:框选多个单行文字后,在其下方600处生成对应的指定文字。。。如下:
16→BV-3*2.5-JDG20
20→BV-3*4-JDG20
25→BV-3*6-JDG20
32→BV-3*10-JDG25
*
*
菜鸟一个,凑了一段代码,可是怎么都调试不成功,哪位大神指导下啊,不胜感激了
还有那个在原文字下方指定距离输出新文字,有没有比我这个更简洁的代码啊?
在此特别感谢下xyp196、langjs、ZZXXQQ谢谢你们
(defun c:cs( )
(setvar "cmdecho" 0)
(setq dlq '(16 20 25 32 40 50))
(setq xj '(2.5 4 6 10 16 16))
(setq gj '(20 20 20 25 32 32))
(setvar "cmdecho" 0)
(prompt "\n选择文字:")
(setq ss (ssget '((0 . "TEXT"))))
(setq ztys (cdr(assoc 7 ss)));字体样式
(setq zg (cdr(assoc 40 ss)));字高
(setq zb (cdr(assoc 10 ss)));坐标
(setq tc (cdr(assoc 8 ss)));图层
(setq i (sslength dlq))
(while (= ss (nth i dlq))
(setq txt (strcat "BV-3*" (nth i xj) "-JDG" (nth i gj)))
(setq i (1- i))
)
(setq newzb (list (car zb1) (+ (cadr zb1) -600)))
(command "text" "s" ztys newzb zg 0 txt)
(command "chprop" (entlast) "" "la" tc "" )
)
(setvar "cmdecho" 1) 有没有人在啊。。。
xyp1964 发表于 2014-7-14 19:57 static/image/common/back.gif
谢谢你额 ,但是有没有不需要你那个工具箱支持的独立的LSP啊? (defun c:cs (/ ent i lst n ss txt)
(defun emod (ent i n) (subst (cons i n)(assoc i ent) ent ))
(setvar "cmdecho" 0)
(setq lst '(("16" "BV-3*2.5-JDG20") ("20" "BV-3*4-JDG20")("25" "BV-3*6-JDG20") ("32" "BV-3*10-JDG25")))
(prompt "\n选择文字:")
(setq ss (ssget '((0 . "TEXT"))))
(repeat (setq i (sslength ss))
(setq ent (entget (ssname ss (setq i (1- i)))))
(if (setq txt (assoc (cdr (assoc 1 ent)) lst))
(entmake (emod (emod (cdr ent) 1 (cadr txt)) 10 (polar (cdr (assoc 10 ent)) (* 1.5 pi) 600))))
)
(princ)
)
(defun c:cs( )
(setvar "cmdecho" 0)
(setq dlq '("16" "20" "25" "32" "40" "50"))
(setq xj '("2.5" "4" "6" "10" "16" "16"))
(setq gj '("20" "20" "20" "25" "32" "32"))
(setvar "cmdecho" 0)
(prompt "\n选择文字:")
(setq ss (ssget '((0 . "TEXT"))))
(repeat (setq i (sslength ss))
(setq en (entget(ssname ss (setq i (1- i)))))
(setq zb (cdr(assoc 10 en)));坐标
(setq tx (cdr(assoc 1 en)))
(if (setq dl (member tx dlq)) (progn
(setq n (- (length dlq) (length dl)))
(setq txt (strcat "BV-3*" (nth n xj) "-JDG" (nth n gj)))
(setq newzb (mapcar '- zb '(0 600 0)))
(setq en (subst (cons 1 txt) (assoc 1 en) en))
(entmake (cdr(subst (cons 10 newzb) (assoc 10 en) en)))
))
)
(setvar "cmdecho" 1)
(princ)
)
langjs 发表于 2014-7-14 21:37 static/image/common/back.gif
(defun c:cs (/ ent i lst n ss txt)
(defun emod (ent i n) (subst (cons i n)(assoc i ent) ent ))
...
谢谢你
再请教一下,当把文字特性里的 对正 改为居中后,输出的文字就跟原文字重叠了,这个怎么解决啊?(就是三楼图片中的那种效果,改下哪段代码就可以啊?) ZZXXQQ 发表于 2014-7-15 08:27 static/image/common/back.gif
谢谢你用这么贴近我目前水平的代码帮我改好了
再请教一下,当把文字特性里的 对正 改为居中后,输出的文字就跟原文字重叠了,这个怎么解决啊?(就是三楼图片中的那种效果,改下哪段代码就可以啊?) 伪书虫86 发表于 2014-7-15 09:01 static/image/common/back.gif
谢谢你用这么贴近我目前水平的代码帮我改好了
再请教一下,当把文字特性里的 对正 改为居中后,输 ...
图片呢?没见到。 ZZXXQQ 发表于 2014-7-16 07:35 static/image/common/back.gif
图片呢?没见到。
是3楼xyp1964的那张图片
这个问题已经解决了,谢谢你哦
页:
[1]
2