hustlei 发表于 2008-12-10 21:57:00

后期绑定中用ActiveLayer对象出错

请教
Dim AcadApp, AcadDoc, gridLayer As Object
      On Error Resume Next
      AcadApp = GetObject(, ".Application")
      If Err.Number0 Then
            Err.Clear()
            AcadApp = CreateObject("AutoCAD.Application")
            If Err.Number0 Then End
      End If
      AcadApp.Visible = True
      AcadDoc = AcadApp.ActiveDocument
      gridLayer = AcadDoc.Layers.Add("网格")         ’在CAD里这个层已经建出来了
      AcadDoc.ActiveLayer = gridLayer                   ‘这儿出错了
错在那儿了呢
AcadDoc.ActiveLayer.color = 5            也是对的就不是能给activelayer对象赋值

mccad 发表于 2008-12-10 22:22:00

注意当前有没有文档,如果没有打开的文档,就会出错我。

hustlei 发表于 2008-12-10 22:27:00


主要是
gridLayer = AcadDoc.Layers.Add("网格")         这个没问题 声明过了的Private Shared gridLayer As Object
AcadDoc.ActiveLayer = gridLayer                     这一行总是出错 说什么找不到成员
我改了一下问题

gyl 发表于 2008-12-10 23:21:00

在出错行前加上 SET 试一下。

hustlei 发表于 2008-12-11 08:27:00

谢谢
vb.net好像不以用set
加上后 vs2008会自动把set删掉

mccad 发表于 2008-12-11 16:41:00

gridLayer = AcadDoc.Layers.Add("网格")         
之前有没有确认过该名称的图层是否存在,如果存在,则会出错,出错后,gridLayer就不能赋值,也就会导致后续调用该变量的程序出错。

hustlei 发表于 2008-12-13 21:30:00


这一句应该是没有问题的,
我每一次调试的时候都是新开的文档

wang_qiang 发表于 2008-12-20 16:14:00

我试了试,在.net中是有这个问题,可以用别的方法来实现当层的设置,如用sendcommand

lwd899 发表于 2011-7-17 13:52:00

不知道这个问题解决了没有,我也遇到了!

s305040093 发表于 2011-12-5 21:55:00

我刚刚遇到这个问题 可惜还没有答案,我是把vb6.0下的程序转为.net遇到的问题 ,还有一个是getboundingbox,那个好歹还可以变通,这个不知道怎么办
页: [1]
查看完整版本: 后期绑定中用ActiveLayer对象出错