救助:entmod批量修改单行文字宽度比例对大文件无效的问题
本帖最后由 清池 于 2013-3-3 14:04 编辑批量修改文字宽度比例,对小文件,文本数量在10万以内有效,对大文件无法修也不报错,那位大侠遇上过?怎么解决?
一切功能正常,就是对大文件的文本宽度修改无效,调试中发现组码41修改成功,就是entmod后文本宽度还是老样子。
代码:
(repeat (setq n (sslength ss))
(setq ent (ssname ss (setq n (1- n))))
(setq px (assoc 10 (entget ent)))
(setq x (nth 1 px))
(setq y (nth 2 px))
(setq obj (vlax-ename->vla-object ent))
(setq txt (vla-get-textstring obj))
(setq len (strlen txt))
(cond
((wcmatch txt "*/FN:*")
(progn
(setvar "clayer" "shot")
(setq l (vl-string-search "/" txt))
(setq txt1 (substr txt 1 l)
txt2 (substr txt (+ l 2) len)
y (+ y 4)
x1 (+ x 27)
)
(command "pline" (list x y) (list x1 y) "")
(setq y1 (+ y 0.6))
(command "text" (list x y1) "9" "0" txt1)
(setq en1dat (entget (entlast)))
(setq orr (assoc 41 en1dat))
(setq nrr '(41 . 0.73))
(setq en1dat (subst nrr orr en1dat))
(entmod en1dat)
(setq y1 (- y 9.6))
(command "text" (list x y1) "9" "0" txt2)
(setq en2dat (entget (entlast)))
(setq orr (assoc 41 en2dat))
(setq nrr '(41 . 0.73))
(setq en2dat (subst nrr orr en2dat))
(entmod en2dat)
)
) ;endwcmatch
((= len 8)
(progn
(setvar "clayer" "reciver")
(setq txt1 (substr txt 1 4)
txt2 (substr txt 5 8)
y (+ y 3)
x1 (+ x 25)
)
;(command "pline" (list x y) (list x1 y) "")
(setq y1 (+ y 0.6))
(command "text" (list x (- y 4.5)) "9" "0" txt2)
;(setq y1 (- y 9.6))
;(command "text" (list x y1) "9" "0.9" txt1)
)
) ;end len=8
)
) ;end repeat
本帖最后由 清池 于 2013-3-3 15:46 编辑
用entmake 搞定。晕死,10多万个文本。
(entmake (list '(0 . "TEXT") (cons 1 txt2) (list 10 x y1) (cons 40 9) (cons 41 0.73)))
清池 发表于 2013-3-3 15:10 static/image/common/back.gif
用entmake 搞定。晕死,10多万个文本。
谢谢楼主分享
页:
[1]