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; } }
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; } }
/// <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); }