Пример #1
0
        public IList <IPointCylTol> TrimToWindow(System.Drawing.RectangleF rectangleF, ViewPlane viewPlane)
        {
            try
            {
                var          winData = new List <IPointCylTol>();
                var          dd      = AsDisplayData(viewPlane);
                IPointCylTol trimPt;
                foreach (var pt in dd)
                {
                    if (rectangleF.Contains(pt))
                    //if (pt.X >= minX && pt.X <= maxX && pt.Y >= minY && pt.Y < maxY)
                    {
                        switch (viewPlane)
                        {
                        case ViewPlane.THETAR:
                            trimPt = new PointCylTol()
                            {
                                R        = pt.Y,
                                ThetaRad = PointCyl.ToRadians(pt.X),
                                Z        = 0
                            };
                            winData.Add(trimPt);
                            break;

                        case ViewPlane.ZR:
                            trimPt = new PointCylTol()
                            {
                                R        = pt.Y,
                                ThetaRad = 0,
                                Z        = pt.X
                            };
                            winData.Add(trimPt);
                            break;

                        case ViewPlane.XY:
                            break;

                        case ViewPlane.XZ:
                            break;

                        case ViewPlane.YZ:
                            break;
                        }
                    }
                }
                return(winData);
            }
            catch (Exception)
            {
                throw;
            }
        }
Пример #2
0
        public IList <IPointCyl> TrimToWindow(System.Drawing.RectangleF rectangleF, ViewPlane viewPlane)
        {
            try
            {
                var winData = new CylData();
                var dd      = AsDisplayData(viewPlane);
                foreach (var pt in dd)
                {
                    if (rectangleF.Contains(pt))
                    //if (pt.X >= minX && pt.X <= maxX && pt.Y >= minY && pt.Y < maxY)
                    {
                        switch (viewPlane)
                        {
                        case ViewPlane.THETAR:
                            winData.Add(new PointCyl(pt.Y, PointCyl.ToRadians(pt.X), 0));
                            break;

                        case ViewPlane.ZR:
                            winData.Add(new PointCyl(pt.Y, 0, pt.X));
                            break;

                        case ViewPlane.XY:
                            break;

                        case ViewPlane.XZ:
                            break;

                        case ViewPlane.YZ:
                            break;
                        }
                    }
                }
                return(winData);
            }
            catch (Exception)
            {
                throw;
            }
        }
Пример #3
0
        /// <summary>
        /// parse string line from nc file into path LINE entity
        /// </summary>
        /// <param name="ncLine">line from NC file</param>
        /// <param name="blockT">Block type</param>
        /// <returns>LinePathEntity</returns>
        private IPathEntity ParseLine(string ncLine, BlockType blockT, bool jeton, bool invertedF)
        {
            IPathEntity ent = new LinePathEntity(blockT);

            string[] splitLine = ncLine.Split(splitters, StringSplitOptions.None);
            ent.JetOn = jeton;

            ent.InputString = ncLine;

            foreach (string str in splitLine)
            {
                if (str.Contains(n))
                {
                    ent.LineNumber = ParseInt(str, n);
                }
                else if (str.Contains(x))
                {
                    ent.Position.X = ParseDouble(str, x);
                    ent.ContainsX  = true;
                }
                else if (str.Contains(y))
                {
                    ent.Position.Y = ParseDouble(str, y);
                    ent.ContainsY  = true;
                }
                else if (str.Contains(z))
                {
                    ent.Position.Z = ParseDouble(str, z);
                    ent.ContainsZ  = true;
                }
                else if (str.Contains(b))
                {
                    ent.Position.Bdeg = ParseDouble(str, b);
                    ent.Type          = BlockType.LINEAR;
                }
                else if (str.Contains(c))
                {
                    ent.Position.Cdeg = ParseDouble(str, c);
                    ent.Type          = BlockType.LINEAR;
                }
                else if (str.Contains(f))
                {
                    ent.Feedrate  = GetFeedrate(str, invertedF);
                    ent.ContainsF = true;
                }
            }

            if (ent.Type == BlockType.LINEAR)
            {
                Vector3 pt     = new Vector3(0, 0, 1);
                Vector3 origin = new Vector3(0, 0, 0);
                pt.RotateY(origin, PointCyl.ToRadians(ent.Position.Bdeg));
                pt.RotateZ(origin, PointCyl.ToRadians(ent.Position.Cdeg));
                ent.JetVector = pt;
            }
            else
            {
                ent.JetVector = new Vector3(0, 0, 1);
            }
            ent.Type = blockT;

            return(ent);
        }