UFUN和NXOPEN中的变换矩阵区别有哪些
发表于:2025-01-16 作者:千家信息网编辑
千家信息网最后更新 2025年01月16日,这篇文章主要介绍UFUN和NXOPEN中的变换矩阵区别有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!UFUN中用于实体变换矩阵的函数为:UF_MODL_transform
千家信息网最后更新 2025年01月16日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安全错误
数据库的锁怎样保障安全
幻塔要同一个服务器才能加好友吗
网络安全教育部比赛
工行软件开发中心户口怎么样
web调用数据库时间失败
qq imap 服务器
让服务器程序崩溃的代码
软件开发跟软件工程的区别
成都软件开发平均工资多少
健全网络安全管理办法
数据库数据查询检测报告
电脑笔记软件开发
属于书目数据库
软件开发目前最火的方向
思科网络技术学院邮件确认
冒险岛2服务器地址
软件开发企业专访导读
山西信息化软件开发代理价格
csgo中国社区服务器
最近网络安全知识手册
数据库都用什么语言
网络安全周金融日活动总结
软件开发过程的分析阶段包括
游戏软件开发专业需要学什么
蚂蚁金服数据库和谁竞争
校园网络安全内容摘抄1000字
华为的gaussdb数据库
火山软件开发平台找图
福州员工服务管理软件开发
云服务器建设方案
orko数据库