当前位置: 首页 > news >正文

Opencascad(C++)-创建自定义坐标系

文章目录

  • 1、前言
  • 2、在Opencascad中显示小的坐标系
  • 3、在Opencascad中创建自定义的坐标系


1、前言

在Opencascad开发时,在view中可以显示小的坐标系,但是有时我们需要在建模时创建基准坐标系,当然可以作为工件坐标系也可以作为基准坐标系。本文以一个实际的例子讲述一下自定义坐标系的创建,当然,我们默认是显示框架已经做好了。


2、在Opencascad中显示小的坐标系

首先看到效果如下图所示:
在这里插入图片描述
这个是通过

Handle(V3d_View) myView;  //这里需要初始化
myView->TriedronDisplay(Aspect_TOTP_LEFT_LOWER, Quantity_NOC_WHITE, 0.1, V3d_ZBUFFER);//这是显示小坐标系的代码

当然可以设置这个坐标系的样式,其可以设置为cube形式,其代码为:

myView->TriedronDisplay(Aspect_TOTP_LEFT_LOWER, Quantity_NOC_WHITE, 0.1, V3d_ZBUFFER);//这是显示小坐标系的代码//myView->TriedronErase(); 隐藏坐标系viewCube = new AIS_ViewCube();myContext->Display(viewCube, Standard_True);

其效果为:
在这里插入图片描述
这里就多了一个坐标系,所有打开上面代码中注释的

	//myView->TriedronErase(); 隐藏坐标系

即可。
如下图:
在这里插入图片描述
完整的代码为:

myView->TriedronDisplay(Aspect_TOTP_LEFT_LOWER, Quantity_NOC_WHITE, 0.1, V3d_ZBUFFER);//这是显示小坐标系的代码myView->TriedronErase(); 隐藏坐标系viewCube = new AIS_ViewCube();myContext->Display(viewCube, Standard_True);

但是,对于我这种人来说,出现这个cube反而感觉很不舒服,毕竟感觉很丑,所以我一般都不会用cube样式的,喜欢干净整洁的。

3、在Opencascad中创建自定义的坐标系

创建自定义的坐标系需要用的类是AIS_Trihedron,
其完整的代码为:

//创建工件坐标系gp_Pnt origionPnt(0, 0, 0);//原点gp_Pnt xAxisPnt(1, 0, 0); gp_Vec vectorX(origionPnt, xAxisPnt);          //X轴矢量gp_Dir aixX(vectorX / vectorX.Magnitude());// X轴gp_Vec vectorY = vectorX.Rotated(gp_Ax1(origionPnt, gp_Dir(0, 0, 1)), M_PI_2);	//获取Y轴矢量gp_Vec vectorZ = vectorX.Crossed(vectorY); //Z轴矢量gp_Dir aixZ = (vectorZ / vectorZ.Magnitude());//Z轴gp_Ax2 ax2 = gp_Ax2(origionPnt, aixZ, aixX);Handle(Geom_Axis2Placement) TrihedronAxis = new Geom_Axis2Placement(ax2);partTrihedron = new AIS_Trihedron(TrihedronAxis);partTrihedron->SetTypeOfPresentation(PrsMgr_TypeOfPresentation3d::PrsMgr_TOP_AllView);   //设置显示样式,所有视图有效partTrihedron->SetDatumDisplayMode(Prs3d_DatumMode::Prs3d_DM_Shaded);							//设置基准形状样式//设置轴向标签partTrihedron->SetLabel(Prs3d_DatumParts::Prs3d_DP_Origin, "OC");		partTrihedron->SetLabel(Prs3d_DatumParts::Prs3d_DP_XAxis, "XC");partTrihedron->SetLabel(Prs3d_DatumParts::Prs3d_DP_YAxis, "YC");partTrihedron->SetLabel(Prs3d_DatumParts::Prs3d_DP_ZAxis, "ZC");	//设置轴向颜色partTrihedron->SetColor(Quantity_NOC_BLUE);partTrihedron->SetXAxisColor(Quantity_NOC_RED);partTrihedron->SetYAxisColor(Quantity_NOC_GREEN);//设置轴值,默认是100mm,可以修改partTrihedron->SetSize(WCSVALUE);myContext->Display(partTrihedron, true);

其效果为:
在这里插入图片描述

http://www.lryc.cn/news/217214.html

相关文章:

  • MySQL数据库入门到大牛_01_数据库概述
  • Web - Servlet详解
  • postgresql 触发器如何生成递增序列号,从1开始,并且每天重置
  • “第五十九天”
  • IDEA集成Docker插件打包服务镜像与运行【附Docker命令汇总】
  • 【Linux网络编程_TCP/UDP_字节序_套接字 实现: FTP 项目_局域网聊天项目 (已开源) 】.md updata:23/11/03
  • Leetcode刷题详解——全排列
  • JSONP 跨域访问(1), 简介, 原理, 实验, 缺点
  • velero备份k8s集群
  • 描述低轨星座的特点和通信挑战,以及它们在5G和B5G中的作用。
  • Spring Boot实践 --windows环境下 K8s 部署 Docker
  • Linux 将Qt程序打包为AppImage包
  • 修复国产电脑麒麟系统开机出现initramfs 问题
  • 机器人控制算法—如何使用C++读取pgm格式的栅格地图并转化为ROS地图格式的data?
  • 牛客项目(五)-使用kafka实现发送系统通知
  • 计算机网络——第一章时延部分深入学习、相关习题及详细解析
  • CSS3媒体查询与页面自适应
  • UG\NX二次开发 超长的对象属性值,怎么设置
  • 流媒体服务实现H5实时预览视频
  • C++适配器
  • 基于openresty waf二次开发多次匹配到的ip再做拉黑
  • 新一代构建工具Vite-xyphf
  • Flink源码解析三之执行计划⽣成
  • Flutter 常见错误记录总结
  • [ASP]校无忧在线报名系统 v2.1
  • 【Hydro】部分基流分割方法及程序代码说明
  • C#Regex正则表达式(Regular Expression)
  • Wi-Fi还可以做什么?柯南解释IOT应用
  • centos部署java程序
  • Sqoop导入到Hive,Hive使用 HA