QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
一DWG格式图纸,内有众多的多行文字,如果用复制.粘贴的办法是可以提取多行文字内的文字,但太慢了,不知有没什么办法8 S' \& M8 H+ d2 S6 O6 {

  K% {: m) J( N& C3 U9 s  v[ 本帖最后由 wsj249201 于 2008-7-19 08:34 编辑 ]
发表于 2008-7-18 13:28:24 | 显示全部楼层 来自: 中国四川成都
要看你往什么地方提,提来干嘛,OK?
发表于 2008-7-18 13:40:52 | 显示全部楼层 来自: 中国浙江台州
文字单独设图层
) o4 Z; J+ k8 D# s' 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 | 显示全部楼层 来自: 中国江苏苏州
用特定对象选择,只选择文本
4 @3 U  r4 b& j" @1 M- A* c- \来进行提取
 楼主| 发表于 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例程:8 s* a$ ^& n) v% ~! T
" r' a7 ~, \/ k  V7 X2 A* U
-----------------------------------------------------------
# ~5 q4 J* t, M* `5 PSub TQ()
5 J' I" ?8 }* {; g3 z    On Error Resume Next; M5 F3 m1 k# T8 o' j# }
    Dim I As Integer
0 i" R4 h& G) D% N$ Z# k    Dim E As Excel.Application, B As Workbook, S As Worksheet# i5 A! M+ w* H! l: O8 x
    Dim SS As AcadSelectionSet, T As Object, FT(3) As Integer, FD(3) As Variant
# N" J; k- [' G, \    '下面定义选择集过滤器列表为多行文字或单行文字, Q0 Q3 D3 s$ U5 B3 F
    FT(0) = -4: FD(0) = "<or"
2 G# u( H) B& p) |3 b    FT(1) = 0: FD(1) = "mtext"
8 n1 _7 |6 ^1 R    FT(2) = 0: FD(2) = "text"
9 ?# e9 P) h/ ?: p( W) M, t    FT(3) = -4: FD(3) = "or>"
% q8 A2 n- O* E+ R% T& `    '创建选择集+ M4 ?' `; @! E8 B" V/ o6 ]
    Set SS = ThisDrawing.SelectionSets.Add("SS")
/ A" g- I. J8 _  _* @3 D6 a, }    '在屏幕上选择多行文字或单行文字对象0 l/ [  o6 f- t' l- o$ ]) q
    SS.SelectOnScreen FT, FD
! ]# e8 b' u0 y- ~. {     '如果选择集不为空则运行以下代码" S3 I' p" {  x, i0 f
    If SS.Count > 0 Then
2 Y8 S+ [' D/ K, j) b  M        '运行EXCEL程序
7 P4 r6 t) `+ W        Set E = New Excel.Application5 G8 g2 p' Z, m
        '在EXCEL中插入工作薄: A6 l6 @( }' n2 k0 E
        Set B = E.Workbooks.Add
' ]( N/ i' r4 p6 K' T        '定义工作表; J+ \/ u* n3 j- u  Y* _# n
        Set S = B.ActiveSheet
1 E0 H9 m1 Q8 \, e# `        '显示EXCEL程序# N1 r5 V7 a2 w  h" O) T
        E.Visible = True- O5 l& b& l+ o  w2 |
         '遍历选择集并处理被选中的单行文字或多行文字对象- @: |' N9 ~. p) B! m3 V' t
        For Each T In SS$ B# y' B5 x& S: P$ H: }
            I = I + 1
& Y! L) E5 v" I0 ~# h* P            '把单行文字或多行文字的内容写入表格  g+ M" `% i* c9 u
            '对于多行文字,如果直接写入则字符串中很可能包含转义符,使用者可根据需要对字符串运算处理后再写入表格
3 I' ~1 o; d: v1 s& s            S.Cells(I, 1).Value = T.TextString- z7 O- _- r& u: _5 s6 o
        Next
" P# [2 C: u+ p    End If
% ~. b) q2 c% v& N    SS.Delete '删除用过的选择集
1 x. @9 U$ B9 rEnd Sub
. A3 J$ d* p5 _0 u4 z-----------------------------------------------------------------
  I( ^: J$ N$ h+ X8 }) s! D$ Z/ Y3 C2 I5 u" ]
“Alt+F11”打开VBA编辑器,将以上代码复制粘贴到thisdrawing对象代码窗口,在“工具”菜单下点“引用”,选择EXCEL类库(名称与EXCEL版本有关,如EXCEL2000为“Microsoft Excel 9.0 Object Library”),确定后即可使用。# ~, \& V8 a3 @2 N' e) U' S9 D( n
4 _. p" @2 R# a- f. ^9 T
[ 本帖最后由 woaishuijia 于 2008-7-19 02:39 编辑 ]

评分

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

查看全部评分

 楼主| 发表于 2008-7-19 06:51:45 | 显示全部楼层 来自: 中国福建三明
我爱谁家真是高手,很感谢,实现了目标。看来也要学点VBA% b& B  k3 C3 [" v" J" ?
楼上还搞到这么晚,辛苦了(应该今天不用上班了吧),再一次多谢了* o9 Q, j% x- X
  S  b9 c5 H: o; K- i& g0 C& I
[ 本帖最后由 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 )

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