コード例 #1
0
ファイル: ToolMachine.cs プロジェクト: marcodelpin/cncsimple
        private static void AddElement(PreviewPathBuilder path3D, ArcMoveAction moveAction)
        {
            var center = new Point3D(moveAction.Center.X, moveAction.Center.Y, 0);

            path3D.AddArc(EnumPlotStyle.Arc, center, moveAction.Radius, moveAction.ClockWise,
                          moveAction.X, moveAction.Y, moveAction.Z, moveAction.ParametriTaglio);
        }
コード例 #2
0
ファイル: LatheAxisC.cs プロジェクト: marcodelpin/cncsimple
        /// <summary>
        /// Crea codice per arco.
        /// Interpolazione Circolare
        /// G2 G3 X/U  Z/W I K F
        /// Interpolazione Circolare con raggio specificato
        /// G2 G3 X/U Z/W R F
        ///
        /// Di default prendo prima forma. Se in caso fosse necessario con raggio impostato creare flag
        /// dentro ArcMoveAction
        /// </summary>
        /// <param name="programAction"></param>
        /// <param name="code"></param>
        protected override void CreateCodeFromAction(ArcMoveAction programAction, ref StringBuilder code)
        {
            if (G112Activated)
            {
                var str = string.Empty;

                // centro arco devo prenderlo prima di scrivere coordinate xyz in quanto vado a modificare currentxyz

                var iCode = string.Empty;
                var jCode = string.Empty;

                // Devo mettere coordinate incrementali del centro del cerchio rispetto al punto precedente
                if (CurrentX.HasValue && CurrentY.HasValue)
                {
                    var deltaX = programAction.Center.X - CurrentX.Value;
                    var deltaY = programAction.Center.Y - CurrentY.Value;

                    iCode = ("I" + FormatCoordinate(deltaX));

                    jCode = ("J" + FormatCoordinate(deltaY));
                }

                SetMoveType(programAction.MoveType, ref str);

                if (programAction.X.HasValue)
                {
                    WriteMoveToX(programAction.X.Value, ref str);
                }

                if (programAction.Y.HasValue)
                {
                    WriteMoveToY(programAction.Y.Value, ref str);
                }

                if (programAction.Z.HasValue)
                {
                    WriteMoveToZ(programAction.Z.Value, ref str);
                }


                str += iCode;
                str += jCode;

                // il raggio lo ometto
                //str += "R" + FormatCoordinate(programAction.Radius);

                SetFeed(programAction.GetFeedValue(), ref str);

                if (string.IsNullOrWhiteSpace(str))
                {
                    return;
                }

                code.AppendLine(str);
            }
            else
            {
                base.CreateCodeFromAction(programAction, ref code);
            }
        }