QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
一DWG格式图纸,内有众多的多行文字,如果用复制.粘贴的办法是可以提取多行文字内的文字,但太慢了,不知有没什么办法- x6 }1 N5 r' i  o2 A

1 z, |9 @7 ^1 s! U; F7 x[ 本帖最后由 wsj249201 于 2008-7-19 08:34 编辑 ]
发表于 2008-7-18 13:28:24 | 显示全部楼层 来自: 中国四川成都
要看你往什么地方提,提来干嘛,OK?
发表于 2008-7-18 13:40:52 | 显示全部楼层 来自: 中国浙江台州
文字单独设图层
" g( R( ?' Q" @屏蔽其他图层就可以快速提取所有文字了
 楼主| 发表于 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 | 显示全部楼层 来自: 中国江苏苏州
用特定对象选择,只选择文本
! e2 t4 A! `6 T2 `+ P" ]来进行提取
 楼主| 发表于 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例程:
5 S! ]8 a" u9 d
1 f: a% n, X. x, x/ `! \-----------------------------------------------------------
6 t' R% F7 B9 d' g4 p8 kSub TQ()( }* ?7 @/ G2 s( r7 @. H2 B- |
    On Error Resume Next
" \. J4 ?: k; E" `; [( ?& Q    Dim I As Integer& y9 \, ?2 [% y
    Dim E As Excel.Application, B As Workbook, S As Worksheet
6 |' N1 ]& _; P. a    Dim SS As AcadSelectionSet, T As Object, FT(3) As Integer, FD(3) As Variant
3 N, U- g0 V$ t) t  j+ H6 {- Y    '下面定义选择集过滤器列表为多行文字或单行文字: M- r+ V! R4 i+ Y) E" E
    FT(0) = -4: FD(0) = "<or"; f2 k. l4 k0 q# U, n$ V- Q# D
    FT(1) = 0: FD(1) = "mtext"% v- q' |: \; A: j- ^1 {/ n
    FT(2) = 0: FD(2) = "text"7 @9 Q/ F: W0 i0 {; P" R. D1 X
    FT(3) = -4: FD(3) = "or>"
" g4 S. |3 Y' t) {# b' F. U2 P    '创建选择集
$ w! J! @1 [: H. J2 L    Set SS = ThisDrawing.SelectionSets.Add("SS")
% D0 Q: e0 w+ C" v; C% f    '在屏幕上选择多行文字或单行文字对象
1 q0 M* A4 V9 |# G6 Z3 T    SS.SelectOnScreen FT, FD, y. {$ e" J; [( B7 I
     '如果选择集不为空则运行以下代码$ z+ f8 T+ Y/ c
    If SS.Count > 0 Then
" {# i+ l; _+ Q+ n/ N" ~4 y        '运行EXCEL程序
* x  M1 b- U# B1 @        Set E = New Excel.Application
7 r. w9 H% I3 m1 P8 }        '在EXCEL中插入工作薄
3 y4 E3 f9 j: G2 I; f, H        Set B = E.Workbooks.Add
. E. u9 ]8 T- a6 \. ?$ I        '定义工作表* e7 C' F1 r" ]# ]0 ~+ N
        Set S = B.ActiveSheet
  d: f" o3 y3 r. y1 c3 P( \        '显示EXCEL程序0 J9 k7 D9 p) T, f" i5 k9 H5 J# l
        E.Visible = True1 M5 i# }/ C# d* s) ^9 \/ E
         '遍历选择集并处理被选中的单行文字或多行文字对象
. v, c6 c! X3 x, Y' W& _1 l        For Each T In SS6 V* d: T' ?+ p+ C2 e9 X4 m: F7 M
            I = I + 1
- I4 B7 H4 L# n. q* l            '把单行文字或多行文字的内容写入表格
9 E5 L% E+ a/ m" k8 m            '对于多行文字,如果直接写入则字符串中很可能包含转义符,使用者可根据需要对字符串运算处理后再写入表格! |" l& @5 s( Q- Y) O
            S.Cells(I, 1).Value = T.TextString. s3 Z) J" t6 O5 `
        Next
7 f8 A2 A$ c  o9 }- @$ Z# T$ J$ o    End If
" a7 W0 k+ Z# V. T' x7 L8 N    SS.Delete '删除用过的选择集
- A# l. [8 j4 b: A, k! A. L! P; i2 dEnd Sub
' ~6 B; B$ B- ?5 \1 T; V-----------------------------------------------------------------
2 z! E/ S7 b0 h8 N5 l- B3 {, A# O
“Alt+F11”打开VBA编辑器,将以上代码复制粘贴到thisdrawing对象代码窗口,在“工具”菜单下点“引用”,选择EXCEL类库(名称与EXCEL版本有关,如EXCEL2000为“Microsoft Excel 9.0 Object Library”),确定后即可使用。6 z; h2 D! ^4 C* e( ~

2 x, d! X# q/ ~1 K+ o$ I[ 本帖最后由 woaishuijia 于 2008-7-19 02:39 编辑 ]

评分

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

查看全部评分

 楼主| 发表于 2008-7-19 06:51:45 | 显示全部楼层 来自: 中国福建三明
我爱谁家真是高手,很感谢,实现了目标。看来也要学点VBA1 B1 c4 ^- @: i( }  P7 P# @5 I
楼上还搞到这么晚,辛苦了(应该今天不用上班了吧),再一次多谢了9 Q$ ]5 j9 S" s0 f

, O1 L0 T& g  I% A8 x[ 本帖最后由 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 )

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