明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1302|回复: 2

救助:entmod批量修改单行文字宽度比例对大文件无效的问题

[复制链接]
发表于 2013-3-3 13:47:16 | 显示全部楼层 |阅读模式
本帖最后由 清池 于 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
用entmake 搞定。晕死,10多万个文本。

谢谢楼主分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-6-1 22:54 , Processed in 0.179930 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表