/// <summary>
        /// 拷贝同件号
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        public List <string> CopWork(UserModel user)
        {
            List <string>  err      = new List <string>();
            WorkInfo       workInfo = work.Info.Clone() as WorkInfo;
            WorkCollection workColl = new WorkCollection(workInfo.MoldInfo);
            int            workNum  = workColl.Work[workColl.Work.Count - 1].Info.WorkNumber + 1;

            workInfo.WorkNumber = workNum;
            workInfo.UserModel  = user;
            EDMModel edm = GetEDMModel();

            if (edm != null)
            {
                WorkCreateAssmbile create = new WorkCreateAssmbile(workInfo, edm, 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));
                }
            }
            else
            {
                err.Add("无法获取EDM");
            }

            return(err);
        }
        /// <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);
        }
示例#3
0
        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);
        }
示例#4
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;
        }
示例#5
0
 //------------------------------------------------------------------------------
 //Callback Name: filter_cb
 //------------------------------------------------------------------------------
 public int filter_cb(NXOpen.BlockStyler.UIBlock block, NXOpen.TaggedObject selectedObject)
 {
     if (selectedObject is NXOpen.Assemblies.Component)
     {
         NXOpen.Assemblies.Component ct = selectedObject as NXOpen.Assemblies.Component;
         if (EDMModel.IsEDM(ct.Prototype as Part))
         {
             return(NXOpen.UF.UFConstants.UF_UI_SEL_ACCEPT);
         }
     }
     return(NXOpen.UF.UFConstants.UF_UI_SEL_REJECT);
 }
        /// <summary>
        /// 获取EDM
        /// </summary>
        /// <returns></returns>
        public EDMModel GetEDMModel()
        {
            EDMModel model = null;

            foreach (NXOpen.Assemblies.Component ct in this.workCt.GetChildren())
            {
                if (ParentAssmblieInfo.IsEDM(ct))
                {
                    model = new EDMModel(ct.Prototype as Part);
                }
            }
            return(model);
        }
        /// <summary>
        /// 获得EDM名字
        /// </summary>
        /// <param name="edmModel"></param>
        private void GetEDMName(ref EDMModel edmModel)
        {
            string edmPath = work.WorkpieceDirectoryPath + edmModel.AssembleName + ".prt";
            string edmName = edmModel.AssembleName;
            int    count   = 0;

            while (File.Exists(edmPath))
            {
                count++;
                edmModel.SetAssembleName(edmName + count.ToString());
                edmPath = work.WorkpieceDirectoryPath + edmModel.AssembleName + ".prt";
            }
        }
        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);
        }
示例#9
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;
        }
示例#10
0
        /// <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);
        }
示例#11
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);
        }
示例#12
0
 //------------------------------------------------------------------------------
 //Callback Name: update_cb
 //------------------------------------------------------------------------------
 public int update_cb(NXOpen.BlockStyler.UIBlock block)
 {
     try
     {
         if (block == seleEdm)
         {
             //---------Enter your code here-----------
             TaggedObject[] tg = seleEdm.GetSelectedObjects();
             if (tg.Length > 0)
             {
                 this.buttFile.Enable = true;
                 NXOpen.Assemblies.Component ct = tg[0] as NXOpen.Assemblies.Component;
                 edm = new EDMModel(ct.Prototype as Part);
                 this.strMoldNumber.Value    = edm.Info.MoldInfo.MoldNumber;
                 this.strEditionNumber.Value = edm.Info.MoldInfo.EditionNumber;
             }
         }
         else if (block == strMoldNumber)
         {
             //---------Enter your code here-----------
         }
         else if (block == strEditionNumber)
         {
             //---------Enter your code here-----------
         }
         else if (block == buttFile)
         {
             //---------Enter your code here-----------
             partPaths = OpenFileUtils.OpenFiles("添加工件", "部件文件(*.prt*)|");
         }
     }
     catch (Exception ex)
     {
         //---- Enter your exception handling code here -----
         theUI.NXMessageBox.Show("Block Styler", NXMessageBox.DialogType.Error, ex.ToString());
     }
     return(0);
 }
示例#13
0
        /// <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);
        }
示例#14
0
 public CreateEdmPart(string filePath, MoldInfoModel moldInfo)
 {
     Model = new EDMModel(filePath, moldInfo);
 }