UFUN和NXOPEN中的变换矩阵区别有哪些
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,这篇文章主要介绍UFUN和NXOPEN中的变换矩阵区别有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!UFUN中用于实体变换矩阵的函数为:UF_MODL_transform
千家信息网最后更新 2025年02月23日UFUN和NXOPEN中的变换矩阵区别有哪些
这篇文章主要介绍UFUN和NXOPEN中的变换矩阵区别有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
UFUN中用于实体变换矩阵的函数为:
UF_MODL_transform_entities
NXOPEN中用于装配组件变换矩阵的类为:
ComponentNetwork
它们的变换矩阵方式是不同的,前者为动态变换,后者为静态变换。
动态变换求法:
var invert = Current.Inverse(); var trans = invert.Multiply(position);
静态变换求法(先旋转后平移):
var cur = Current; cur.Transpose();//转置 var pos = position; pos.Transpose();//转置 var trans = cur.Inverse().Multiply(pos); var rotation = trans.UpperLeft.ToMatrix3x3(); trans.Transpose(); var translation = trans.Translation.ToVector3d();
分享下我的两个移动相关的类(部分相关类没有提供):
public class MoveComponentBuilder { #region Constructors protected MoveComponentBuilder() { var workPart = theSession.Parts.Work; _positioner = workPart.ComponentAssembly.Positioner; _netWork = (ComponentNetwork)_positioner.EstablishNetwork(); } public static MoveComponentBuilder Create(Listcomponents, Matrix44 matrix) { var mCompBuilder = new MoveComponentBuilder(); mCompBuilder.Current = matrix; mCompBuilder.HomePosition = matrix; mCompBuilder.Components.AddRange(components); mCompBuilder._netWork.SetMovingGroup(components.ToArray()); mCompBuilder._netWork.MoveObjectsState = true; return mCompBuilder; } public static MoveComponentBuilder Create(List components,SpecifyOrientation manip) { var mCompBuilder = Create(components, manip.GetPosition()); mCompBuilder.Manip = manip; return mCompBuilder; } #endregion #region Fields private Positioner _positioner; private ComponentNetwork _netWork; private Session theSession = Session.GetSession(); #endregion #region Properties public Matrix44 Current { get; protected set; } public Matrix44 HomePosition { get; protected set; } public List Components { get; protected set; } = new List (); public SpecifyOrientation Manip { get; protected set; } #endregion #region Methods public void Move(Matrix44 position) { var cur = Current; cur.Transpose();//转置 var pos = position; pos.Transpose();//转置 var trans = cur.Inverse().Multiply(pos); var rotation = trans.UpperLeft.ToMatrix3x3(); trans.Transpose(); var translation = trans.Translation.ToVector3d(); _netWork.BeginDrag(); _netWork.DragByTransform(translation,rotation); _netWork.EndDrag(); Current = position; } public void BackHome() { Move(HomePosition); } public bool Update() { if (Manip==null) { return false; } Move(Manip.GetPosition()); return true; } public bool UpdateManipOnly() { if (Manip==null) { return false; } Current = Manip.GetPosition(); return true; } public void Apply() { _netWork.Solve(); } #endregion }
public class MoveObjectBuilder { #region Conductor protected MoveObjectBuilder() { } public static MoveObjectBuilder Create(Listobjs, Matrix44 matrix) { var mObj = new MoveObjectBuilder(); mObj.Current = matrix; mObj.HomePosition = matrix; mObj.Objects.AddRange(objs); return mObj; } public static MoveObjectBuilder Create(List objs, SpecifyOrientation manip) { var mObj = Create(objs, manip.GetPosition()); mObj.Manip = manip; return mObj; } #endregion #region Fields private static UFSession theUfSession = UFSession.GetUFSession(); private static Session theSession = Session.GetSession(); #endregion #region Properties public List Objects { get; protected set; } = new List (); public Matrix44 Current { get; protected set; } public Matrix44 HomePosition { get; protected set; } public SpecifyOrientation Manip { get; protected set; } #endregion #region Methods public void Move(Matrix44 position) { var invert = Current.Inverse(); var trans = invert.Multiply(position); theUfSession.Modl.TransformEntities( Objects.Count, Objects.ToArray(), trans.ToArray()); Current = position; theUfSession.Modl.Update(); } public void BackHome() { Move(HomePosition); } public bool Update() { if (Manip == null) { return false; } Move(Manip.GetPosition()); return true; } public bool UpdateManipOnly() { if (Manip==null) { return false; } Current = Manip.GetPosition(); return true; } #endregion }
演示:
以上是"UFUN和NXOPEN中的变换矩阵区别有哪些"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
变换
矩阵
内容
动态
篇文章
静态
求法
不同
两个
价值
兴趣
函数
实体
小伙
小伙伴
方式
更多
知识
组件
行业
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
路由交换技术上的服务器长什么样
河北工控软件开发正规平台
网络技术应用开发就业前景
mt4原油服务器
为什么数据库没有索引
网络安全扫描文件夹
互联网高科技集团 D 轮
福瑞博德软件开发是否外包
珠峰软件开发
服务器抓sftp包
网络技术服务经验
大学生网络安全查题软件
数据库处理技术经历了那五个阶段
电视墙服务器连接图
远程管理无启动服务器
csv导入数据库大量数据错误
网络安全维护评测
小学五年级网络安全知识竞赛
海淀区技术软件开发包括什么
大话2佳时庆之前的服务器是哪个
网络技术安全英语怎么说
华为云服务器虚拟网关
开展网络安全知识竞赛简讯
网络安全性要求
电商网络安全由哪个部门负责
请检查邮件服务器配置
金额软件开发成果如何验收
贵州璇佳季互联网科技有限公司
更改服务器地址
一张数据库可以有多个主键