public EdmCreateAssmbile(EDMInfo edmInfo, WorkModel work, WorkpieceModel workpiece) : base(edmInfo.MoldInfo, edmInfo.UserModel) { AbstractAssmbileModel edm = new EDMModel(edmInfo); edm.SetParentModel(work); workpiece.SetParentModel(edm); models.Add(work); models.Add(edm); models.Add(workpiece); this.edmModel = edm; }
private List <string> CreateNewWork1(NXOpen.Assemblies.Component ct, WorkpieceModel workpiece, Matrix4 mat, UserModel user) { List <string> err = new List <string>(); MoldInfo moldInfo = workpiece.Info.MoldInfo; int num = asmColl.GetWorkCollection(moldInfo).Work.Count; WorkInfo workInfo = new WorkInfo(workpiece.Info.MoldInfo, user, num + 1, mat); string workName = workInfo.MoldInfo.MoldNumber + "-" + workInfo.MoldInfo.WorkpieceNumber + "-" + "WORK" + workInfo.WorkNumber.ToString(); EDMModel edm = GetEdm(ct); if (edm == null) { err.Add("获取EDM错误"); return(err); } NXOpen.Assemblies.Component comp = AssmbliesUtils.MoveCompCopyPart(ct.Parent.Parent, new Vector3d(0, 0, 0), mat); AssmbliesUtils.MakeUnique(comp, edm.WorkpieceDirectoryPath + workName + ".prt"); workInfo.SetAttribute(comp.Prototype as Part); WorkModel wm = new WorkModel(comp.Prototype as Part); if (wm != null) { wm.SaveCsys(workPart); } if (!edm.Info.MoldInfo.Equals(workInfo.MoldInfo)) { EDMInfo edmInfo = new EDMInfo(workInfo.MoldInfo, workInfo.UserModel); string edmName = edmInfo.MoldInfo.MoldNumber + "-" + edmInfo.MoldInfo.WorkpieceNumber + "-" + "EDM"; foreach (NXOpen.Assemblies.Component cp in comp.GetChildren()) { if (ParentAssmblieInfo.IsEDM(cp)) { AssmbliesUtils.MakeUnique(cp, edm.WorkpieceDirectoryPath + edmName + ".prt"); edmInfo.SetAttribute(cp.Prototype as Part); foreach (NXOpen.Assemblies.Component co in cp.GetChildren()) { if (!(co.Prototype as Part).Equals(workpiece.PartTag)) { AssmbliesUtils.DeleteComponent(co); } } } } } return(err); }
/// <summary> /// 创建Work /// </summary> /// <param name="user"></param> /// <param name="workpieceCt"></param> /// <returns></returns> public List <string> CreateWork(UserModel user, NXOpen.Assemblies.Component workpieceCt, Matrix4 mat) { List <string> err = new List <string>(); WorkpieceModel workpieceModel = new WorkpieceModel(workpieceCt.Prototype as Part); WorkInfo workInfo = work.Info.Clone() as WorkInfo; WorkCollection workColl = new WorkCollection(workpieceModel.Info.MoldInfo); int workNum = 1; if (workColl.Work.Count > 0) { workNum = workColl.Work[workColl.Work.Count - 1].Info.WorkNumber + 1; } workInfo.WorkNumber = workNum; workInfo.UserModel = user; workInfo.Matr = mat; workInfo.MatrInfo = new Matrix4Info(mat); EDMModel edmModel; bool isOther = false; if (workpieceModel.Info.MoldInfo.Equals(work.Info.MoldInfo)) { edmModel = GetEDMModel(); } else { workInfo.MoldInfo = workpieceModel.Info.MoldInfo; EDMInfo info = new EDMInfo(workpieceModel.Info.MoldInfo, user); edmModel = new EDMModel(info); isOther = true; } WorkCreateAssmbile create = new WorkCreateAssmbile(workInfo, edmModel, asm); err.AddRange(create.CreatePart(work.WorkpieceDirectoryPath)); err.AddRange(create.LoadAssmbile()); if (err.Count == 0) { create.Work.SaveCsys(asm.PartTag); } if (isOther) { err.AddRange(LoadWorkpiece(edmModel.PartTag, workpieceCt)); } return(err); }
/// <summary> /// 拷贝不用件号的work /// </summary> /// <param name="user"></param> /// <param name="workpieceName"></param> /// <returns></returns> public List <string> CopOtherWork(UserModel user, string workpieceName) { List <string> err = new List <string>(); NXOpen.Assemblies.Component ct = GetWorkpieceModelForName(workpieceName); if (ct == null) { err.Add("无法找到工件!"); } else { WorkpieceModel model = new WorkpieceModel(ct.Prototype as Part); WorkInfo workInfo = work.Info.Clone() as WorkInfo; WorkCollection workColl = new WorkCollection(model.Info.MoldInfo); int workNum = workColl.Work.Count + 1; workInfo.WorkNumber = workNum; workInfo.UserModel = user; workInfo.MoldInfo = model.Info.MoldInfo; EDMInfo edmInfo = new EDMInfo(model.Info.MoldInfo, user); EDMModel edmModel = new EDMModel(edmInfo); GetEDMName(ref edmModel); WorkCreateAssmbile create = new WorkCreateAssmbile(workInfo, edmModel, asm); err.AddRange(create.CreatePart(work.WorkpieceDirectoryPath)); err.AddRange(create.LoadAssmbile()); if (err.Count == 0) { create.Work.SaveCsys(asm.PartTag); } foreach (NXOpen.Assemblies.Component elect in GetElectrodeComponent()) { err.AddRange(LoadEle(elect, create.Work.PartTag)); } err.AddRange(LoadWorkpiece(edmModel.PartTag, ct)); } return(err); }
/// <summary> /// 复制work /// </summary> /// <param name="ct"></param> /// <param name="work"></param> /// <param name="workpieceNumber"></param> /// <param name="user"></param> /// <returns></returns> private List <string> CopyWork(NXOpen.Assemblies.Component ct, WorkModel work, string workpieceNumber, UserModel user) { List <string> err = new List <string>(); Matrix4 mat = new Matrix4(); mat.Identity(); MoldInfo mold = work.Info.MoldInfo.Clone() as MoldInfo; NXOpen.Assemblies.Component moveCt = null; try { moveCt = AssmbliesUtils.MoveCompCopyPart(ct, new Vector3d(), mat); } catch (NXException ex) { err.Add("无法移动工件!" + ex.Message); return(err); } mold.WorkpieceNumber = workpieceNumber; string name = work.WorkpieceDirectoryPath + mold.MoldNumber + "-" + mold.WorkpieceNumber + "-"; if (moveCt != null) { foreach (NXOpen.Assemblies.Component com in moveCt.GetChildren()) { if (ParentAssmblieInfo.IsParent(com)) { ParentAssmblieInfo info1 = ParentAssmblieInfo.GetAttribute(com); if (info1.Type == PartType.EDM) { string edmName = name + "EDM"; if (File.Exists(edmName + ".prt")) { edmName = edmName + "5"; } EDMInfo edm = new EDMInfo(mold, user); try { NXObject make = AssmbliesUtils.MakeUnique(com, edmName + ".prt"); edm.SetAttribute(com.Prototype as Part); break; } catch (NXException ex) { err.Add(name + "EDM.prt" + ex.Message + "无法创建唯一"); } } } } try { NXObject make1 = AssmbliesUtils.MakeUnique(moveCt, name + "WORK" + work.Info.WorkNumber.ToString() + ".prt"); WorkInfo wk = new WorkInfo(mold, user, work.Info.WorkNumber, work.Info.Matr); wk.SetAttribute(moveCt.Prototype as Part); } catch (NXException ex) { err.Add(name + "WORK" + work.Info.WorkNumber.ToString() + ".prt" + ex.Message + "无法创建唯一"); } } return(err); }