OpenInventor笔记:线性坐标轴PoLinearAxis的使用

在MeshViz模块里有许多坐标轴的类,PoLinearAxis类应该最有用,关键的语句是下面的构造函数:

PoLinearAxis ax = new PoLinearAxis(new SbVec3f(35.0f, 35.0f, 35.0f), 88.0f, 
                                   PoCartesianAxis.Types.XY, 10.0f);
 

第一个参数是起点的空间位置,SbVec3f类型;

第二个参数是终点的位置,但只是一个浮点数,含义是由后面的PoCartesianAxis.Types.XY参数决定的;

第三个参数是决定坐标轴在哪个平面上和指向的方向,XY是指在XY平面上,平行X方向;

第四个参数是刻度数字的间隔,这个参数是可选的,但省略时,刻度间隔是自动设置的。



_viewer =  new SoWinExaminerViewer(_parent, "Name", true, 
                SoWinFullViewer.BuildFlags.BUILD_ALL, SoWinViewer.Types.BROWSER);

PoDomain domain = new PoDomain();
domain.min.SetValue(0, 0, 0);
domain.max.SetValue(100, 100, 100);

PoMiscTextAttr textAttr = new PoMiscTextAttr() ;
textAttr.fontName.SetValue("Courier New");

// 画一个长方体的框子,可以清楚地看到坐标轴的位置和方向
PoAutoCubeAxis autoCubeAxis = new PoAutoCubeAxis(new SbVec3f(0,0,0), new SbVec3f(100,100,100),
             PoAutoCubeAxis.AxisTypes.LINEAR,
             PoAutoCubeAxis.AxisTypes.LINEAR,
             PoAutoCubeAxis.AxisTypes.LINEAR,
              "X", "Y", "Z") ;
autoCubeAxis.Set("backgroundFaceApp.material", "diffuseColor 0.5 0 0") ;
autoCubeAxis.isBackgroundFacesVisible.SetValue(true) ;

_root = new SoSeparator() ;
_root.AddChild(domain);
_root.AddChild(textAttr);
_root.AddChild(autoCubeAxis);

// 画一个线性坐标轴
PoLinearAxis ax = new PoLinearAxis(new SbVec3f(35.0f, 35.0f, 35.0f), 88.0f, 
                                   PoCartesianAxis.Types.XY, 10.0f);

_root.AddChild(ax);

_viewer.SetSceneGraph(_root);
_viewer.ViewAll();

 

image

换成YX平面时,坐标轴仍在XY平面上,但平行Y轴。

image

posted @   申龙斌的程序人生  阅读(2128)  评论(1编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示