Oppure

Loading
Questo topic e' stato chiuso dal moderatore.
15/03/10 20:16
Salve, volevo sapere se c'è qualcuno che mi aiuta ad fare questo programmino per le cnc amatoriali , però vorrei fare il simulatore visto dalla pianta.

Ora vi allego un'immagine per capire come devo partire e come faccio fare il rettangolo.

Il codice per creare quello che è nell'immagine e cosi:
X0Y0;
Y100;
X100;
Y0;
X0Y0;

E fa questo:

i44.tinypic.com/…

Qui il mio codice che ho scritto grazie ad voi per i varii aiuti che mi state danto.
Faccio fare al programma pixel per pixel.

Spiegazione del trappano come devo fargli ad capire:

X100 Sposta verso destra il mandrino ("Punta trapano";) di 100 millimetri, e X - 100 sposta verso sinistra il mandrino di 100 millimetri.

ecco :
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Text.RegularExpressions;

namespace _VirtualCnc
{
    public partial class frmMain : Form
    {
        public frmMain()
        {
            InitializeComponent();
        }
        List<PointF> PointList = new List<PointF>();
        int pointIndex = 0;
        private void ApriProgramma_Click(object sender, EventArgs e)
        {

            OpenFileDialog open = new OpenFileDialog();
            open.Filter = "File di Testo (*.txt)|*.txt|File Cnc(*.cnc)|*.cnc";
            if (open.ShowDialog() == DialogResult.OK)
            {
                tbCode.Text = File.ReadAllText(open.FileName) + "";  // Aggiunta codice alla listbox
                sbp_file.Text = "" + open.FileName + "";   // barra di stato per recuperare il file.
            }
            tbCode.Enabled = false;
        }// ApriProgramma_Click

        private void Simula_Click(object sender, EventArgs e)
        {
            Elabora_.Enabled = true;
            List<PointF> pt = new List<PointF>();
            Regex coord = new Regex(@"X(?<CoordX>-?\d+)Y(?<CoordY>-?\d+)");
                MatchCollection mc = coord.Matches(tbCode.Text);
                foreach (Match m in mc)
                {
                    int x = int.Parse(m.Groups["CoordX"].Value);
                    int y = int.Parse(m.Groups["CoordY"].Value);
                    PointF p = new PointF(x, y);
                    pt.Add(p);
                   
                }
            
            // Get Points From Line(s)
            float curDist = 0;
            float distance = 0;
            for (int i = 0; i < pt.Count - 1; i++)
            {
                PointF ptA = pt[i];
                PointF ptB = pt[i + 1];
                float deltaX = ptB.X - ptA.X;
                float deltaY = ptB.Y - ptA.Y;
                curDist = 0;
                distance = (float)Math.Sqrt(Math.Pow(deltaX, 2) + Math.Pow(deltaY, 2));
                while (curDist < distance)
                {
                    curDist++;
                    float offsetX = (float)((double)curDist / (double)distance * (double)deltaX);
                    float offsetY = (float)((double)curDist / (double)distance * (double)deltaY);
                    PointList.Add(new PointF(ptA.X + offsetX, ptA.Y + offsetY));
                }
            }
            
       
          
        } // Simula_Click

        private void FermaElaborazione_Click(object sender, EventArgs e)
        {
           this.box.Refresh();
        
           this.Elabora_.Enabled = false;
           pointIndex = 0;
        }// FermaElaborazione_Click

        private void MenuFileEsci_Click(object sender, EventArgs e)
        {
            this.Close();
        }// MenuFileEsci_Click

        private void Edita__Click(object sender, EventArgs e)
        {
            tbCode.Enabled = true;
        }

        private void frmMain_Load(object sender, EventArgs e)
        {
            tbCode.Enabled = false;
            this.box.SizeMode = PictureBoxSizeMode.CenterImage;

        }// Edita__Click

        private void SalvaProgramma_Click(object sender, EventArgs e)
        {
           
        }// SalvaProgramma_Click

        private void MenuAbout_Click(object sender, EventArgs e)
        {
            AboutBox1 about = new AboutBox1();
            about.Show();
        }// MenuAbout_Click

        private void Elabora__Tick(object sender, EventArgs e)
        {
            if (pointIndex < PointList.Count - 1)
            {
                pointIndex++;
                this.Refresh();
            }
        } // Elabora_Tick

        private void box_Paint(object sender, PaintEventArgs e)
        {
           

            for (int i = 0; i < pointIndex; i++)
            {
            e.Graphics.PageUnit = GraphicsUnit.Pixel;
            e.Graphics.DrawLine(Pens.Black, PointList[i].X, PointList[i].Y, PointList[i + 1].X, PointList[i + 1].Y);
            textBox1.Text = "" + PointList[i + 1].X + "";
            textBox2.Text = "" + PointList[i + 1].Y + "";
            }

          
        } // Box  Paint.
    }
}


Mi potete aituarmi grazie.

Vi ringrazio molto.
Ultima modifica effettuata da 15/03/10 20:16
16/03/10 12:36
nessuno?

ciao :)
16/03/10 12:42
Quelle righe che vedete nell'immagine sono queste:

N10 X0Y0;
N20 Y100;
N30 X100;
N40 Y0;
N50 X0Y0;
17/03/10 11:31
Thejuster
emh...

puoi spiegare meglio dove hai il problema
cosa non riesci a fare?
mire.forumfree.it/ - Mire Engine
C# UI Designer
17/03/10 13:06
Postato originariamente da Thejuster:

emh...

puoi spiegare meglio dove hai il problema
cosa non riesci a fare?


scusate, ma lascio perdere questo programma ,
perchè è un casino a farlo ed io ho poche conoscenze.

Meglio che studio per fare altre cose semplice ,perchè se no non risolvo nullla.

Comunque grazie per la risposta.