乐筑天下

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

编译错误,求高手支招!代码已附,看正文

[复制链接]

2

主题

13

帖子

5

银币

初来乍到

Rank: 1

铜币
21
发表于 2014-10-19 12:30:00 | 显示全部楼层 |阅读模式
我用快捷命令运行,以前能用,最近不懂怎么了,运行就提示"编译错误---不支持的对象库功能"
新手发帖,求大神支招。
Public Sub DGX_GC()
    Dim DGX_1 As AcadLWPolyline
    Dim DGX_2 As AcadPolyline
    Dim Point1 As Variant
    Dim Point2 As Variant
    ThisDrawing.SetVariable "osmode", 0
    ThisDrawing.SetVariable "osmode", 512
    Point1 = ThisDrawing.Utility.GetPoint(, "请选择第一条等高线:")
    Dim SET1 As AcadSelectionSet
    Dim SET2 As AcadSelectionSet
    Dim S1 As String
    Dim S2 As String
    S1 = "DGX1": S2 = "DGX2"
    On Error Resume Next
    If Not IsNull(ThisDrawing.SelectionSets.Item(S1)) Then
        Set SET1 = ThisDrawing.SelectionSets(S1)
        SET1.Delete
    End If
    If Not IsNull(ThisDrawing.SelectionSets.Item(S2)) Then
        Set SET2 = ThisDrawing.SelectionSets(S2)
        SET2.Delete
    End If
    Set SET1 = ThisDrawing.SelectionSets.Add(S1)
    Set SET2 = ThisDrawing.SelectionSets.Add(S2)
    Dim F_type(4) As Integer
    Dim F_data(4)  As Variant
    F_type(0) = -4: F_data(0) = ""
    F_type(4) = 8: F_data(4) = "DGX"
    SET1.SelectAtPoint Point1, F_type, F_data
    Dim GC1 As Double
    Dim GC2 As Double
    If SET1.Item(0).ObjectName = "AcDbPolyline" Then
        Set DGX_1 = SET1.Item(0)
        DGX_1.Highlight True
        GC1 = DGX_1.Elevation
    ElseIf SET1.Item(0).ObjectName = "AcDb2dPolyline" Then
        Set DGX_2 = SET1.Item(0)
        DGX_2.Highlight True
        GC1 = DGX_2.Elevation
    End If
    Point2 = ThisDrawing.Utility.GetPoint(, "请选择第二条等高线:")
    SET2.SelectAtPoint Point2, F_type, F_data
    If SET2.Item(0).ObjectName = "AcDbPolyline" Then
        Set DGX_1 = SET2.Item(0)
        DGX_1.Highlight True
        GC2 = DGX_1.Elevation
    ElseIf SET1.Item(0).ObjectName = "AcDb2dPolyline" Then
        Set DGX_2 = SET2.Item(0)
        DGX_2.Highlight True
        GC2 = DGX_2.Elevation
    End If
    ThisDrawing.SetVariable "osmode", 0
    Dim Point3 As Variant
    Point3 = ThisDrawing.Utility.GetPoint(, "请点击选择高程生成位置:")
    Dim C1 As Double
    Dim C2 As Double
    C1 = ((Point1(0) - Point3(0)) ^ 2 + (Point1(1) - Point3(1)) ^ 2) ^ 0.5
    C2 = ((Point2(0) - Point1(0)) ^ 2 + (Point2(1) - Point1(1)) ^ 2) ^ 0.5
    Dim GCC As Double '高程差
    GCC = (GC1 - GC2) * (C1 / C2)
    Dim GCZ As Double
    GCZ = GC1 - GCC
    ThisDrawing.SendCommand "DRAWGCD" & Space(1) & 1 & Space(1) & Point3(0) & "," & Point3(1) & Space(1) & GCZ & vbCrLf
    DGX_1.Highlight False
    DGX_2.Highlight False
    SET1.Delete
    SET2.Delete
End Sub

v5jjnkl0xyo.jpg

v5jjnkl0xyo.jpg

回复

使用道具 举报

2

主题

13

帖子

5

银币

初来乍到

Rank: 1

铜币
21
发表于 2014-10-23 00:23:00 | 显示全部楼层
沙发自己坐!大神们来帮帮忙!
回复

使用道具 举报

8

主题

3171

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3203
发表于 2014-10-23 06:54:00 | 显示全部楼层
发错地方了,这是LISP板块。
回复

使用道具 举报

2

主题

13

帖子

5

银币

初来乍到

Rank: 1

铜币
21
发表于 2014-10-23 09:09:00 | 显示全部楼层

版主,应该在哪个板块发?
回复

使用道具 举报

23

主题

561

帖子

13

银币

中流砥柱

Rank: 25

铜币
653
发表于 2014-10-23 11:18:00 | 显示全部楼层
你这代码应该是没问题的,
DRAWGCD不是系统命令,但这不会引起那个问题
你的错误不应该在这个sub里
回复

使用道具 举报

2

主题

13

帖子

5

银币

初来乍到

Rank: 1

铜币
21
发表于 2014-10-25 12:19:00 | 显示全部楼层

大神帮分析一下具体原因可否?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-4-20 18:17 , Processed in 1.017619 second(s), 68 queries .

© 2020-2025 乐筑天下

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