QQ登录

只需一步,快速开始

快捷登录

登录 或者 注册 请先

UG爱好者

查看: 2143|回复: 1

[原创] UG变换实体功能

[复制链接]

中尉

Rank: 5Rank: 5

18

主题

255

帖子

3185

积分
发表于 2018-2-11 13:09:24 | 显示全部楼层 |阅读模式
// NX 10.0.0.24
// Journal created by Administrator on Sat Feb 10 16:04:57 2018 中国标准时间
//
using System;
using NXOpen;

public class NXJournal
{
    private static TaggedObject taggedObject; //存储选择的对象
    private static Point3d point3d;//存储选择的点


    public static void Main(string[] args)
    {
        Session theSession = Session.GetSession();
        Part theWork = theSession.Parts.Work;
        Part displayPart = theSession.Parts.Display;

        //选择要变换的对象
        UI.GetUI().SelectionManager.SelectTaggedObject("WCS变换到ABS", "选择变换对象", Selection.SelectionScope.AnyInAssembly, false, false,
            out taggedObject, out point3d);

        //UI.GetUI().NXMessageBox.Show("",NXMessageBox.DialogType.Information, (taggedObject as Body).Name);

        Body body = taggedObject as Body;

        NXOpen.Features.MoveObject nullNXOpen_Features_MoveObject = null;

        NXOpen.Features.MoveObjectBuilder moveObjectBuilder1 = theWork.BaseFeatures.CreateMoveObjectBuilder
            (nullNXOpen_Features_MoveObject); //构建移动构造器

        moveObjectBuilder1.ObjectToMoveObject.Add(body); //添加到列表

        moveObjectBuilder1.TransformMotion.Option = NXOpen.GeometricUtilities.ModlMotion.Options.CsysToCsys;//变换的方式

        //绝对坐标
        Point3d absoluteOrigin = new Point3d(0.0, 0.0, 0.0); //绝对原点
        Matrix3x3 absoluteMatrix = new Matrix3x3  //绝对方向
        {
            Xx = 1.0,
            Xy = 0.0,
            Xz = 0.0,
            Yx = 0.0,
            Yy = 1.0,
            Yz = 0.0,
            Zx = 0.0,
            Zy = 0.0,
            Zz = 1.0
        };
        CoordinateSystem coordinateSystem = theWork.CoordinateSystems.CreateCoordinateSystem(absoluteOrigin, absoluteMatrix, true);

        //设置移动坐标系
        moveObjectBuilder1.TransformMotion.FromCsys = theWork.WCS.CoordinateSystem;//起始CSYS
        moveObjectBuilder1.TransformMotion.ToCsys = coordinateSystem;//目标CSYS

        try
        {
            //提交移动
            moveObjectBuilder1.Commit();
            moveObjectBuilder1.GetCommittedObjects();
            moveObjectBuilder1.Destroy();

            //wcs回绝对零点,
            theWork.WCS.SetOriginAndMatrix(absoluteOrigin, absoluteMatrix);
        }
        catch (Exception)
        {
            UI.GetUI().NXMessageBox.Show("变换错误", NXMessageBox.DialogType.Error, "命令出现错误,请核查");
            // throw;
        }
    }
    public static int GetUnloadOption(string dummy) { return (int)NXOpen.Session.LibraryUnloadOption.Immediately; }
}







评分

参与人数 1元宝 +1 收起 理由
3D世界网-零 + 1 不错,支持你!

查看全部评分

版权声明  
本人声明此帖为本人原创帖,未经允许,不得转载!

有奖推广贴子: 

回复

使用道具 举报

大将

Rank: 11Rank: 11Rank: 11Rank: 11

16

主题

1万

帖子

8万

积分

论坛贡献活跃会员一等奖

发表于 2018-2-11 13:51:36 | 显示全部楼层
谢谢分享,学习了!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

 
 
QQ:1359218528
工作时间:
9:00-17:00
 
微信公众号
手机APP
机械社区
微信小程序

手机版|UG爱好者论坛 ( 京ICP备10217105号-2 )    论坛管理员QQ:1359218528

本站信息均由会员发表,不代表本网站立场,如侵犯了您的权利请联系管理员,邮箱:1359218528@qq.com  

Powered by UG爱好者 X3.2  © 2001-2014 Comsenz Inc. GMT+8, 2024-3-29 17:47

返回顶部