悬赏:相同的文字依次加上递增的后缀来区分
本帖最后由 vlisp2012 于 2014-4-23 14:44 编辑大侠们开个价吧。
面材排版的问题,请教一下大家:
石材幕墙,已经按照不同的大小,完成了不同的面材编号,来下单。这样一来不同的部位,相同的石头都编辑成一种编号了;
如:17B-B02。数量可能有20多块。
问题是,石材厂家,不希望有相同编号的石头,以区分其不同的位置。
希望将相同的编号,加上依次递增的后缀来区分。如:17B-B02-1,17B-B02-2,17B-B02-3…….
没有相同编号的,不用改动文字内容。如17B-B08.
大家有好的思路,或程序吗? 本来是个很简单的事,但看了样图都是多行文字,我只能表示无能为力,因为我做不到从MTEXT的内容里边把控制字符去掉得到真正需要的字串进行处理
下边我就把它们当成TEXT来说下大概思路吧:
得到所有文字图元,初始化一个空表txts()进行循环处理,取出文本内容(多行文本有可能文本内容一样但控制字符不一样,所以这地方比较头痛)
如果(assoc txt txts) (setq txts(subst(list txt (1+(last(assoc txt txts))))(assoc txt txts) txts)实现该文本内容加1,同时修改这个文字的内容(加上它的后续编号),反之(setq txts(append(txts(list(list txt 1))))),同时把文本内容加上后续编号1
当然,为了效果,可以先把所有文字按一定规则对根据坐标进行排序,那样编号不会显得杂乱无章
但最关键的是怎么让控制字符不同(也就是格式不同)的相同文本能被准确识别 多谢大家了,有思路了. vlisp2012 发表于 2014-4-19 20:09 static/image/common/back.gif
多谢大家了,有思路了.
楼主您好!
程序搞出来了不!
我也需要单行相同的文字依次加上递增的后缀 vlisp2012 发表于 2014-4-19 20:09 static/image/common/back.gif
多谢大家了,有思路了.
楼主您好!
程序搞出来了不!
我也需要单行相同的文字依次加上递增的后缀 ;;;图中大量编号,现在需要把这些是相同的编号(单行文字)建立成一个组,希望一次性框选可以完成,单个编号也建组。
;;;
;;;比如:
;;;C1 编号的建一个组
;;;C2 编号的建一个组
;;;C3 编号的建一个组
(defun c:bzz ()
(setvar "cmdecho" 0)
(vl-cmdf "undo" "be")
(prompt "\n多行文字需要炸开,变成单行文字")
(prompt "\n选择文字:")
(setq ss (ssget
'((-4 . "<and") (0 . "text")(-4 . "and>"))
)
)
(or ss (setq ss (ssadd)))
(setq n 0
wz-lst nil
)
(while (< n (sslength ss))
(setq en (ssname ss n)
data (entget en)
)
(setq txt (cdr (assoc 1 data)))
(if (null (member txt wz-lst))
(setq wz-lst (cons txt wz-lst))
)
(setq n (1+ n))
)
(setq n 0)
(while (< n (length wz-lst))
(vl-cmdf "select" ss "")
(setq txt (nth n wz-lst)
xx(ssget "p" (list (cons 0 "text") (cons 1 txt)))
)
(if (> (sslength xx) 1)
(progn
(setq j 0)
(while (< j (sslength xx))
(setq enxx (ssname xx j)
dataxx (entget enxx)
)
(setq ntxt (strcat txt "-" (itoa (+ j 1))))
;;;(setq txt (cdr (assoc 1 dataxx)))
(setq dataxx (subst (cons 1 ntxt) (assoc 1 dataxx) dataxx ))
(entmod dataxx)
(setq j (1+ j))
)))
(setq n (1+ n))
)
(vl-cmdf "undo" "e")
(setvar "cmdecho" 1)
(princ)
) 是我的一个朋友,帮我编辑的这个程序。 vlisp2012 发表于 2014-12-23 10:04 static/image/common/back.gif
;;;图中大量编号,现在需要把这些是相同的编号(单行文字)建立成一个组,希望一次性框选可以完成,单个编号 ...
感谢分享!2015年新年快乐!!
页:
[1]