有段时间没写过关于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三维坐标)相关推荐

  1. css鼠标拖拉卡顿_在jQuery中拖动Div – 当鼠标缓慢时就很好,但是在鼠标移动快的时候会失败...

    有两个问题.一个是你在鼠标离开元素时取消拖动,你不想这样做.第二个是mousemove只是在盒子上,一旦光标开箱即可,不再执行mousemove.您可以存储要拖动的元素,然后将mousemove添加到 ...

  2. Revit相关问题:符号线,转转问题,生成三维视图

    一.Revit符号线如何画粗一些?如何自定义符号线子类别? 1.Revit在族里面符号线的粗细.显示颜色.显示线型为符号线的子类别控制! 你可以通过,管理选项卡新建子类别,然后在画符号线的时候应用该子 ...

  3. Revit建模:楼板三维视图旋转模型如何使图案跟着旋转

    楼板填充图案后,在三维视图中旋转模型,图案不会跟随楼板旋转.如何解决这种情况? 在这种情况下,我们需要知道绘图填充和模型填充的区别. 创建一个楼板 水磨石是一种为楼板添加表层并设置表层的材料. 点击面 ...

  4. REVIT建模如何 一键生成局部三维视图

    许多人说,片是BIM在设计阶段工作的最后一公里,但往往是最后一公里压垮了很多人!对于现阶段来说,很多BIM工程师在Revit上无法直接画出3D效果,因此需要在3D模型之后花费大量的时间和精力来完成面图 ...

  5. Revit出图翻模【局部三维功能】,三维视图从此不卡

    大家好,这里是建模助手--出图翻模模块. 今天想跟大家聊聊revit翻模[局部三维]这个功能. 大家都知道revit翻模,出图,BIM模型创建完成后,施工之前需要进行可视化交底,平面交底已经不能满足指 ...

  6. echarts修改鼠标悬停在节点上时显示的内容,自定义鼠标悬停显示内容

    首先看一下效果,如下图所示: 代码部分: 1.在option对象下的tooltip对象中添加formatter函数,代码如下: var option = {tooltip: {trigger: 'it ...

  7. swing jtable显示html,Java Swing:基于鼠标指针下的文本显示JTable中的工具提示

    我有一个JTable,其中显示一些使用html格式化的字符串数据.我需要显示鼠标指针Java Swing:基于鼠标指针下的文本显示JTable中的工具提示 在鼠标移到"线路1"和& ...

  8. matlab扣除三维荧光,三维荧光中瑞利散射扣除方法与流程

    本发明涉及一种消除荧光瑞利散射方法,特别是一种三维荧光中瑞利散射扣除方法. 背景技术: 三维荧光光谱作为指纹图谱和定性定量方法,近年来得到了广泛应用.为了改善谱图质量和更准确定性定量,需要消除掉谱图中 ...

  9. CAD看图软件如何切换三维视图?

    我们经常使用CAD看图软件查看诸多的CAD图纸,其中就有三维CAD图形.为了可以详细的查看三维CAD图形,CAD看图软件如何切换三维视图?这也是CAD制图工作中,非 常重要 的问题.今天我就 在这里和 ...

  10. Revit开发__三维视图创建和设置

    最近做了一个构件生成钢筋的功能,其中某一部分就是创建三维视图,并在三维视图中同时显示构件本身和钢筋. /// <summary>/// 创建视图,并设置视图相关参数/// </sum ...

最新文章

  1. java web乱码问题_如何解决JavaWeb乱码问题
  2. FSWD_2_JavaScript
  3. C++多态案例二-制作饮品
  4. 火狐浏览器表单不跳转_表单button的outline在firefox浏览器下的问题
  5. 视觉平台搭建——光源选型介绍
  6. python字符串函数split_Python常见字符串操作函数小结【split()、join()、strip()】
  7. cloudflare免费设置_Cloudflare 入门教程:使用 Cloudflare 免费 CDN 加速 amp; 保护自己的网站...
  8. 4.php 注册树模式
  9. Ubuntu下打开windows的txt文件乱码解决
  10. JAVA程序设计基础(第六版)第六章习题 6.13
  11. Linux安装vim编辑器
  12. u8应用服务器设置eai,用友U8+V15EAI用户使用手册.pdf
  13. java 生成pdf 下载_java生成PDF,并下载到本地
  14. VisionPro实现测量工件内圆尺寸
  15. 五、肺癌检测-数据集训练 training.py model.py
  16. MT-考试座位-颜色排序
  17. 计算机桌面上的声音图标没了怎么办,右下角小喇叭不见了-电脑桌面右下角有一个调整声音的小喇叭图标没有了,怎么能调出来,电? 爱问知识人...
  18. C/C++ EasyX 立方体与超立方体的投影 与 伸缩和旋转变换
  19. 豆豆趣事[2016年02月]
  20. 【数据】社区发现数据集

热门文章

  1. java 调用 libsvm_请问该如何调用libsvm 的java 库函数?
  2. plc模拟器软件_举例说明 你的PLC和触摸屏为什么总是通讯不上?
  3. mysql 附近3公里的,mysql 查询附近N公里内数据
  4. spring整合mybatis(详细)
  5. 不同vlan之间如何ping通_如何利用交换机实现不同VLAN、不同网段之间互访?
  6. android studio moudel,Android Studio中Project和Module的关系
  7. Selenium 2自动化测试实战5(模块调用)
  8. python学习笔记(3)---cookie session
  9. java 8 接口默认方法
  10. cf701B Cells Not Under Attack