Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [C#] Simulare un pantografo
Forum - C# / VB.NET - [C#] Simulare un pantografo

Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 1:00
Giovedì, 01/01/1970
Salve riapro con questo programma visto che vorrei finirlo ed 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:

http://i44.tinypic.com/2j5ffk.jpg

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 :
Codice sorgente - presumibilmente C++

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using System.IO;
  10. using System.Text.RegularExpressions;
  11.  
  12. namespace _VirtualCnc
  13. {
  14.     public partial class frmMain : Form
  15.     {
  16.         public frmMain()
  17.         {
  18.             InitializeComponent();
  19.         }
  20.         List<PointF> PointList = new List<PointF>();
  21.         int pointIndex = 0;
  22.         private void ApriProgramma_Click(object sender, EventArgs e)
  23.         {
  24.  
  25.             OpenFileDialog open = new OpenFileDialog();
  26.             open.Filter = "File di Testo (*.txt)|*.txt|File Cnc(*.cnc)|*.cnc";
  27.             if (open.ShowDialog() == DialogResult.OK)
  28.             {
  29.                 tbCode.Text = File.ReadAllText(open.FileName) + "";  // Aggiunta codice alla listbox
  30.                 sbp_file.Text = "" + open.FileName + "";   // barra di stato per recuperare il file.
  31.             }
  32.             tbCode.Enabled = false;
  33.         }// ApriProgramma_Click
  34.  
  35.         private void Simula_Click(object sender, EventArgs e)
  36.         {
  37.             Elabora_.Enabled = true;
  38.             List<PointF> pt = new List<PointF>();
  39.             Regex coord = new Regex(@"X(?<CoordX>-?\d+)Y(?<CoordY>-?\d+)");
  40.                 MatchCollection mc = coord.Matches(tbCode.Text);
  41.                 foreach (Match m in mc)
  42.                 {
  43.                     int x = int.Parse(m.Groups["CoordX"].Value);
  44.                     int y = int.Parse(m.Groups["CoordY"].Value);
  45.                     PointF p = new PointF(x, y);
  46.                     pt.Add(p);
  47.                    
  48.                 }
  49.            
  50.             // Get Points From Line(s)
  51.             float curDist = 0;
  52.             float distance = 0;
  53.             for (int i = 0; i < pt.Count - 1; i++)
  54.             {
  55.                 PointF ptA = pt[i];
  56.                 PointF ptB = pt[i + 1];
  57.                 float deltaX = ptB.X - ptA.X;
  58.                 float deltaY = ptB.Y - ptA.Y;
  59.                 curDist = 0;
  60.                 distance = (float)Math.Sqrt(Math.Pow(deltaX, 2) + Math.Pow(deltaY, 2));
  61.                 while (curDist < distance)
  62.                 {
  63.                     curDist++;
  64.                     float offsetX = (float)((double)curDist / (double)distance * (double)deltaX);
  65.                     float offsetY = (float)((double)curDist / (double)distance * (double)deltaY);
  66.                     PointList.Add(new PointF(ptA.X + offsetX, ptA.Y + offsetY));
  67.                 }
  68.             }
  69.            
  70.        
  71.          
  72.         } // Simula_Click
  73.  
  74.         private void FermaElaborazione_Click(object sender, EventArgs e)
  75.         {
  76.            this.box.Refresh();
  77.        
  78.            this.Elabora_.Enabled = false;
  79.            pointIndex = 0;
  80.         }// FermaElaborazione_Click
  81.  
  82.         private void MenuFileEsci_Click(object sender, EventArgs e)
  83.         {
  84.             this.Close();
  85.         }// MenuFileEsci_Click
  86.  
  87.         private void Edita__Click(object sender, EventArgs e)
  88.         {
  89.             tbCode.Enabled = true;
  90.         }
  91.  
  92.         private void frmMain_Load(object sender, EventArgs e)
  93.         {
  94.             tbCode.Enabled = false;
  95.             this.box.SizeMode = PictureBoxSizeMode.CenterImage;
  96.  
  97.         }// Edita__Click
  98.  
  99.         private void SalvaProgramma_Click(object sender, EventArgs e)
  100.         {
  101.            
  102.         }// SalvaProgramma_Click
  103.  
  104.         private void MenuAbout_Click(object sender, EventArgs e)
  105.         {
  106.             AboutBox1 about = new AboutBox1();
  107.             about.Show();
  108.         }// MenuAbout_Click
  109.  
  110.         private void Elabora__Tick(object sender, EventArgs e)
  111.         {
  112.             if (pointIndex < PointList.Count - 1)
  113.             {
  114.                 pointIndex++;
  115.                 this.Refresh();
  116.             }
  117.         } // Elabora_Tick
  118.  
  119.         private void box_Paint(object sender, PaintEventArgs e)
  120.         {
  121.            
  122.  
  123.             for (int i = 0; i < pointIndex; i++)
  124.             {
  125.             e.Graphics.PageUnit = GraphicsUnit.Pixel;
  126.             e.Graphics.DrawLine(Pens.Black, PointList[i].X, PointList[i].Y, PointList[i + 1].X, PointList[i + 1].Y);
  127.             textBox1.Text = "" + PointList[i + 1].X + "";
  128.             textBox2.Text = "" + PointList[i + 1].Y + "";
  129.             }
  130.  
  131.          
  132.         } // Box  Paint.
  133.     }
  134. }



Mi potete aituarmi grazie.

Vi ringrazio molto.

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 21:30
Sabato, 17/04/2010
LE righe che vedete sono queste:

N10 X0Y0;
N20 Y100;
N30 X100;
N40 Y0;
N50 X0Y0;

vi faccio vedere un'esempio con un'altro codice e un'altro programma...

in poche parole devo cambiare le coordinate.

ecco l'immagine:

http://i44.tinypic.com/2rnubo1.jpg

Ultima modifica effettuata da il 17/04/2010 alle 22:34
PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 13:47
Domenica, 18/04/2010
ansi vi posto questa immagine cosi capite di più.

http://i39.tinypic.com/105pjit.jpg

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 18:38
Martedì, 20/04/2010
Non si è capito nulla. Per favore, scrivi meglio.


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 14:04
Giovedì, 22/04/2010
Testo quotato

Postato originariamente da Il Totem:

Non si è capito nulla. Per favore, scrivi meglio.



Ciao, e scusa per il ritardo ,
ma

In poche parole devo fare questo linguaggio qui:

http://www.dpsoft.eu/codice_iso.htm


vedi video: http://www.youtube.com/results?search_query=pantografo+cnc ...

A scopo didattico, Mi piacerebbe fare il simulatore.

L'unico devo partire da un'area di lavoro:
x400y200z300

e fare lo start point x0y0 verso di noi.

Devo creare un asse cartesiano,

quasi simile ad questo:

http://labmaster.mi.infn.it/a2/480.jpg

Mi chiedevo solo che cosa devo documentarmi per fare questo simulatore.

Grazie.



PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 19:12
Giovedì, 22/04/2010
Beh... devi documentarti sulla grafica e sulle espressioni regolari...


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM Quote