QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
一DWG格式图纸,内有众多的多行文字,如果用复制.粘贴的办法是可以提取多行文字内的文字,但太慢了,不知有没什么办法0 v+ s: D: i1 {8 s$ v9 G

( L2 i- E: T# ?+ q: v[ 本帖最后由 wsj249201 于 2008-7-19 08:34 编辑 ]
发表于 2008-7-18 13:28:24 | 显示全部楼层 来自: 中国四川成都
要看你往什么地方提,提来干嘛,OK?
发表于 2008-7-18 13:40:52 | 显示全部楼层 来自: 中国浙江台州
文字单独设图层8 a  y+ n' p) y/ a6 X* b) W2 K) E
屏蔽其他图层就可以快速提取所有文字了
 楼主| 发表于 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 | 显示全部楼层 来自: 中国江苏苏州
用特定对象选择,只选择文本
& J/ _/ Q3 v2 {3 E! o: W2 |来进行提取
 楼主| 发表于 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例程:
% j" U! i0 h1 ]$ X" M' \+ h; i8 T# C: K4 a7 ^/ j
-----------------------------------------------------------
) j1 a$ o8 K- I; d( z7 [Sub TQ()
+ c0 k' ~* j1 i    On Error Resume Next
6 P" J" u7 }5 S5 ?$ L% w) J/ a6 Q    Dim I As Integer
' H( M- ^" R, T% @+ U7 d    Dim E As Excel.Application, B As Workbook, S As Worksheet) o- `7 c' i; Z7 g
    Dim SS As AcadSelectionSet, T As Object, FT(3) As Integer, FD(3) As Variant
+ y' T: x7 j. q1 Y$ j- C    '下面定义选择集过滤器列表为多行文字或单行文字0 s8 N; @. I! s  o& s" h
    FT(0) = -4: FD(0) = "<or"
* a2 b. O$ ~& m4 h4 \    FT(1) = 0: FD(1) = "mtext": P6 Q; H2 J& \$ I& J
    FT(2) = 0: FD(2) = "text"
3 y; L+ J' U( ~7 H2 A3 o( Y- b! [    FT(3) = -4: FD(3) = "or>"
  l; M- z; j0 ?& i6 V9 G    '创建选择集
% p& d4 |3 G3 ^- m    Set SS = ThisDrawing.SelectionSets.Add("SS")- ^) V3 m7 E2 `
    '在屏幕上选择多行文字或单行文字对象
. W( o8 m8 Q) h) x! ]+ m! t' X! }9 c    SS.SelectOnScreen FT, FD! m6 D+ k: _4 V, P
     '如果选择集不为空则运行以下代码
' Y3 Y/ o2 S3 R    If SS.Count > 0 Then
* N1 _* W  I- v        '运行EXCEL程序7 z% n% h# w( C" k
        Set E = New Excel.Application
7 y4 d0 [/ v) L7 L. g% x* z7 v% e        '在EXCEL中插入工作薄
  U. p0 Q- r2 x2 U1 }. g        Set B = E.Workbooks.Add
/ ?% `5 h* S4 i3 r' L        '定义工作表" q0 |! I* s3 }" c* p+ h
        Set S = B.ActiveSheet2 B  w/ @4 P* f/ c& o8 t
        '显示EXCEL程序# J$ i! C# b1 }0 B6 ^- A
        E.Visible = True
+ p! \+ O0 \; }- _7 M; ~- u         '遍历选择集并处理被选中的单行文字或多行文字对象8 e( X0 u. G7 d( P3 B9 U6 O
        For Each T In SS" j/ r7 H0 [0 y
            I = I + 1* y2 P) K3 P" [5 D
            '把单行文字或多行文字的内容写入表格! s; L1 h8 w7 y! W8 A
            '对于多行文字,如果直接写入则字符串中很可能包含转义符,使用者可根据需要对字符串运算处理后再写入表格
6 T( i! C6 m' ]' U: |$ l            S.Cells(I, 1).Value = T.TextString
8 o  C+ q: ~& v; `; i+ a        Next
  ?4 A" }; s5 q2 u    End If, _; [8 a4 y- D% H
    SS.Delete '删除用过的选择集2 `2 g9 s' r2 Z' ?
End Sub
3 w+ S/ ^; W( i8 |+ @; ^) X-----------------------------------------------------------------+ R# E4 a/ f4 }, k, L
! L% h4 n, P  P; U6 B. e/ g7 v
“Alt+F11”打开VBA编辑器,将以上代码复制粘贴到thisdrawing对象代码窗口,在“工具”菜单下点“引用”,选择EXCEL类库(名称与EXCEL版本有关,如EXCEL2000为“Microsoft Excel 9.0 Object Library”),确定后即可使用。
) Z: H9 j4 k- n
3 a7 D3 |3 h" l+ L7 Q[ 本帖最后由 woaishuijia 于 2008-7-19 02:39 编辑 ]

评分

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

查看全部评分

 楼主| 发表于 2008-7-19 06:51:45 | 显示全部楼层 来自: 中国福建三明
我爱谁家真是高手,很感谢,实现了目标。看来也要学点VBA
& Q# H) x1 R0 |0 G/ G楼上还搞到这么晚,辛苦了(应该今天不用上班了吧),再一次多谢了
( }& [% L8 N% e) N& Z- n9 U& U0 d; v6 M4 _  o! ^! e7 V
[ 本帖最后由 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 )

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