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;
}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值