コード例 #1
0
        public void AddOperation(AbstractElectrodeOperation eleOper, AbstractCreateOperation oper, Node node)
        {
            Node nextNode1 = node.FirstChildNode;

            if (nextNode1 == null)
            {
                eleOper.Oper.Insert(eleOper.Oper.Count, oper);
                AddOpeTotree(oper, node, null, png);
                return;
            }
            bool sibling = true;

            while (sibling)
            {
                Node nextNode2;
                nextNode2 = nextNode1.NextSiblingNode;
                if (nextNode2 == null)
                {
                    sibling = false;
                    break;
                }
                else
                {
                    nextNode1 = nextNode2;
                }
            }
            AbstractCreateOperation ao = FindOperationForOperNode(nextNode1, eleOper);
            int index = eleOper.Oper.IndexOf(ao);

            eleOper.Oper.Insert(index + 1, oper);
            AddOpeTotree(oper, node, nextNode1, png);
            node.Expand(Node.ExpandOption.Expand); //展开节点
        }
コード例 #2
0
        public override void SetOperationData(AbstractElectrodeCAM eleCam)
        {
            Dictionary <double, Face[]> slope = new Dictionary <double, Face[]>();

            if (flat && isAll)
            {
                slope = eleCam.GetAllFaces();
            }
            else if (flat)
            {
                slope = eleCam.GetSlopeFaces();
            }
            else
            {
                slope = eleCam.GetFlatFaces();
            }
            slope.OrderBy(a => a.Key);
            for (int k = 0; k < slope.Count; k++)
            {
                if (k == 0)
                {
                    this.Inter = slope.Keys.ToArray()[k];
                    this.SetFaces(slope[this.Inter]);
                }
                else
                {
                    AbstractCreateOperation oper = this.CopyOperation(99);
                    oper.Inter = slope.Keys.ToArray()[k];
                    (oper as FlowCutCreateOperation).SetFaces(slope[this.Inter]);
                }
            }
        }
コード例 #3
0
 /// <summary>
 /// 删除操作
 /// </summary>
 /// <param name="oper"></param>
 /// <returns></returns>
 public bool Delete(ElectrodeCAMTreeInfo info)
 {
     if (info.Program is ProgramOperationName)
     {
         ProgramOperationName temp = info.Program as ProgramOperationName;
         if (this.template.Programs.Exists(a => a.Equals(temp)))
         {
             this.template.DeleteProgram(temp);
             GetTreeInfo();
             return(true);
         }
         else
         {
             return(false);
         }
     }
     if (info.Program is AbstractCreateOperation)
     {
         AbstractCreateOperation temp = info.Program as AbstractCreateOperation;
         if (info.Parent != null && info.Parent.Program is ProgramOperationName)
         {
             ProgramOperationName tp = info.Parent.Program as ProgramOperationName;
             if (tp.Oper.Exists(a => a.Equals(temp)))
             {
                 tp.DeleteOperationNameModel(temp);
                 GetTreeInfo();
                 return(true);
             }
         }
     }
     return(false);
 }
コード例 #4
0
        public override void SetOperationData(AbstractElectrodeCAM eleCam)
        {
            Dictionary <double, Face[]> slope = new Dictionary <double, Face[]>();

            if ((steep && isAll) || (!steep && isAll))
            {
                slope = eleCam.GetAllFaces();
            }
            else if (steep && !isAll)
            {
                slope = eleCam.GetSteepFaces();
            }
            else if (!steep && !isAll)
            {
                slope = eleCam.GetSlopeFaces();
            }

            slope.OrderBy(a => a.Key);
            for (int k = 0; k < slope.Count; k++)
            {
                if (k == 0)
                {
                    this.Inter = slope.Keys.ToArray()[k];
                    this.SetFaces(slope[this.Inter]);
                    this.SetCutLevel(eleCam.Analysis.BaseFace.BoxMinCorner);
                }
                else
                {
                    AbstractCreateOperation oper = this.CopyOperation(99);
                    oper.Inter = slope.Keys.ToArray()[k];
                    (oper as ZLevelMillingCreateOperation).SetFaces(slope[this.Inter]);
                    (oper as ZLevelMillingCreateOperation).SetCutLevel(eleCam.Analysis.BaseFace.BoxMinCorner);
                }
            }
        }
コード例 #5
0
        /// <summary>
        /// 添加刀路
        /// </summary>
        /// <param name="node">程序Node</param>
        /// <param name="eleOper"></param>
        /// <param name="oper"></param>
        public void AddOperation(AbstractElectrodeOperation eleOper, AbstractCreateOperation oper)
        {
            Node proNode   = FindNodeForProName(oper.NameModel.ProgramName);
            Node nextNode1 = proNode.FirstChildNode;

            if (nextNode1 == null)
            {
                eleOper.Oper.Insert(eleOper.Oper.Count, oper);
                AddOpeTotree(oper, proNode, null, png);
                return;
            }
            bool sibling = true;

            while (sibling)
            {
                Node nextNode2;
                nextNode2 = nextNode1.NextSiblingNode;
                if (nextNode2 == null)
                {
                    sibling = false;
                    break;
                }
                else
                {
                    nextNode1 = nextNode2;
                }
            }
            AbstractCreateOperation ao = FindOperationForOperNode(nextNode1, eleOper);
            int index = eleOper.Oper.IndexOf(ao);

            eleOper.Oper.Insert(index + 1, oper);
            AddOpeTotree(oper, proNode, nextNode1, png);
        }
コード例 #6
0
        /// <summary>
        /// 拷贝程序
        /// </summary>
        /// <param name="eleOper"></param>
        /// <param name="node"></param>
        public void CopyOperation(AbstractElectrodeOperation eleOper, Node node)
        {
            AbstractCreateOperation ao   = FindOperationForOperNode(node, eleOper);
            AbstractCreateOperation copy = ao.CopyOperation();
            int index = eleOper.Oper.IndexOf(ao);

            eleOper.Oper.Insert(index + 1, copy);
            AddOpeTotree(copy, node.ParentNode, node, png);
        }
コード例 #7
0
 /// <summary>
 /// 添加刀路名
 /// </summary>
 /// <param name="model"></param>
 public bool AddOperationNameModel(AbstractCreateOperation model, int count)
 {
     if (model.ToolName.Equals(this.tool, StringComparison.CurrentCultureIgnoreCase))
     {
         Oper.Insert(count, model);
         UpdateProgramName();
         return(true);
     }
     return(false);
 }
コード例 #8
0
        /// <summary>
        /// 移动刀路
        /// </summary>
        /// <param name="eleOper"></param>
        /// <param name="node"></param>
        /// <param name="afterNode"></param>
        public void MoveOperation(AbstractElectrodeOperation eleOper, Node node, Node afterNode)
        {
            AbstractCreateOperation ao1 = FindOperationForOperNode(node, eleOper);
            AbstractCreateOperation ao2 = FindOperationForOperNode(afterNode, eleOper);

            this.AddOpeTotree(ao1, afterNode.ParentNode, afterNode, png);
            eleOper.Oper.Remove(ao1);
            int index = eleOper.Oper.IndexOf(ao2);

            eleOper.Oper.Insert(index + 1, ao1);
            this.tree.DeleteNode(node);
        }
コード例 #9
0
        /// <summary>
        /// 把刀路插入到程序组下面
        /// </summary>
        /// <param name="ao"></param>
        /// <param name="pNode"></param>
        /// <param name="afterNode"></param>
        /// <param name="name"></param>
        /// <param name="pngPath"></param>
        /// <returns></returns>
        private Node AddOpeTotree(AbstractCreateOperation ao, Node pNode, Node afterNode, string pngPath)
        {
            Node node = this.tree.CreateNode(ao.NameModel.OperName);

            this.tree.InsertNode(node, pNode, afterNode, Tree.NodeInsertOption.Last);
            node.SetColumnDisplayText(0, ao.NameModel.OperName);
            node.DisplayIcon  = pngPath + ao.NameModel.PngName;
            node.SelectedIcon = pngPath + ao.NameModel.PngName;
            node.SetColumnDisplayText(1, ao.NameModel.ToolName);
            ao.Node = node;
            return(node);
        }
コード例 #10
0
 /// <summary>
 /// 复制
 /// </summary>
 /// <param name="info"></param>
 /// <returns></returns>
 public object Copy(ElectrodeCAMTreeInfo info)
 {
     if (info.Program is ProgramOperationName)
     {
         ProgramOperationName temp = info.Program as ProgramOperationName;
         return(new ProgramOperationName(temp.Program));
     }
     if (info.Program is AbstractCreateOperation)
     {
         AbstractCreateOperation temp = info.Program as AbstractCreateOperation;
         return(temp.CopyOperation(10));
     }
     return(null);
 }
コード例 #11
0
        /// <summary>
        /// 操作往下移动
        /// </summary>
        /// <param name="node"></param>
        /// <param name="eleOper"></param>
        public void MoveDownOperation(Node node, AbstractElectrodeOperation eleOper)
        {
            Node sibling = node.NextSiblingNode;

            if (sibling != null)
            {
                AbstractCreateOperation ao = FindOperationForOperNode(node, eleOper);
                AddOpeTotree(ao, node.ParentNode, sibling, png);
                int index = eleOper.Oper.IndexOf(ao);
                eleOper.Oper.Remove(ao);
                eleOper.Oper.Insert(index - 1, ao);
                this.tree.DeleteNode(node);
            }
        }
コード例 #12
0
 /// <summary>
 /// 更新刀路
 /// </summary>
 /// <param name="eleOper"></param>
 /// <param name="ao"></param>
 public void UpdateOperation(AbstractElectrodeOperation eleOper, AbstractCreateOperation ao)
 {
     if (ao.NameModel.ProgramName.Equals(ao.Node.ParentNode.GetColumnDisplayText(0)))
     {
         ao.Node.SetColumnDisplayText(0, ao.NameModel.OperName);
         ao.Node.SetColumnDisplayText(1, ao.NameModel.ToolName);
     }
     else
     {
         eleOper.Oper.Remove(ao);
         this.tree.DeleteNode(ao.Node);
         this.AddOperation(eleOper, ao);
     }
 }
コード例 #13
0
        /// <summary>
        /// 操作往上移动
        /// </summary>
        /// <param name="node"></param>
        /// <param name="eleOper"></param>
        public void MoveUpOperation(Node node, AbstractElectrodeOperation eleOper)
        {
            Node previous = node.PreviousSiblingNode;

            if (previous != null)
            {
                AbstractCreateOperation ao = FindOperationForOperNode(previous, eleOper);
                AddOpeTotree(ao, node.ParentNode, node, png);
                int index = eleOper.Oper.IndexOf(ao);
                eleOper.Oper.Remove(ao);
                eleOper.Oper.Insert(index + 1, ao);
                this.tree.DeleteNode(previous);
            }
        }
コード例 #14
0
 /// <summary>
 /// 向上移动
 /// </summary>
 /// <param name="info"></param>
 /// <returns></returns>
 public bool MoveUp(ElectrodeCAMTreeInfo info)
 {
     if (info.Program is ProgramOperationName)
     {
         ProgramOperationName temp = info.Program as ProgramOperationName;
         int count = this.template.Programs.FindIndex(a => a.Equals(temp));
         if (this.template.Programs.Exists(a => a.Equals(temp)))
         {
             if (count != 0 && count != -1)
             {
                 this.template.DeleteProgram(count);
                 this.template.AddProgram(temp, count - 1);
                 GetTreeInfo();
                 return(true);
             }
         }
         else
         {
             return(false);
         }
     }
     if (info.Program is AbstractCreateOperation)
     {
         AbstractCreateOperation temp = info.Program as AbstractCreateOperation;
         if (info.Parent != null && info.Parent.Program is ProgramOperationName)
         {
             ProgramOperationName tp = info.Parent.Program as ProgramOperationName;
             int count = tp.Oper.FindIndex(a => a.Equals(temp));
             if (tp.Oper.Exists(a => a.Equals(temp)))
             {
                 if (count != 0 && count != -1)
                 {
                     tp.DeleteOperationNameModel(temp);
                     tp.AddOperationNameModel(temp, count - 1);
                     GetTreeInfo();
                     return(true);
                 }
             }
         }
     }
     return(false);
 }
コード例 #15
0
        public override void SetOperationData(AbstractElectrodeCAM eleCam)
        {
            Dictionary <double, Face[]> plane = eleCam.GetPlaneFaces();

            plane.OrderBy(a => a.Key);
            for (int k = 0; k < plane.Count; k++)
            {
                if (k == 0)
                {
                    this.Inter = plane.Keys.ToArray()[k];
                    this.SetBoundary(plane[this.Inter]);
                }
                else
                {
                    AbstractCreateOperation oper = this.CopyOperation(99);
                    oper.Inter = plane.Keys.ToArray()[k];
                    (oper as FaceMillingCreateOperation).SetBoundary(plane[this.Inter]);
                }
            }
        }
コード例 #16
0
        public override void SetOperationData(AbstractElectrodeCAM eleCam)
        {
            Dictionary <double, BoundaryModel[]> boun = eleCam.GetBaseFaceBoundary();

            boun.OrderBy(a => a.Key);
            for (int k = 0; k < boun.Count; k++)
            {
                if (k == 0)
                {
                    this.Inter = boun.Keys.ToArray()[k];
                    this.SetBoundary(eleCam.Analysis.BaseFace.BoxMinCorner, boun[this.Inter]);
                }
                else
                {
                    AbstractCreateOperation oper = this.CopyOperation(99);
                    oper.Inter = boun.Keys.ToArray()[k];
                    (oper as PlanarMillingCreateOperation).SetBoundary(eleCam.Analysis.BaseFace.BoxMinCorner, boun[this.Inter]);
                }
            }
        }
コード例 #17
0
 /// <summary>
 /// 添加刀路
 /// </summary>
 /// <param name="oper"></param>
 /// <param name="info"></param>
 /// <returns></returns>
 public bool AddOperation(AbstractCreateOperation oper, ElectrodeCAMTreeInfo info)
 {
     if (info.Program is ProgramOperationName)
     {
         ProgramOperationName temp = info.Program as ProgramOperationName;
         return(temp.AddOperationNameModel(oper));
     }
     if (info.Program is AbstractCreateOperation)
     {
         AbstractCreateOperation temp = info.Program as AbstractCreateOperation;
         if (info.Parent != null && info.Parent.Program is ProgramOperationName)
         {
             ProgramOperationName tp = info.Parent.Program as ProgramOperationName;
             int count = tp.Oper.FindIndex(a => a.Equals(temp));
             if (count != -1)
             {
                 return(tp.AddOperationNameModel(oper, count + 1));
             }
         }
     }
     return(false);
 }
コード例 #18
0
 /// <summary>
 /// 粘贴
 /// </summary>
 /// <param name="info"></param>
 /// <returns></returns>
 public bool Stick(ElectrodeCAMTreeInfo info, object obt)
 {
     if (info.Program is ProgramOperationName)
     {
         ProgramOperationName temp = info.Program as ProgramOperationName;
         if (obt is ProgramOperationName)
         {
             int count = this.template.Programs.FindIndex(a => a.Equals(temp));
             if (count != -1)
             {
                 this.template.AddProgram(obt as ProgramOperationName, count + 1);
                 return(true);
             }
         }
         else if (obt is AbstractCreateOperation)
         {
             AbstractCreateOperation tp = obt as AbstractCreateOperation;
             tp.SetToolName(temp.ToolName);
             return(temp.AddOperationNameModel(tp));
         }
     }
     if (info.Program is AbstractCreateOperation && obt is AbstractCreateOperation)
     {
         AbstractCreateOperation temp = info.Program as AbstractCreateOperation;
         if (info.Parent != null && info.Parent.Program is ProgramOperationName)
         {
             ProgramOperationName    tp = info.Parent.Program as ProgramOperationName;
             AbstractCreateOperation ao = obt as AbstractCreateOperation;
             int count = tp.Oper.FindIndex(a => a.Equals(temp));
             if (count != -1)
             {
                 ao.SetToolName(tp.ToolName);
                 return(tp.AddOperationNameModel(ao, count + 1));
             }
         }
     }
     return(false);
 }
コード例 #19
0
 /// <summary>
 /// 删除刀路
 /// </summary>
 /// <param name="model"></param>
 public void DeleteOperationNameModel(AbstractCreateOperation model)
 {
     Oper.Remove(model);
     UpdateProgramName();
 }
コード例 #20
0
 public int CompareTo(AbstractCreateOperation other)
 {
     return(this.site.CompareTo(other.site));
 }
コード例 #21
0
 /// <summary>
 /// 删除刀路
 /// </summary>
 /// <param name="model"></param>
 public void DeleteOperationNameModel(AbstractCreateOperation model)
 {
     Oper.Remove(model);
 }
コード例 #22
0
 /// <summary>
 /// 添加刀路名
 /// </summary>
 /// <param name="model"></param>
 public void AddOperationNameModel(AbstractCreateOperation model, int count)
 {
     Oper.IndexOf(model, count);
 }