QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
9天前
查看: 6230|回复: 5
收起左侧

[已答复] VBA:如何查找并替换块内文字?

[复制链接]
发表于 2011-12-7 14:54:44 | 显示全部楼层 |阅读模式 来自: 中国浙江杭州

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

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

x
RT+ u- K4 G1 n% m4 a. @
: ~2 Y: H, t% C8 _. @) S
有一批图纸需要更改文字,但文字时以块的形式出现的,包括两行单行文字
0 n* o' `2 `  N: |
! [$ u$ e. O9 l4 ~: E其中一行为中文,另一行为英文,内容固定
' X" v- ~$ U' U- Q3 Z7 i% ?- {
9 k4 }1 }3 g8 C' b9 F  L比如中国杭州和Hangzhou China
3 r0 f8 _) v- v1 W% x2 z
8 F' [; h3 J& m5 m现在要统一改为杭州和Hangzhou4 S: c% w9 W. l, U8 M+ T! a
7 j! f$ r4 e+ W: W0 `0 N5 K
但块的名字不知道
, t, `" u- ]& l3 Y$ e! H
5 m4 C+ c9 U& h7 K6 u
& ]$ f& p) o% X请问如何用程序实现?请大虾帮忙,谢谢
 楼主| 发表于 2011-12-14 14:23:58 | 显示全部楼层 来自: 中国浙江杭州
自己顶下,还没解决问题,不能沉了
发表于 2011-12-14 19:27:23 | 显示全部楼层 来自: 中国辽宁
你若是真心求助,就应该提供尽可能详细的信息,比如一份DWG文件.
 楼主| 发表于 2011-12-15 13:10:33 | 显示全部楼层 来自: 中国浙江杭州
3# woaishuijia   d3 V/ Z, L. s" n
9 n; p- X" k$ R
最近实在是太忙了,不好意思* q. {; m) Y" }' T: D3 u. w
中国杭州改为杭州.dwg (79.74 KB, 下载次数: 6)
发表于 2011-12-15 20:05:46 | 显示全部楼层 来自: 中国辽宁
本帖最后由 woaishuijia 于 2011-12-15 20:07 编辑
( y* f- `$ Y! g& R1 s& y1 Q
5 O0 r: [8 n% C) }下面的代码只针对上传的文档,仅供参考
3 G0 O, @0 V" {# T; b
  1. Sub A()
    % ?1 S+ B4 j+ c4 o  c" Q& M
  2. Dim Path As String, FileName As String, D As AcadDocument, B As AcadBlock7 j% V% |9 n8 x! m' v7 |. O, |6 ]
  3. On Error GoTo 10
    8 D( W$ Z+ b2 F7 ~. X* p
  4. '由用户在CAD当前文档的命令行输入需要修改的文件所在目录
    9 w  E4 s7 t9 u
  5. Path = ThisDrawing.Utility.GetString(True, vbCrLf & "指定文件所在目录:" )
    5 J2 \$ [! y& A4 i
  6. '如用户输入的目录字符串最后一个字符为""则去掉, o! h- d; N6 k; H! x$ h* |+ O
  7. If Left(Path, 1) = "" Then Path = Right(Path, Len(Path) - 1)
    " h! m2 j! k# v  y
  8. '逐个打开该目录下的所有"*.DWG"文档8 K9 W" T. h8 G+ ]# M1 \
  9. FileName = Dir(Path & "\*.dwg" )
    ' {2 T3 W. T1 |$ U
  10. Do Until FileName = ""+ [  t& v" K: B; O% o
  11.     Set D = ThisDrawing.Application.Documents.Open(Path & "" & FileName)
    1 ~! d/ T# Q, G# s9 S0 u: l
  12.     '遍历该文档中所有块定义6 K" T% T7 s" ^% x3 U, z+ @" D: V8 Y
  13.     For Each B In D.Blocks
    5 ?6 o" t5 K% Z& p
  14.         '如果该块定义中只有两个元素则进一步检查其中内容
    % \+ e* f2 e, k! k. d5 F
  15.         '否则跳过9 t8 m: [7 j% f( s
  16.         If B.Count = 2 Then$ B4 @+ F* \# \' `  ^: u
  17.             '检查块元素是否为单行文字对象
    9 ^9 W$ T) u! l" J" r; W1 _1 G" A
  18.             If B.Item(0).ObjectName = "AcDbText" And B.Item(1).ObjectName = "AcDbText" Then
    7 V6 C; J; C! A, ~& V6 i
  19.                 '检查单行文字的内容,如符合要求即修改之,然后保存
    / N1 U, o% L- y& K4 M
  20.                 If B.Item(0).TextString = "中国杭州" And B.Item(1).TextString = "Hangzhou China" Then
    ' D/ \: ]! s: H: A/ A3 o
  21.                     B.Item(0).TextString = "杭州"
    , Z, }* k  J0 G  {7 B8 N0 v/ F1 {# U5 ~
  22.                     B.Item(1).TextString = "Hangzhou"
    # S; [6 b6 s: K" n5 P# p- Y
  23.                     D.Save
    : i5 L5 Z1 j8 S8 X
  24.                 ElseIf B.Item(0).TextString = "Hangzhou China" And B.Item(1).TextString = "中国杭州" Then
    , Y' ^7 R  K! Z  b4 {! b! t9 u
  25.                     B.Item(0).TextString = "Hangzhou"
    7 P( S1 w  {/ ?+ ~8 w
  26.                     B.Item(1).TextString = "杭州"3 H/ m2 F* U. g7 g3 r9 ?$ V& g
  27.                     D.Save
    5 j- k. k. F9 [/ u
  28.                 End If
    1 |- g2 u# m2 x! K$ P9 x* Q
  29.             End If4 V. E$ F5 j% S8 D/ [
  30.         End If1 E7 X+ b2 k$ l- \/ k$ O
  31.     Next( w1 O. C& p6 c) X0 p9 Y8 L7 o
  32.     '关闭打开的文档
    + |: o* J# E  V! U' ?7 Q) M
  33.     D.Close
      o. J4 T) M3 `. X/ J+ \9 }
  34.     '获取下一个文件名6 ~0 M9 s3 R7 E4 q0 c7 v
  35.     FileName = Dir()% a/ u, c7 w: o1 V. v! V# C/ x
  36. Loop
    ) e! F( b* j# X4 t
  37. 10: End Sub
复制代码
 楼主| 发表于 2011-12-16 08:49:38 | 显示全部楼层 来自: 中国浙江杭州
非常感谢版主,问题解决了
, p: a& |2 e* Q" ~+ Y  {2 _3 v
1 q- N0 }3 Z* s0 X) M! ]再次感谢
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

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