ldh168 发表于 2003-11-13 13:26:00

小妹在向各们请教一个小东东

我已经可以用OLE打开图了
现在有个新的问题,你们一定有感受过用OLE打开已绘好的图时打开的时间很长,但在CAD打开图时速度很快,现在我有个想法如何调用AUTOCAD本身的打开文件的命令,请指教
我的意思:如果AUTOCAD已经打开,我用VB或PB直接就可以像ACAD一样快速打开指定的文件,如打开文件为c:\大家好.dwg .

风魔飘香 发表于 2003-11-13 14:28:00

OLE原本就是很慢的。你为什么一定要用OLE呢?

ldh168 发表于 2003-11-13 17:11:00

有什么高招请指教

myfreemind 发表于 2003-11-13 17:55:00

thisdrawing.application.document.open "c:\大家好.dwg "

subtlation 发表于 2003-11-13 18:49:00

下面是简单的打开文件程序,没有错误处理的代码

Public Sub openfile()
on error resume next
Dim acadapp As AcadApplication
Set acadapp = GetObject(, "acad.application")
If Err Then
   Err.Clear
   Set acadapp = CreateObject(, "acad.application")
End If
acadapp.Visible = True
Dim myFilename As String
myFilename = "C:\123.dwg"
acadapp.Documents.Open myFilename

End Sub

武文弄墨 发表于 2003-11-14 09:42:00

对楼上的再补充一点!
在createobject过程中,是否要加入版本信息呢?
引一段cad2004的帮助:
如果 CreateObject 或 GetObject 函数使用的是独立于版本的 ProgID,则将函数更改为使用依赖于版本的 ProgID。对于 AutoCAD 2004,请使用依赖于版本的 ProgID。
例如,如果在 AutoCAD 2004 中使用 CreateObject,请将 CreateObject ("AutoCAD.Application") 替换为 CreateObject ("AutoCAD.Application.16")。

此外,如果 GetInterfaceObject 方法使用的是独立于版本的 ProgID,则必须将该方法更改成使用依赖于版本的 ProgID。

注意如果在以前版本的 AutoCAD 中使用 CreateObject、GetObject 或 GetInterfaceObject,则需要使用对应版本的 ProgID。例如,对于 AutoCAD 2002,需要将 CreateObject ("AutoCAD.Application") 替换为 CreateObject ("AutoCAD.Application.15")。

ldh168 发表于 2003-11-14 12:06:00

在VB上如何用fileopen 命令打开c:\123.dwg
在AUTOCAD上用fileopen 命令打开c:\123.dwg速度很快

subtlation 发表于 2003-11-14 12:19:00

6楼的说得对。代码应该改改。
我一直用的是vba,不需要考虑cad是否已经打开的问题。
楼主重复一遍是什么意思?

ldh168 发表于 2003-11-14 17:31:00

用VB如何速度打开指定的DWG文件,如打开c:\123.dwg ,不能用OLE太慢了,
在AUTOCAD上用fileopen 命令打开c:\123.dwg速度很快

武文弄墨 发表于 2003-11-14 21:10:00

已经解释的非常清楚了呀!
注意在vb工程里面,要引用cad版本对应的tlb
页: [1] 2
查看完整版本: 小妹在向各们请教一个小东东