QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 4536|回复: 11
收起左侧

[已解决] 如何一次性提取多行文字内的所有文字

 关闭 [复制链接]
发表于 2008-7-18 11:52:53 | 显示全部楼层 |阅读模式 来自: 中国福建三明

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

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

x
一DWG格式图纸,内有众多的多行文字,如果用复制.粘贴的办法是可以提取多行文字内的文字,但太慢了,不知有没什么办法* O2 _9 }+ _' i* A) d1 R% X% b
+ K1 k# }" B' y7 D$ _% W
[ 本帖最后由 wsj249201 于 2008-7-19 08:34 编辑 ]
发表于 2008-7-18 13:28:24 | 显示全部楼层 来自: 中国四川成都
要看你往什么地方提,提来干嘛,OK?
发表于 2008-7-18 13:40:52 | 显示全部楼层 来自: 中国浙江台州
文字单独设图层
; M; ^6 p' E7 h4 w8 ]: N屏蔽其他图层就可以快速提取所有文字了
 楼主| 发表于 2008-7-18 13:49:32 | 显示全部楼层 来自: 中国福建三明
我的目地是EXCEL。但只要能至TXT之类就都好办了,三楼的可否讲如何操作
发表于 2008-7-18 13:50:41 | 显示全部楼层 来自: 中国浙江宁波
“工具”菜单里,选择“数据提取”;可以提取到excel

评分

参与人数 1三维币 +5 收起 理由
woaishuijia + 5 应助

查看全部评分

 楼主| 发表于 2008-7-18 14:00:44 | 显示全部楼层 来自: 中国福建三明
楼上的,那只能提取块里的数据,不能提提取多行文字里的数据
发表于 2008-7-18 14:44:55 | 显示全部楼层 来自: 中国江苏苏州
用特定对象选择,只选择文本
& d7 g+ p: K) M9 z, M* r) c' ?+ t来进行提取
 楼主| 发表于 2008-7-18 16:48:31 | 显示全部楼层 来自: 中国福建三明
我这是2004版的CAD。没有你们讲的数据提取功能,我把属性提取看成数据提取了
发表于 2008-7-18 18:35:12 | 显示全部楼层 来自: 中国辽宁鞍山
数据提取功能一样适用于多行文字,楼上的可以试试
 楼主| 发表于 2008-7-18 19:01:08 | 显示全部楼层 来自: 中国福建三明
我这是2004版的CAD。找不到你们讲的数据提取功能
发表于 2008-7-19 00:01:06 | 显示全部楼层 来自: 中国

回复 10# 的帖子

可以用二次开发功能编程提取。以下是VBA例程:0 j; M3 B* H% ?  ~

7 P& R" Z1 x' b( g. B  ?-----------------------------------------------------------0 `9 R- [  S* j6 f0 d* E3 S9 Z, Z3 N
Sub TQ()# {, l+ E4 p/ p3 f2 i
    On Error Resume Next
. R- X! h, F/ J$ t    Dim I As Integer
! u1 X' ]6 ?% ~) d8 v2 f3 [4 H    Dim E As Excel.Application, B As Workbook, S As Worksheet
) D1 ]. _, j5 B& ^$ E- \$ s" s    Dim SS As AcadSelectionSet, T As Object, FT(3) As Integer, FD(3) As Variant. J- m8 M8 e. ~% I; K6 d
    '下面定义选择集过滤器列表为多行文字或单行文字6 S0 {1 P2 X6 `2 D& b- ^- S
    FT(0) = -4: FD(0) = "<or"
5 f+ r! z$ V! H7 A& s    FT(1) = 0: FD(1) = "mtext"
! W7 s: C: g% y! i. s7 K    FT(2) = 0: FD(2) = "text"' d& n! p! e1 ]* O* C1 r" ?
    FT(3) = -4: FD(3) = "or>". I: M! x2 Z1 E. n7 {5 d9 F
    '创建选择集' L/ H0 y7 c8 O
    Set SS = ThisDrawing.SelectionSets.Add("SS")/ @) g5 b5 k& F$ A
    '在屏幕上选择多行文字或单行文字对象1 }7 l  m; V) _4 r2 U
    SS.SelectOnScreen FT, FD
' q1 |2 b# w8 m) h; S/ t     '如果选择集不为空则运行以下代码4 f- {  g$ ]: }" M' H$ d
    If SS.Count > 0 Then1 m; b! A" g3 |0 u
        '运行EXCEL程序$ ^: {- {9 c$ J
        Set E = New Excel.Application! @, [) `; B- d4 ^* f$ l9 N. C4 ?
        '在EXCEL中插入工作薄6 u# m+ W8 ~. P
        Set B = E.Workbooks.Add
" {( m+ q0 p1 D8 }1 Y- C7 R8 d! g        '定义工作表* ?, t' n  Y  \  w) G3 T: k+ `
        Set S = B.ActiveSheet
  Q- h, ^& u7 b. F0 G6 E        '显示EXCEL程序" p, \' Z; T& T  U" ?3 \& O! l: Y
        E.Visible = True
& P! L/ [* [; B) ?$ i) s) S         '遍历选择集并处理被选中的单行文字或多行文字对象
) L7 t: P# b1 X; X        For Each T In SS
! o8 [+ N/ G- d            I = I + 1$ [0 Q7 M: a( `" [, @2 q
            '把单行文字或多行文字的内容写入表格
* w6 w% S) R- y* ]5 }            '对于多行文字,如果直接写入则字符串中很可能包含转义符,使用者可根据需要对字符串运算处理后再写入表格
# n- q- M+ }' O            S.Cells(I, 1).Value = T.TextString
4 o  T% ?0 O( o5 b        Next) T  F: L# p1 _
    End If
! t. Y% D- v9 l    SS.Delete '删除用过的选择集
4 F2 I. f+ ]1 V% X1 E6 ZEnd Sub
2 K" u/ X6 i) A3 h-----------------------------------------------------------------7 W0 ~% d4 n* f" I
5 t4 @  h6 K0 B0 E
“Alt+F11”打开VBA编辑器,将以上代码复制粘贴到thisdrawing对象代码窗口,在“工具”菜单下点“引用”,选择EXCEL类库(名称与EXCEL版本有关,如EXCEL2000为“Microsoft Excel 9.0 Object Library”),确定后即可使用。( u1 ], d% g5 j$ ?

; [2 u7 L( v: M) I" o% O* a[ 本帖最后由 woaishuijia 于 2008-7-19 02:39 编辑 ]

评分

参与人数 1三维币 +15 收起 理由
wsj249201 + 15 应助

查看全部评分

 楼主| 发表于 2008-7-19 06:51:45 | 显示全部楼层 来自: 中国福建三明
我爱谁家真是高手,很感谢,实现了目标。看来也要学点VBA3 t/ t4 c  c& ^; m/ f; u
楼上还搞到这么晚,辛苦了(应该今天不用上班了吧),再一次多谢了! b- R8 `2 k# h1 O, d7 G# M% p

/ D" ~" o1 A( N/ L0 |4 ~[ 本帖最后由 fsj 于 2008-7-19 06:53 编辑 ]

评分

参与人数 1三维币 +1 收起 理由
wsj249201 + 1 感谢你对问题的及时查看并回复说明!

查看全部评分

发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

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