乐筑天下

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

[编程交流] 在ActiveSel中过滤对象

[复制链接]

14

主题

40

帖子

26

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-6 14:20:53 | 显示全部楼层 |阅读模式
大家好!
 
我有个新问题要问你。。。
 
  1. Private Sub ACADApp_BeginCommand(ByVal CommandName As String)
  2.    Dim Ssett2 As AcadSelectionSet
  3.    Dim Blocks As AcadBlockReference
  4.    Dim II As Integer
  5.    Dim AttarrayY As Variant
  6.    Dim Varatts As AcadAttributeReference
  7.    Dim Viewobj_center(0 To 2) As Double
  8.    Dim SelBlock(0) As AcadEntity
  9. On Error GoTo ErrorHandler
  10.        Set Ssett2 = thisdrawing.ActiveSelectionSet
  11.        thisdrawing.ActiveSelectionSet.Clear
  12.    If CommandName = "ERASE" Or CommandName = "SELECT" Then
  13.        'If Ssett2.count < 2 Then
  14.          '  Set Ssett2 = thisdrawing.SelectionSets.Add("XXX")
  15.     '           Ssett2.SelectOnScreen
  16.       ' End If
  17.            For Each Blocks In Ssett2
  18.                If Blocks.ObjectName = "AcDbBlockReference" Then
  19.                    If ((Blocks.HasAttributes) And (Left(Blocks.Name, 3) = "G_B") Or (Left(Blocks.Name, 3) = "G_E") Or (Left(Blocks.Name, 3) = "G_I") Or (Left(Blocks.Name, 3) = "G_L")) Then
  20.                thisdrawing.StartUndoMark
  21.                            AttarrayY = Blocks.GetAttributes
  22.                            For II = 0 To UBound(AttarrayY)
  23.                            Set Varatts = AttarrayY(II)
  24.                                If Varatts.TagString = "NOTE_2" And Varatts.TextString = "Checked" Then
  25.                            Viewobj_center(0) = Blocks.InsertionPoint(0) - 30: Viewobj_center(1) = Blocks.InsertionPoint(1): Viewobj_center(2) = 0
  26.                                'Dim viewX As Double
  27.                                'viewX = Viewobj_center(0) - 30
  28.                                AutoCAD.ZoomCenter Viewobj_center, 80
  29.                                G_ans_erase = MsgBox("Wilt u dit block hiernaast verwijderen?", vbYesNo + vbDefaultButton2, "Controle block-verwijdering")
  30.                                    Set SelBlock(0) = Blocks
  31.                                If G_ans_erase = vbNo Then
  32.                                    Ssett2.RemoveItems SelBlock
  33.                                    'thisdrawing.SendCommand ("undo" & vbCr & "1" & vbCr)
  34.                                End If
  35.                               AutoCAD.Update
  36.                               DoEvents
  37.                               'MsgBox "Checked Item"
  38.                            II = II + 1
  39.                            End If
  40.                 Next
  41.                    Else
  42.                        MsgBox "Geen Attributes aanwezig"
  43.                    End If
  44.                Else
  45.                    MsgBox Blocks.ObjectName 'If Blocks.ObjectID = Then
  46.                End If
  47.            Next Blocks
  48.            'MsgBox CommandName
  49.    End If
  50. Exit Sub
  51. ErrorHandler:
  52. If Err.Number = 13 Then
  53. Err.Clear
  54. Resume Next
  55. Else
  56. MsgBox Err.Number & Err.Description
  57. End If
  58. Ssett2.Clear
  59. End Sub

 
有点乱。但无论如何。这就是我想要的工作方式。
1.用户在屏幕上选择与普通autocad类似的项目(没有激活的命令)
2、用户按下删除(按钮)或擦除命令。
3.在VBA中过滤活动选定对象。首先是acadblock,然后是属性,然后是blockname。
4.查看属性his tagstring是否为“NOTE_2”,textstring是否为“Checked”
5、“选中”属性后,用户可以选择删除或保留该对象。当他单击KEEP object时,我想从activeselection集中删除当前选中的块。但是activeselectionset是只读的。所以我不能从那里删除它。我将activeselection放在另一个名称(SSET2)中,在这个名称中我可以更改、删除、添加等,并最终从图形中删除过滤后的对象。
6、常规结束时。删除/擦除命令仍在删除activeselection集。我怎么能绕过这个?删除activeselectionset不是一个选项,因为它是只读的?!我怎么能中止这个命令呢??
 
谢谢你的想法
回复

使用道具 举报

14

主题

40

帖子

26

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-6 16:18:25 | 显示全部楼层
---新建主题---
http://www.cadtutor.net/forum/showthread.php?t=37771
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 03:14 , Processed in 0.590055 second(s), 56 queries .

© 2020-2025 乐筑天下

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