OpenCasCade将鼠标点映射到OCC三维视图中的三维点(鼠标点转换为OCC三维坐标)
有段时间没写过关于OCC的文章,前段时间在以前写过的一篇文章 介绍将鼠标点转换为OCC三维坐标,在一位博友的提示中,以另外一种方式实现,这种方法就是先构造一条过鼠标点的并且垂直于屏幕的一条线,然后求该直线与某一个面的交点,得到该交点的三维坐标,即是该鼠标点转换为OCC的三为坐标。
代码实现:
//将鼠标位置坐标转换为OCC三维坐标(垂直线法)
gp_Pnt OccEditView::ChangeCoordinateSecond(double x,double y)
{gp_Pnt P0,P1,P3;gp_Vec Vp2;Handle(Geom_Curve) aCurve;double X,Y,Z,VX,VY,VZ;myView->Convert(int(x),int(y),X,Y,Z);myView->Proj(VX,VY,VZ);P1.SetCoord(X,Y,Z);Vp2.SetCoord(VX,VY,VZ);gp_Lin gpLin(P1,gp_Dir(Vp2));aCurve=GC_MakeSegment(gpLin,-10000,10000);GeomAPI_IntCS CS (aCurve,aGeometricSurface); //aGeometricSurface为与直线相交的面Standard_Integer NbSeg = 0;Standard_Integer NbPoints = 0;Handle(Geom_Curve) segment;if(CS.IsDone()){NbSeg = CS.NbSegments();for (Standard_Integer k=1; k<=NbSeg; k++){segment = CS.Segment(k);}NbPoints = CS.NbPoints();for (int k=1; k<=NbPoints; k++){gp_Pnt aPoint=CS.Point(k);P3=aPoint;}}return P3;
}
上述代码中aGeometricSurface 为与直线相交的面,该面可以在鼠标选中某个面时求得,在计算一个面的法向量的时候得出,也可以自己通过其他途径得到。
与平面的垂直线最好设置的长一点,这样更容易求得交点,有时会出现多个交点,这个自己根据相交曲面的实际情况考虑。此处默认只有一个交点。
OpenCasCade将鼠标点映射到OCC三维视图中的三维点(鼠标点转换为OCC三维坐标)相关推荐
- css鼠标拖拉卡顿_在jQuery中拖动Div – 当鼠标缓慢时就很好,但是在鼠标移动快的时候会失败...
有两个问题.一个是你在鼠标离开元素时取消拖动,你不想这样做.第二个是mousemove只是在盒子上,一旦光标开箱即可,不再执行mousemove.您可以存储要拖动的元素,然后将mousemove添加到 ...
- Revit相关问题:符号线,转转问题,生成三维视图
一.Revit符号线如何画粗一些?如何自定义符号线子类别? 1.Revit在族里面符号线的粗细.显示颜色.显示线型为符号线的子类别控制! 你可以通过,管理选项卡新建子类别,然后在画符号线的时候应用该子 ...
- Revit建模:楼板三维视图旋转模型如何使图案跟着旋转
楼板填充图案后,在三维视图中旋转模型,图案不会跟随楼板旋转.如何解决这种情况? 在这种情况下,我们需要知道绘图填充和模型填充的区别. 创建一个楼板 水磨石是一种为楼板添加表层并设置表层的材料. 点击面 ...
- REVIT建模如何 一键生成局部三维视图
许多人说,片是BIM在设计阶段工作的最后一公里,但往往是最后一公里压垮了很多人!对于现阶段来说,很多BIM工程师在Revit上无法直接画出3D效果,因此需要在3D模型之后花费大量的时间和精力来完成面图 ...
- Revit出图翻模【局部三维功能】,三维视图从此不卡
大家好,这里是建模助手--出图翻模模块. 今天想跟大家聊聊revit翻模[局部三维]这个功能. 大家都知道revit翻模,出图,BIM模型创建完成后,施工之前需要进行可视化交底,平面交底已经不能满足指 ...
- echarts修改鼠标悬停在节点上时显示的内容,自定义鼠标悬停显示内容
首先看一下效果,如下图所示: 代码部分: 1.在option对象下的tooltip对象中添加formatter函数,代码如下: var option = {tooltip: {trigger: 'it ...
- swing jtable显示html,Java Swing:基于鼠标指针下的文本显示JTable中的工具提示
我有一个JTable,其中显示一些使用html格式化的字符串数据.我需要显示鼠标指针Java Swing:基于鼠标指针下的文本显示JTable中的工具提示 在鼠标移到"线路1"和& ...
- matlab扣除三维荧光,三维荧光中瑞利散射扣除方法与流程
本发明涉及一种消除荧光瑞利散射方法,特别是一种三维荧光中瑞利散射扣除方法. 背景技术: 三维荧光光谱作为指纹图谱和定性定量方法,近年来得到了广泛应用.为了改善谱图质量和更准确定性定量,需要消除掉谱图中 ...
- CAD看图软件如何切换三维视图?
我们经常使用CAD看图软件查看诸多的CAD图纸,其中就有三维CAD图形.为了可以详细的查看三维CAD图形,CAD看图软件如何切换三维视图?这也是CAD制图工作中,非 常重要 的问题.今天我就 在这里和 ...
- Revit开发__三维视图创建和设置
最近做了一个构件生成钢筋的功能,其中某一部分就是创建三维视图,并在三维视图中同时显示构件本身和钢筋. /// <summary>/// 创建视图,并设置视图相关参数/// </sum ...
最新文章
- java web乱码问题_如何解决JavaWeb乱码问题
- FSWD_2_JavaScript
- C++多态案例二-制作饮品
- 火狐浏览器表单不跳转_表单button的outline在firefox浏览器下的问题
- 视觉平台搭建——光源选型介绍
- python字符串函数split_Python常见字符串操作函数小结【split()、join()、strip()】
- cloudflare免费设置_Cloudflare 入门教程:使用 Cloudflare 免费 CDN 加速 amp; 保护自己的网站...
- 4.php 注册树模式
- Ubuntu下打开windows的txt文件乱码解决
- JAVA程序设计基础(第六版)第六章习题 6.13
- Linux安装vim编辑器
- u8应用服务器设置eai,用友U8+V15EAI用户使用手册.pdf
- java 生成pdf 下载_java生成PDF,并下载到本地
- VisionPro实现测量工件内圆尺寸
- 五、肺癌检测-数据集训练 training.py model.py
- MT-考试座位-颜色排序
- 计算机桌面上的声音图标没了怎么办,右下角小喇叭不见了-电脑桌面右下角有一个调整声音的小喇叭图标没有了,怎么能调出来,电? 爱问知识人...
- C/C++ EasyX 立方体与超立方体的投影 与 伸缩和旋转变换
- 豆豆趣事[2016年02月]
- 【数据】社区发现数据集
热门文章
- java 调用 libsvm_请问该如何调用libsvm 的java 库函数?
- plc模拟器软件_举例说明 你的PLC和触摸屏为什么总是通讯不上?
- mysql 附近3公里的,mysql 查询附近N公里内数据
- spring整合mybatis(详细)
- 不同vlan之间如何ping通_如何利用交换机实现不同VLAN、不同网段之间互访?
- android studio moudel,Android Studio中Project和Module的关系
- Selenium 2自动化测试实战5(模块调用)
- python学习笔记(3)---cookie session
- java 8 接口默认方法
- cf701B Cells Not Under Attack