You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅为SolidWorks当前选择效果设置颜色而非修改对象本身?

SolidWorks 仅设置当前选择边的临时高亮颜色方案

核心问题分析

你之前用edge.Display()方法是错的——这个方法会永久修改对象的显示颜色,不是临时的选择状态高亮,所以取消选择后得手动重置颜色。你要的是选中时临时变色、取消后自动恢复的效果,得用SolidWorks的选择高亮机制,不能直接改对象显示属性。

正确实现步骤

  1. 选中对象后,通过SelectionManager设置临时高亮颜色
    别直接改对象显示,用ISelectionMgr控制选择状态的高亮颜色,设置后刷新视图就生效,取消选择时SolidWorks会自动恢复原始颜色。

  2. 代码示例

// 选中目标边
Entity entity = (Entity)edge;
bool isSelected = entity.Select4(true, swSelData);

if (isSelected)
{
    ISelectionMgr swSelectionMgr = swModel.SelectionManager;
    // 获取选中对象的标记
    int mark = swSelectionMgr.GetSelectedObjectMark(0);
    
    // 清除之前的选择颜色设置
    swSelectionMgr.ClearSelectionColors();
    // 设置高亮为红色(SolidWorks颜色值为BGR格式,红色对应整数255)
    swSelectionMgr.SelectionColor[mark] = 255;
    // 刷新视图使颜色生效
    IModelView swModelView = swModel.ActiveView;
    swModelView.GraphicsRedraw();
}

常见问题排查

  • 若SelectionColor设置无效:

    • 确认mark值正确(用GetSelectedObjectCount2()检查选中对象数量,确保索引0对应目标边)
    • 必须调用GraphicsRedraw()刷新视图
    • 别用系统颜色枚举(如swSystemColorsSelectedItem3),直接用BGR格式整数更可靠(比如绿色是0x00FF00=65280,蓝色是0xFF0000=16711680)
  • 不要用swApp.SetUserPreferenceIntegerValue:这个方法改的是全局选择颜色设置,会影响所有选中对象,没法实现单条选择的临时高亮。

内容的提问来源于stack exchange,提问作者Stone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 04:33:23