明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3787|回复: 8

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

[复制链接]
发表于 2014-9-28 23:12:13 | 显示全部楼层 |阅读模式
最近做程序发现个小问题,通过选择集筛选的图形执行完程序后,在CAD图中无法处于被选中状态(类似于鼠标框中后的效果),因为我还有很多后续操作需要人工判断执行,不知道哪位达人能否相助。是否有代码可以实现此功能?
发表于 2014-9-29 07:43:34 | 显示全部楼层
highlight方法
发表于 2014-9-29 08:24:12 | 显示全部楼层

highlight 系统变量改为1
发表于 2014-9-29 10:19:16 | 显示全部楼层
(sssetfirst nil (ssget))
发表于 2014-9-29 18:21:06 | 显示全部楼层
ed.SetImpliedSelection(res2.Value.GetObjectIds());
 楼主| 发表于 2014-9-30 14:54:05 | 显示全部楼层
谢谢大家 问题解决了
发表于 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
发表于 2015-9-3 15:12:57 | 显示全部楼层
感谢楼上的分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-2-22 18:38 , Processed in 0.165714 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表