Пример #1
0
        /// <summary>
        /// Остановка станка
        /// </summary>
        //protected abstract void StopMachineCommands();
        public void SetTool(int toolNo, int frequency, double angleA = 0, bool hasTool = true, double angleC = 0, int originCellNumber = 10)
        {
            StopEngine();
            ToolPosition.Set(new Point3d(double.NaN, double.NaN, ZSafety + UpperZ), 0, 0);
            SetToolCommands(toolNo, angleA, angleC, originCellNumber);

            _frequency = frequency;
            _hasTool   = hasTool;
        }
Пример #2
0
        public void GCommand(string name, int gCode, string paramsString = null, Point3d?point = null, double?x = null, double?y = null, double?z = null,
                             double?angleC = null, double?angleA = null, Curve curve = null, int?feed = null, Point2d?center = null)
        {
            var command = new ProcessCommand {
                Name = name
            };

            if (Matrix.HasValue && point.HasValue)
            {
                point = point.Value.TransformBy(Matrix.Value);
            }

            if (point == null)
            {
                point = new Point3d(x ?? ToolPosition.Point.X, y ?? ToolPosition.Point.Y, z ?? ToolPosition.Point.Z);
            }

            if (ThickCommand != null && (point.Value.X != ToolPosition.Point.X || point.Value.Y != ToolPosition.Point.Y))
            {
                AddCommand(
                    new ProcessCommand
                {
                    Text         = string.Format(ThickCommand, point.Value.X.Round(), point.Value.Y.Round()),
                    HasTool      = _hasTool,
                    ToolLocation = ToolPosition.Clone()
                });
            }
            command.Text = GCommandText(gCode, paramsString, point.Value, curve, angleC, angleA, feed, center);

            if (ToolPosition.IsDefined)
            {
                if (curve == null && ToolPosition.Point.DistanceTo(point.Value) > 1)
                {
                    curve = NoDraw.Line(ToolPosition.Point, point.Value);
                }

                double length = 0;
                if (curve != null && curve.IsNewObject)
                {
                    if (Colors.ContainsKey(name))
                    {
                        curve.Color = Colors[name];
                    }
                    curve.LayerId = _layerId;
                    curve.Visible = false;
                    _currentSpace.AppendEntity(curve);
                    _transaction.AddNewlyCreatedDBObject(curve, true);
                    length = curve.Length();
                }
                command.ToolpathObjectId = curve?.ObjectId;

                if ((feed ?? _feed) != 0)
                {
                    command.Duration = (curve != null ? length : ToolPosition.Point.DistanceTo(point.Value)) / (gCode == 0 ? 10000 : feed ?? _feed) * 60;
                }
            }

            _GCode = gCode;
            ToolPosition.Set(point.Value, angleC, angleA);
            _feed = feed ?? _feed;

            command.HasTool      = _hasTool;
            command.ToolLocation = ToolPosition.Clone();

            AddCommand(command);
        }