文档章节

移动组件

小猛Hit
 小猛Hit
发布于 2017/04/19 11:03
字数 273
阅读 18
收藏 0
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using NXOpen; 
using NXOpen.UF; 

namespace DragComp 
{ 
    public class Drag 
    { 
        private  UFSession theUfSession = UFSession.GetUFSession(); 
        private  Session theSession = Session.GetSession(); 
        public double[] currentMtx44 = new double[16]; 
        private NXOpen.Positioning.ComponentNetwork netWork; 
        private NXOpen.Positioning.ComponentPositioner positioner; 
        public Drag(Part workPart,double[] current) 
        { 
            this.positioner = workPart.ComponentAssembly.Positioner; 
            this.netWork = (NXOpen.Positioning.ComponentNetwork)this.positioner.EstablishNetwork(); 
            currentMtx44 = current; 
        } 

        /// <summary> 
        /// Transes the comps. 
        /// </summary> 
        /// <param name="component">The component.</param> 
        /// <param name="trans">The trans.</param> 
        public void Move(NXOpen.Assemblies.Component component, double[] position) 
        { 
            Array.Resize(ref position, 16); 
            double[] trans = CalTrans(position); 

            Matrix3x3 matrix = new Matrix3x3(); 
            matrix.Xx = trans[0];matrix.Xy = trans[4];matrix.Xz = trans[8]; 
            matrix.Yx = trans[1]; matrix.Yy = trans[5]; matrix.Yz = trans[9]; 
            matrix.Zx = trans[2]; matrix.Zy = trans[6]; matrix.Zz = trans[10]; 
            Vector3d vector = new Vector3d(trans[3], trans[7], trans[11]); 

            if ( netWork == null) 
            { 
                 positioner = Session.GetSession().Parts.Work.ComponentAssembly.Positioner; 
                 netWork = (NXOpen.Positioning.ComponentNetwork) positioner.EstablishNetwork(); 
            } 

             netWork.SetMovingGroup(new NXOpen.Assemblies.Component[] { component }); 
             netWork.NetworkArrangementsMode = NXOpen.Positioning.ComponentNetwork.ArrangementsMode.InUsed; 
             netWork.RemoveAllConstraints(); 
             netWork.BeginDrag(); 
             positioner.BeginMoveComponent(); 
             netWork.MoveObjectsState = true; 
             netWork.DragByTransform(vector, matrix); 
             positioner.EndMoveComponent(); 
             netWork.EndDrag(); 
            //更新 
            currentMtx44 = position; 
        } 

        private double[] CalTrans(double[] position) 
        { 
            double[] trans = new double[16]; 
            double[] invertCurrentMtx44 = new double[16]; 
            theUfSession.Mtx4.Invert(currentMtx44, invertCurrentMtx44); 
            theUfSession.Mtx4.Multiply(invertCurrentMtx44, position, trans); 
            double[] translation = new double[3]; 
            theUfSession.Mtx4.AskTranslation(trans, translation); 
            double[] rotation = new double[9]; 
            theUfSession.Mtx4.AskRotation(trans, rotation); 
            theUfSession.Mtx3.Transpose(rotation, rotation); 
            theUfSession.Mtx4.Initialize(1, translation, rotation, trans); 
            return trans; 
        } 

    } 
}

 

© 著作权归作者所有

共有 人打赏支持
上一篇: 断面曲线
小猛Hit
粉丝 0
博文 5
码字总数 1184
作品 0
武汉
私信 提问
[转]Web App 框架选择之百度&腾讯

百度的GMU GMU(Global Mobile UI)是百度前端通用组开发的移动端组件库,GMU是基于zepto的mobile UI组件库,提供webapp、pad端简单易用的UI组件。具有代码体积小、简单、易用等特点,组件内...

冰点沐雪
2014/12/16
0
0
UE4移动组件详解(一)——移动框架与实现原理

前言 关于UE4的移动组件,我写了一篇非常详细的分析文档。由于篇幅比较大,我将其拆分成三个部分。分别从移动框架与实现原理,移动的网络同步,移动组件的优化与改造三个方面来写。这三篇文档...

sinat_28941165
04/11
0
0
移动端框架收集

frozenui (http://frozenui.github.io/) App.js (http://code.kik.com/app/2/index.html) junior (http://justspamjustin.github.io/junior/#home) 移动web开发框架 纯粹的总结一下移动......

DannyTam
2016/07/11
70
0
手机网页用Bootstrap还是jQuery Mobile

很多新手纠结这个问题?两个框架都能够支持做手机网页,那么它们的区别是什么呢,适用场景是什么呢?下面我们从这几个方面比较这两个框架:解决问题、功能、适用场景。 解决问题 跨设备的网页...

snowing1990
2016/03/11
199
0
Touch UI:基于vue的移动端UI框架

Hi,我们做了一款高质量的、免费的移动端UI框架。 经过将两年多开发和项目实践,我们终于把Touch UI开放出来了。这是一套基于vue.js打造的移动端UI框架,包含近百种组件,几乎囊括了开发移动...

UIleader
05/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

python机器学习及实践学习笔记1-如何打开ipynb后缀文件

python机器学习及实践学习笔记1-如何打开ipynb后缀文件 2017年02月22日 14:58:08 hustzhoutian 阅读数:45365更多 个人分类: 深度学习 需要安装ipython notebook,如果你已经安装Anaconda软...

linjin200
7分钟前
1
0
关于在vim中的查找和替换

1,查找 在normal模式下按下/即可进入查找模式,输入要查找的字符串并按下回车。 Vim会跳转到第一个匹配。按下n查找下一个,按下N查找上一个。 Vim查找支持正则表达式,例如/vim$匹配行尾的"...

休辞醉倒
11分钟前
0
0
in_array的坑

PHP in_array的坑 ps: 应该是弱类型语言的坑 php文档 顾名思义,in_array就是查找一个值是否在数组里面。 问题 事故现场 一个sql注入的测试代码如下: $type = $_GET['type'];$types = [2,3,...

o0无忧亦无怖
11分钟前
14
1
Yarn(包管理器) 的基本用法

Yarn是一个快速、可靠、安全的依赖管理工具,是npm的代替品。 Yarn对你的代码来说是一个包管理工具,你可以通过它使用全世界开发者的代码,或者分享自己的代码。 安装Yarn: 操作系统不同,安...

帝子兮
13分钟前
1
0
阿里云HBase全新发布X-Pack NoSQL数据库再上新台阶

一、八年双十一,造就国内最大最专业HBase技术团队 阿里巴巴集团早在2010开始研究并把HBase投入生产环境使用,从最初的淘宝历史交易记录,到蚂蚁安全风控数据存储。持续8年的投入,历经8年双...

阿里云官方博客
13分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部