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

Posted GimiGimmy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UG NX二次开发(C#)-装配-删除阵列矩阵相关的知识,希望对你有一定的参考价值。

前言

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

错误介绍

在一个装配体模型中,删除某个组件时会出现下面的错误:
“不能删除组件图样的主组件”
这就导致组件不能删除,也不能被替换。

错误原因及解决方法

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

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

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

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

采用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;
    

以上是关于UG NX二次开发(C#)-装配-删除阵列矩阵的主要内容,如果未能解决你的问题,请参考以下文章

UG NX二次开发(C#)-模型处理功能

UG NX二次开发(C#)-模型处理功能

UG NX二次开发(C#)-装配-替换组件

UG NX二次开发(C#)-装配-替换组件

UG NX二次开发(C#)-装配-替换组件

UG NX二次开发(C#)-装配-添加组件