Organizátoři konference LinuxDays ukončil veřejné přihlašování přednášek. Teď je na vás, abyste vybrali nejlepší témata pro letošní ročník. Hlasovat můžete do pondělí 7. září, poté bude podle výsledků hlasování sestaven program pro letošní ročník.
Servo, engine webového prohlížeče napsaný v Rustu, byl vydán ve verzi 0.5.0. Novinky shrnuje přehled projektu za červenec. Došlo k dalšímu pokroku ve vykreslování webových stránek. Současným cílem projektu je vytvořit komponentu webového prohlížeče jako WebView pro použití v jiných aplikacích.
IKEA a XBOX představují kolekci YXSTABY (pdf). Ta přináší designová a praktická řešení, díky nimž se prostor pro hraní během sekundy promění v útulný a harmonický domov.
Jonathan Thomas oznámil vydání verze 4.0 nelineární střižny OpenShot. Nově podporuje nahrávání obrazu a zvuku, vylepšuje uživatelské rozhraní, mj. color grading, přidává další efekty a mnoho dalšího (seznam změn).
Proběhlo hlasování o používání LLM při vývoji Debianu. Vývojáři Debianu si odhlasovali zodpovědné využívání generativní umělé inteligence.
Sovereign Tech Agency (Wikipedie) prostřednictvím svého fondu Sovereign Tech Fund podpoří vývoj Flatpaku částkou 508 640 eur.
Byla vydána první veřejná verze v7.0-mk2 projektu Multikernel (mklinux), který umožňuje spouštět více nezávislých linuxových jader současně na jednom stroji bez hypervizoru.
Heureka Group uspěla v soudním sporu se společností Google. Městský soud v Praze vydal rozhodnutí v oblasti soukromoprávního vymáhání soutěžního práva. Společnosti Heureka Group přiznal náhradu ušlého zisku ve výši 250 milionů korun, což spolu s úroky z prodlení a náhradou nákladů řízení činí více jak 410 milionů korun. Základem celého sporu bylo protisoutěžní jednání technologického giganta Google v letech 2013 až 2017. Google na
… více »Dnešním dnem končí LTS podpora Debianu 11 s kódovým názvem Bullseye. K dispozici je Extended LTS podpora.
Firma X zaslala předžalobní výzvu vývojáři projektu Nitter (Wikipedia), open-source alternativního frontendu k sociální síti X (ex-Twitter), a provozovatelům instancí jako XCancel, které umožňovaly číst příspěvky bez přihlášení, reklam a javascriptu. Údajně se dopouštějí „sběru dat“. Zdrojový kód Nitteru vývojář archivoval. Vývoj již dříve přerušil v roce 2024 po tehdejším omezení API X. X je dceřiná společnost SpaceXAI Elona Muska, provozující mj. kontroverzního chatbota Grok.
-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:
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: ....
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.
* Routing commands are similar to Gerber polygons
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
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.
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
#!/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
# 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
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
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.
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.
Sám se divím, že ses v tom vyznal.
Tiskni
Sdílej: