UG NX二次开发(C#)-装配-删除阵列矩阵
Posted GimiGimmy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UG NX二次开发(C#)-装配-删除阵列矩阵相关的知识,希望对你有一定的参考价值。
前言
在外部模式对装配体进行替换或者删除时,有时遇到部分组件不能替换或者删除,其中一个原因是阵列主组件,是不允许更改的。下面介绍下采用UG NX二次开发的方法删除阵列主组件。
错误介绍
在一个装配体模型中,删除某个组件时会出现下面的错误:
“不能删除组件图样的主组件”
这就导致组件不能删除,也不能被替换。
错误原因及解决方法
这是由于这个组件是阵列的主组件,通过删除其对应的组件阵列,即如下图所示。
右键菜单中删除,弹出如下提示框。
点击“是”,则删除了组件阵列,结果如下图所示。
然后再通过删除操作,就可以删除掉对应的组件。
采用UG NX二次开发
其实现的思路如下:
- 删除此组件
- 检测此组件还存在
- 如果存在,则是删除失败,然后判断其是否是阵列主组件
- 如果是阵列主组件,则删除此组件对应的阵列
- 然后再删除此组件
代码如下:
/// <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#)-装配-删除阵列矩阵的主要内容,如果未能解决你的问题,请参考以下文章