abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 20:55 | Nová verze

    Homebrew (Wikipedie), správce balíčků pro macOS a od verze 2.0.0 také pro Linux, byl vydán ve verzi 4.5.0. Na stránce Homebrew Formulae lze procházet seznamem balíčků. K dispozici jsou také různé statistiky.

    Ladislav Hagara | Komentářů: 0
    včera 16:22 | Nová verze

    Byl vydán Mozilla Firefox 138.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 138 je již k dispozici také na Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 0
    včera 15:55 | Pozvánky

    Šestnáctý ročník ne-konference jOpenSpace se koná 3. – 5. října 2025 v Hotelu Antoň v Telči. Pro účast je potřeba vyplnit registrační formulář. Ne-konference neznamená, že se organizátorům nechce připravovat program, ale naopak dává prostor všem pozvaným, aby si program sami složili z toho nejzajímavějšího, čím se v poslední době zabývají nebo co je oslovilo. Obsah, který vytvářejí všichni účastníci, se skládá z desetiminutových

    … více »
    Zdenek H. | Komentářů: 1
    včera 15:44 | IT novinky Ladislav Hagara | Komentářů: 2
    včera 13:55 | Komunita

    Richard Stallman přednáší ve středu 7. května od 16:30 na Technické univerzitě v Liberci o vlivu technologií na svobodu. Přednáška je určená jak odborné tak laické veřejnosti.

    Ladislav Hagara | Komentářů: 8
    28.4. 23:33 | Nová verze

    Jean-Baptiste Mardelle se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 25.04.0 editoru videa Kdenlive (Wikipedie). Ke stažení také na Flathubu.

    Ladislav Hagara | Komentářů: 0
    28.4. 17:22 | Zajímavý projekt

    TmuxAI (GitHub) je AI asistent pro práci v terminálu. Vyžaduje účet na OpenRouter.

    Ladislav Hagara | Komentářů: 0
    28.4. 17:00 | Nová verze

    Byla vydána nová verze R14.1.4 desktopového prostředí Trinity Desktop Environment (TDE, fork KDE 3.5, Wikipedie). Přehled novinek i s náhledy v poznámkách k vydání. Podrobný přehled v Changelogu.

    Ladislav Hagara | Komentářů: 5
    27.4. 21:33 | Nová verze Ladislav Hagara | Komentářů: 0
    26.4. 23:00 | Komunita

    V Tiraně proběhl letošní Linux App Summit (LAS) (Mastodon). Zatím nesestříhané videozáznamy přednášek jsou k dispozici na YouTube.

    Ladislav Hagara | Komentářů: 0
    Jaký filesystém primárně používáte?
     (58%)
     (1%)
     (9%)
     (21%)
     (4%)
     (1%)
     (2%)
     (0%)
     (1%)
     (3%)
    Celkem 480 hlasů
     Komentářů: 18, poslední 17.4. 12:41
    Rozcestník
    Štítky: není přiřazen žádný štítek

    Dotaz: Doplnění funkce programu

    pdp7 avatar 20.11.2024 08:42 pdp7 | skóre: 33 | blog: Mravenec_v_LCD_monitoru | Zákupy u České lípy
    Doplnění funkce programu
    Přečteno: 1547×
    Příloha:
    Ahoj, mám tu prográmek ncdr2cnc, který převádí vrtací data ve formátu Excellon do Gcode. To by mohlo i tak zůstat. Potřeboval bych tam doplnit funkcionalitu, která by to rozšiřovala o frézování např. přepínačem -mill Ručně jsem vytvořil nějaký příklad jak by měl vypadat výstup z programu. Soubory TAP. Ve zdrojovém frézovacím excellon souboru *.rou jsou kódy M15, M16 které reprezentují pohyb vřetene v ose Z dolu a nahoru.

    M15 pro pohyb dolu, by mohlo by mohlo být analogicky jako -zdrill pro vrtání určováno volbou -zmill. V příkladu je -2. Toto musí být v rámci normálního frézování G01 s určenou pojezdovou rychlostí.

    M16 vřeteno nahoru zase nastavitelné nějakou volbou -zup. V příkladu je 5. Toto může být už v rámci rychloposuvu.

    Nevím nakolik je to proveditelné v tom programu vzhledem k tomu jak je postavený (já to bohužel neumím ani přečíst, špatně jsem se učil). Pokud by se tu našel někdo kdo umí a zároveň se aspoň trochu vyzná v G kódech, je to uplně nejlepší možná varianta. Já jsem rád za to, že jsem vůbec sesmolil tenhle dotaz.

    Odkaz na zdroják programu https://sourceforge.net/p/ncdr2cnc/code/HEAD/tree/ je tam i zkompilovaný exáč.

    Přikládám příklady vstupů a výstupů v zipu.

    Řešení dotazu:


    Odpovědi

    20.11.2024 11:27 X
    Rozbalit Rozbalit vše Re: Doplnění funkce programu
    Asi bych se netrapil strukturama v C++ a podobne jako v dlr2gcode bych to proste vyparal radek po radku a provedl konverzi. Je potreba si nastudovat vstupni i vystupni format. Pohyb mezi M15 a M16 prevest na G01 etc.
    pdp7 avatar 21.11.2024 14:42 pdp7 | skóre: 33 | blog: Mravenec_v_LCD_monitoru | Zákupy u České lípy
    Rozbalit Rozbalit vše Re: Doplnění funkce programu
    Načítání vstupu je na řádcích 45-55 a zápis výstupu je 57-63?
    21.11.2024 18:08 X
    Rozbalit Rozbalit vše Re: Doplnění funkce programu
    Cte se radek po radku:
    with open(args.drlfile[0]) as fp:
       line = fp.readline()
       while line:
         ....
    
    Nasypou se nastroje(tnum):
    if line.startswith("T") and "C" in line:
     ....
    
    Vybere se nastroj(tsel): ....
    elif line.startswith("T"):
    ....
    
    Prevod vrtani:
    elif line.startswith("X") and tsel != "0":
    
    Zapis:
    for t in tools:
    ....
    
    pdp7 avatar 21.11.2024 18:31 pdp7 | skóre: 33 | blog: Mravenec_v_LCD_monitoru | Zákupy u České lípy
    Rozbalit Rozbalit vše Re: Doplnění funkce programu
    Ten převod vrtání, jestli to chápu správně: vždycky očekává, že řádek bude začínat X. Jenže když tam napíšu G00 a do uvozovek 3 aby bral jakože 4 znak, tak mi zas vypíše problém s řádkem newl2. Programovat já neuměti. A už vůbec nevím jak bych si v kódu měl počínat pokud řádek bude začínat jakkoliv jinak, ale bude v něm směrodatná informace. Jsem jako ten Vyhlídka když radil Andělovi garde, radit uměl ale hrát ne.
    21.11.2024 19:16 X
    Rozbalit Rozbalit vše Re: Doplnění funkce programu
    FlatCAM. Cituji:
    You can open Gerber, Excellon or G-code, edit it or create from scatch, and output G-Code. 
    Tohle bude pro tebe idealni a bez programovani. Bezi to na Linuxu, ale to asi chapes. Na widlich WSL.
    pdp7 avatar 21.11.2024 20:32 pdp7 | skóre: 33 | blog: Mravenec_v_LCD_monitoru | Zákupy u České lípy
    Rozbalit Rozbalit vše Re: Doplnění funkce programu
    To chápu. Zkusil jsem už více věcí včetně FlatCamu a zrovna tak jako ty ostatní neumí zacházet s excellonem v režimu frézování (routing), jen vrtání. Specifikaci má na stránkách firma Ucamco, ale z nějakého důvodu to zřejmně nikdo nepožaduje, protože kdo vyrábí profi plošňáky tak má specializované železo. Bastliči si vystačí s ULP pcb2gcode udělátkem do Eagle. Já dělám v práci panelizaci v softu kde je výstupem ten excellon jak na díry tak drážky a tam končím. Určitým řešením pro mě je, prostě vykálet se tu funkci exportu cest nástroje, exportovat prostě outlajny modulů v DXF a toto zpracovat v nějakém Vectric (na normální frézu co firmě plánujeme) a dělat routepath, můstky a tyhle voloviny v tom. Jako cesta to je, ale připadá mi teda fest debilní.
    pdp7 avatar 21.11.2024 20:39 pdp7 | skóre: 33 | blog: Mravenec_v_LCD_monitoru | Zákupy u České lípy
    Rozbalit Rozbalit vše Re: Doplnění funkce programu
    Chcete li se zasmát, dodavatel té frézy nám nabídl (ve spolupráci s nějakou další programátorskou firmou), že je schopný nějaký takový převodník udělat za 110 prutů :D
    21.11.2024 21:41 X
    Rozbalit Rozbalit vše Re: Doplnění funkce programu
    Jestli na to mas nejaky rozpocet tak si to nech proste nakodovat. Jako brigada pro VS studenta techniky je to uplne pohodove.
    22.11.2024 21:15 X
    Rozbalit Rozbalit vše Re: Doplnění funkce programu
    KiCad jsi zkousel? Protoze podle zdrojaku umi mill i routing do Gerberu..
    * Routing commands are similar to Gerber polygons
    pdp7 avatar 2.12.2024 12:50 pdp7 | skóre: 33 | blog: Mravenec_v_LCD_monitoru | Zákupy u České lípy
    Rozbalit Rozbalit vše Re: Doplnění funkce programu
    Zkusím to jinak
    elif line.startswith("X") and tsel != "0":
             newl1 = "".join(["G1 F", str(args.z_move_speed), " Z", str(args.safe_height)])
             newl2 = "".join(["G1 F", str(args.xy_move_speed), " ", line.split("Y")[0], " Y", line.split("Y")[1].strip("\r\n")])
    
    Jak mám Pythonu říct, aby bral na vstupu i řádky začínající nejen X, ale i G01? Prostě potřebuji aby je opsal, v tomto stavu jen vypíše chybu
    Traceback (most recent call last):
      File "C:\Users\cerny\Documents\Elektro Modus\frezovani\CAMOutputs\vylezlo z fabu\drl2gcode.py", line 61, in module
        newl2 = "".join(["G1 F", str(args.xy_move_speed), " ", line.split("Y")[0], " Y", line.split("Y")[1].strip("\r\n")])
                                                                                         ~~~~~~~~~~~~~~~^^^
    IndexError: list index out of range
    2.12.2024 15:59 X
    Rozbalit Rozbalit vše Re: Doplnění funkce programu
    Vrtani je "jednorazova" operace je mozne ji zpracovavat sekvencne, ale routing je operace, ktera vyzaduje sekvenci kroku => je potreba se pri parsovani kodu koukat dopredu i dazdu. Tedy, pokud detekujes na radku zmenu z vrtani na routing G00/G11 bude nasledovat samostatna smycka, ktera detekuje zacatek, pohyb vrtaku a konec.

    Ten soubor se zpracovava radek po radku a program nevi co bude nasledovat, to je potreba osetrit:
    G00X-1Y11.9007 <- Prepnuti na routing a vychozi pozice.
    G40
    M15
    G01Y0 <- linearni pohyb
    M16
    G40
    G00X19.3493Y-1 <- Routing koncova pozice.
    
    Pseudoodem:
    if 'G00' in line:# ROUTING ZACATEK
       while line:
          line = f.readline()
          ..... <- zpracovani pohybu
          if 'G00' in line: ROUTING KONEC
             ....
             break
    
    Snad jsem to pochopil dobre.
    pdp7 avatar 2.12.2024 17:15 pdp7 | skóre: 33 | blog: Mravenec_v_LCD_monitoru | Zákupy u České lípy
    Rozbalit Rozbalit vše Re: Doplnění funkce programu
    Díky tohle jsem potřeboval, sice jsem už přišel na to jak volbě startwith přiřadit více možných hodnot, nicméně nefunguje to jak by bylo třeba jak správně píšeš.
    pdp7 avatar 10.12.2024 11:26 pdp7 | skóre: 33 | blog: Mravenec_v_LCD_monitoru | Zákupy u České lípy
    Rozbalit Rozbalit vše Re: Doplnění funkce programu
    Ahoj, spatlal jsem zatím toto:
    with open("Layer_5.rou") as f:
      line = f.readline()
      while line:
          line = f.readline()
          if 'G00' in line:# ROUTING ZACATEK
             print(line)
          if 'G00' in line: #ROUTING KONEC
             break
    f.close()
    ovšem to vypíše jen první řádku kde se vyskytuje G00 a tam to taky skončí. Potřebuji aby jel do dalšího G00. Může tam být další ROUTING ZACATEK po rychloposuvu a další práce vřetene. Učit se toto v 39 je tedy brutus :D
    10.12.2024 12:35 X
    Rozbalit Rozbalit vše Re: Doplnění funkce programu
    V pohode, cenim snahu. Pokusil jsem se to trochu zjednodusit:
    #!/usr/bin/python3
    
    with open('frezovani.rou') as f:
      for line in f:
        if 'G00' in line:
          print("[*] Routing start")
          print(line.strip())
          for line in f: 
            print(line.strip())
            if 'G00' in line:
              print("[*] Routing end\n")
              break
    
    11.12.2024 00:06 X
    Rozbalit Rozbalit vše Re: Doplnění funkce programu
    Kdyby jsi s tim chtel nejak vic pomoct, tak to vystav treba na Github nebo tak.
    pdp7 avatar 11.12.2024 08:06 pdp7 | skóre: 33 | blog: Mravenec_v_LCD_monitoru | Zákupy u České lípy
    Rozbalit Rozbalit vše Re: Doplnění funkce programu
    Už tohle je velká pomoc. Budu sledovat nějaká videa a biflit se, dám tomu nějaký čas a třeba vypotím něco lepšího. Každopádně dík ;-)
    pdp7 avatar 12.12.2024 14:07 pdp7 | skóre: 33 | blog: Mravenec_v_LCD_monitoru | Zákupy u České lípy
    Rozbalit Rozbalit vše Re: Doplnění funkce programu
    Nějak jsem postoupil. Zjistil jsem, že to s for cyklem nechodí uplně jak potřebuji, špatně jsem si to vyložil. Napsal jsem tohle, sice je to zatím bez zápisu nástroje, nějak to šlape, akorát to má jednu vadu:
    # definice promennych
    
    otacky = 25000
    feedrate = "F300"
    #milldepth = "Z-2"
    safeZ = "40"
    moveZ = "Z5"
    
    hlavicka = """; Generovano v routexc2gcode.py
    
    ; Absolutni koordinaty
    G90
    ; Metricke
    G21
    ; Spust vreteno
    M3 S"""+str(otacky)+"""
    """
    
    paticka = """
    ; zastav vreteno
    M5
    ; vyjeti vretene a konec frezovani
    G00 Z"""+str(safeZ)+"""
    ; konec programu
    M2
    """
    
    # zapis hlavicky
    print(hlavicka)
    
    # pohyb vretene
    
    with open('Layer_5.rou') as f:
      line = f.readline()
      while line:
        line = f.readline()
        if line.startswith("G00"):
          print(line.strip())
        if line.startswith("G01"):
          print(line.strip(), milldepth, feedrate)
        if line.startswith(("X","Y")):
          print(line.strip())
        if line.startswith("M15"):
          #print(milldepth, "; Vreteno dolu")
          milldepth = "Z-2"
        if line.startswith("M16"):
          print(moveZ, "; Vreteno nahoru")
        #if line.startswith("G40"):
        #  print(line.strip())
        if line.startswith("M30"):
          break
    
    # zapis paticky
    print(paticka)
    Potřebuji aby řádky začínající G00 vypsal a současně zkopíroval s těmi stejnými souřadnicemi na nový řádek jako G01 následujíc proměnné milldepth a feedrate. Řádky začínající G01 normálně vypsat, ale už bez těch milldepth a feedrate. Vpodstatě na těch kopiích by to G01 už ani nemuselo být, protože už je definovaná.
    Příklad vstupu:
    G00X10Y10
    M15
    G01X20Y20
    
    Příklad výstupu:
    G00X10Y10
    G01X10Y10 Z-2 F300
    X20Y20
    pdp7 avatar 12.12.2024 16:31 pdp7 | skóre: 33 | blog: Mravenec_v_LCD_monitoru | Zákupy u České lípy
    Rozbalit Rozbalit vše Re: Doplnění funkce programu
    Už to mám.
    12.12.2024 16:54 X
    Rozbalit Rozbalit vše Re: Doplnění funkce programu
    with open('frezovani.rou') as f:
      line = f.readline()
      while line:
        line = f.readline().strip()
        if line.startswith("G00"):
          print(line)
          print(line.replace('G00','G01'), milldepth, feedrate)
        if line.startswith("G01"): print(line)
        if line.startswith(("X","Y")): print(line)
        #if line.startswith("M15"): print(milldepth)
        if line.startswith("M16"): print(moveZ)
        if line.startswith("G40"): print(line)
        if line.startswith("M30"):
          break
    
    
    pdp7 avatar 13.12.2024 11:05 pdp7 | skóre: 33 | blog: Mravenec_v_LCD_monitoru | Zákupy u České lípy
    Rozbalit Rozbalit vše Re: Doplnění funkce programu
    Příloha:
    Jasně, šel jsem na to podobně. Doteď jsem printoval výstup jednotlivých ifů Co kdybych chtěl místo printování zapisovat do souboru? Zkoušel jsem třeba v tom prvním ifu pro G00 udělat proměnnou
    rychloposuvy = line.strip()
    ...
    with open("soubor.nc", "w") as uloz:
       uloz.write(rychloposuvy)
    ale samozřemně to tu proměnnou mění řádek po řádku a v soubor.nc je pak jenom poslední řádek s G00. Jdu na to blbě, to je jasný, ale já nevím co mám dělat :D Jinak vyprintovaný výstup do konsole je teď uplně OK.

    13.12.2024 13:35 X
    Rozbalit Rozbalit vše Re: Doplnění funkce programu
    Na zacatku si otevres vystupni soubor:
    out = open('vystup.gcode','w')
    
    v prubehu smycky do nej budes postupne zapisovat:
    while
      ...
      if ...
        out.write(line)
    
    a nakonec ho korektne uzavres.
    out.close()
    
    Druha moznost, je vystpu nekam docasne odkladat(treba do slovniku, jako v puvodnim kodu) a pak to slepit a ulozit.
    Řešení 1× (pdp7 (tazatel))
    pdp7 avatar 18.12.2024 13:34 pdp7 | skóre: 33 | blog: Mravenec_v_LCD_monitoru | Zákupy u České lípy
    Rozbalit Rozbalit vše Re: Doplnění funkce programu
    Příloha:
    Mám výtvor hotový. Vyřešeno.
    18.12.2024 15:49 X
    Rozbalit Rozbalit vše Re: Doplnění funkce programu
    Super. Muzu to vystavit na Gitu pro "dalsi generace"? Detaily bych zaslal na email.
    pdp7 avatar 18.12.2024 19:06 pdp7 | skóre: 33 | blog: Mravenec_v_LCD_monitoru | Zákupy u České lípy
    Rozbalit Rozbalit vše Re: Doplnění funkce programu
    Klidně, já s tím Githubem vůbec neumím a angličtina taky není moje silná stránka.
    pdp7 avatar 19.2. 15:21 pdp7 | skóre: 33 | blog: Mravenec_v_LCD_monitoru | Zákupy u České lípy
    Rozbalit Rozbalit vše Re: Doplnění funkce programu
    Příloha:
    Ahoj, nějak jsem zase pokročil ve svém výblitku a chtěl bych do toho zakomponovat možnost pokračování na enter nebo esc na vyskočení. Našel jsem si toto , ale nevím kam to vecpat. Když vložím cyklus while True za ty definice proměnných a odsadím to tělo zpracování souboru tak mi ho to opakuje furt dokola. Pak je ve výsledku i nějak blbě odsazená ta hlavička v Gcodu, taky nevím proč. Poradíte?
    pdp7 avatar 20.2. 09:03 pdp7 | skóre: 33 | blog: Mravenec_v_LCD_monitoru | Zákupy u České lípy
    Rozbalit Rozbalit vše Re: Doplnění funkce programu
    Udělal jsem to takhle, akorát mě drtí, že po odentrování a dokončení vytvoření výstupního souboru se objeví 2 prompty. Jakoby to samo mačkalo enter :-D
    pdp7 avatar 20.2. 09:05 pdp7 | skóre: 33 | blog: Mravenec_v_LCD_monitoru | Zákupy u České lípy
    Rozbalit Rozbalit vše Re: Doplnění funkce programu
    Příloha:
    Kód zde.
    20.2. 11:11 X
    Rozbalit Rozbalit vše Re: Doplnění funkce programu
    Myslim, ze na to jdes moc slozite. Upravil jsem a aktualizoval tvuj kod na Gitu. Koukni na to jestli to takto vyhovuje. Poznamky: a] Nekonecna smycka zere CPU a je to potreba osetrit, nebo se tomu radeji vyhnout. b] Detekce [esc], [enter], neni zrovna jednoducha, takze jsem to trochu zjednodusil. c] Obecne bych ten zacatek a inicializaci vstupnich hodnot a vubec parametry programu resil modulem 'argparse'. Koukni na to(neni to ze zacatku uplne snadne, ale da to programu nejakou standardizovanou formu a jako bonus to lze poustet s parametry prikazove radky. ie. program.py --cesta xxx -- cesta xxc etc.). Posilam mail.
    pdp7 avatar 20.2. 12:08 pdp7 | skóre: 33 | blog: Mravenec_v_LCD_monitoru | Zákupy u České lípy
    Rozbalit Rozbalit vše Re: Doplnění funkce programu
    Ano takto vyhovuje. Po tvé úpravě to vypadá jako program a né jako hromada šrotu co taky vykazuje nějakou činnost :-D Sám se divím, že ses v tom vyznal.
    20.2. 12:27 X
    Rozbalit Rozbalit vše Re: Doplnění funkce programu
    lol ;D Pohoda. Jenom jsem to trochu ucesal.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.