/// <summary> /// 替换组件 /// </summary> /// <param name="replacedInstance">被替换的组件实例</param> /// <param name="part">目标组件</param> static void ReplaceComponent(Tag replacedInstance, string part) { if ((NXOpen.Tag.Null == replacedInstance) || string.IsNullOrEmpty(part.Trim())) { return; } string part_name = ""; string refset_name = ""; string instance_name = ""; double[] origin = new double[3]; double[] csys_matrix = new double[9]; double[,] transform = new double[4, 4]; //获取被替换组件相关数据 theUfSession.Assem.AskComponentData(replacedInstance, out part_name, out refset_name, out instance_name, origin, csys_matrix, transform); //获取被替换组件父 Tag replacedParentInstance = theUfSession.Assem.AskParentOfInstance(replacedInstance); //移除组件 theUfSession.Assem.RemoveInstance(replacedInstance); Tag outInstance = NXOpen.Tag.Null; NXOpen.UF.UFPart.LoadStatus error_status; //添加目标组件 theUfSession.Assem.AddPartToAssembly(replacedParentInstance, part, refset_name, instance_name, origin, csys_matrix, -1, out outInstance, out error_status); //保存修改 bool anyPartsModified = false; PartSaveStatus saveStatus; theSession.Parts.SaveAll(out anyPartsModified, out saveStatus); }