乐筑天下

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

[编程交流] 显示对象坐标

[复制链接]

1

主题

1

帖子

0

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 22:36:58 | 显示全部楼层 |阅读模式
大家好,
 
我不熟悉AutoCAD VBA。我想创建一个带有按钮和列表框的表单,单击按钮后,会显示一个msgbox,要求用户选择一个/多个功能/对象,然后单击空格键进行确认。然后特征的坐标将显示在列表框中。
 
我的问题是,我如何做第一部分-通过鼠标点击/屏幕选择来获取功能?
 
谢谢大家
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-7 00:12:26 | 显示全部楼层
[列表]
  • 打开VBA编辑器
  • 插入表单
  • 下拉列表视图“listView1”和2个按钮“cmdSelect”和“cmdExit”
  • 添加此代码:
    [/列表]
    1. Option Explicit
    2. '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
    3. ' require Microsoft ListView Control version 6.0
    4. ' in Constructor window->right click on field->
    5. ' click "Additional controls", scroll down
    6. ' and check box for "Microsoft ListView Control version 6.0"
    7. '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
    8. Private Sub UserForm_Initialize()
    9. Me.Width = 272
    10. ListView1.Width = 264
    11. ListView1.ListItems.Clear
    12. ListView1.Arrange = 0 'lvwAutoLeft
    13. ListView1.View = 3 'lvwReport
    14. ListView1.GridLines = True
    15. ' add columns
    16. ListView1.ColumnHeaders.Add 1, "BlockName", "Block Name", 80, 0
    17. ListView1.ColumnHeaders.Add 2, "X", "X", 60, 0
    18. ListView1.ColumnHeaders.Add 3, "Y", "Y", 60, 0
    19. ListView1.ColumnHeaders.Add 4, "Z", "Z", 60, 0
    20. ListView1.FullRowSelect = True
    21. End Sub
    22. Private Sub cmdSelect_Click()
    23. Dim oEnt As AcadEntity
    24. Dim oblk As AcadBlockReference
    25. Dim itm As Object 'ListItem
    26. Dim oBlocks As AcadBlocks
    27. Dim oBlock As AcadBlock
    28. Dim oBlkRef As AcadBlockReference
    29. Dim ipt As Variant
    30. Dim fType(0) As Integer
    31. Dim fData(0) As Variant
    32. Dim oSset As AcadSelectionSet
    33. Dim iCount As Integer
    34. Dim dxfCode, dxfData
    35. Dim tmp(3)
    36. Dim blkColl As New Collection
    37. fType(0) = 0: fData(0) = "INSERT"
    38. On Error GoTo Err_Trapp
    39. For Each oSset In ThisDrawing.SelectionSets
    40. If oSset.Name = "$Blocks$" Then
    41. oSset.Delete
    42. Exit For
    43. End If
    44. Next oSset
    45. Set oSset = ThisDrawing.SelectionSets.Add("$Blocks$")
    46. dxfCode = fType
    47. dxfData = fData
    48. Me.Hide
    49. oSset.SelectOnScreen dxfCode, dxfData
    50. iCount = 0
    51. For Each oEnt In oSset
    52. Set oBlkRef = oEnt
    53. ipt = oBlkRef.InsertionPoint
    54.    tmp(0) = oBlkRef.EffectiveName
    55.    tmp(1) = ipt(0): tmp(2) = ipt(1): tmp(3) = ipt(2)
    56.    blkColl.Add tmp
    57.    Erase tmp
    58. Next oEnt
    59. oSset.Delete
    60. Set oSset = Nothing
    61. Dim i As Long, j As Long
    62. 'populate array
    63. ReDim blkvar(blkColl.Count - 1, 1) As String
    64. For i = 1 To blkColl.Count
    65. blkvar(i - 1, 0) = blkColl.item(i)(0)
    66. blkvar(i - 1, 1) = blkColl.item(i)(1)
    67. Set itm = ListView1.ListItems.Add(1, , blkColl.item(i)(0))
    68. itm.SubItems(1) = Round(blkColl.item(i)(1), 3)
    69. itm.SubItems(2) = Round(blkColl.item(i)(2), 3)
    70. itm.SubItems(3) = Round(blkColl.item(i)(3), 3)
    71. Next
    72. Me.Show
    73. Err_Trapp:
    74. End Sub
    75. Private Sub ListView1_Click()
    76. If ListView1.SelectedItem.Selected = True Then
    77. Dim bname As String
    78. bname = ListView1.SelectedItem.Text
    79. Dim x As Double
    80. x = CDbl(ListView1.SelectedItem.SubItems(1))
    81. Dim y As Double
    82. y = CDbl(ListView1.SelectedItem.SubItems(2))
    83. Dim z As Double
    84. z = CDbl(ListView1.SelectedItem.SubItems(3))
    85. MsgBox "Block : " & vbCr & bname & vbCr & _
    86. "Position: " & vbCr & "x = " & x & vbCr & "y = " & y & vbCr & "z = " & z
    87. End If
    88. End Sub
    89. Private Sub cmdExit_Click()
    90. Unload Me
    91. End Sub

     
    ~'J'~
  • 回复

    使用道具 举报

    发表回复

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

    本版积分规则

    • 微信公众平台

    • 扫描访问手机版

    • 点击图片下载手机App

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

    GMT+8, 2025-3-4 05:51 , Processed in 1.005137 second(s), 56 queries .

    © 2020-2025 乐筑天下

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