AutoCAD VBA通过Handle ID实现实体鼠标式选中及高亮优化咨询
方案1:实现与鼠标点选完全一致的选中效果
你之前使用SelectionSet无选中效果是因为普通自定义SelectionSet不会触发AutoCAD界面的选中状态渲染,需要操作AutoCAD内置的PickfirstSelectionSet(优先选择集),该选择集内的对象会直接显示为系统默认的虚线选中效果,和手动点选效果完全一致。
修改后的代码如下:
Sub dfSelHnd() Dim actldwg As AcadDocument Dim tAr(0) As AcadEntity ' 向选择集添加对象需使用数组格式 Dim rng As Range Dim txt As String '' 原有业务逻辑保持不变 Set rng = Selection Set actldwg = AutoCAD.Application.ActiveDocument txt = rng.Value '' txt 为读取到的实体HandleID Set tAr(0) = actldwg.HandleToObject(txt) Call zoomit(actldwg, tAr(0)) '' 替换原有Highlight逻辑 '' 清空当前已有的选中内容 actldwg.PickfirstSelectionSet.Clear '' 将目标实体加入系统选中集 actldwg.PickfirstSelectionSet.AddItems tAr '' 刷新视图触发选中效果渲染 actldwg.ActiveLayout.Regen acAllViewports End Sub
如果需要后续取消该选中状态,调用actldwg.PickfirstSelectionSet.Clear后刷新视图即可,不会影响用户后续手动选择操作。
方案2:自定义高对比度高亮
如果你不需要修改系统选中状态,仅要提升高亮辨识度,可以临时修改实体的显示属性,校验完成后再还原原始属性,适合需要同时区分多类不同校验状态实体的场景,可自定义颜色、线宽等参数提升对比度。
效果对比参考
- 未选中、未高亮的实体

- 原有Highlight方法的高亮效果

- 方案1实现的系统默认选中效果

内容的提问来源于stack exchange,提问作者El-VeRdUgO
相关产品推荐
相关产品推荐

