乐筑天下

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

[编程交流] VB外部参照搜索

[复制链接]

16

主题

43

帖子

33

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
85
发表于 2022-7-6 17:08:09 | 显示全部楼层 |阅读模式
(使用AutoCAD 2000)
你好
 
我有一个快速的外部参照问题。有人能帮我用一些VB代码在附着的外部参照中“搜索”吗?我需要浏览数百个图形,如果它们包含某个外部参照,我想删除它。
 
要从图形中删除的外部参照有一个静态名称,因此应该会更容易-但我不知道如何将外部参照“搜索”功能合并到程序中。
 
基本上我想:
-打开文件夹中的每个图形(我已经有了这样做的代码)
-搜索名为“基础图形”的外部参照
-如果它存在,我想删除它。如果它不存在,我想移到下一个图形
 
是否可以以这种方式搜索外部参照?有人能帮我吗?
 
非常感谢。
迈克
回复

使用道具 举报

28

主题

130

帖子

126

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
154
发表于 2022-7-6 17:22:56 | 显示全部楼层
使用Objectdbx可以做到这一点-它可以更快地悄悄打开图形,然后在autocad中实际打开图形
 
我没有vb在我面前,我不记得代码分离,但你应该能够解决它
 
告诉我进展如何
 
干杯
 
 
  1. Option Explicit
  2. Sub CHANGEXREFS ()
  3. Dim AcadDbx As AxdbDocument
  4. Dim Direc As String
  5. Dim Elem as object
  6. Dim Filenom as string
  7. Dim Wholefile as string
  8. Set AcadDbx = GetInterfaceObject("OjectDBX.AxDbDocument.17")
  9. On Error Resume Next
  10. Direc = "c:\program files\AutoCAD Civil 3D 2008\Sample" 'Change to your directory or link directory to a form
  11. Filenom = Dir$(Direc & "\*.dwg")
  12. Do While filenom <> ""
  13. Wholefile = Direc & "" & filenom
  14. msgbox wholefile ' i just put this here to show you that it is opening the files
  15. AcadDbx.open Wholefile
  16. For Each Elem In AcadDbx.Blocks
  17.    If elem.IsXRef = True and elem.name = "Base-Drawing" then
  18. Msgbox "PUT YOUR CODE HERE WHAT YOU WNAT TO DO WITH THE XREF"
  19. 'it should be something like 'elem.Detach = true (cant remember)
  20. End if
  21. Next 'Next Elem
  22. Set Elem = Nothing
  23. Filenom = Dir$
  24. Loop
  25. set AcadDbx = Nothing
  26. end sub
回复

使用道具 举报

16

主题

43

帖子

33

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
85
发表于 2022-7-6 17:37:18 | 显示全部楼层
这对我很有效。谢谢你的帮助!
回复

使用道具 举报

16

主题

43

帖子

33

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
85
发表于 2022-7-6 17:44:33 | 显示全部楼层
啊,嗯。有人能告诉我为什么在向代码中添加第二个外部参照时出现“循环未初始化”错误吗?
 
  1. For Each Elem In [color=black]AcadDbx.Blocks[/color]
  2.    If Elem.IsXRef = True And Elem.Name = "[color=black]Base-Drawing"[/color] Or Elem.IsXRef = True And Elem.Name = "Temp-Base" Then
  3.    Elem.Detach
  4.    End If
  5. Next
回复

使用道具 举报

10

主题

973

帖子

909

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 17:51:25 | 显示全部楼层
我没有办法对此进行测试,但请尝试:
 
  1. For Each Elem In AcadDbx.Blocks
  2.    If Elem.IsXRef = True And (Elem.Name = "Base-Drawing" Or Elem.Name = "Temp-Base") Then
  3.    Elem.Detach
  4.    End If
  5. Next
回复

使用道具 举报

16

主题

43

帖子

33

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
85
发表于 2022-7-6 18:02:13 | 显示全部楼层
这奏效了。我不知道为什么会有不同,但它有效,而且更干净,所以我不会想太久!英雄联盟
 
谢谢你的帮助!
回复

使用道具 举报

0

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 18:13:09 | 显示全部楼层
是否有方法修改此脚本以生成外部参照链接到的图形列表,而不是删除外部参照?例如,我有一个名为“site plan”的外部参照图形,它链接到20个其他图形。我想打印这些图纸的列表,参考“现场平面图”。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 16:51 , Processed in 0.454106 second(s), 66 queries .

© 2020-2025 乐筑天下

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