乐筑天下

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

第(1)个程序 标准坐标 (测绘)

[复制链接]

2

主题

6

帖子

3

银币

初来乍到

Rank: 1

铜币
14
发表于 2018-2-28 21:59:00 | 显示全部楼层 |阅读模式
以下是我写的第一个获取点坐标的程序,有个问题是关于小数位保留的,需要保留3位小数
'The first function of getting point coordinate
Sub XY()
    Dim Point1, Point2 As Variant
    Dim Point1_X, Point2_X, Point3_X As Double
    Dim Point1_Y, Point2_Y, Point3_Y As Double
    Dim prompt1 As String
    Dim UnderLine_Length As Double
    prompt1 = vbCrLf & "Select a point:"
    Point1 = ThisDrawing.Utility.GetPoint(, "选择需标注点:")
    Point1_X = Point1(0)
    Point1_Y = Point1(1)
    Point2 = ThisDrawing.Utility.GetPoint(, "选择标注位置:")
    Point2_X = Point2(0)
    Point2_Y = Point2(1)
    Point2_X = Round(Point2_X, 2)
    Point2_Y = Round(Point2_Y, 2)
    If (Point2_X >= Point1_X) Then
        UnderLine_Length = 10
    Else
        UnderLine_Length = -10
    End If
    Point3_X = Point2_X + UnderLine_Length
    Point3_Y = Point2_Y
    Dim pline_vertex(0 To 5) As Double
    pline_vertex(0) = Point1_X: pline_vertex(1) = Point1_Y:
    pline_vertex(2) = Point2_X: pline_vertex(3) = Point2_Y:
    pline_vertex(4) = Point3_X: pline_vertex(5) = Point3_Y:
    Dim pline As AcadLWPolyline
    '绘制标识线段
    Set pline = Application.ActiveDocument.ModelSpace.AddLightWeightPolyline(pline_vertex)
    '添加坐标标识
    Dim X As Double
    Dim Y As Double
    Dim Text_X, Text_Y As AcadText
    Dim Position_X(2) As Double
    Dim Position_Y(2) As Double
    X = Round(Point1_X, 3) '截取三位小数
    Y = Round(Point1_Y, 3)
    If (Point2_X >= Point1_X) Then
        Position_X(0) = Point2_X
        Position_X(1) = Point2_Y + 0.2
        Position_X(2) = 0
        Position_Y(0) = Point2_X
        Position_Y(1) = Point2_Y - 1.8
        Position_Y(2) = 0
    Else
        Position_X(0) = Point3_X
        Position_X(1) = Point3_Y + 0.2
        Position_X(2) = 0
        Position_Y(0) = Point3_X
        Position_Y(1) = Point3_Y - 1.8
        Position_Y(2) = 0
    End If
    Set Text_X = Application.ActiveDocument.ModelSpace.AddText("X=" & CStr(X), Position_X, 1.25)
    Set Text_X = Application.ActiveDocument.ModelSpace.AddText("Y=" & CStr(Y), Position_Y, 1.25)
    Text_X.Update
End Sub
回复

使用道具 举报

23

主题

561

帖子

13

银币

中流砥柱

Rank: 25

铜币
653
发表于 2018-2-28 23:06:00 | 显示全部楼层
Set Text_X = Application.ActiveDocument.ModelSpace.AddText("X=" & Format(X,"0.000"), Position_X, 1.25)
回复

使用道具 举报

85

主题

1175

帖子

11

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1518
发表于 2018-3-1 11:09:00 | 显示全部楼层
保留三位小数也可以先乘以1000,取整,除以1000
回复

使用道具 举报

2

主题

6

帖子

3

银币

初来乍到

Rank: 1

铜币
14
发表于 2018-3-1 11:38:00 | 显示全部楼层

可行,非常棒!谢谢指点!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 07:19 , Processed in 0.581467 second(s), 60 queries .

© 2020-2025 乐筑天下

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