明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2236|回复: 6

请问怎样修改此段程序?VB中做CAD外部引用

[复制链接]
发表于 2008-3-29 17:12:00 | 显示全部楼层 |阅读模式

我按照国防工业出版社的《AutoCAD ACTIVEX/VBA二次开发技术基础及应用实例》的VB编一个例子:外部引用

但是一编译就是出错,请看看怎么回事?

Private Sub Command3_Click()
    Dim xrefInserted As AcadExternalReference
    Dim insertionPnt(0 To 2) As Double
    Dim PathName As String
    insertionPnt(0) = 10: insertionPnt(1) = 100: insertionPnt(2) = 0
    PathName = "D:\Personal\My Documents\My eBooks\border60.dwg"
    Set xrefInserted = ThisDrawing.ModelSpace.AttachExternalReference(PathName, "WXREF", insertionPnt, 1, 1, 1, 0, False)
End Sub

一编译红色区域就讲出错,望高手看看。

发表于 2008-3-30 19:45:00 | 显示全部楼层

给你完整代码
Private Sub Command1_Click()
'AutoCAD与visual basic连接
On Error Resume Next
Set obj_Acad = GetObject(, "autocad.application")
If Err Then
   Err.Clear
   On Error Resume Next
   Set obj_Acad = CreateObject("autocad.application")
   If Err Then
      Err.Clear
      MsgBox "不能运行AutoCAD,请检查是否安装!", vbOKCancel, "警告!"
      Exit Sub
      End If
End If
obj_Acad.Visible = True
Set obj_Doc = obj_Acad.ActiveDocument
Set obj_ModelSpace = obj_Doc.ModelSpace


    Dim xrefInserted As Object
    Dim insertionPnt(0 To 2) As Double
    Dim PathName As String
    Dim tempBlock As Object
    Dim msg As String
    insertionPnt(0) = 10: insertionPnt(1) = 100: insertionPnt(2) = 0
    PathName = "D:\Personal\My Documents\My eBooks\border60.dwg"
    Set xrefInserted = obj_ModelSpace.AttachExternalReference(PathName, "WXREF", insertionPnt, 1, 1, 1, 0, False)
    GoSub ListBlocks
    Exit Sub

ListBlocks:
    msg = vbCrLf 
    For Each tempBlock In obj_Doc.Blocks
        msg = msg & tempBlock.Name & vbCrLf    
    Next
    MsgBox "图中包含的块有: " & msg
    Return
End Sub

*************************************************************

西北凡人-----http://www.abofanyi.com/blog

发表于 2008-4-1 22:27:00 | 显示全部楼层
不错,谢谢
发表于 2011-12-7 17:39:08 | 显示全部楼层
azjmjsj 发表于 2008-3-30 19:45
给你完整代码Private Sub Command1_Click()'AutoCAD与visual basic连接On Error Resume NextSet obj_Acad = ...

调试了下怎么不行?其它人可以吗?
xrefInserted的返回值是nothing图片没显示出来
望指教 谢谢
发表于 2011-12-8 10:13:35 | 显示全部楼层
在VB中调用CAD,ThisDrawing.不可用,应该用acitvedocument
发表于 2011-12-8 10:14:45 | 显示全部楼层
完整代码应该没问题啊
发表于 2011-12-8 15:45:20 | 显示全部楼层
geabus 发表于 2011-12-8 10:14
完整代码应该没问题啊

是没用ThisDrawing   可是我调试了很多次了
AttachExternalReference这句总是不成功,返回错误:访问额文件失败 它的对象值是nothing
这跟版本有关系吗?用的是autocad2007
你调试通过了?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 18:57 , Processed in 0.157084 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表