jbuzbee 发表于 2007-2-16 13:12:07

2006年dvb 2007年?

在ACAD2006中创建的dvb文件在2007中可以工作吗?
**** Hidden Message *****

havano 发表于 2007-2-16 13:13:43

是的,除非你做了一些疯狂的事情
发布它,我会为你尝试

Keith™ 发表于 2007-2-17 15:41:55

我必须更改DVB的引用才能使用Acad 2007:Autocad/Objectdbx Common 16.0类型库必须替换为Autocad/Objectdbx Common 17.0类型库。

jbuzbee 发表于 2007-2-17 18:14:49

让dvb文件跨多个版本工作的问题之一是早期绑定。如果您要使用VBA或AutoCAD类型库以外的特定类型库,如果您进行后期绑定,它将使程序更具可移植性。大多数类型库允许您选择基本版本,操作系统将跟踪最新版本。
例如,如果我想获得对AutoCAD 2007的引用,我可以使用
但是如果我想让代码在任何版本上运行,我会使用
Set Acad = GetObject(,"AutoCAD.Application")

我希望那是清晰的...

Keith™ 发表于 2007-2-19 10:31:03

感谢大家的回复!我对VBA很陌生。
Keith,所以我可以(应该)在模块中设置它们,而不是在工具/引用/对话框中设置“硬”引用?
现在我引用了ObjectDBX 16.0类型库,并在模块中使用以下语句
Dim dbxDoc As AxDbDocument
所以我应该删除引用并添加以下内容:

jbuzbee 发表于 2007-2-19 10:59:22

简而言之...是的...除了您需要为ObjectDBX库使用“GetInterfaceObject”。
因此...在本例中,您只需要运行应用程序,而不需要添加任何对类型库的引用。
Sub Test()
    Dim ACDbx As Object
    Dim Block As AcadBlock
    Set ACDbx = GetInterfaceObject("ObjectDBX.AxDbDocument")
    ACDbx.Open ("c:\test.dwg")
    For Each Block In ACDbx.Blocks
      MsgBox Block.Name
    Next
    Set ACDbx = Nothing
End Sub

但是...答案并不总是那么简单,因为并非所有库都适用于所有版本的AutoCAD,但是如果您以编程方式设置引用,它会从计算机上的当前版本加载类,而不是尝试从开发计算机加载类。
哦...而且您本身并没有加载ObjectDBX对象,您实际上加载了文档界面,然后打开了您想要的文档操纵。

Keith™ 发表于 2007-2-23 13:36:46

谢谢基思,我会试试看!
页: [1]
查看完整版本: 2006年dvb 2007年?