乐筑天下

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

vb和vb.net后期绑定cad后设置当前图层时为什么会有这样的差别?

[复制链接]

6

主题

18

帖子

2

银币

初来乍到

Rank: 1

铜币
42
发表于 2011-7-19 20:21:00 | 显示全部楼层 |阅读模式
如题,我现在分别把vb6和vb2008中的代码贴出来:
vb6的代码:
Dim acadApp As Object
       Dim Thisdrawing As Object
   Sub ConnectToAcad()
        On Error Resume Next
        Set acadApp = GetObject(, ".Application")
        If Err Then
            Err.Clear
            Set acadApp = CreateObject("AutoCAD.Application")
            acadApp.Visible = True
            If Err.Number Then MsgBox Err.Description
        End If
        acadApp.documents.Add
        Set Thisdrawing = acadApp.ActiveDocument
        
           Dim newlayer As Object
    Set newlayer = Thisdrawing.Layers.Add("lll")
    Thisdrawing.ActiveLayer = Thisdrawing.Layers.Item("lll")
    Dim plineObj As Object
    Dim points(0 To 5) As Double
    ' 定义二维多段线的点
    points(0) = 2: points(1) = 4
    points(2) = 4: points(3) = 2
    points(4) = 6: points(5) = 4
    ' 在模型空间中创建一个优化多段线对象
    Set plineObj = Thisdrawing.ModelSpace.AddLightWeightPolyline(points)
   Thisdrawing.Application.ZoomAll
        
    End Sub
Private Sub Command1_Click()
Call ConnectToAcad
End Sub
vb2008的代码:
Public Class Form1
    Dim acadApp As Object
    Dim Thisdrawing As Object
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Call ConnectToAcad()
    End Sub
    Private Sub ConnectToAcad()
        On Error Resume Next
        acadApp = GetObject(, "AutoCAD.Application")
        If Err.Number Then
            Err.Clear()
            acadApp = CreateObject("AutoCAD.Application")
            acadApp.Visible = True
            If Err.Number Then MsgBox(Err.Description)
        End If
        acadApp.documents.Add()
        Thisdrawing = acadApp.ActiveDocument
        Dim newlayer As Object
        newlayer = Thisdrawing.Layers.Add("lll")
        Thisdrawing.ActiveLayer = Thisdrawing.Layers.Item("lll")
        ' 在模型空间中创建一个优化多段线对象
        Dim plineObj As Object
        Dim points(0 To 5) As Double
        ' 定义二维多段线的点
        points(0) = 2 : points(1) = 4
        points(2) = 4 : points(3) = 2
        points(4) = 6 : points(5) = 4
        plineObj = Thisdrawing.ModelSpace.AddLightWeightPolyline(points)
        Thisdrawing.Application.ZoomAll()
    End Sub
End Class
分别运行后,vb6中可以将图层“lll”设置为当前图层,但是vb2008没有,可是vb2008也没有报错,请问是怎么回事?对后者出现的问题有没有什么解决办法?
回复

使用道具 举报

6

主题

18

帖子

2

银币

初来乍到

Rank: 1

铜币
42
发表于 2011-7-22 10:18:00 | 显示全部楼层
用vb.net时, Thisdrawing.Active*这种都不起作用,但是也不报错,到底是怎么回事,我的问题贴出来好几天了,怎么没有人回答啊,论坛这么多高手,没有人好好研究研究吗?
回复

使用道具 举报

6

主题

18

帖子

2

银币

初来乍到

Rank: 1

铜币
42
发表于 2011-7-22 10:20:00 | 显示全部楼层
用vb.net时, Thisdrawing.Active*这种都不起作用,但是也不报错,到底是怎么回事,我的问题贴出来好几天了,怎么没有人回答啊,论坛这么多高手,没有人好好研究研究吗?
回复

使用道具 举报

13

主题

113

帖子

8

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
166
发表于 2011-7-23 13:59:00 | 显示全部楼层
你的vb.net不是真正的vb.net,是从vb6转过来的。
回复

使用道具 举报

6

主题

18

帖子

2

银币

初来乍到

Rank: 1

铜币
42
发表于 2011-7-24 14:36:00 | 显示全部楼层
是的,我用的是vb6的那种方法,可是您说的这是问题的原因所在吗?
回复

使用道具 举报

0

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
1
发表于 2012-12-6 22:55:00 | 显示全部楼层

你好,加Q593122168,咱们的做法一样,希望能够探讨,你的这个问题可以解决,加我发你。
回复

使用道具 举报

0

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
3
发表于 2018-3-6 23:02:00 | 显示全部楼层
我也碰到这个问题,thisdrawing.layer可以添加图层,但thisdrawing.activelayer,就是不同用。求教啊
回复

使用道具 举报

0

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
3
发表于 2018-3-7 07:29:00 | 显示全部楼层
折腾一晚上,找到了一个折衷办法。用vb.net的Application.SetSystemVariable("CLAYER",“图层名”),可以解决。Thisdrawing.ActiveLayer确定是有的,但不知为何,在VS2010+AutoCAD2014下就是没法用。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2024-11-22 09:59 , Processed in 0.287808 second(s), 79 queries .

© 2020-2024 乐筑天下

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