UG NX二次开发(C#)-装配-替换组件
Posted GimiGimmy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UG NX二次开发(C#)-装配-替换组件相关的知识,希望对你有一定的参考价值。
前言
UG NX装配组件时,如果想用一个组件替换另一个组件时,采用其自身的操作很是方便。在在外部模式下,不打开UG NX软件,就能直接替换组件,就要用到UG NX的二次开发了。本文介绍一下替换组件的代码(C#)。
1、 UG NX替换组件功能演示
打开UG NX的一个装配体模型,如下图所示。
在这个装配体模型中,主装配体模型为2021.prt,我们用一个新的组件文件来替换2021-01部件下的2021-01-01组件。
选择“替换组件”功能,如下图所示。
其弹出的UI界面如下图所示。
在“要替换的组件”组下“选择组件”选择需要替换的组件,
在“替换件”中选择文件或者组件,在文件夹中选择“等径管道1”。
点击“确定”按钮,返回到UI界面中。
点击“确定”按钮。
此时已经用“等径管道1”组件来替换“2021-01-01”组件。
2、 采用UG NX二次开发
其代码如下:
public static void Replace(Component olderComponent, string newer,string newerFullpath)
NXOpen.Session theSession = NXOpen.Session.GetSession();
NXOpen.Part workPart = theSession.Parts.Work;
NXOpen.Part displayPart = theSession.Parts.Display;
// ----------------------------------------------
// 菜单:装配(A)->组件(C)->替换组件(E)...
// ----------------------------------------------
NXOpen.Session.UndoMarkId markId1;
markId1 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "起点");
NXOpen.Assemblies.ReplaceComponentBuilder replaceComponentBuilder1;
replaceComponentBuilder1 = workPart.AssemblyManager.CreateReplaceComponentBuilder();
replaceComponentBuilder1.MaintainRelationships = false;
replaceComponentBuilder1.ComponentNameType = NXOpen.Assemblies.ReplaceComponentBuilder.ComponentNameOption.AsSpecified;
replaceComponentBuilder1.ComponentName = newer;
theSession.SetUndoMarkName(markId1, "替换组件 对话框");
replaceComponentBuilder1.ComponentName = "";
//NXOpen.Assemblies.Component component1 = ((NXOpen.Assemblies.Component)workPart.ComponentAssembly.RootComponent.FindObject("COMPONENT 2021-01 1"));
//NXOpen.Assemblies.Component component2 = ((NXOpen.Assemblies.Component)component1.FindObject("COMPONENT 2021-02-01 1"));
bool added1;
added1 = replaceComponentBuilder1.ComponentsToReplace.Add(olderComponent);
//replaceComponentBuilder1.ComponentName = "2021-01-02";
replaceComponentBuilder1.ComponentName = newer;
replaceComponentBuilder1.MaintainRelationships = true;
replaceComponentBuilder1.MaintainRelationships = false;
replaceComponentBuilder1.ComponentNameType = NXOpen.Assemblies.ReplaceComponentBuilder.ComponentNameOption.Maintain;
NXOpen.Session.UndoMarkId markId2;
markId2 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "替换组件");
theSession.DeleteUndoMark(markId2, null);
NXOpen.Session.UndoMarkId markId3;
markId3 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "替换组件");
replaceComponentBuilder1.ReplacementPart = newerFullpath;
replaceComponentBuilder1.SetComponentReferenceSetType(NXOpen.Assemblies.ReplaceComponentBuilder.ComponentReferenceSet.Maintain, null);
NXOpen.PartLoadStatus partLoadStatus1;
partLoadStatus1 = replaceComponentBuilder1.RegisterReplacePartLoadStatus();
NXOpen.NXObject nXObject1;
nXObject1 = replaceComponentBuilder1.Commit();
partLoadStatus1.Dispose();
theSession.DeleteUndoMark(markId3, null);
theSession.SetUndoMarkName(markId1, "替换组件");
replaceComponentBuilder1.Destroy();
theSession.CleanUpFacetedFacesAndEdges();
此代码是通过录制功能来生成的,然后对关键处进行修改,作为一个方法来使用。
以上是关于UG NX二次开发(C#)-装配-替换组件的主要内容,如果未能解决你的问题,请参考以下文章