乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 164|回复: 9

VLAX类调用请教!!!

[复制链接]

28

主题

117

帖子

4

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
229
发表于 2003-9-29 21:16:00 | 显示全部楼层 |阅读模式
下面程序为什么总在
Class_Initialize中语句:(cad2000)
Set VL = ThisDrawing.Application.GetInterfaceObject("VL.Application.1")
发生错误呢?
(把
Set VL = ThisDrawing.Application.GetInterfaceObject("VL.Application.1")
改成
Set VL = ThisDrawing.Application.GetInterfaceObject("VL.Application.15")
也不行)
'''''''''''''''''''''''''''''''''''''''
Sub test()
Dim acaddoc As AcadDocument
Set acaddoc = ThisDrawing
Dim entry As AcadEntity
Dim pp As Variant
acaddoc.Utility.GetEntity entry, pp, "select a polyline"
MsgBox GetCurveLength(entry)
End Sub
Public Function GetCurveLength(curve As AcadEntity) As Double
    Dim obj As VLAX, retval
   
    Set obj = New VLAX
    obj.EvalLispExpression "(setq curve (handent " & Chr(34) & curve.Handle & Chr(34) & "))"
    obj.EvalLispExpression "(setq curvelength (vlax-curve-getDistAtParam curve " & "(vlax-curve-getEndParam curve)))"
    retval = obj.GetLispSymbol("curvelength")
    obj.NullifySymbol "curve", "curvelength"
    Set obj = Nothing
    GetCurveLength = CDbl(retval)
End Function
回复

使用道具 举报

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 2003-9-29 21:18:00 | 显示全部楼层
把VL.Application.1中的".1" 去掉试试。
回复

使用道具 举报

28

主题

117

帖子

4

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
229
发表于 2003-9-29 21:19:00 | 显示全部楼层
也不行,我得vlax类是下载中心下载的
回复

使用道具 举报

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 2003-9-29 21:23:00 | 显示全部楼层
那可能是VL.Application控件还没注册好。
你看看AutoCAD目录下有没有象vl*.tlb的文件,如果有就使用注册功能把它注册了。
回复

使用道具 举报

28

主题

117

帖子

4

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
229
发表于 2003-9-29 21:35:00 | 显示全部楼层
我的cad目录下就又VL.tlb,
用下面注册了也还是不行:
Private Sub Command1_Click()
AutoRegFile ("c:\R2000\vl.tlb")
End Sub
Function AutoRegFile(FileName As String)
Dim reged As Boolean
Dim RegFile1 As String
Dim RegFile2 As String
Dim BeReg As String
Dim RetVal
BeReg = Dir(FileName)
If BeReg  "" Then
  RegFile1 = Environ("windir") & "\system\regsvr32.exe "
  RegFile2 = Environ("windir") & "\system32\regsvr32.exe "
  If Dir(RegFile1)  "" Or Dir(RegFile2)  "" Then
       If Dir(RegFile1)  "" Then
            RegFile1 = RegFile1 & "/s" & " " & BeReg
            RetVal = Shell(RegFile1, 1)
        Else
            RegFile2 = RegFile2 & "/s" & " " & BeReg
            RetVal = Shell(RegFile2, 1)
        End If
  Else
        MsgBox "找不到regsvr32.exe文件,你可能无法使用本软件!", vbCritical, "无法自动注册控件"
  End If
Else
  MsgBox "找不到控件文件!", vbCritical, "无法自动注册控件"
End If
End Function
回复

使用道具 举报

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 2003-9-30 19:06:00 | 显示全部楼层
发生错误的提示是什么?
回复

使用道具 举报

26

主题

589

帖子

10

银币

中流砥柱

Rank: 25

铜币
693
发表于 2003-9-30 19:40:00 | 显示全部楼层
应该是没有加载的缘故吧。如果没有启动VL,它不是会自动加载的。
在VBA中可以使用SendCommand "(vl-load-com)",先试试,如果不行的话再查看看代码的原因吧。还有引用的是:R2000使用VL.Application.1,而R2004使用VL.Application.16,不要搞混了。
回复

使用道具 举报

28

主题

117

帖子

4

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
229
发表于 2003-10-1 12:04:00 | 显示全部楼层
发生错误的提示是:
实时错误‘-2147221164(80040154)
用SendCommand "(vl-load-com)"解决了,谢谢mccad版主 和efan2000 版主的热心帮助
回复

使用道具 举报

28

主题

117

帖子

4

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
229
发表于 2003-10-1 12:19:00 | 显示全部楼层
还有一个问题想请教,如果我在VB里面调用vlax类时,由于Class_Initialize事件中要用到ThisDrawing,我在VB里面定义了acaddoc全局变量,把类的ThisDrawing替换承acaddoc也不行,请问有什么办法可以让vlax也可以在vb里面调用吗?
回复

使用道具 举报

26

主题

589

帖子

10

银币

中流砥柱

Rank: 25

铜币
693
发表于 2003-10-1 13:06:00 | 显示全部楼层
全局变量只有在模块中定义的才有效。
不过最好的还是增加一个赋值的过程,将初始化的设置放入这个过程。
如:
Public Property Set Application(ByVal vData As AcadApplication)
   
    On Error GoTo ErrTrap
    Set VL = vData.GetInterfaceObject("VL.Application.16")
    Set VLF = VL.ActiveDocument.Functions
    Exit Property
   
ErrTrap:
    On Error GoTo 0
End Property
Private Sub Class_Initialize()
End Sub
使用时,先创建类,然后再set vlax.Application=acaddoc.application,完成接口,接着就可以使用其中的函数了。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-14 16:34 , Processed in 1.043640 second(s), 73 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表