opencascade 获取鼠标选中对象

#include <AIS_Shape.hxx>
//这边主要也是用AIS_Shape类,这一篇是接上一篇 《鼠标交互 设置选择模式》public://选择模式,鼠标点击模型,选中对应的面void selectMode(Handle(AIS_Shape) );//获取鼠标选中的对象void getShape();//高亮显示void setHightStyle();//选择样式void setSelectStyle();protected://覆写鼠标按键按下事件void mousePressEvent(QMouseEvent* event);//覆写鼠标按键释放事件void mouseReleaseEvent(QMouseEvent* event);//覆写鼠标移动事件void mouseMoveEvent(QMouseEvent* event);
void viewPort::getShape()
{TopoDS_Shape abc = m_context->DetectedShape();TopAbs_ShapeEnum bba = abc.ShapeType();qDebug() << bba;
}void viewPort::mouseReleaseEvent(QMouseEvent* event)
{m_current_mode = CurAction3d_Nothing;/*TopoDS_Shape abc = m_context->DetectedShape();TopAbs_ShapeEnum bba = abc.ShapeType();qDebug() << bba;*/getShape();
}void viewPort::mousePressEvent(QMouseEvent* event)
{//左键按下且CTRL键也按下   平移if (((event->buttons() & Qt::LeftButton) && (QApplication::keyboardModifiers() == Qt::ControlModifier))){m_current_mode = CurAction3d_DynamicPanning;m_x_max = event->pos().x(); //记录起始X位置m_y_max = event->pos().y(); //记录起始Y位置return;}else if ((event->buttons() & Qt::LeftButton) && (event->buttons() & Qt::RightButton)){// 鼠标左右键齐按:初始化平移m_current_mode = CurAction3d_DynamicPanning;m_x_max = event->pos().x();m_y_max = event->pos().y();return;}//中键按下      旋转else if ((event->buttons() & Qt::MidButton)){m_current_mode = CurAction3d_DynamicRotation;m_view->StartRotation(event->pos().x(), event->pos().y());return;}else if (event->buttons() & Qt::LeftButton){// 按下Shift键点击鼠标左键实现多选if (qApp->keyboardModifiers() == Qt::ShiftModifier){m_context->ShiftSelect(true);           }else{m_context->Select(true);          // 只点击鼠标左键 单选模型    }}
}void viewPort::mouseMoveEvent(QMouseEvent* event)
{switch (m_current_mode){case CurAction3d_DynamicPanning://执行平移{m_view->Pan(event->pos().x() - m_x_max, m_y_max - event->pos().y());m_x_max = event->pos().x();m_y_max = event->pos().y();break;}case CurAction3d_DynamicRotation: //执行旋转{m_view->Rotation(event->pos().x(), event->pos().y());break;}case CurAction3d_Nothing:  //使得检测到的模型高亮{//使得鼠标坐标对应的屏幕上的实体高亮m_context->MoveTo(event->x(), event->y(), m_view, true);}}
}void viewPort::setHightStyle()
{Handle(Prs3d_Drawer) t_hilight_style = m_context->HighlightStyle(); // 获取高亮风格t_hilight_style->SetMethod(Aspect_TOHM_COLOR);                      // 颜色显示方式              t_hilight_style->SetColor(Quantity_NOC_LIGHTYELLOW);         // 设置高亮颜色 --黄色   t_hilight_style->SetDisplayMode(1); // 1整体高亮 2包围盒t_hilight_style->SetTransparency(0.1f); // 设置透明度
}void viewPort::setSelectStyle()
{Handle(Prs3d_Drawer) t_select_style = m_context->SelectionStyle();  // 获取选择风格t_select_style->SetMethod(Aspect_TOHM_COLOR);  // 颜色显示方式t_select_style->SetColor(Quantity_NOC_LIGHTSEAGREEN);   // 设置选择后颜色t_select_style->SetDisplayMode(1); // 整体高亮t_select_style->SetTransparency(0.1f); // 设置透明度
}

##结果显示

opencascade 获取鼠标选中对象相关推荐

  1. VUE预览PDF文件并利用pdf.js获取鼠标选中的文字和搜索,在iframe中获取选中文字,监听鼠标事件,右键菜单

    一.VUE预览PDF文件并利用pdf.js获取鼠标选中的文字和搜索 需求实现:vue实现预览pdf文件,获取到鼠标选中的文字数据.调用pdf.js自带的搜索方法实现搜索功能(后期可以调用该接口满足其他 ...

  2. C# 获取鼠标选中的文字(屏幕取词)

    本来想做鼠标选中翻译小软件,但发现鼠标选取文字获取并不是很容易,经过不断努力,最终实现. 先看展示 下面给大家说下过程,经历. 网上大部分说的都是使用金山提供的那个dll去进行实现,但是我尝试了一下, ...

  3. html获取鼠标选中文本,经过JS获得input输入框中用鼠标选中的内容

    通过JS获得input输入框中用鼠标选中的内容 New Document //Firefox, Safari, Opera下,可以用window.getSelection(), 参考MDC //IE下 ...

  4. java鼠标进入高亮效果_鼠标选中文本划词高亮、再次选中划词取消高亮效果

    当我们需要鼠标选中文本后,文本高亮.当再次将选中的文本选中后,取消高亮效果时该如何实现呢? 一.介绍 window.getSelection 获取鼠标选中内容,主要是利用了window.getSele ...

  5. js:获取当前鼠标选中的文本/html

    实现原理: 通过window.getSelection 获取当前选中的区域,再获取文本,和html 完整代码 <div id="content">一剪梅·咏柳夏完淳[明 ...

  6. js 获取页面鼠标选中的文字

    js获取页面鼠标选中的文字,最主要的代码 event.selection = window.getSelection(); 页面代码 <div><p class="cont ...

  7. [cb]SceneView 获取鼠标位置

    扩展需求 在Scene视图中获取鼠标的位置 Demo 在Scene视图中,当鼠标点击时实例化一个Cube 重点部分 实现代码 using UnityEngine; using UnityEditor; ...

  8. Unity3D实现鼠标选中“高亮”显示功能

    一.简介 基于Highlighting System插件的鼠标选中物体时,使物体高亮显示.在这个插件的基础上,改动小部分功能,使物体可以高亮显示. 在网上有很多这鼠标高亮显示的相关资料,要么不符合自己 ...

  9. 使用小技巧教你用Selenium获取鼠标指向的元素

    有一个同学在Gne的群里面咨询如何通过Selenium获取当前鼠标指向的元素,在我讲了方法以后,他过了两天又来问: 那么,我今天就来写一篇文章,具体说说应该怎么操作. 这个方法的核心,是借助JavaS ...

最新文章

  1. 华东理工大学计算机应用基础,最新华东理工大学计算机应用基础网上作业及全部答案...
  2. Android专题-常用第三方框架
  3. Java多线程系列--“JUC原子类”03之 AtomicLongArray原子类
  4. Linux下C程序的内存映像
  5. Vmware快速安装linux虚拟机(SUSE)
  6. ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车前进实验调试
  7. 工作381-兼容移动端头部
  8. webdriver 爬虫 java_java爬虫通过selenium+WebDriver遍历页面链接报错
  9. python 结构体数组_python实现结构体数组(初始化并赋值)
  10. Android/Linux boot time分析优化
  11. Recoverit for Mac专业的数据恢复工具
  12. linux配置maven环境变量
  13. 物联网周刊(第 5 期):智能家居入口之争
  14. 作业一 统计软件简介与数据操作
  15. mysql 百亿级数据统计实现_如何实现上亿级数据的精准计数?
  16. 彼得林奇:全球理财师中的NO.1
  17. centos7 oracle11gR2安装
  18. matlab 超分辨率,matlab超分辨率
  19. c语言程序设计数独,C语言求解数独
  20. 16种常用的数据分析方法-因子分析

热门文章

  1. 正斜杠和反斜杠的区别
  2. 如何建设一套高标准的智慧监所电教系统
  3. egg自带ctx.curl下载文件
  4. 华为云发起元宇宙 Web3.0联盟,风口上的 AI 计算平台Deepbrain Chain再次登台亮相...
  5. 一级计算机所占比例,excel表格计算数据所占比例-如何用excel计算各分数段所占百分比?...
  6. Adventure Works Cycles案例分析
  7. Python3 bytes 转换字符串
  8. Java 随机数生成器 Random SecureRandom
  9. R语言中聚类过程 可视化
  10. java 团购_java短信接口和团购网站强强结合,优势明显