E++, Custom EdingCNC Editor

Nederlandse CNC controller op basis van de usb poort of Ethernet.

Moderator: Moderators

Plaats reactie
hfjbuis
Donateur
Berichten: 3058
Lid geworden op: 13 feb 2017 00:26
Locatie: Hoensbroek

Re: E++, Custom EdingCNC Editor

Bericht door hfjbuis »

Ehh... Nee.. Want.. 0-999 is groen.. maar alles <3999 kleurt groen, op het laatste getal na, alles tussen 4000 en 4000 daarvan is het laatste cijfer nu Oranje, en bij 5000 of meer is het rood..
Er bestaat zoiets als een Positive and Negative lookahead.
Positive lookahead q(?=u) matches a q that is followed by a u, without making the u part of the match.

Daarmee kun je deze regex gebruiken voor het matchen van 3 cijfers gevolgd door een "niet cijfer" teken waarbij de niet cijfer niet wordt opgenomen in het resultaat.
Als alle #getallen eindigen op een = teken, kun je de \D vervangen door een = teken

\d staat voor een cijfer (0..9) en \D staat voor een niet cijfer

Code: Selecteer alles

Regex rx = new Regex(@"((#\d{1,3})(?=\D))?");
There are only 2 limits, the sky and your imagination
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13373
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: E++, Custom EdingCNC Editor

Bericht door Arie Kabaalstra »

Het is niet zo dat alle # parameters eindigen met een =.. in een formule kun je gebruik maken van:
abs, acos, asin, atan, sin, cos, tan, exp fix, fup, int, round, sqrt, en not, om er maar een paar te noemen.. en dan hebben we na de Unary operations de Binary operations nog..de +, -, /,* en **, and, xor, or, <, > ,<= , >=, band, bor en bxor..
Kortom.. er is meer dan alleen =.. en dan hebben we de rechte haken nog.. maar dat heb ik al [dichtgetimmerd]

Ik ga er even naar loeren.., en even in de manual kijken wat ik nog meer in een Regex kan gooien..op zich de Unary en Binary Operations elk een aparte kleur lijkt me mooi.. de Canary is Geel.. :lol:

Look Ahead.. ik dacht dat dat alleen in CNC besturingen voorkwam... blijkbaar ook in de programmeersoftware....
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13373
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: E++, Custom EdingCNC Editor

Bericht door Arie Kabaalstra »

Nope... dat boekje is leuk... als je snapt wat je doet.. als geheugensteuntje..maar om out of the blue zoiets op te stellen?.. Vergeet het maar..
Regextesters beloven ook meer dan wat ze doen.. hoevaak ik het al meegemaakt heb dat ik daar wat invulde.. en gewoon GEEN match kreeg.. Ik zet em in mijn software.. Presto!.. resultaat..

Het gaat erom dat:
#1<=#parameter<#4000 =Groen
#4000<=#Parameter<#5000 =Oranje
#5000<=#Parameter<#6000 =Rood

Meer dan dat moet het toch niet zijn?..als het wiskundig zo makkelijk dicht te timmeren is.. waarom hebben ze niet zoiets in Regex?

@"#(3[0-9]|[1-3][0-9]|[1-9])\b"

Dat haalt in elk geval alles tussen 1 en 39 eruit... nog 2 getalreeksen erbij.. en ik ben waar ik zijn moet...
Ik heb dit voorbeeldje ergens op het net gevonden, om weeknummers uit te zeven.. dus van 1 tm 53.. Nou, daar heb ik dus even wat kleine dingetjes aan veranderd.. maar vraag me niet wat het allemaal betekent...

https://www.oreilly.com/library/view/re ... 06s07.html Daar komt het voorbeeld vandaan..

^(5[0-3]|[1-4][0-9]|[1-9])$

en zo luidt het.. zie ik het goed dat er gezocht gaat worden naar het getal 5, gevolgd door [0 tm 3], Of | [1tm4], gevolgd door [0tm9] Of..[1 tm 9]
Kan ik er dan gewoon reeksen achter zetten?.. maar betekent dat, dat ik voor hondertallen en duizendtallen reeksen nodig heb? hoe doe ik dat?
hfjbuis
Donateur
Berichten: 3058
Lid geworden op: 13 feb 2017 00:26
Locatie: Hoensbroek

Re: E++, Custom EdingCNC Editor

Bericht door hfjbuis »

hoevaak ik het al meegemaakt heb dat ik daar wat invulde.. en gewoon GEEN match kreeg.. Ik zet em in mijn software.. Presto!.. resultaat..
Er zijn heel veel regex dialecten die niet alle regex regels ondersteunen. Testen in je eigen applicatie is nodig.
Ik volg het boekje met de .net en C# regels. Die hebben het tot nu toe altijd gedaan.

Bedoel je dat deze regel het niet doet? Ik heb hem met een paar parameters getest voor getallen #0..#999

Code: Selecteer alles

Regex rx = new Regex(@"((#\d{1,3})(?=\D))?");
There are only 2 limits, the sky and your imagination
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13373
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: E++, Custom EdingCNC Editor

Bericht door Arie Kabaalstra »

Code: Selecteer alles

(#\d{1,3})(?=\D)?
Die doet het.. jouw versie deed NIETS op Regex101.com..je had er te veel haakjes instaan... toen ik die weghaalde was het goed...

Maar... dit lost mijn probleem nog niet op.. tenzij er een manier is om deze te koppelen met een die tot 4000 test en dan of die, of de bovenstaande.

Code: Selecteer alles

#([1-3]{1}[0-9]{0,3})?|(#\d{1,3})(?=\D)?
zoiets dus.. maar dit werkt niet...

Hoe je het ook wendt of keert.. het blijft Malbolge.. :roll:

#1<#test<#4000.. dat is de regel waar ik op wil selecteren..zodat parameters tussen 1 en 3999 een andere kleur krijgen dan 4000-4999 en 5000-5999
hfjbuis
Donateur
Berichten: 3058
Lid geworden op: 13 feb 2017 00:26
Locatie: Hoensbroek

Re: E++, Custom EdingCNC Editor

Bericht door hfjbuis »

Is het geen optie om: 4 regels te gebruiken met dezelfde kleur
een regel voor #1..#999
een regel voor #1000..#2999 toe
een regel voor #2000..#2999 toe
een regel voor #3000..#3999 toe

n.b. die laatste 3 kun je ook wel in één regel zetten zodat je maar 2 regels hebt voor deze kleur

Code: Selecteer alles

(#[1-4]\d{3})(?=\D)?
En dan de 2 regels samenvoegen:

Code: Selecteer alles

((#\d{3})(?=\D))|(#[1-4]\d{3})(?=\D))?
Het gebruiken van meerdere regels houd het wel overzichtelijk
There are only 2 limits, the sky and your imagination
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13373
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: E++, Custom EdingCNC Editor

Bericht door Arie Kabaalstra »

Code: Selecteer alles

public Regex VolatileParameter = new Regex(@"#([1-3][0-9]{0,3})|#([4][0-9]{0,2})\D");
Die Doet het...

Afbeelding

Het enige is dat de # voor de #4000 reeks nu rood kleurt..Kleinigheidje.. kijk ik morgen wel even naar..Fysio heeft me weer flink te grazen genomen.. mag ook wel... want ik maak stappen.. letterlijk.. ik loop namelijk sinds halverwege de week.. weer zonder stok... 't kost me nog moeite.. maar het voelt fantastisch om weer op de been te zijn..

Hoe werkt de nu werkende Regex?..als ik het goed snap, zit er een "OF"statement in.. OF.. hij pakt getallen 1-3 gevolgd door 0-9 , 0 tot 3 maal.. dus.. 1,2 of 3 voorop. en dan max 3 getallen 0-9 erachter.. OF!!.. hij pakt 4, met daarachter 0-9, max 2 keer herhalen, en dan een Non-Digit erachter.. want anders.. kleurt ie de eerste 3 getallen van een #4000 reeks parameter ook groen. en da mut nie..😤 Dus zodoende... Lijkt het er dan toch op dat ik het een beetje ga snappen?.. Ja.. een beetje...maar niet meer dan dat.. als ik voor mezelf de verklaring van bepaalde reeksen karakters vind.. dan schrijf ik dat wel een keer weg in een bestandje.. maak ik er mijn eigen RegExManual van..

Die andere Code.. ik kijk er morgen ook even naar.. misschien heb je een elegantere oplossing.. mogelijk krijgen mijn # ook weer de goede kleur.. of ik moet ze apart kleuren.. eens kijken of dat een Optie is..
hfjbuis
Donateur
Berichten: 3058
Lid geworden op: 13 feb 2017 00:26
Locatie: Hoensbroek

Re: E++, Custom EdingCNC Editor

Bericht door hfjbuis »

Het gaat nog niet helemaal goed. Sommigen = tekens kleuren en ook sommigen #.
Aan de kleur kun je zien welke regex niet helemaal goed is.

Code: Selecteer alles

#([1-3]{1}[0-9]{3})?|(#\d{1,3})(?=\D)?
There are only 2 limits, the sky and your imagination
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13373
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: E++, Custom EdingCNC Editor

Bericht door Arie Kabaalstra »

hfjbuis schreef: 10 mar 2023 23:50 Het gaat nog niet helemaal goed. Sommigen = tekens kleuren en ook sommigen #.
Aan de kleur kun je zien welke regex niet helemaal goed is.

Code: Selecteer alles

#([1-3]{1}[0-9]{3})?|(#\d{1,3})(?=\D)?
Ja.. het gaat om de #4xx dus onder de 1000.. daar moet de "terminator" even goed gezet worden..

Afbeelding

Maar!.. de # tekens zijn nu allemaal donkerblauw... en de rest werkt zoals het hoort.. ik twijfel.. gaan slapen..of die 4-444 reeks nog even aanpakken?
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13373
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: E++, Custom EdingCNC Editor

Bericht door Arie Kabaalstra »

Afbeelding

Wham..!

Code: Selecteer alles

public Regex VolatileParameter = new Regex(@"#([1-3][0-9]{0,3})|#([4][0-9]{0,2})(?=\D)");
Met die (?=\D) zoek ik naar een Non-Digit, maar neem em niet mee in mijn Match..En nu werkt het🎈... Weltrusten allemaal!.morgen 🎹 ik verder..
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13373
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: E++, Custom EdingCNC Editor

Bericht door Arie Kabaalstra »

Afbeelding

Zou ik dan toch iets beginnen te snappen van Regular Expressions?.. het lijkt er wel op.. want..Sub en Endsub zijn mooi donkerblauw, net als de G regels, de parameters zijn in 3 groepen ingedeeld, evenals de "Operations" onderverdeeld in Unary en Binary.. in blauw en lichtblauw..
Comments zijn Groen, Nu nog zowel de ; en de () Comments.. eens zien of ik daar ook nog een andere kleur aan kan geven..
en.. wat ik ook wel leuk vindt... als je je commentaren in het Engels schrijft.. wat ik meestal doe, bekoz i spiek ferrie koet inglish :lol: , dan moet je het niet hebben dat er dan in een groene regel ineens "AND" in het blauw tussen staat.. en dat heb ik ook voor elkaar gekregen.. want..:
AND(?=\[)
doet't em wel.. Ik zoek in de Regex BinaryOperations naar onder andere "AND", en een "[" ernaast.. want in een formule zitten geen spaties in E++ :mrgreen: dus.. zolang je geen hele formules in een Comment zet.. gaat alles lekker in het groen..en doe je dat wel.. dan worden alleen de haakjes blauw.. wie gebruikt er nou haakjes, de vierkante nog wel, in een Comment?.. Ik niet in elk geval.. en omdat ik de "taal" E++ heb bedacht.. bepaal ik dat lekker... 😝

Ik ben erachter gekomen dat de volgorde waarin je in een FastColoredTextBox de boel definieert en oproept ook bepalend is.. eerst had ik de Region markeringen Grijs.. later weer niet.. maar bepaalde andere dingen bleven wel met een aparte kleur.. dus.. de Styledefinitie van Region en Endregion een eind naar boven gehaald. en Presto!..

Dat werkt dus allemaal.. nu alleen nog even kijken naar een echt goed kleurenschema.. Misschien.. en ik moet even kijken hoe.. en hoe toegankelijk. kan ik de kleuren aangeven met een string.. dan kun je eventueel zelf in een dialoogje een kleur intypen.. of nog mooier.. uitkiezen in een DropDown Menuutje, net als in Visual Studio.. maar dat komt nog wel.. dat staat in mijn Planning nog heel ver...
Binnenkort zal ik voor een paar daagjes huiswaarts keren.. en dan kan ik daar verder werken.. met 3 x 19", in plaats van 1 x 12" met een Duits Klavier eraan.. Aber, der Tastatur ist mir wirklich völlig egal, weil ich schon die VS/International Einstellung benutze..Merkwurdig eigentlich das die Heidenhain Tastatüre allen Mit VS Einstellung geliefert werden..Nah.. Gut..
hfjbuis
Donateur
Berichten: 3058
Lid geworden op: 13 feb 2017 00:26
Locatie: Hoensbroek

Re: E++, Custom EdingCNC Editor

Bericht door hfjbuis »

Het gaat goed,
Denk je eens in dat je dit in C# moet maken zonder regex.
There are only 2 limits, the sky and your imagination
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13373
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: E++, Custom EdingCNC Editor

Bericht door Arie Kabaalstra »

Denk je eens in dat je dit in C# moet maken zonder regex.
of.. in Commodore Basic 3.5... :lol:
Het begint nu tot me door te dringen dat RegEx in wezen een separate programmeertaal is.. die je ook "even" moet leren..
En als ik het me goed herinner, zijn er meer "talen" die met van die zoeksleutels en Switches werken, maar welke.. dat schiet me even niet te binnen.

Ik begin me meer en meer thuis te voelen in C#, meer dan ooit in VB.NET.. die taal heb ik min of meer achter me gelaten..
Zoals Edsger Dijkstra ooit zei
It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.
Nou... Zonder structuur kom je in Basic ook niet ver.. met SpaghettiCode kom je een heel eind, maar niet het hele eind..
The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offense.
Gelukkig heb ik dus nooit COBOL geleerd.. :lol:
Simplicity is prerequisite for reliability.”
En dat is een Regel waar ik me aan probeer te houden..éénvoud.. compacte code, alles netjes geordend.. zo werkt het in C#, dus vind ik.. moet het in E++ ook zo werken. Cyclusdefinities die makkelijk in te voegen zijn, aan te maken middels de dialogen in EdingCNC, en door de structuur zijn ze als Objecten te behandelen, je kunt er een Parameter "uitlichten" en em aanpassen.. , en omdat het allemaal nog zo dicht bij gewone G-Code staat, hoef je het niet te compileren..maar kan het gewoon in Runtime door EdingCNC geintepreteerd worden...Gecompileerde G-Code lijkt me vooralsnog niet nodig..

Voorzover ik heb kunnen testen, zitten er geen gekke dingen in de huidige ontwikkelingsversie, dus Kopieetje maken... op een USB Zetpil zetten (Source Suppository).. en verder werken op de PC, misschien op GitNaaf gooien..even de oude eraf..nieuwe erop.. www.schoonschip.nl :mrgreen:
hfjbuis
Donateur
Berichten: 3058
Lid geworden op: 13 feb 2017 00:26
Locatie: Hoensbroek

Re: E++, Custom EdingCNC Editor

Bericht door hfjbuis »

Ik heb de hele shit mee gemaakt van machine taal (programmeren met schakelaartjes) tot C#. Ik heb ooit een boek over pascal gekocht en dat was en is, voor mij, de beste taal om te leren programmeren. Een Cobol programmeur zij ooit (1980) tegen mij, het maakt niet uit in welke taal je programmeert, je kunt elk probleem in elke taal oplossen maar sommige talen zijn meer geschikt voor bepaalde problemen. En daar moet ik hem nog steeds gelijk in geven.
Gestructureerde code schrijven, de regels van commentaar voorzien voor het nageslacht en jaarlijks de code opschonen helpt om het leesbaar te houden. Ik denk ook niet dat C# mijn laatste programmeertaal zal zijn. Er komt vast nog een volgende en dan beginnen we weer opnieuw.
There are only 2 limits, the sky and your imagination
Plaats reactie