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

2006年dvb在2007年?

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

Keith™ 发表于 2007-2-16 13:13:43

是的,除非你做了什么疯狂的事,把它贴出来,我'我帮你试试

jbuzbee 发表于 2007-2-17 15:41:55

为了使用Acad 2007,我不得不更改DVB的参考:Autocad/Objectdbx Common 16.0类型库必须替换为Autocad/ObjObjectDBx Common 17.0类型图书馆。

Keith™ 发表于 2007-2-17 18:14:49

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

jbuzbee 发表于 2007-2-19 10:31:03

谢谢大家的回复 本人'我对VBA很陌生
基思,所以不要设置;“硬”;工具/引用/对话框中的引用;我可以(应该)在模块中设置它们&nbsp
现在,我在模块&中引用了ObjectDBX 16.0类型库;使用以下语句Dim dbxDoc As AxDbDocument 因此,我应该删除引用并添加以下内容:
Set dbx = GetObject(,"ObjectDBX")
Dim dbxDoc as dbx.AxDbDocument ??

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

简而言之,是的,除了你需要使用;GetInterfaceObject“;对于ObjectDBX库
因此..在本例中,您只需要运行应用程序,而不需要添加对类型库的任何引用
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,但如果以编程方式设置引用,它将从计算机上的当前版本加载类,而不是尝试从开发计算机加载类
哦..你不't根据&#039加载ObjectDBX对象;实际上,您加载了文档界面,然后打开了您想要操作的文档。

jbuzbee 发表于 2007-2-23 13:36:46

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