我是靠谱客的博主 天真星星,最近开发中收集的这篇文章主要介绍C# NX二次开发 NX6.0获取视图中心绝对坐标,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 在NX8.5以上版本可以使用NXOpen.View.AbsoluteOrigin或UF_VIEW_ask_center等方式获取视图中心绝对坐标

但NX6.0版本的.NET中没有UF_VIEW_ask_center以及uc6430等获取视图中心坐标的相关UF函数,在NXOPEN中只有NXOpen.View.Origin,但此属性获取到的坐标系不是绝对坐标系的值,需要进行坐标转换。

/// <summary>
/// 获取视图中心绝对坐标
/// </summary>
/// <param name="theview"></param>
/// <returns></returns>
public static double[] AskViewCenter(NXOpen.View theview)
{
UI theUI = UI.GetUI();
Session theSession = Session.GetSession();
NXOpen.UF.UFSession theUfSession = NXOpen.UF.UFSession.GetUFSession();
double[] center = new double[3];
if (theview == null) theview = theSession.Parts.Work.Views.WorkView;
Point3d theOri = theview.Origin;//此视图中心坐标非绝对坐标系坐标,NX8.5以上可以用NXOpen.View.AbsoluteOrigin获取绝对坐标
Vector3d xVec = theview.GetAxis(XYZAxis.XAxis);
Vector3d yVec = theview.GetAxis(XYZAxis.YAxis);
double[] viewOrign = new double[] { -theOri.X, -theOri.Y, -theOri.Z };
double[] viewXvec = new double[3] { xVec.X, xVec.Y, xVec.Z };
double[] viewYvec = new double[3] { yVec.X, yVec.Y, yVec.Z };
double[] viewMtx = new double[9];
theUfSession.Mtx3.Initialize(viewXvec, viewYvec, viewMtx);
theUfSession.Mtx3.VecMultiplyT(viewOrign, viewMtx, center);
return center;
}

最后

以上就是天真星星为你收集整理的C# NX二次开发 NX6.0获取视图中心绝对坐标的全部内容,希望文章能够帮你解决C# NX二次开发 NX6.0获取视图中心绝对坐标所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部