0
点赞
收藏
分享

微信扫一扫

UG NX二次开发(C#)-装配-删除阵列矩阵


前言

在外部模式对装配体进行替换或者删除时,有时遇到部分组件不能替换或者删除,其中一个原因是阵列主组件,是不允许更改的。下面介绍下采用UG NX二次开发的方法删除阵列主组件。

错误介绍

在一个装配体模型中,删除某个组件时会出现下面的错误:

“不能删除组件图样的主组件”

这就导致组件不能删除,也不能被替换。

UG NX二次开发(C#)-装配-删除阵列矩阵_二次开发

错误原因及解决方法

这是由于这个组件是阵列的主组件,通过删除其对应的组件阵列,即如下图所示。

UG NX二次开发(C#)-装配-删除阵列矩阵_NX二次开发_02

右键菜单中删除,弹出如下提示框。

UG NX二次开发(C#)-装配-删除阵列矩阵_二次开发_03

点击“是”,则删除了组件阵列,结果如下图所示。

UG NX二次开发(C#)-装配-删除阵列矩阵_NX二次开发_04

然后再通过删除操作,就可以删除掉对应的组件。

采用UG NX二次开发

其实现的思路如下:


  1. 删除此组件
  2. 检测此组件还存在
  3. 如果存在,则是删除失败,然后判断其是否是阵列主组件
  4. 如果是阵列主组件,则删除此组件对应的阵列
  5. 然后再删除此组件
    代码如下:

/// <summary>
/// 判断组件是不是阵列主组件
/// </summary>
/// <param name="component"></param>
/// <returns></returns>
public static bool IsPatternMasterComponent(Component component)
{
//获取部件的装配体
ComponentAssembly componentAssembly = workPart.ComponentAssembly;
//获取部件中含有的所有的组件阵列集合
NXOpen.Assemblies.ComponentPatternCollection componentPatternCollection = componentAssembly.ComponentPatterns;
NXOpen.Assemblies.ComponentPattern[] componentPatterns;
//判断是否含有阵列组件
componentPatternCollection.GetAllComponentPatterns(out componentPatterns);
if (componentPatterns.Length == 0)
{
return false;
}
//循环搜索是否是阵列主组件
foreach (var comp in componentPatterns)
{
PatternMember[] patternMembers = comp.GetAllPatternMembers();
foreach (var pm in patternMembers)
{
if (pm.IsPatternMaster())
{
Component[] components = pm.GetAllComponents();
foreach (var cm in components)
{
//如果含有的组件名称与阵列中含有的组件名称相同,则是主阵列矩阵
if (cm.DisplayName == component.DisplayName)
{
//删除这个阵列,并返回真
comp.Delete(true);
return true;
}
}
}
}
}
return false;
}



举报

相关推荐

0 条评论