明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2557|回复: 9

[提问] 求助批量提取CAD中的文字(TEXT)程序

[复制链接]
发表于 2014-5-24 16:06:47 | 显示全部楼层 |阅读模式
哪位大神批量提取CAD中的文字(TEXT)的程序啊。上传一个吧
发表于 2014-5-24 16:15:51 | 显示全部楼层
论坛里已有。请楼主仔细找。
 楼主| 发表于 2014-5-24 16:37:17 | 显示全部楼层
老大,找了好久没有找到啊,能传一个吗?谢谢
发表于 2014-5-24 18:11:41 来自手机 | 显示全部楼层
提取文字后做什么处理?选择没问题。
发表于 2014-5-24 19:48:51 | 显示全部楼层
  1. (defun c:tt ()
  2. (setq fnm (if (= (type fnm) 'STR) fnm ""))
  3. (if (and (setq fnm (getfiled "选择输出文件" fnm "txt" 1))
  4.            (setq ss (ssget '((0 . "TEXT"))))) (progn
  5.   (setq fp (open fnm "w"))
  6.   (repeat (setq n (sslength ss))
  7.    (setq ent (entget(ssname ss (setq n (1- n)))))
  8.    (print  (cdr(assoc 1 ent)) fp)
  9.   )
  10.   (close fp)
  11. ))
  12. (princ)
  13. )
发表于 2014-5-24 22:50:03 | 显示全部楼层
  1. ;;;wkq004  QQ:278416560 2009.02.24 13572449833
  2. (vl-load-com)
  3. (defun c:ZB (/             CENTER  COLOR   DIRECTORY             E             E2
  4.              E2L     EEL     EL             FILENAME             FL             LAYERNAME
  5.              MYACAD  N             SS             SS2     SS3     SSE     START
  6.              STRING  XH1     XH2
  7.             )
  8.   (setvar "cmdecho" 0)
  9.   (setq osmode (getvar "osmode"))
  10.   (setvar "osmode" 0)
  11.   (command "layer" "M" "导出层" "C" 8 "" "")
  12.   (setq xh1 1)
  13.   (setq xh2 1)
  14.   (while (= 1 xh1)
  15.     (while (= 1 xh2)
  16.       (princ "\n[结束选择(空格/回车/右键)]请点选要导出的圆:")
  17.       (if
  18.         (setq ss3 (ssget ":S" '((0 . "TEXT"))))
  19.          (progn
  20.            (setq sse (ssname ss3 0))
  21.            (setq eel (entget sse))
  22.            (setq layername (cdr (assoc 8 eel)))
  23.            (if (setq color (cdr (assoc 62 eel)))
  24.              (setq ss2
  25.                     (ssget
  26.                       "X"
  27.                       (list (cons 0 "TEXT")
  28.                             (cons 8 layername)
  29.                             (cons 62 color)
  30.                       )
  31.                     )
  32.              )
  33.              (setq
  34.                ss2
  35.                 (ssget "X" (list (cons 0 "TEXT") (cons 8 layername)))
  36.              )
  37.            )
  38.            (setq n 0)
  39.            (command ".undo" "begin")
  40.            (repeat (sslength ss2)
  41.              (setq e2 (ssname ss2 n))
  42.              (setq e2l (entget e2))
  43.              (setq e2l (subst (cons 8 "导出层") (assoc 8 e2l) e2l))
  44.              (setq e2l (subst (cons 62 256) (assoc 62 e2l) e2l))
  45.              (entmod e2l)
  46.              (setq n (1+ n))
  47.            )
  48.            (command ".undo" "end")
  49.          )
  50.          (progn
  51.            (setq xh2 0)
  52.          )
  53.       )
  54.     )
  55.     (initget 1 "D X E")
  56.     (setq start (getreal "\n[退出(E)继续选择(X)]导出请输入(D):"))
  57.     (if        (= "D" start)
  58.       (progn
  59.         (if
  60.           (setq ss (ssget "X" '((8 . "导出层") (0 . "TEXT"))))
  61.            (progn
  62.              (setq myacad (vlax-get-acad-object))
  63.              (setq filename (vl-filename-base (vla-get-caption myacad)))
  64.              (while (vl-file-systime (strcat "c:/" filename ".txt"))
  65.                (setq filename (strcat filename "-1"))
  66.              )
  67.              (setq directory (strcat "c:/" filename ".txt"))
  68.              (setq fl (open directory "w"))
  69.              (setq n 0)
  70.              (repeat (sslength ss)
  71.                (setq e (ssname ss n))
  72.                (setq el (entget e))
  73.                (setq n (1+ n))
  74.                (setq center (cdr (assoc 10 el)))
  75.                (setq text (cdr (assoc 1 el)))
  76.                (setq
  77.                  string        (strcat        (setq text (cdr (assoc 1 el)))
  78.                                 ",,"
  79.                                 (rtos (car center) 2 3)
  80.                                 ","
  81.                                 (rtos (cadr center) 2 3)
  82.                                 ","
  83.                                 (rtos (last center) 2 3)
  84.                         )
  85.                )
  86.                (write-line string fl)
  87.              )
  88.              (close fl)
  89.              (princ (strcat "\n坐标导出成功" directory))
  90.              (setq xh1 0)
  91.            )
  92.            (progn
  93.              (princ "\n在\"导出层\"内没有圆可供导出,程序终止!!")
  94.              (setq xh1 0)
  95.            )
  96.         )
  97.       )
  98.       (progn
  99.         (if (= "X" start)
  100.           (setq xh2 1)
  101.           (setq xh1 0)
  102.         )
  103.       )
  104.     )
  105.   )
  106.   (setvar "cmdecho" 1)
  107.   (setvar "osmode" osmode)
  108.   (princ)
  109. )




发表于 2014-5-25 06:24:00 | 显示全部楼层
;;;取得图层所有文本.
(defun c:outdoc()
(setq fnm (getfiled "保存文件名" "" "doc" 1))
 (setq fn (open fnm "w"))
 (setq s (ssget))
 (setq n (sslength s))
 (setq index ( - n 1))
 (repeat n
  (setq ents (entget (ssname s index)))
  (setq index ( - index 1))
  (setq ent (assoc 0 ents))
  (if ( = "TEXT" (cdr ent))
    (progn
      (setq txt (cdr (assoc 1 ents)))
      (write-line txt fn)
    )
  )
 )
(close fn)
)
 楼主| 发表于 2014-5-26 08:38:23 | 显示全部楼层
谢谢,挺好用的
发表于 2016-1-28 19:52:48 | 显示全部楼层
香田里浪人 发表于 2014-5-25 06:24
;;;取得图层所有文本.
(defun c:outdoc()
(setq fnm (getfiled "保存文件名" "" "doc" 1))

老大:
取得图层所有文本. 中不能指定图层,数据乱,
求怎样解决?
发表于 2016-1-30 21:46:45 | 显示全部楼层
本帖最后由 kozmosovia 于 2016-1-30 21:50 编辑

可以直接使用DATAEXTRACTION命令

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-20 16:14 , Processed in 0.195534 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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