UG二次开发图层管理相关方法

图层管理图层就是一个能保存模具、总装配体中各部件的工作层。就像一本书,图层是书中的每一页。

图层使用恰当是很重要的,比如你的文件里有多个部件时,你需要进行修改或查看时,仅仅使用隐藏的命令是比较繁琐的,这时你把不想看见的东西放进特定的图层里,随时可以打开或关闭,这样就很方便了。

这里整理了图层相关的操作方法,包括以下内容:

1、获取工作图层

2、获取图层状态

3、设置图层状态

4、指定除工作图层之外的所有图层状态

5、修改层状态

6、将指定的图层设置为相应的指定状态

7、把对象移动到指定层

8、修改对象的图层ID

/// <summary>
/// 获取工作图层
/// </summary>
/// <returns></returns>
public static int GetWorkLayer()
{
    int workLayer;
    theUFSession = UFSession.GetUFSession();
    theUFSession.Layer.AskWorkLayer(out workLayer);
    return workLayer;
}

/// <summary>
/// 获取图层状态
/// </summary>
/// <param name="layerId">图层id</param>
/// <returns></returns>
public static int GetLayerStatus(int layerId)
{
    int status;
    theUFSession = UFSession.GetUFSession();
    theUFSession.Layer.AskStatus(layerId , out status);
    return status;
}

/// <summary>
/// 设置图层状态
/// </summary>
/// <param name="layerId">图层id</param>
/// <param name="status">UF_LAYER_WORK_LAYER工作图层,UFConstants.UF_LAYER_ACTIVE_LAYER活动图层,UF_LAYER_REFERENCE_LAYER参考图层 或UF_LAYER_INACTIVE_LAYER非活动图层</param>
public static void SetLayerStatus(int layerId, int status)
{
    theUFSession = UFSession.GetUFSession();
    theUFSession.Layer.SetStatus(layerId, status);
}

/// <summary>
/// 指定除工作图层之外的所有图层状态
/// </summary>
/// <param name="status"></param>
public static void SetLayerAllButWork(int status)
{
    theUFSession = UFSession.GetUFSession();
    theUFSession.Layer.SetAllButWork(status);
}

/// <summary>
/// 修改层状态
/// </summary>
/// <param name="layerId">层id</param>
/// <param name="state">false=不显示,true=显示</param>
public static void ChangeLayerState(int layerId, bool state)
{
    Session theSession = Session.GetSession();
    workPart = theSession.Parts.Work;
    NXOpen.Layer.StateInfo[] stateArray1 = new NXOpen.Layer.StateInfo[1];
    stateArray1[0] = new NXOpen.Layer.StateInfo(layerId, NXOpen.Layer.State.Selectable);
    workPart.Layers.ChangeStates(stateArray1, state);
}

/// <summary>
/// 将指定的图层设置为相应的指定状态
/// </summary>
/// <param name="layerCount">指定图层数量</param>
public static void SetManyLayerStatus(int layerCount, UFLayer.StatusInfo changes)
{
    theUFSession = UFSession.GetUFSession();
    theUFSession.Layer.SetManyLayersStatus(layerCount, ref changes);
}

/// <summary>
/// 把对象移动到指定层
/// </summary>
/// <param name="partObj"></param>
/// <param name="layerId"></param>
public static void MoveToTargetLayer(Part partObj, int layerId)
{
    NXOpen.DisplayableObject[] objectArray1 = new NXOpen.DisplayableObject[0];
    foreach (var dp in partObj.Bodies)
    {
        Array.Resize(ref objectArray1, objectArray1.Length + 1);
        objectArray1[objectArray1.Length - 1] = (DisplayableObject)dp;
    }
    workPart.Layers.MoveDisplayableObjects(layerId, objectArray1);
}

/// <summary>
/// 修改对象的图层ID
/// </summary>
/// <param name="objTag"></param>
/// <param name="LayerId"></param>
public static void SetLayer(Tag objTag, int LayerId)
{
    theUFSession = UFSession.GetUFSession();
    theUFSession.Obj.SetLayer(objTag, LayerId);
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MarcoPro

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值