QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
一DWG格式图纸,内有众多的多行文字,如果用复制.粘贴的办法是可以提取多行文字内的文字,但太慢了,不知有没什么办法
( e7 _1 r2 D9 j7 i8 K0 ]' I1 z" l* q( \* N
[ 本帖最后由 wsj249201 于 2008-7-19 08:34 编辑 ]
发表于 2008-7-18 13:28:24 | 显示全部楼层 来自: 中国四川成都
要看你往什么地方提,提来干嘛,OK?
发表于 2008-7-18 13:40:52 | 显示全部楼层 来自: 中国浙江台州
文字单独设图层9 \! O# ~  W9 J" T$ t; ~2 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 | 显示全部楼层 来自: 中国江苏苏州
用特定对象选择,只选择文本6 Q1 R% a" W! c1 g* 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例程:
6 d* y5 x- P# u
! T! [9 Z0 @3 k-----------------------------------------------------------
% A" t: h' I; nSub TQ()
+ y! {& f' Y) ^: [8 l    On Error Resume Next; @) m1 D6 |! ^* j+ `  ]
    Dim I As Integer
* J9 v9 W+ U1 K! X( w& J    Dim E As Excel.Application, B As Workbook, S As Worksheet+ Z" q2 w/ x6 J1 j
    Dim SS As AcadSelectionSet, T As Object, FT(3) As Integer, FD(3) As Variant
9 G. M0 \3 x; N$ {    '下面定义选择集过滤器列表为多行文字或单行文字
' b0 j) ?: s% D    FT(0) = -4: FD(0) = "<or"
( |  y" H. e( R' J: f0 Y4 f: H    FT(1) = 0: FD(1) = "mtext"9 `3 r& g& B! `# u
    FT(2) = 0: FD(2) = "text"
1 t3 u$ S6 s' M4 P    FT(3) = -4: FD(3) = "or>"
" S: B" E% i4 c: d: {" S& U    '创建选择集
* R9 w2 Z$ \, ~5 O' F    Set SS = ThisDrawing.SelectionSets.Add("SS"): ^$ l& b. @$ d6 N
    '在屏幕上选择多行文字或单行文字对象& @2 P. L3 t  q) Q- d
    SS.SelectOnScreen FT, FD
2 |+ s( p+ d/ L% O9 q     '如果选择集不为空则运行以下代码) r" t5 Z" I- G$ e
    If SS.Count > 0 Then) l# ]. g& q# T4 y9 }: ^
        '运行EXCEL程序
  {' H9 E3 z: e! m6 P" C        Set E = New Excel.Application
/ D8 T2 z0 S* g: q; X9 ?' i        '在EXCEL中插入工作薄4 L) b1 B) s5 b" c. D7 l/ F" a9 p# p
        Set B = E.Workbooks.Add" J$ l7 {" c- J5 a, q
        '定义工作表
  ?8 {* n* g* O: r6 X        Set S = B.ActiveSheet
/ x' c  G1 E6 k        '显示EXCEL程序
; d3 ^2 v- e$ C- Y  u0 r7 v/ Q        E.Visible = True/ w) ]% M  j" H# K8 |
         '遍历选择集并处理被选中的单行文字或多行文字对象  ?3 I4 }, U$ E1 G9 Q8 [4 O- I
        For Each T In SS
6 M. m9 n5 o3 r9 C" b            I = I + 1
( u2 }/ A* M+ {5 N9 m& D9 p9 d            '把单行文字或多行文字的内容写入表格
3 w# \2 [: D/ `4 N3 O9 A6 J            '对于多行文字,如果直接写入则字符串中很可能包含转义符,使用者可根据需要对字符串运算处理后再写入表格7 f# B0 S$ ], G( L+ L
            S.Cells(I, 1).Value = T.TextString
1 v- N, T: K2 r9 `3 B. c! d        Next8 u+ h3 x7 ]5 t) s3 {! m
    End If
# n# \" j! ~; t* ], X    SS.Delete '删除用过的选择集
/ ^) D, b. I) B' e  h% i1 GEnd Sub
+ s+ {5 K: |6 O( q$ j+ U' M( k-----------------------------------------------------------------
2 f1 Q* i/ ]( D2 f1 p$ \8 Y( {. J- r, G* d; @; d7 w
“Alt+F11”打开VBA编辑器,将以上代码复制粘贴到thisdrawing对象代码窗口,在“工具”菜单下点“引用”,选择EXCEL类库(名称与EXCEL版本有关,如EXCEL2000为“Microsoft Excel 9.0 Object Library”),确定后即可使用。/ h' C3 ~5 \1 l9 M/ [
1 C% u& W5 m) q* W4 E( \
[ 本帖最后由 woaishuijia 于 2008-7-19 02:39 编辑 ]

评分

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

查看全部评分

 楼主| 发表于 2008-7-19 06:51:45 | 显示全部楼层 来自: 中国福建三明
我爱谁家真是高手,很感谢,实现了目标。看来也要学点VBA
& d) _' ~5 A8 K; g  T$ y楼上还搞到这么晚,辛苦了(应该今天不用上班了吧),再一次多谢了
$ w" c- {! K. q( b' n, U5 C) G6 d" @
* c; [' S6 z3 O& C0 o% y[ 本帖最后由 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 )

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