明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2950|回复: 13

请教一个关于VB的引用问题?

  [复制链接]
发表于 2005-8-2 08:42:00 | 显示全部楼层 |阅读模式
我的程序引用了AutoCAD2000的库能控制cad的操作,但是人家的机子有可能是高版本的cad,如果我仍旧引用cad2000的库(lib),程序安装时将此库文件也同时压缩打包给用户,请问如果对方的机器上是装的cad2004,我的程序还能控制打开cad2004的文档吗?
发表于 2005-8-3 21:47:00 | 显示全部楼层
可以用后期绑定的方法,不指定acad的版本。
 楼主| 发表于 2005-8-4 07:52:00 | 显示全部楼层

请教楼上的兄弟,如何用后期绑定啊,小弟永世难忘,因为这个问题对我来说太重要了.

发表于 2005-8-4 21:21:00 | 显示全部楼层

dim acadapp as object

    Set Acadapp = GetObject(, "AutoCAD.application")

 楼主| 发表于 2005-8-5 08:01:00 | 显示全部楼层

谢谢兄弟,可能是我没说清楚,这种办法虽然能控制autocad文档的打开,但好象没有现实意义,因为只能打开cad(不管什么版本),但如果不"引用"的话,好象无法对文档进行操作,我需要的是对文档打开后的操作.比如.

Dim adModelSS As AcadSelectionSet
    Dim adEnt As Object
    Dim itemCnt As Integer
    Set ThisDrawing = AcadApp.ActiveDocument
    Set adModelSS = ThisDrawing.SelectionSets.Add("ModelSS")
    adModelSS.Clear
      Dim ft(0) As Integer, fd(0)
      ft(0) = 0: fd(0) = "Dim*"
  
    adModelSS.Select acSelectionSetAll, , , ft, fd
      For Each adEnt In adModelSS
                        If adEnt.TextOverride = "D1" Then adEnt.TextOverride = "%%c" & d1: GoTo 200
                        If adEnt.TextOverride = "D2" Then adEnt.TextOverride = "%%c" & d2: GoTo 200

 Next adEnt

这上面好多代码用这种办法根本不能识别,但如果事先"引用"的话就能成功操作。请教这种"后期绑定"能对cad文档进行操作吗?

发表于 2005-8-5 21:06:00 | 显示全部楼层
你这段代码什么意思我不懂,反正后期绑定可以适用于不同版本的acad,一切操作都可以进行(除非高低版本的代码不同)。你可以设置断点,看看究竟是什么地方出错。
 楼主| 发表于 2005-8-6 08:04:00 | 显示全部楼层
这段代码的意思是建立尺寸标注的选择集,然后将cad的尺寸标注为"D1"改为我程序中的变量"%%c" & d1,改用你的后期绑定方法,能打开我的cad文档,但无法识别关键字"AcadSelectionSet".
 楼主| 发表于 2005-8-6 11:10:00 | 显示全部楼层

我原先通过"引用"方法控制cad用了下面的代码

Dim AcadApp As AcadApplication
Dim AcadDoc As AcadDocument
Dim ThisDrawing As AcadDocument
Dim adModelSS As AcadSelectionSet

改用后期绑定方式后:


dim acadapp as object

    Set Acadapp = GetObject(, "AutoCAD.application")

那对AcadDoc\ThisDrawing \adModelSS这三个对象又将如何定义?因如果不事先"引用"的话,程序无法识别,特别是无法识别Dim adModelSS As AcadSelectionSet这句代码,如果能改成VB识别的话就解决了

谢谢!

发表于 2005-8-6 18:47:00 | 显示全部楼层

Sub tt()
On Error Resume Next
    Dim adModelSS As Object
    Dim itemCnt As Integer
    Dim acadapp As Object

    Set acadapp = GetObject(, "AutoCAD.Application")

    Set ThisDrawing = acadapp.ActiveDocument
    ThisDrawing.SelectionSets("ModelSS").Delete
    Set adModelSS = ThisDrawing.SelectionSets.Add("ModelSS")
   
    Dim ft(0) As Integer, fd(0)
    ft(0) = 0: fd(0) = "Dim*"
  
    adModelSS.Select 5, , , ft, fd
    MsgBox adModelSS.Count
   
    For Each i In adModelSS
        MsgBox i.TextOverride
    Next i
   
    ThisDrawing.SelectionSets("ModelSS").Delete

End Sub

发表于 2005-8-7 13:02:00 | 显示全部楼层
所有不能识别的都改成object
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-27 12:43 , Processed in 0.169477 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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