/// <summary>
        /// 创建Work
        /// </summary>
        /// <param name="workpiece"></param>
        /// <param name="mat"></param>
        /// <param name="user"></param>
        /// <returns></returns>
        private List <string> CreateNewWork(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);
            EDMModel      edm      = GetEdm(ct);

            if (edm == null)
            {
                err.Add("获取EDM错误");
                return(err);
            }
            WorkCreateAssmbile create;

            if (edm.Info.MoldInfo.Equals(workInfo.MoldInfo))
            {
                create = new WorkCreateAssmbile(workInfo, edm, asmModel);
            }
            else
            {
                EDMModel temp = new EDMModel(new EDMInfo(workInfo.MoldInfo, workInfo.UserModel));
                create = new WorkCreateAssmbile(workInfo, temp, asmModel, workpiece);
            }
            err.AddRange(create.CreatePart(workpiece.WorkpieceDirectoryPath));
            err.AddRange(create.LoadAssmbile());
            if (err.Count == 0)
            {
                create.Work.SaveCsys(workPart);
            }
            return(err);
        }
        private List <WorkpieceModel> CreateBulder(Part edmPart, List <string> openFiles, out List <string> err)
        {
            List <WorkpieceModel> workpiece = new List <WorkpieceModel>();

            err = new List <string>();
            EDMModel edm      = new EDMModel(edmPart);
            MoldInfo moldInfo = edm.Info.MoldInfo.Clone() as MoldInfo;

            moldInfo.MoldNumber    = this.strMoldNumber.Value.ToUpper();
            moldInfo.EditionNumber = this.strEditionNumber.Value.ToUpper();
            WorkPieceInfo info = new WorkPieceInfo(edm.Info.MoldInfo, user.CreatorUser);

            foreach (string st in openFiles)
            {
                MoldInfo temp = moldInfo.Clone() as MoldInfo;
                string   name = Path.GetFileNameWithoutExtension(st);
                temp.WorkpieceNumber = name;
                WorkpieceModel model = new WorkpieceModel(new WorkPieceInfo(temp, user.CreatorUser));
                if (model.CreatePart(edm.WorkpieceDirectoryPath, st))
                {
                    workpiece.Add(model);
                }
                else
                {
                    err.Add(name + "没创建成功");
                }
            }
            return(workpiece);
        }
Beispiel #3
0
        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);
        }
Beispiel #5
0
        public WorkCreateAssmbile(WorkInfo workInfo, EDMModel edm, ASMModel asm, WorkpieceModel workpiece = null) : base(workInfo.MoldInfo, workInfo.UserModel)
        {
            WorkModel work = new WorkModel(workInfo);

            work.SetParentModel(asm);
            edm.SetParentModel(work);
            if (workpiece != null)
            {
                workpiece.SetParentModel(edm);
            }
            models.Add(work);
            models.Add(edm);
            if (workpiece != null)
            {
                models.Add(workpiece);
            }
            this.Work = work;
        }
        /// <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>
 /// 获取件号名
 /// </summary>
 /// <param name="name"></param>
 /// <param name="work"></param>
 /// <returns></returns>
 private string GetWorkpieceNumber(string name, WorkModel work)
 {
     foreach (Part pt in work.GetAllWorkpiece())
     {
         if (pt.Name.Equals(name, StringComparison.CurrentCultureIgnoreCase))
         {
             if (WorkpieceModel.IsWorkpiece(pt))
             {
                 WorkpieceModel wk = new WorkpieceModel(pt);
                 return(wk.Info.MoldInfo.WorkpieceNumber);
             }
             else
             {
                 return(pt.Name);
             }
         }
     }
     return(null);
 }
Beispiel #8
0
        public AsmCreateAssmbile(MoldInfo mold, UserModel user, Part workpiecePart) : base(mold, user)
        {
            Matrix4 mat = new Matrix4();

            mat.Identity();
            AbstractAssmbileModel asm       = new ASMModel(new ASMInfo(base.moldInfo, base.userModel));
            AbstractAssmbileModel work      = new WorkModel(new WorkInfo(base.moldInfo, base.userModel, 1, mat));
            AbstractAssmbileModel edm       = new EDMModel(new EDMInfo(base.moldInfo, base.userModel));
            AbstractAssmbileModel workpiece = new WorkpieceModel(new WorkPieceInfo(base.moldInfo, base.userModel), workpiecePart);

            work.SetParentModel(asm);
            edm.SetParentModel(work);
            workpiece.SetParentModel(edm);
            this.asmModel = asm;
            models.Add(asm);
            models.Add(work);
            models.Add(edm);
            models.Add(workpiece);
        }
        /// <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);
        }
 public CreateWorkpiecePart(string filePath, Part part, MoldInfoModel moldInfo)
 {
     Model = new WorkpieceModel(filePath, part, moldInfo);
 }