E++, Custom EdingCNC Editor

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

Moderator: Moderators

Plaats reactie
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13496
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: E++, Custom EdingCNC Editor

Bericht door Arie Kabaalstra »

Kijk... Da's Praat.. daar kunnen we wat mee.. het begint me zo zoetjes aan allemaal duidelijker te worden.. Ik ga er eens mee experimenteren..
Ik maak wel even een nieuw projectje aan, puur voor het testen met verschillende classes, en de verbinding ertussen..zodat ik ze later in mijn Suppository op kan slaan als naslagwerkje.
Ik weet het lijkt overkill, maar als programma's groter worden is het de methode om het overzicht te behouden.
Zolang er geen "Case" statement in EdingCNC zit.. blijft zo'n rij IF/thens onder elkaar overkill..

en dat je met een reeks Get en Set Statements even duidelijk maakt wat er in die gevallen moet gebeuren met zo'n property... nou.. goh.. wat een werk.. 🤪, het kinkt mij niet meer dan logisch in de oren..
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13496
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: E++, Custom EdingCNC Editor

Bericht door Arie Kabaalstra »

Code: Selecteer alles

using System;

namespace ColorPalet
{
    class SyntaxColor
    {
        private String _Subroutine, _Region, _Cycle, _Gosub, _GCode, _MCode, _Loop, _Binary, _Unary;
        public String Subroutine { get { return _Subroutine; } set { _Subroutine = value; } }
        public String Region { get { return _Region; } set { _Region = value; } }
        public String Cycle { get { return _Cycle; } set { _Cycle = value; } }
        public String Gosub { get { return _Gosub; } set { _Gosub = value; } }
        public String GCode { get { return _GCode; } set { _GCode = value; } }
        public String MCode { get { return _MCode; } set { _MCode = value; } }
        public String Loop { get { return _Loop; } set { _Loop = value; } }
        public String Binary { get { return _Binary; } set { _Binary = value; } }
        public String Unary { get { return _Unary; } set { _Unary = value; } }
    }
}
Doe'k het zo goed Meester Buis?😁
Het lijkt inderdaad op repetitief code stampen, maargoed.. dit hoeft dus als het goed is maar één keer.. Ik kan er nog bepaalde Events achter mikken.. om het nog meer te stroomlijnen.. maar laat ik hier eerst maar eens mee gaaf oefenen..

verder heb ik natuurlijk ook nog zitten denken over die "G84" routine van de EMCOtronic TM02.. en dat ie met bepaalde dingen geen rekening houdt..
Maar.. daar heb ik iets op bedacht.. in de G84 Cyclus zit een overmaat.. dus kun je em voor het voordraaien gebruiken..
Er vanuitgaande dat je dan "Van punt naar punt" gaat nadraaien, maakt het dan ook niet heel veel uit als de cyclus hier en daar een radiusje laat staan, doordat ie standaard uitgaat van langs een Cilinder inlopen , en tegen een vlak uitlopen.. (de meest begrensde optie)..
En.. dan kan ik natuurlijk het "Startpunt" weer opgeven.. de hoek van het ruwmateriaal dus.. Want, als je dan voorpositioneert op een millimetertje afstand(dus ruimte houdend voor de radius van het gereedschap), dan kan de besturing zelf wel uitrekenen wat zijn veiligheidsafstanden zijn..
Stel.. je positioneert voor op X22 X1, en je "Startpunt ligt op X20 Z0, dan weet de machine dus Wat de veiligheidsafstanden moeten zijn.. en kan ie gewoon Langs Z inlopen, en langs uitlopen bij Langsdraaien, en Andersom blij vlakdraaien..Zo moeilijk hoeft dat niet te zijn.. RadiusCompensatie voor zoiets is ook "kinderlijk eenvoudig" te berekenen, want de radius moet doorlopen tot tegen de Conus, dus valt het middelpunt op dat moment samen met de hoekdeellijn.. dat moet wel uit te rekenen zijn..

<EDIT>.. Ja.. dat is het.. 1/tan(½alpha)*Rtool..niet heel spannend.. hoe dat zit met rechten tegen tangentiale en niet tangentiale cirkelbogen, dat moet ik nog even uitvlooien, Tangentiale cirkelbogen.. dat heb ik eerder gedaan.. da's niet zo spannend.. want als ze tangentiaal zijn... dan hebben ze een gezamelijke Boogeindloodlijn.. want, dus en ook Ergo, indien 2 bogen tangentiaal aansluiten, dan zijn de loodlijnen van het eindpunt van de ene, en het beginpunt van de anderen coaxiaal...Immers!!
</EDIT>
hfjbuis
Donateur
Berichten: 3079
Lid geworden op: 13 feb 2017 00:26
Locatie: Hoensbroek

Re: E++, Custom EdingCNC Editor

Bericht door hfjbuis »

Arie Kabaalstra schreef: 17 mar 2023 12:40 Doe'k het zo goed Meester Buis?😁
Dit is goed maar zelf zet ik de regel met de _variable boven de regel van de variabele zelf.
Arie Kabaalstra schreef: 17 mar 2023 12:40 Het lijkt inderdaad op repetitief code stampen, maargoed.. dit hoeft dus als het goed is maar één keer.. Ik kan er nog bepaalde Events achter mikken..
Het is repetitief meerwerk dat met knippen en plakken gemakkelijk kan. De winst zit straks in de code voor de Events afhandeling. Die hoef je alleen maar hier toe te voegen en dat scheelt werk, fouten en maakt het gestructureerder.
There are only 2 limits, the sky and your imagination
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13496
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: E++, Custom EdingCNC Editor

Bericht door Arie Kabaalstra »

Dit is goed maar zelf zet ik de regel met de _variable boven de regel van de variabele zelf.
Ja.. dat is dan de "handtekening van de programmeur", Ik geef zelf de voorkeur aan "blokje Strings declareren, blokje strings instellen"
Kwestie van voorkeur, en ik wil niet de eigenwijs uithangen, maar als ik een property wil toevoegen, dan gooi ik die er in de eerste regel bij, en onderaan vertel ik wat er mee moet gebeuren {Get, Set}

Zo hou ik de boel een beetje gescheiden..

Nu komt de volgende horde..in mijn testprogrammaatje wil ik elke Property een kleurwaarde geven, ik heb een Listboxje, waar je de properties uit kan kiezen.. en dan komt er een kleurendialoogje op, kleurtje kiezen, Ok heien.. en dan moet ie em toewijzen.., omdat de namen van de Properties hetzelfde zijn als de namen in de Listbox, kan ik ze vanuit de listbox in een variabele frotten en dat dan gebruiken om aan te geven welke property ik bedoel?

Code: Selecteer alles

void GetItem()
        {
            SyntaxColor Palet1 = new SyntaxColor ();
            string Prop = listBox1.GetItemText(listBox1.SelectedItem);
            Palet1.Prop= colorDialog1.Color;
        }
Op deze manier werkt het dus niet.. of moet ik gewoon niet zaniken, en het met een Case statement oplossen?
hfjbuis
Donateur
Berichten: 3079
Lid geworden op: 13 feb 2017 00:26
Locatie: Hoensbroek

Re: E++, Custom EdingCNC Editor

Bericht door hfjbuis »

Arie Kabaalstra schreef: 17 mar 2023 14:25 Op deze manier werkt het dus niet.. of moet ik gewoon niet zaniken, en het met een Case statement oplossen?
Het kan met een case statement maar je kunt ook een class maken met 2 properties kleur en waarde die je met een new statement initialiseert.
myclass xx = new myclass( "waarde", Colors.green);

Daarmee leg je de waarde en de kleur vast die je in de list box zetten.
Ooit wil je misschien de ingevulde waarde controleren. Dan voeg je aan je class een min en max grens toe. Of misschien een help berichtje of een link naar meer uitleg, of....
There are only 2 limits, the sky and your imagination
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13496
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: E++, Custom EdingCNC Editor

Bericht door Arie Kabaalstra »

Nou... misschien ga ik dat eens toepassen als ik het écht snap..
vooralsnog ben ik zo blij als een Aap met 7.... :shock: dat ik al wat voor elkaar gekregen heb met een Switch Case..

en.. Ik citeer hier weer een uit het werk van Edsger W. Dijkstra:
The competent programmer is fully aware of the strictly limited size of his own skull; therefore he approaches the programming task in full humility, and among other things he avoids clever tricks like the plague.
Ik ben me ten volle bewust van de geringe omvang van mijn schedel.. dat wil zeggen.. een vriend maakte laatst de opmerking dat ie blij was dat ik nog bij mijn volle verstand was, na dat ongeval..Waarop ik antwoorde..

"mijn verstand is nog lang niet vol!.. daarom ben ik nu C# aan het leren!"..

Maar lege ruimte in mijn brein is geenszins de garantie dat ik "Clever tricks" zal kunnen doorgronden.. Ik wil weten hoe iets werkt als ik het toepas... anders pas ik het liever niet toe...

Ik moet nu alleen nog uitvlooien hoe ik de kleuren kan opslaan in een property, en dan wel zo dat ik em ook kan gebruiken om een ander object een kleur te geven... Want Dát wil momenteel even nog niet lukken..
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13496
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: E++, Custom EdingCNC Editor

Bericht door Arie Kabaalstra »

Het gekke is.. dat als ik de eerste Property kies... dat ik mijn kleur krijg volgens de volgende Syntax:

Code: Selecteer alles

System.Windows.Forms.ColorDialog,  Color: Color [Green]
Maar andere Properties... krijgen:

Code: Selecteer alles

Color [Teal]
of

Code: Selecteer alles

Color [A=255, R=255, G=128, B=0]
Ik weet alleen niet waar de Software het liefst mee werkt.. een ARGB code lijkt me het meest logicsche.. gewoon een reeks nummers.. maar dan moet ik elke kleur op die manier opslaan in een Property, en een stukje Code kloppen om de boel weer uit te pluizen...zodat ik het kan toekennen aan een TextStyle in mijn FastColoredTextBox... gedoe allemaal.. :mrgreen:
hfjbuis
Donateur
Berichten: 3079
Lid geworden op: 13 feb 2017 00:26
Locatie: Hoensbroek

Re: E++, Custom EdingCNC Editor

Bericht door hfjbuis »

Code: Selecteer alles

Color [A=255, R=255, G=128, B=0]
Dat gaat hem niet worden. Code moet leesbaar zijn en dan moet er een naam gebruikt worden. Ik gebruik nergens nummers, alleen namen.
Mocht je Dialog een nummer verwachten, zet dan de naam maar om in een code. Stop dat in de class van het object en maak een methode:

Code: Selecteer alles

Color GetColorNumber()
{
}
There are only 2 limits, the sky and your imagination
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13496
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: E++, Custom EdingCNC Editor

Bericht door Arie Kabaalstra »

het is niet dat mijn Dialog een Nummer verwacht..

en ik heb ook geen flauw idee hoe ik iets in een class moet gooien en er een Methode van moet maken, om de nummers (RGB waarden) ergens uit te peuteren.. voor zo'n taal zou dat toch in hapklare brokken moeten zitten?.. ik weet nog dat ik ooit in VB.NET (toen de DotNetApi.DLL van EdingCNC nog ondersteund werd voor VB applicaties) dat ik met speels gemak (voor mijn programmeerkennis van toendertijd) de AsciCodes van een String zo op kon lepelen..

Kort door de bocht, zijn er een aantal vragen.. "in wat voor soort variabele kun je een kleur stoppen zodat de Compiler het ook snapt als je aangeeft "textBox1.ForeColor=Color;
en dan zo dat je em uit een ColorDialog kan opvissen, in je property kan proppen, en em dus als bovenstaand kan toepassen.. want meer zou het volgens mij niet mogen zijn.. Of moet ik zelf een Colorpicker verzinnen met een aantal vaste kleuren, met de kleurnamen en codes erbij?..Hoe dan?

Kijk.. dat je een Int niet zo in een Textbox kan weergeven.. da's logisch..want een Int is geen Text.. dus wat doe je??.. textBox1.text= rekensom.Tostring();..meer dan dat is het niet... maar er bestaat niet zoiets als RGB Waarde of Kleurnaam .ToColor();
Gebruikersavatar
hugo stoutjesdijk
Donateur
Berichten: 12045
Lid geworden op: 02 mar 2011 17:04
Locatie: elst (u)
Contacteer:

Re: E++, Custom EdingCNC Editor

Bericht door hugo stoutjesdijk »

Je bent vast niet de enige, misschien even googelen : c# color dialog box ?
http://csharp.net-informations.com/gui/ ... og-box.htm
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
hfjbuis
Donateur
Berichten: 3079
Lid geworden op: 13 feb 2017 00:26
Locatie: Hoensbroek

Re: E++, Custom EdingCNC Editor

Bericht door hfjbuis »

Code: Selecteer alles

            System.Drawing.Color aColor = System.Drawing.Color.GreenYellow;  // zet dit als property in een class
            textBox1.ForeColor = aColor;                                    // zet de kleur van de textbox
There are only 2 limits, the sky and your imagination
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13496
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: E++, Custom EdingCNC Editor

Bericht door Arie Kabaalstra »

Wat ik dus NIET wil is dat ik in de Code alle mogelijke kleuren wil vastleggen..

ik wil dat kunnen kiezen met een "kleurdoos" en C# heeft dat..
middels Color.Name kun je de naam van de kleur eruit peuteren.. maar daarmee kom je niet ver..

Code: Selecteer alles

 colorDialog1.ShowDialog();
            str = colorDialog1.Color;
            //To convert your color to string
            txtColor = str.A + "," + str.R + "," + str.G + "," + str.B;
            
dus gewoon de KLEUR naar een RGB Reeks converteren, meer dan dat blijkt het niet te zijn.. Als dat nou verdikke alles is?..Ok..iets omslachtiger dan Int.ToString(); maar zodra je de kleur omgezet hebt (in een subroutine), dan knoop je em aan je Property.. en dat was me al gelukt...

Maar.. dan moet je een String weer naar een kleur omzetten.. Hoe dat dan?..

Code: Selecteer alles

 if (txtColor != null)
            {
                //to convert your string to color
                string[] components = txtColor.Split(',');
                str = Color.FromArgb(Convert.ToInt32(components[0]),
                                    Convert.ToInt32(components[1]),
                                    Convert.ToInt32(components[2]),
                                    Convert.ToInt32(components[3]));
            }
            textBox1.ForeColor = str;
Meer dan dat hoeft het dus niet te zijn..eveneens gewoon in een hoekje van de Code, om het hele spul even doorheen te jagen als je het nodig hebt..
Morgen dan even kijken hoe ik de boel in een bestandje knoop, en daar ook weer uit kan halen, zodat ik de eerder gekozen kleuren weer "in kan lezen" als ik mijn Software weer opstart.

Zoals het nu werkt.. Ik heb mijn Listboxje met groepen voor de Syntax markering, Dubbelklik ik daarop, dan opent een ColorDialog, ik kies een kleur.. en Presto.. de kleurCODE wordt getoont in een TextBox, in de Zojuist geselecteerde kleur..
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13496
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: E++, Custom EdingCNC Editor

Bericht door Arie Kabaalstra »

Voor ik het vergeet.. Ja.. het is me dus gelukt.. en ik begrijp ook nog wat ik gedaan heb.. een Class geschreven, met een aantal properties, en vervolgens in een ander deel van de software *wel in dezelfde Namespace, objecten aan te maken met al die properties, en daar waarden aan toe te kennen..

Nu nog de uitdaging om de boel op te slaan, en terug te lezen...morgen.. :lol:
hfjbuis
Donateur
Berichten: 3079
Lid geworden op: 13 feb 2017 00:26
Locatie: Hoensbroek

Re: E++, Custom EdingCNC Editor

Bericht door hfjbuis »

Arie (jan)
Je hebt mij (alweer) aan het denken gezet. Zo'n property moet je met een snippet eenvoudig kunnen maken. Ik weet dat wij vroeger op de zaak snippets voor van alles en nog wat gebruikte. Ik ga daar wat tijd in steken. Wordt vervolgd....
Huub
There are only 2 limits, the sky and your imagination
Plaats reactie