文章目录
- 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);
其效果为: