public override void Load() { PreLoad(); var list = ReadHpglCommandList(); RemoveFirstPenUp(list); RemoveLastPenUp(list); Smooth.CalculateAngles(list, null); if (LoadOptions.AutoScale) { var autoScale = new AutoScale { LoadOptions = LoadOptions, LoadX = this }; autoScale.AutoScaleList(list); } if (LoadOptions.SmoothType != LoadOptions.SmoothTypeEnum.NoSmooth) { var smooth = new Smooth { LoadOptions = LoadOptions, LoadX = this }; list = smooth.SmoothList(list); } if (LoadOptions.ConvertType != LoadOptions.ConvertTypeEnum.NoConvert) { var invert = new InvertLine { LoadOptions = LoadOptions, LoadX = this }; list = invert.ConvertInvert(list); } AddComment("PenMoveType", LoadOptions.PenMoveType.ToString()); switch (LoadOptions.PenMoveType) { case LoadOptions.PenType.CommandString: AddCommentForLaser(); break; case LoadOptions.PenType.ZMove: AddComment("PenDownSpeed", LoadOptions.EngraveDownSpeed); AddComment("PenUpPos", LoadOptions.EngravePosUp); AddComment("PenDownPos", LoadOptions.EngravePosDown); break; } AddComment("Speed", LoadOptions.MoveSpeed.ToString()); if (LoadOptions.PenMoveType == LoadOptions.PenType.ZMove) { AddCommands("M3"); if (LoadOptions.EngravePosInParameter) { Commands.AddCommand( new SetParameterCommand { ParameterNo = 1, GCodeAdd = LoadOptions.EngravePosUp.ToString(CultureInfo.InvariantCulture) }); Commands.AddCommand( new SetParameterCommand { ParameterNo = 2, GCodeAdd = LoadOptions.EngravePosDown.ToString(CultureInfo.InvariantCulture) }); } } if (LoadOptions.MoveSpeed.HasValue) { var setSpeed = new G01Command(); setSpeed.AddVariable('F', LoadOptions.MoveSpeed.Value); Commands.Add(setSpeed); } foreach (var cmd in list) { if (!Command(cmd)) { Commands.Clear(); break; } } if (!_lastIsPenUp) { LoadPenUp(); } if (LoadOptions.PenMoveType == LoadOptions.PenType.ZMove) { AddCommands("M5"); } PostLoad(); }