清池 发表于 2013-3-3 13:47:16

救助: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:10:59

本帖最后由 清池 于 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-4 09:09:37

清池 发表于 2013-3-3 15:10 static/image/common/back.gif
用entmake 搞定。晕死,10多万个文本。




谢谢楼主分享
页: [1]
查看完整版本: 救助:entmod批量修改单行文字宽度比例对大文件无效的问题