private StringBuilder GenerateGcode(TriangleRectangle triangle, bool isSimulator)
        {
            StringBuilder sb = new StringBuilder();

            sb.AppendLine(GMovement(triangle.Start, "G0"));

            if (!isSimulator)
            {
                sb.AppendLine(ToggleRele(true));
            }

            sb.AppendLine(GMovement(triangle.A, triangle.Feed, "G1"));
            sb.AppendLine(GMovement(triangle.B, triangle.Feed, "G1"));
            sb.AppendLine(GMovement(triangle.Start, triangle.Feed, "G1"));

            if (!isSimulator)
            {
                sb.AppendLine(ToggleRele(false));
            }

            sb.AppendLine(ReturnToHome(triangle.SafetyHeightZ));
            return(sb);
        }
        public override StringBuilder GenerateGCode(Geometric shape)
        {
            TriangleRectangle triangle = (TriangleRectangle)shape;

            return(GenerateGcode(triangle, false));
        }