找回密码
 立即注册

QQ登录

只需一步,快速开始

微信扫码登录

搜索
查看: 2315|回复: 1

[原创] UG变换实体功能

[复制链接]

18

主题

234

回帖

3185

积分

中尉

积分
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 不错,支持你!

查看全部评分

16

主题

1万

回帖

8万

积分

大将

积分
83485

论坛贡献活跃会员一等奖

发表于 2018-2-11 13:51:36 | 显示全部楼层
谢谢分享,学习了!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

咨询QQ:1359218528|发帖须知!|Archiver|手机版|小黑屋|UG爱好者论坛 ( 京ICP备10217105号-2 )

GMT+8, 2024-12-22 16:03

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表