QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
4天前
查看: 4560|回复: 11
收起左侧

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

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

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

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

x
一DWG格式图纸,内有众多的多行文字,如果用复制.粘贴的办法是可以提取多行文字内的文字,但太慢了,不知有没什么办法" i. N* c, S" U

* V/ u! F# Y( m5 p[ 本帖最后由 wsj249201 于 2008-7-19 08:34 编辑 ]
发表于 2008-7-18 13:28:24 | 显示全部楼层 来自: 中国四川成都
要看你往什么地方提,提来干嘛,OK?
发表于 2008-7-18 13:40:52 | 显示全部楼层 来自: 中国浙江台州
文字单独设图层4 z/ k8 P  W# o. E9 [# M) L4 [
屏蔽其他图层就可以快速提取所有文字了
 楼主| 发表于 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 | 显示全部楼层 来自: 中国江苏苏州
用特定对象选择,只选择文本6 t4 b/ `$ Z+ _! s
来进行提取
 楼主| 发表于 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例程:
2 D, B) g. U- z1 W9 G& D
$ n! B5 j8 X, c2 t  F1 s-----------------------------------------------------------
, a7 G/ \8 \% ]Sub TQ(); {# X  l# `0 ?( L: c! Z; _4 z
    On Error Resume Next
. L/ B' H8 k5 `( @6 m& C: b; [8 J- H    Dim I As Integer
$ H+ Z2 R# n- H+ j& S4 n: E4 L    Dim E As Excel.Application, B As Workbook, S As Worksheet9 {) z" b8 J- |: J9 C7 r
    Dim SS As AcadSelectionSet, T As Object, FT(3) As Integer, FD(3) As Variant
& y" Y' E+ Z1 g0 h; l) L    '下面定义选择集过滤器列表为多行文字或单行文字
! h1 l% N/ |8 V    FT(0) = -4: FD(0) = "<or"0 a$ J$ g+ {- I( M8 e- z
    FT(1) = 0: FD(1) = "mtext"$ M# B9 s/ j; @# @$ @
    FT(2) = 0: FD(2) = "text"$ n* S& D$ i- [( z0 k$ a
    FT(3) = -4: FD(3) = "or>"
8 B2 D  a- K/ B% _2 e    '创建选择集
& q" {; s* v: Y' Y- Y3 Y' t    Set SS = ThisDrawing.SelectionSets.Add("SS")
- y. k0 X& J- a7 p$ d0 a  I    '在屏幕上选择多行文字或单行文字对象. q' n3 v7 }# h5 }8 h
    SS.SelectOnScreen FT, FD7 Y6 @, G5 c# m# m; Q% T
     '如果选择集不为空则运行以下代码
4 T" A9 ]. E2 w2 F- _- d+ Z. }% _- y    If SS.Count > 0 Then3 H& M# V5 z$ ?0 A
        '运行EXCEL程序0 U$ u+ [! Y5 z* I% L! {
        Set E = New Excel.Application( U- O, z  F7 I/ C3 W( S
        '在EXCEL中插入工作薄* Y2 V4 q9 a) X! s3 s3 \
        Set B = E.Workbooks.Add
. f# F' u4 k2 T, n, e- Z        '定义工作表
/ \1 k4 e; o- I        Set S = B.ActiveSheet
$ W- J" j: ?# h7 ]) S. |, ]        '显示EXCEL程序
5 {; l9 }0 k$ c2 H        E.Visible = True
, [, N$ G+ M2 S+ n' j  N  z+ M4 ]         '遍历选择集并处理被选中的单行文字或多行文字对象7 [* `2 |  P- ?( }; Z
        For Each T In SS; S- V2 M. |& L, H+ m( d
            I = I + 1
6 L5 n7 I6 x( p( F+ _5 W6 D5 E            '把单行文字或多行文字的内容写入表格# `' \6 h: h2 C# E0 D6 k0 D
            '对于多行文字,如果直接写入则字符串中很可能包含转义符,使用者可根据需要对字符串运算处理后再写入表格
8 L* y6 C3 f& G2 Q) f; Y            S.Cells(I, 1).Value = T.TextString
- c/ _: e2 L8 h* x        Next% t6 K% Z8 q& T% @9 R) `+ K
    End If5 n! Q* ^; u: w( r& Z* b
    SS.Delete '删除用过的选择集5 e6 o! J' c+ l- \) k, X1 ~* G+ W
End Sub
( E2 L& R) h3 ^9 F/ f* i1 M" M-----------------------------------------------------------------1 p; x9 ^0 H/ {8 w" ?

* T- p  m$ H- v2 P! F, {7 u; m“Alt+F11”打开VBA编辑器,将以上代码复制粘贴到thisdrawing对象代码窗口,在“工具”菜单下点“引用”,选择EXCEL类库(名称与EXCEL版本有关,如EXCEL2000为“Microsoft Excel 9.0 Object Library”),确定后即可使用。
# X; B+ P1 B3 D: c) {% p( [, p9 o( ^/ u
[ 本帖最后由 woaishuijia 于 2008-7-19 02:39 编辑 ]

评分

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

查看全部评分

 楼主| 发表于 2008-7-19 06:51:45 | 显示全部楼层 来自: 中国福建三明
我爱谁家真是高手,很感谢,实现了目标。看来也要学点VBA1 k, K1 h" M: J/ K
楼上还搞到这么晚,辛苦了(应该今天不用上班了吧),再一次多谢了  a; x( A: T! Q$ D. n& z

% A* q7 ~) s! a) Y2 d" T, a[ 本帖最后由 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 )

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