偶尔做做怪 发表于 2014-9-28 23:12:13

如何让图形处于被选中状态(类似于鼠标框中后的效果)

最近做程序发现个小问题,通过选择集筛选的图形执行完程序后,在CAD图中无法处于被选中状态(类似于鼠标框中后的效果),因为我还有很多后续操作需要人工判断执行,不知道哪位达人能否相助。是否有代码可以实现此功能?

wangshuping42 发表于 2014-9-29 07:43:34

highlight方法

琴剑江山_10184 发表于 2014-9-29 08:24:12


highlight 系统变量改为1

maiko 发表于 2014-9-29 10:19:16

(sssetfirst nil (ssget))

cheng5276 发表于 2014-9-29 18:21:06

ed.SetImpliedSelection(res2.Value.GetObjectIds());

偶尔做做怪 发表于 2014-9-30 14:54:05

谢谢大家 问题解决了

wz0406 发表于 2015-1-12 09:00:26

你是怎样做到的,共享一下,我搞了好多天,也没搞成

偶尔做做怪 发表于 2015-1-14 11:07:04

一段测试代码

<CommandMethod("SSS")> Public Shared Sub 筛选()
      Dim dm As DocumentCollection = Application.DocumentManager
      Dim ed As Editor = dm.MdiActiveDocument.Editor
      '获取当前数据库作为目标数据库
      Dim Db As Database = dm.MdiActiveDocument.Database

      dm.MdiActiveDocument.LockDocument()

      Dim ids() As ObjectId
      Dim N As Integer = 0
      Using trans As Transaction = Db.TransactionManager.StartTransaction()
            Dim bt As BlockTable = trans.GetObject(Db.BlockTableId, OpenMode.ForRead)
            Dim btr As BlockTableRecord = trans.GetObject(bt(BlockTableRecord.ModelSpace), OpenMode.ForRead)

            ' 遍历选择集.
            For Each EntId As ObjectId In btr
                Dim en As Entity = trans.GetObject(EntId, OpenMode.ForRead)
                If TypeOf en Is Line Then
                  ReDim Preserve ids(N)
                  ids(N) = EntId
                  en.Highlight()
                  N = N + 1
                End If
            Next
            ed.SetImpliedSelection(ids)
      End Using

    End Sub

woxing1987 发表于 2015-9-3 15:12:57

感谢楼上的分享
页: [1]
查看完整版本: 如何让图形处于被选中状态(类似于鼠标框中后的效果)