C# Vraagje

Vragen die je boven niet kwijt kunt, kan je hier stellen.

Moderator: Moderators

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

Re: C# Vraagje

Bericht door hfjbuis »

Arie Kabaalstra schreef: 07 apr 2022 00:33 ook nog wat lolligs wat ik had verzonnen.. als je nu in het programma "FACING" typt, dan toont ie de dialoog voor Facing ofwel vlakdraaien.. hetzelfde dus nu ook voor Turning (omdat die beiden G84 zijn, maar bij Facing programmeer je eerst Z dan X, en Bij Turning is het net andersom)
Ik probeer, daar waar het kan, de volgorde van de invulvelden hetzelfde te houden. Het verschil tussen de schermen regel ik door de ongebruikte velden te verbergen.
Daarmee heb ik maar één basis scherm en als ik daar iets in verander, is het meteen klaar voor alle andere schermen.
There are only 2 limits, the sky and your imagination
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13479
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: C# Vraagje

Bericht door Arie Kabaalstra »

EMCOTerminal1.jpg
Ik ben nog even aan het stoeien geweest.. wel lollig als je nu "Facing" typt.. dan verschijnt er een dialoogje.. die vul je in.. en zodra je op de onderste regel komt, en op Enter mept..
EMCOTerminal2.jpg
dan maakt ie de regel G-Code voor vlakdraaien op, en pleurt em in de code waar je "Facing" intypte.. zo hoef je dus niet alle G-Codes te onthouden.. als je (als ik klaar ben met de code ) "Drilling" typt, dan toont het programma de dialoog voor G88.
Verder.. kan ik ook middels wat programmeerwerk radii met voorbewerking programmeren.. het berekenen van de punten op de cirkelboog is kinderspel, en het voorbewerken kan gewoon met een reeks G84's zonder snedeopdeling (die reken ik zelf wel uit), en omdat ze vanuit hetzelfde punt starten, hoef ik me ook geen zorgen te maken om het terugtrekken van de beitel.. Immers..een G84 gaat vanaf het punt waar je em start naar het opgegeven coordinaat.
laat je D3 (de snedediepte) achterwege.. dan doet ie em in één keer..
't begint nu echt ergens op te lijken..
Je hebt niet voldoende permissies om de bijlagen van dit bericht te bekijken.
hfjbuis
Donateur
Berichten: 3074
Lid geworden op: 13 feb 2017 00:26
Locatie: Hoensbroek

Re: C# Vraagje

Bericht door hfjbuis »

Arie Kabaalstra schreef: 07 apr 2022 23:58 Verder.. kan ik ook middels wat programmeerwerk radii met voorbewerking programmeren.. het berekenen van de punten op de cirkelboog is kinderspel en het voorbewerken kan gewoon met een reeks G84's
Ik heb toch wel een aantal pagina's C# code nodig om toolpaden met TNRC ( tool neus radius compensatie) te berekenen zodat de snede diepte over de het hele toolpad gelijk is en dat ding precies begint op het begin en eindigt op het einde van het werkstuk zodat het wat sneller gaat!
Zit de TNRC (G42/G43) dan in eding?

Is G84 geen tapping gcode?
There are only 2 limits, the sky and your imagination
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13479
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: C# Vraagje

Bericht door Arie Kabaalstra »

't is niet bedoeld voor EdingCNC, maar voor de EMCOtronic TM02, en mogelijk, als ik wat info kan vinden ook voor de TM1.

Wat ik in eerste instantie wilde was een "terminal" om programma's naar de machine te sturen, en ze te downloaden van de machine.
nou kan dat ook met Coolterm, maar dan moet je eerst de machine op ontvangen zetten, dan op de PC het programma openen, en dan Jast ie em in één keer door de draad..
als je je een keer vergist, dan propt ie de verkeerde in de machine.. en je kunt ook de code niet even doorlezen voor je'm verstuurd..
Of je moet 't programma eerst in een Editor openen, en dan smijt ik em over door te kopiëren, en dan in de Terminal te plakken.
Gevolg.. je hebt 2 programma's nodig.. Whut?

Dus.. mijn gedachtengang.. Editor en Terminal in één.. eerst de RS232 uitgezocht.. Ok.. dat heb je dan na een avondje prutsen wel werkend, maar dan.. programma format.. van Machine naar PC staan er regelnummers in, met daarachter 2 spaties..
op de PC kun je de regelnummers weglaten.. maar dan moeten die 2 spaties er wel staan..
programma begint altijd met %, 4 keer een cijfer, en een spatie..en aan het einde M30 en 2 CRLF's.

Da's bij het programmeren allemaal niet handig, want laten we eerlijk zijn.. als je een programma opent in een Tekstvenster.. dan kun je em ook bewerken..
Dan wil je gewoon Code kunnen kloppen, en je geen zorgen maken over spaties, regelnummers en CRLF's aan het eind..

Dus.. dan ga je dat ook meenemen in het verhaal.. en dan denk je.. als ik toch routines zit te pennen om tekst aan te passen.. waarom dan niet een paar dialoogjes erin proppen?

G84 is op de EMCOtronic TM02 een LangsdraaiCyclus, G85 is Tappen, G88 is boren.
Hoe het zit met Radiuscompensatie in de Canned Cycle G84 weet ik niet, je kunt met extra Parameters nog wel meer doen dan alleen een rechthoekige hap uit je werk halen, maar da's ook maar heel basic, omdat ie dan geen rekening houdt met bijvoorbeeld de afstand die je voor het werk begint.
Ik vermoed dan ook dat die optie geen Radiuscompensatie gebruikt, en bij een gewone rechthoekige hap uit je werk.. doet je radiuscompensatie ook precies helemaal niets.

Als ik nog even een robbertje doorklop, dan puzzel ik wel iets in elkaar waar je in elk geval Vlakdraaien, Langsdraaien, Radii, schuine kanten, Groeven en schroefdraad mee kan proggen.. en dan gaat het al snel ergens op lijken.. dan kun je met een schetsje achter de PC "Effe snel" een programmaatje induimen, en het dan met een paar knopdrukken op de machine, en 'één op de PC door de draad rossen..

Er zijn nog heel wat EMCOturns 120 in bedrijf wereldwijd.. wie weet zijn er meer mensen die hier wat aan hebben.. en daar ook wel een bescheiden bedragje voor over hebben.. 'k hoef er niet rijk van te worden..
hfjbuis
Donateur
Berichten: 3074
Lid geworden op: 13 feb 2017 00:26
Locatie: Hoensbroek

Re: C# Vraagje

Bericht door hfjbuis »

Arie Kabaalstra schreef: 08 apr 2022 12:44 bij een gewone rechthoekige hap uit je werk.. doet je radiuscompensatie ook precies helemaal niets
Als ik doe vlak draaien zonder radius compensatie (TNRC) dan blijft er een puntje staan. Bij mij lost TNRC dit op. Als ik niet tot het midden ga (schouder), dan is TNRC automatisch uitgeschakeld want anders gaat het te diep. Hoe zou ik dat weten? :mrgreen:
hfjbuis schreef: 08 apr 2022 00:55 Er zijn nog heel wat EMCOturns 120 in bedrijf wereldwijd.. wie weet zijn er meer mensen die hier wat aan hebben.
Eigenlijk, moet je het zo maken, dat het onafhankelijk van de controller werkt. Dan kun je het "eenvoudig" ook voor eding of iets anders gebruiken. Maar dan heb je er ook wel een dagtaak aan.
There are only 2 limits, the sky and your imagination
Gebruikersavatar
Kars-cnc
Donateur
Berichten: 1762
Lid geworden op: 07 okt 2015 05:33
Locatie: Heerde (Gelderland)

Re: C# Vraagje

Bericht door Kars-cnc »

hfjbuis schreef: 08 apr 2022 00:55 Zit de TNRC (G42/G43) dan in eding?
Tool nose radius correction (G41, G42) zit gewoon in Eding.
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13479
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: C# Vraagje

Bericht door Arie Kabaalstra »

hfjbuis schreef: 08 apr 2022 12:59 Als ik doe vlak draaien zonder radius compensatie (TNRC) dan blijft er een puntje staan. Bij mij lost TNRC dit op. Als ik niet tot het midden ga (schouder), dan is TNRC automatisch uitgeschakeld want anders gaat het te diep. Hoe zou ik dat weten?
Als ik vlakdraaien programmeer.. dan ga ik altijd minimaal tot x-Radius, dat doe je op een conventionele machine ook tenslotte😉
hfjbuis schreef: 08 apr 2022 12:59 Eigenlijk, moet je het zo maken, dat het onafhankelijk van de controller werkt. Dan kun je het "eenvoudig" ook voor eding of iets anders gebruiken. Maar dan heb je er ook wel een dagtaak aan.
Ik zit ook te denken aan een EdingCNC versie, maar dan wel een met de Macro erachter in het achterhoofd.. ik heb op mijn freesbank een soortgelijke Editor, maar die heb ik 13 jaar geleden ofzo geschreven, en toen waren mijn programmeervaardigheden nog niet zo ver ontwikkeld als wat ze nu zijn.

Ik maak voor de Editor nu gebruik van de "Fast Coloured Text Box" : https://www.codeproject.com/Articles/1 ... x4940622xx
Waarmee het vrij eenvoudig is om een Syntaxmarkering te ontwerpen voor de taal van je keuze.. al is het een zelfbedachte taal, of een bestaande taal met een bepaalde Syntaxis, zoals ik met EdingCNC doe.
EdingEditor.jpg
die FastColouredTextBox is een krachtig tooltje.. als je op een regel staat, en je drukt ALT in.. kun je met de Cursortoetsen die regel verplaatsen.. hetzelfde geldt voor een blok geselecteerde regels.. Met Ctrl-Scrollwiel kun je in en uitzoomen.. (het up-downvenstertje rechts vergroot of verkleint de regelafstand. CTRL-Z werkt ook..

Dus.. Ja.. ik denk er wel over na om hiermee een EdingCNC versie te maken, maar dan wel met een afgeschermde Macro.. want ik moet het natuurlijk niet hebben dat al die code "zomaar op straat komt te liggen" als in dit land zelfs al de Persoonlijke Mailadressen van Politici openbaar worden gemaakt..🤣

Kars-cnc schreef: 08 apr 2022 13:09 Tool nose radius correction (G41, G42) zit gewoon in Eding.
Ja.. het zit erin.. maar het werkt (in elk geval in Freesmodus) nog niet compleet.. als je lijnstukken hebt met cirkelbogen die niet tangentiaal aansluiten, dan gaat het mis.. daar moet Bert nog eens naar kijken.. maar gewone contouren met rechte lijnen en tangentiale bogen gaat prima.
(nu weet ik ook wel dat het berekenen van een Equidistante baanovergang tussen een rechte lijn en een niet tangentiale boog niet makkelijk is.. en hetzelfde geldt ook voor 2 bogen die niet tangentiaal zijn..
Voor rechte lijnen met hoeken is het nog te behappen.. da's niet meer dan Cosinus van de halve hoek *Toolradius, en die tel je erbij op bij een buitenhoek, en trek je ervanaf bij een binnenhoek..
Dat soort grappen heb ik zelf genoeg uitgehaald bij het programmeren van werkstukken met hoeken in het X-Z en Y-Z vlak.. die programmeerde ik ook gewoon aan de machine.. da's niet heel spannend..
Je hebt niet voldoende permissies om de bijlagen van dit bericht te bekijken.
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13479
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: C# Vraagje

Bericht door Arie Kabaalstra »

we blijven leren.. :lol:

Ik zat me daar een partij te tobben met de cycli.. want.. als je een langsdraai of vlakdraaicyclus programmeert.. dan MOET je een X, Z en F opgeven, maar de D3 (snedediepte) is optioneel, alsmede nog wat andere parameters die ik er nog niet in gezet heb..

dan controleer je dus of die velden zijn ingevuld.. om de lengte van de array te laten kloppen met het aantal velden heb ik bedacht dat ik gewoon een "*" in de Array zet als ik niets heb ingevuld in de dialoog.. dat werkt..

want met IF(field!="*") invullen else eruit stappen..

en daar.. zat em de kneep.. hoe stap je netjes uit een Suboutine?.. met return; maar daar kwam ik vanmorgen na een paar dagen tobben pas achter.. ik moet toch vaker Google raadplegen..

Dat deel heb ik dus nu voor elkaar.. ik kan een langs of vlakdraaicyclus invullen in de dialoog.. laat ik x en/of Z, danwel F weg.. dan zet ie niets neer.. laat ik alleen D3 achterwege.. dan vult ie em keurig in, en gooit ie de juiste code in het programma.. Mooi.. nu de andere Canned Cycles nog even schrijven, maar de structuur en de werking zijn nu duidelijk.. dus daar hoef ik allemaal niet meer over na te denken.. gewoon een kwestie van de subroutines inkloppen, en em op de juiste punten eruit laten springen als ik de "Verplichte" parameters oversla..'t kan zo simpel zijn...
hfjbuis
Donateur
Berichten: 3074
Lid geworden op: 13 feb 2017 00:26
Locatie: Hoensbroek

Re: C# Vraagje

Bericht door hfjbuis »

Arie Kabaalstra schreef: 13 apr 2022 23:52 dan controleer je dus of die velden zijn ingevuld.. om de lengte van de array te laten kloppen met het aantal velden heb ik bedacht dat ik gewoon een "*" in de Array zet als ik niets heb ingevuld in de dialoog.. dat werkt..
Je kunt in de property ook een "place holder text" opgeven. Dat is de text, licht grijs, die getoond wordt als niet is ingevuld. Daar kun je als "place holder text" Feed is optioneel" in zetten.
Arie Kabaalstra schreef: 13 apr 2022 23:52 want met IF(field!="*") invullen else eruit stappen..
Testen op een leeg veld kan ook met IF(field!="") of IF(Field=="")
There are only 2 limits, the sky and your imagination
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13479
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: C# Vraagje

Bericht door Arie Kabaalstra »

hfjbuis schreef: 14 apr 2022 00:12 Arie Kabaalstra schreef: ↑13 apr 2022 22:52
want met IF(field!="*") invullen else eruit stappen..
Testen op een leeg veld kan ook met IF(field!="") of IF(Field=="")
Ja.. als je Array ook lege velden bevat.. maar hoe krijg je een stukje niets in een Array?.. daar kwam ik dus niet uit.. Ik ga met een For-Each door de DataGridView heen, en gooi de inhoud van de cel in een String, met een komma als scheidingsteken.. met Split peuter ik de komma's er later wel weer uit als ik de G-Code regel ga opmaken..

en opzich maakt het dan niet heel veel uit of je er nou een "niets" inzet, of een "*"..
Met return; heb ik in elk geval datgene wat ik wilde.. als ie een noodzakelijke waarde niet heeft.. wist ie de huidige regel, en de inhoud van de array, en Returned ie.. Stom dat ik daar niet eerder aan dacht.. want.. 37 jaar geleden (kinderen luistert.. Opa vertelt :lol: ) deed ik het op mijn Commodore C16 computertje niet anders.. je deed een controle van parameters.. Ok.. Gosub volgende sub, else return..
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13479
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: C# Vraagje

Bericht door Arie Kabaalstra »

Nieuw project, nieuwe probl... uitdagingen.

Ik ben bezig met een progje om G-Code bestandjes om te zetten van X-Y naar X-A om op cilinders te graveren.
Waarom zou ik dat willen?.. welnu.. de functie in CAMBAM is Kødt, en de functie in EdingCNC is zo mogelijk nog erger.. als ik er naar kijk.. dan is dat met een blik als van een aap in een roestig horloge..

En.. Laten we eerlijk zijn, Wat stelt het nou helemaal voor?.. geen ruk eigenlijk.. je maakt een CNC bestandje aan met de gravure op de Y-as, Z Hoogte = Radius van het onderdeel, Dat is in Cambam met een paar muisklikken en wat waardes wel ingesteld.. dat stelt niets voor..
Maar dan.. dan moet je feitelijk gewoon de Y veranderen in A, en de Coordinaten van millimeters omzetten in Graden.. en dat is een simpel rekensommetje..

We kennen immers de diameter, dus rekenen we de omtrek uit, en dan delen we 360 door die omtrek.. dan krijgen we een vermenigvuldigingsfactor (als de omtrek 360mm is, dan is 1mm gelijk aan 1°.. hoe moeilijk kan het zijn?

'k ben dus momenteel bezig met een klein progje.. Venstertje met 2 textboxen, een Loadbutton, en een textboxje waar je de diameter van het onderdeel invult.. Daaronder staan 2 labels (omdat je die niet kan editen), waarin vervolgens (on textbox_Changed) de omtrek en het aantal °/mm in verschijnt.. puur ter indicatie, Daar weer naast een Button met de tekst "Wrap Code Y-A", en een Save Converted File button.
Dus.. je gaat van links naar rechts.. Bestandje laden, diameter ingeven.. converteren, opslaan..meer dan dat is het niet, was het niet, en zal het ook nooit worden..

Maar.. de uitdaging zit em in het eruit peuteren van de Y-Waarden, en die dan vermenigvuldigen met de factor °/mm.. want meer dan dat moet het niet zijn..

Hoe ga ik dat doen?..

Code: Selecteer alles

 
 if (lines[i].Contains("Y"))
                    {
                        lines[i] = lines[i].Replace('Y', 'A');
                    }
Die heb ik al.. maar dan moet ik ook nog even de cijfertjes achter de Y eruit peuteren, en die waarde omrekenen, en em dan terugmeppen in de string na de A

Dus.. hoe maak ik van

Code: Selecteer alles

G00 X1.1111 Y0.0931
Dit

Code: Selecteer alles

G00 X1.1111 Y0.4184
de Omrekenfactor heeft een dikke rij getallen achter de komma, maar ik wil de afronding pas na de berekening doen (de Cirkelbogen haal ik er in CamBam uit, die maakt er polylines van.

Dus.. als ik de getalwaarde eruit heb, wil ik em vermenigvuldigen, en dan afronden op 4 decimalen.. meer dan dat heb ik niet nodig..
hfjbuis
Donateur
Berichten: 3074
Lid geworden op: 13 feb 2017 00:26
Locatie: Hoensbroek

Re: C# Vraagje

Bericht door hfjbuis »

Ik zou dat in C# met regex doen. De regel opsplitsen in 4 stukken en daarna weer aan elkaar plakken.
- stuk voor de Y
- de Y
- het getal
- stuk na het getal

Ik frees (graveer) op de draaibank ook dials en converteer van mm naar °. Je moet niet vergeten dat je de snelheid ook aan past. Maar misschien hoeft dat bij jou niet, ik heb een grbl controller die kent geen A, alleen maar X,Y,Z
There are only 2 limits, the sky and your imagination
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13479
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: C# Vraagje

Bericht door Arie Kabaalstra »

hfjbuis schreef: 01 jun 2022 15:07 Ik zou dat in C# met regex doen. De regel opsplitsen in 4 stukken en daarna weer aan elkaar plakken.
- stuk voor de Y
- de Y
- het getal
- stuk na het getal
Ja.. dat klinkt logisch.. alleen Regex..Damn.. eh... ik ga wel wat proberen (te vinden op het net) :lol:
Gebruikersavatar
hugo stoutjesdijk
Donateur
Berichten: 12041
Lid geworden op: 02 mar 2011 17:04
Locatie: elst (u)
Contacteer:

Re: C# Vraagje

Bericht door hugo stoutjesdijk »

Wat ga je met de cirkels doen.
Besturingen begrijpen over het algemeen niet een G2 X10 A20 R5 (in ieder geval geen I en ?)
Heeft eding geen schaalfactor per as,
hoef je die Y alleen in A te veranderen en een schaalfaktor er voor te zetten.

Ik zou gewoon een 2e setup maken van de eding software en de Y pylsen naar de A motor sturen en in de setup die puls/mm per cilinder diameter even aanpassen.
Dan blijft het gewoon een XY programma en kun je cirkels ook gewoon met XYIJ doen.
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
Plaats reactie