Daar zie je op een Noniusring uiteindelijk toch niets van..
mijn huidige project maakt letters zonder lijntjes..
Moderator: Moderators
Code: Selecteer alles
for (int i= 0; i< textBox1.Lines .Length; i++)
{
if (lines[i].Contains("Y"))
{
lines[i] = lines[i].Replace('Y', 'A');
}
textBox2.Text=textBox2.Text+lines[i]+Environment .NewLine ;
}
Code: Selecteer alles
void test()
{
String Source = "G00 X1.1111 Y0.0931 Z2.4";
String Converted = Source;
String Mask = "";
Mask = "";
Mask += "(?<BEGIN>.*?)";
Mask += @"(?<AS>Y)";
Mask += @"(?<VALUE>-?\d{1,5}(.\d{1,5})?)";
Mask += "(?<REST>[^\r\n]*)?.*";
Match MatchResult = Regex.Match(Source, Mask);
if (MatchResult.Success)
{
String b = MatchResult.Groups["BEGIN"].ToString();
String a = MatchResult.Groups["AS"].ToString();
String v = MatchResult.Groups["VALUE"].ToString();
String r = MatchResult.Groups["REST"].ToString();
Converted = b + "A" + v + r;
}mjah, ik heb het gemaakt in visual studio code, maar je zou het prima met VS2019 moeten kunnen openen.Arie Kabaalstra schreef: 01 jun 2022 21:47 Eh.. thanks.. maar ik zit met C#7.3 Visual Studio 2019..
Ik ga met het voorbeeldje van hfjbuis even stoeien..
Code: Selecteer alles
using System;
using System.Windows;
using Microsoft.Win32;
using System.IO;
using System.Text.RegularExpressions;
namespace GcodeRegex
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
static readonly string pattern = @"[Y][0-9.]*";
Regex rg {get;init;}
public MainWindow()
{
InitializeComponent();
rg = new Regex(pattern);
}
private async void ConvertButtonClick(object sender, RoutedEventArgs e)
{
OpenFileDialog d = new OpenFileDialog();
if(d.ShowDialog() == true)
{
String[] lines = await File.ReadAllLinesAsync(d.FileName, cancellationToken:default);
foreach(String line in lines)
{
//print lines to unchanged output
GcodeInput.Text += $"{line}\n";
var match = rg.Match(line);
if(match.Success)
{
//we have a match, we need to read it and replace with new calculated value.
GcodeOutput.Text += $"{rg.Replace(line, ParseAndConvertFromYToA(match.Value))}\n";
}
else
{
GcodeOutput.Text += $"{line}\n";
}
}
}
}
private string ParseAndConvertFromYToA(string input)
{
float parsedValue;
if(float.TryParse(input.Substring(1), out parsedValue))
{
parsedValue += 13.37f;
}
else
{
//error, could not parse value. Should do something here.
}
return $"A{parsedValue:0.000}";
}
}
}en dat werkt!..hfjbuis schreef: 01 jun 2022 20:09 Even snel gemaakt:
Code: Selecteer alles
void test() { String Source = "G00 X1.1111 Y0.0931 Z2.4"; String Converted = Source; String Mask = ""; Mask = ""; Mask += "(?<BEGIN>.*?)"; Mask += @"(?<AS>Y)"; Mask += @"(?<VALUE>-?\d{1,5}(.\d{1,5})?)"; Mask += "(?<REST>[^\r\n]*)?.*"; Match MatchResult = Regex.Match(Source, Mask); if (MatchResult.Success) { String b = MatchResult.Groups["BEGIN"].ToString(); String a = MatchResult.Groups["AS"].ToString(); String v = MatchResult.Groups["VALUE"].ToString(); String r = MatchResult.Groups["REST"].ToString(); Converted = b + "A" + v + r; }
Code: Selecteer alles
if (textBox1.Text != "")
{
String[] lines = textBox1.Text.Split('\n');
for (int i = 0; i < textBox1.Lines.Length; i++)
{
String Converted = lines[i];
String Mask = "";
Mask = "";
Mask += "(?<BEGIN>.*?)";
Mask += @"(?<AS>Y)";
Mask += @"(?<VALUE>-?\d{1,5}(.\d{1,5})?)";
Mask += "(?<REST>[^\r\n]*)?.*";
Match MatchResult = Regex.Match(lines[i], Mask);
if (MatchResult.Success)
{
String b = MatchResult.Groups["BEGIN"].ToString();
String a = MatchResult.Groups["AS"].ToString();
String v = MatchResult.Groups["VALUE"].ToString ();
double Val = double.Parse(v);
String r = MatchResult.Groups["REST"].ToString();
Converted = b + "A" + Math.Round(Val * -anglepermm, 4).ToString() + r;
}
}
}

Als je met rechts op het project klikt, heb je een optie om het project te publiceren. Die maakt er dan een installer voor.Arie Kabaalstra schreef: 05 jun 2022 16:00 Nu komt de volgende stap (als ik er ook een mooi icoontje voor gemaakt heb ), het "Bouwen" van de software, een Setup maken, en daar ook de juiste Runtimes (redistributables) bij zetten.
Hoe doe ik dat op een Nette manier?
Code: Selecteer alles
if (textBox1.Text != "")
{
String[] lines = textBox1.Text.Split('\n');
for (int i = 0; i < textBox1.Lines.Length; i++)
{
String Converted = lines[i];
String Mask = "";
Mask = "";
Mask += "(?<BEGIN>.*?)";
Mask += @"(?<AS>Y)";
Mask += @"(?<VALUE>-?\d{1,5}(.\d{1,5})?)";
Mask += "(?<REST>[^\r\n]*)?.*";
Match MatchResult = Regex.Match(lines[i], Mask);
if (MatchResult.Success)
{
String b = MatchResult.Groups["BEGIN"].ToString();
String a = MatchResult.Groups["AS"].ToString();
String v = MatchResult.Groups["VALUE"].ToString ();
double Val = double.Parse(v);
String r = MatchResult.Groups["REST"].ToString();
Converted = b + "A" + Math.Round(Val * -anglepermm, 4).ToString() + r;
}
}
}
Code: Selecteer alles
Converted = b + "A" + Math.Round(Val * -anglepermm, 4).ToString() + r + Math.Round(zval +radius,4).ToString();