private void CreateLimits() { // @TODO Get the coordinate- vs drawing units right :) _limitsBottom = new Polyline(); _limitsBottom.Add(0, 0, 0); _limitsBottom.Add(0, GRBLMachinePlugin.Props.Y.AxisMaximumTravel, 0); _limitsBottom.Add(GRBLMachinePlugin.Props.X.AxisMaximumTravel, GRBLMachinePlugin.Props.Y.AxisMaximumTravel, 0); _limitsBottom.Add(GRBLMachinePlugin.Props.X.AxisMaximumTravel, 0, 0); _limitsBottom.Closed = true; _limitsOuter = _limitsBottom.Extrude(1f, GRBLMachinePlugin.Props.Z.AxisMaximumTravel, 0); if (_limitsOuter != null) { _limitsTop = new Polyline(_limitsBottom); _limitsBottom.Transform.Translate(-_WCO_x, -_WCO_y, -_WCO_z); _limitsBottom.ApplyTransformation(); _limitsTop.Transform.Translate(-_WCO_x, -_WCO_y, -_WCO_z + GRBLMachinePlugin.Props.Z.AxisMaximumTravel); _limitsTop.ApplyTransformation(); _limitsOuter.Transform.Translate(-_WCO_x, -_WCO_y, -_WCO_z + GRBLMachinePlugin.Props.Z.AxisMaximumTravel); _limitsOuter.ApplyTransformation(); _limitsInner = new Surface(_limitsOuter); _limitsInner.InvertFaces(); } }
/// <summary> /// Do the desired translation /// </summary> /// <param name="xm"></param> public virtual void ApplyTransformation(Matrix4x4F xm) { if (_tool != null) { _tool.ApplyTransformation(xm); } }
private Surface polyline_to_surface(Polyline p, double z) { if (base.Transform.Cached != null && !Transform.Cached.IsIdentity()) { p = (Polyline)p.Clone(); p.ApplyTransformation(Transform.Cached); } PolylineToMesh mesh = new PolylineToMesh(p); Surface surface = mesh.ToWideLine(base.ToolDiameter.Cached); surface.ApplyTransformation(Matrix4x4F.Translation(0.0, 0.0, z - 0.001)); return(surface); }