乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 65|回复: 3

添加/更新文本文件名(Microstation)

[复制链接]

8

主题

81

帖子

45

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
76
发表于 2010-12-7 12:59:55 | 显示全部楼层 |阅读模式
我需要一种在microstation图形中自动添加/更新包含文件名的文本的方法。这有助于使用excel中创建的五音表进行文本替换。办公室正在使用v8和xm,没有计划在短期内使用新版本
我查阅了一些代码示例并将其放在一起,它可以扫描dgn中的文本(包含.dgn)用新文件名更新,如果不是't发现,它扫描附加的参考文件中的文本进行复制和更新
这是第一个vba代码i'我和我放在一起'我很好奇它怎么能缩短或写得更有效。本人'我想继续学习适用于v8/xm的microstation vba,这将是一个有用的示例。感谢所有帮助/建议。提前谢谢你,Juan
  1. Sub AddFileName()
  2. Dim ee As ElementEnumerator
  3. Dim esc As ElementScanCriteria
  4. Dim oAttach As Attachment
  5. Dim oTextele As TextElement
  6. Dim CopiedElement As TextElement
  7. Dim path As String
  8. Dim NewStr As String
  9. Set esc = New ElementScanCriteria
  10. path = GetDgnFileName(ActiveModelReference)
  11. esc.ExcludeAllTypes
  12. esc.IncludeType msdElementTypeText
  13. esc.IncludeType msdElementTypeTextNode
  14.     Set ee = ActiveModelReference.Scan(esc)
  15.     Do While ee.MoveNext
  16.             If ee.Current.IsTextElement Then
  17.                 Set oTextele = ee.Current
  18.                 If InStr(1, oTextele.Text, ".dgn", vbTextCompare) Then
  19.                         If Not (NewStr = path) Then
  20.                             Set CopiedElement = oTextele
  21.                             NewStr = CopiedElement.Text
  22.                             NewStr = Replace(NewStr, NewStr, path)
  23.                             CopiedElement.Text = NewStr
  24.                             CopiedElement.Rewrite
  25.                         End If
  26.                 End If
  27.             End If
  28.      Loop
  29. For Each oAttach In ActiveModelReference.Attachments
  30.     Set ee = oAttach.Scan(esc)
  31.     Do While ee.MoveNext
  32.             If ee.Current.IsTextElement Then
  33.                 Set oTextele = ee.Current
  34.                 If InStr(1, oTextele.Text, ".dgn", vbTextCompare) Then
  35.                         If Not (NewStr = path) Then
  36.                             Set CopiedElement = ActiveModelReference.CopyElement(oTextele)
  37.                             NewStr = CopiedElement.Text
  38.                             NewStr = Replace(NewStr, NewStr, path)
  39.                             CopiedElement.Text = NewStr
  40.                             CopiedElement.Rewrite
  41.                         End If
  42.                 End If
  43.             End If
  44.      Loop
  45.    Next
  46. End Sub


回复

使用道具 举报

16

主题

44

帖子

13

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2010-12-7 16:09:55 | 显示全部楼层
在不评论代码的情况下,有什么理由不使用笔表的文本替换功能吗?我刚刚参与了一个本地点项目,在它们的表单边框中有一些不同的文本字符串,如$username$和$dgnname$,它们的绘图驱动程序会自动调用它们的五角大楼,它会自动用完整路径文件名和我的Windows用户名替换它们
我不知道文本字符串必须完全匹配。换句话说,您不能将其作为字符串:
文件:$dgname$
,除非文件:部分是一段文本,$dgnname$是一段单独的文本。
回复

使用道具 举报

8

主题

81

帖子

45

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
76
发表于 2010-12-7 16:47:12 | 显示全部楼层
感谢您的回复
让我再解释一下这种情况:
我们已经在文本替换中使用了pentable(包括放置在边框顶部的$dgn$)。但为了更新页码,我们替换了实际的文件名。文本必须包含文件名,因为它不能替换另一个文本替换字符串
例如:假设文件名为drawing1.dgn&nbsp&nbsp&引用$dgn$”;打印为“;图纸1.dgn“;带五音&nbsp&nbsp&引用;图纸1.dgn“;打印为“;1“;带五角大楼&nbsp
这段代码的作用是搜索包含“的字符串”;。dgn“;使用当前文件名更新或复制/更新以与笔表一起使用。您可以想象,如果将其用于包含数百个图形的项目,会有多大帮助
回复

使用道具 举报

8

主题

81

帖子

45

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
76
发表于 2010-12-10 09:05:02 | 显示全部楼层
对于该站点的少数microstation用户…
请点击这里#039;这是我从'MicroStation V8 2004版-VBA和#039;社区论坛。bentley.com
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-1 03:59 , Processed in 0.363715 second(s), 61 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表