开源改变世界!!

新界面 #75

推推 grbl 2年前 (2023-01-31) 226次浏览
关闭
vlachoudis 打开了这个问题 2015 年 6 月 22 日 · 54条评论
关闭

新界面#75

vlachoudis 打开了这个问题 2015 年 6 月 22 日 · 54条评论

注释

新界面 #75
所有者

当我开始编写 bCNC 时,我想快速完成一些事情来满足我作为 GUI 的需求。我不想开发一个 GUI 只是为了处理它,而是将其用作工具。所以一些决定,例如菜单、功能布局等,很快就完成了,没有想太多。现在因为有几个人在积极使用它,我认真地考虑以更好的方式重写界面。
我想解决/解决的问题是:

  • 从 gui 中分离功能。
  • 以一种很好的方式集成函数/宏特性
  • 菜单、工具栏、按钮和快捷方式中的许多功能都是重复的
  • 菜单“很难”使用隐藏一些功能
  • 更容易看到各种功能
  • 更简单的界面和更有逻辑的组织
  • 可在一定程度上自定义(字体、快捷方式、最喜欢的操作…)
  • 更好的图标 :)
    限制:
  • 我想坚持使用 tkinter,它作为工具包有点旧,不提供其他 tks 的强大功能,但使用起来非常简单:)
  • 我不想花太多时间开发它。
  • 让 RPi 保持简单

如果你想看一下,我在 eval 分支中有一个非常非常原始的版本。您可以使用 bCNC2.py 启动程序。有点像MS office的丝带风格。在投入更多时间之前,我想听听您的意见赞成/反对意见。
我有一些互动@effer 和@chamnit
您甚至可以画出一些东西并将其发送过来。

我的新方法
新界面 #75

或者@effer提议
新界面 #75

瓦西利斯

新界面 #75

@vlachoudis:我认为首先要做的是定义这个新界面需要的最低分辨率。是 1280×768 吗?1024×768?1400×1050?1080p?有无数的选择,但这些通常受到最低公分母的限制。由于 bCNC 在最慢的机器上运行得非常好,我认为这应该是这个问题最终决定的很大一部分。

对我来说,它是 1024×768 或 1280×768。

新界面 #75
贡献者

@chamnit: 分辨率是一个很好的起点。我同意它应该低至 1024×768。
我还想记住首选的显示器比例(4:3 或 16:9)来选择放置大多数按钮的位置(顶部或侧面)。

但是好的@vlachoudis很好地使用了 tkinter 的可调整大小功能,所有 GUI 都适合各种分辨率。只有字体不能自动调整大小。

我相信就 cpu 功率而言,最消耗的小部件是主画布。添加一个选项来隐藏它,或者减少/优化刷新时间可以让 bCNC 在任何硬件上运行。

Tkinter 的主要问题(我开始欣赏它,因为它存在于大多数 python 安装中)是缺少硬件加速图形。特别是在 Rpi 中,它可能意味着性能的大幅提升。

新界面 #75

@effer:调整大小功能会导致一些问题,比如应该如何调整大小,即使应该有单独的大分辨率版本和小分辨率版本。例如,小分辨率无法完成您的布局建议,但大屏幕或宽屏幕可以。这是现代 GUI 框架真正有用的时候,因为缩放和模块化更容易处理此类问题。

1024×768 的唯一问题是它没有那么大的空间。我见过的大多数 Grbl GUI 通过创建一个选项卡式窗口来处理这个问题,比如@vlachoudis提出了。每个选项卡仅显示每个选项卡所需的 GUI 元素。例如,画布(可视化工具)并不是一直都需要的,Grbl 的运行状态也不是。工作区选项卡可以展开以包含整个窗口,因此您可以更灵活地设置工件坐标偏移数据或探测工具。

硬件加速图形会很好,但我已经看到很多其他 GUI 的问题,在不同的机器上由于某种原因兼容性被破坏。我见过的可视化工具的最佳实现是通过 Web 浏览器并用 JavaScript 编写的。他们将特定于操作系统的问题与普遍支持的浏览器框架分离(并可以访问现代 GUI 框架)。这个模型非常有效。有一些关于使用 bCNC 强大的后端和虚拟吊坠方法来提供基于浏览器的解决方案的离线讨论。在这里,我认为我们可以投资于图形。

对于 bCNC 和 tkinter,我只想看到一个简单的用户友好界面。没有什么过于复杂。无论如何,我会考虑每个选项卡式窗口真正需要什么,并希望勾勒出一些东西。

新界面 #75
所有者作者

@chamnit我的目标是获得最小的分辨率。当前版本的代码在垂直方向上有 690px 的限制,在水平方向上的限制较少。通过功能区重组,即使它占用了更多的垂直空间,它也为按钮释放了一些水平空间,因此它在垂直方向上需要的空间减少了 100px。

@effer3 列的建议很好,适合 16:9 的宽屏幕。在像我的 4:3 和 1024×768 分辨率的控制笔记本电脑这样的旧屏幕上会有点问题。

@effer还提到了同样的事情,有些小部件不需要像 DRO 一样一直打开,而且 MDI 占用太多空间。

大声思考,一个选项可能是有两列(因为它现在是控制面板+可视化工具)和顶部的功能区/工具栏,但是每列的内容由用户选择。例如
jog + wcs,或 jog + terminal,或 editor + visualizer,或 jog + visualizer 等,用户选择在哪一列显示信息。我唯一担心的是,为最终用户提供过多的自由会比让事情变得更简单更令人困惑。

@chamnit也许只有我一个人,但我的工作方式总是希望打开可视化工具。如果没有在可视化器上看到位置,我无法慢跑或探测

新界面 #75

我不太使用可视化工具。我主要在加载新的 gcode 时使用它来验证一切看起来是否正确。

新界面 #75

@vlachoudis: 伟大的。所以 1024×768(OS 窗口和栏的 690 vert)听起来像是目标。虽然它可以水平扩展到 16:9 的宽屏幕。

至于可视化工具,的确,您可能确实需要它来进行探测和慢跑等操作,但您不一定需要它来进行所有操作。也许两栏的想法是合适的,只允许其中一栏只有可视化工具和编辑器。虽然不确定。

我同意太多的可配置性确实会增加复杂性。我们可能不得不像 Apple 一样,决定用户将与一个僵化的、有限的界面进行交互的内容和方式。标签页的想法有助于这种类型的简化。可以将探测设置为带有可视化器的单独选项卡,而工作坐标偏移和其他参数可以是另一个没有它的选项卡。慢跑也可以是一个单独的选项卡。尽管在选项卡之间切换可能很烦人,但实际上仅在作业设置期间使用慢跑,有时在作业完成后使用。从不在工作期间。

我喜欢 Carbide3d 的 CarbideMotion Grbl GUI 的一件事是它们简化了如何运行机器的基本任务。它不像 bCNC 那样功能齐全,因此请对此评论持保留态度。用户首先看到的是两个大按钮。加载作业或点动机器。单击一个。慢跑窗口非常简单,旨在让您确定零件零或您的工作开始位置。您可以在那里设置工作坐标。加载作业只是加载 gcode 文件并运行它,而您有一些最小的进给保持控制。它向您显示运行状态、位置、运行速度和完成百分比。就是这样。如果需要,您可以打开一个单独的窗口显示终端输出,另一个窗口用于 MDI。我并不是说 bCNC 应该这么简单,但这是一个我发现没有噪音的例子。

新界面 #75

我相信人们可以在没有不必要的复杂性的情况下实现良好的可配置性,只需让事情变得直接和互动,并提供明显的状态和控制。

承租人,我们需要以下信息/部分:

  • 机器状态 — DRO, &c.
  • 直接用户控制 — 慢跑等。
  • 工作区
  • 预览
  • 终端
  • 工具
  • 编辑

我认为机器状态应该横跨机器的顶部,并且应该有一个分隔条允许用户确定它的大小—如果它们不合适,允许在合理的程度上重新安排,缩小(或放大)它们以适应可用空间。

所有其他事物都应该有多个状态,允许不同程度的交互,并且会排成一排,用户将能够确定每个区域的状态。

稍等一下,我看看我能画出什么。

新界面 #75

好吧,显然我是 Carbide 3D 漂亮的菱形控件排列的忠实粉丝(之前有人这样做过吗?看起来很明显……)

无论如何,请原谅 ASCII 艺术和快速绘制图形的混合。我想在折叠状态下,每个窗格都可以下降到只有图标。

新界面 #75

新界面 #75
贡献者

IMO 主要有三个使用条件:

  • 运行作业
  • 编辑零件程序
  • 配置bCNC

每个都需要一些其他不使用的小部件(除了用于工作和编辑的画布)。我们可以提供三个选项卡来切换到其中一种用途。然后在内部以更舒适的方式重新安排所有空间,并仅提供相关菜单。
功能区菜单很好,但往往会占用大量可用空间。
对不起,我这几天不能画任何东西。

新界面 #75
所有者作者

@WillAdams谢谢你的素描。您的建议是拥有多个可以对用户展开/隐藏的列?它可以提供用户想要的任何配置,代价是增加点击以启用和禁用窗格。关于菱形按钮在 tkinter 中不可用。所有对象都是矩形的,但可以像画布中的绘图一样手动完成。

我看到提案之间有一些相似之处@WillAdams@effer.

的确,现在的 bCNC 是两个程序合二为一,一个发送器和一个基本的 g 代码编辑器。这让两者都有一个共同的界面变得复杂。一种方法可能是对另一个程序隐藏一个程序的 gui 面板。

也许比界面更重要的是投资,因为它是由@chamnit 和@onekk 在不影响功能的情况下最小化小部件。例如,一旦设置了端口,您就不需要一直看到它们的波特率。也许其他小部件可以最小化,机器坐标?工作区设置坐标、探测、自动调平。提供具有相同功能的更少按钮。

新界面 #75

@vlachoudis:也许创建一个与任务类型交叉引用的可用功能网格会很有用。例如,g 代码发送任务需要文件加载、运行时控制、实时反馈、可视化工具(可能)等。另一个任务,如文件编辑,将以不同方式填充此网格。

这可能会在它变得更简单之前变得混乱,它有点已经有了,但这将是对时间的巨大投资,并且告诉我们很多关于“形式将遵循功能”的信息。

新界面 #75

是的,这正是我的想法。

同意功能和用法网格将是有用的东西——我会看看我能做什么。

新界面 #75
贡献者

所以终于我有一些空闲时间来草拟一些东西。
图片为 800×600,部分小部件丢失。
顶部按钮应适用于不同的工作场景,并仅提供相关控件。
我看最近这个话题真的很安静,有什么消息吗@vlachoudis

新界面 #75
新界面 #75
新界面 #75

新界面 #75

@effer: 这是一个非常好的布局建议。也非常接近我的想法。

@vlachoudis一直在等待我提供一些反馈,包括对 Grbl 未来的期望以及从研究 LinuxCNC、Mach3、其他 Grbl GUI 和 Haas 的状态中学到的东西。就在上周,我向他发送了一份包含一般概念和结构的提案大纲。基本上我的结论是没有灵丹妙药。最好的办法是尽可能地模块化,比如可视化模块或编辑器模块,并将模块特定的控件附加到每个模块。每个模块都可以放置在任何选项卡上的任何位置。这几乎就是你所做的@effer.

使用像这样的基于选项卡的模块方法,您将为每个用户/机器要求的自定义界面提供很大的回旋余地,这可能会截然不同。为此需要进行大量设置工作,但如果框架健全,这也将允许其他用户创建自己的模块并开始为 bCNC 项目做出贡献。

新界面 #75
贡献者

@chamnit:即使提出简单的重新设计样式,我也发现了许多不同的方法来最适合不同的工作需求。我同意最好的解决方案更多的是对一组不错的用户控件进行渐进式调整,这可能会花费很多时间。

很高兴听到工作仍在进行中,我们可以期待重大更新。我有点担心这种不寻常的(2 周)延迟通常经常更新@vlachoudis.

我正在等待新的插件系统准备就绪并继续为bCNC做出贡献

大家干得好。

新界面 #75
所有者作者

谢谢@effer,看起来很干净。在过去的几周里,我尝试重新组织一些内部结构,以便允许为每个选项卡激活/停用按钮组,并由用户在哪些选项卡中组织他喜欢的组。

但是由于实验工作量大,加上欧洲的热浪和我国的政治局势,我没有太多时间在bCNC上工作。

新界面 #75
所有者作者

一段时间以来,我一直在研究新界面。现在我很高兴地宣布 eval 分支包含一个“完全”可操作的新 bCNC 版本。除了界面上的许多变化外,它还根据您的评论和代码请求带来了许多新功能。

有一段时间我只使用新界面,除了一开始有点混乱,在不同的地方搜索命令,老实说,我发现它比以前更容易使用,控制机器和编辑 gcode版本。

如果您能在我将其推送到主分支之前进行测试以找到错误/问题并给我您的意见,我将不胜感激

代码:

界面:
我坚持使用功能区和两个页面,包括您评论中的一些想法。原因是转到编辑器或工具需要很多按钮,这意味着再次引入菜单栏或为各种按钮找到新位置。

好处是功能区和框架可以从 ini 文件中完全自定义,因此任何人都可以按照自己的喜好进行配置。有很多修改和改进。

简述一些改进变化:

  • 状态是一个按钮并给出了 grbl 错误消息的解释(它需要重新工作以变得更好并显示有问题的行)
  • WPos 可编辑以直接设置位置(减少输入字段的数量)
  • @onekk 添加一个单独的 z 尺度,如果在 ini 文件中设置 zstep 则可配置。默认情况下是禁用的。
  • 探针包含用于简单探针、带圆环的中心探测和自动调平的工具。
  • autolevel 可以在 XY 中显示颜色图,(仅当您安装了 numpy 和 PIL 时)。我会让它为 ISOx 工作(在未来)
  • 工具:引入宏插件机制(参见齿轮/盒子)
  • 各种配置现在位于工具中(将在单独的页面或文件页面中移动)
  • 编辑器我添加了一些用于 gcode 重组的函数。稍后我将介绍一种用于优化切割顺序(最小化快速距离移动)的遗传算法
  • 画布有自己的工具栏
  • 图标需要一些工作:)

目前的大小总是固定为 800×600 只是为了检查小屏幕。
在使用新版本之前,请复制/保存您的 .bCNC ini 文件

新界面 #75
所有者作者

大家好。
我想报告一下,eval 分支现在非常先进并且可以全面运行。
最新功能是“手动工具更改”(仍处于实验阶段但有效)
我试图在将其推送到主分支之前发现并纠正尽可能多的问题。

新界面 #75
所有者作者

大家好。

想报告一下,新界面全面运行,以后就是默认master了。

最新添加的是“手动工具更换”,效果很好。昨天我生产了一块 PCB,我使用手动工具更换来创建各种尺寸的孔,没有问题。

有许多添加和改进必须记录在 Wiki 页面中。

  • 单击机器的状态会提供扩展信息和最后一个有问题的错误行。
  • 自调匀整的 3D 色图
  • 功能评价
  • 更简单的 WCS 配置
  • 单击 WPos,您可以手动输入新位置(无需额外字段)
  • 运行期间进给倍率
  • .bCNC 文件中的功能区和左框架的用户自定义(查看当前配置的 bCNC.ini)
  • 字体/颜色用户可配置
  • 插入式机构(目前带有手指盒和一个简单的正齿轮发电机)
  • 通过过切改进剖面操作
  • 订购 gcode 以尽量减少快速移动

它需要一些额外的工作来完成界面和功能(类 bCNC 和 Sender)之间的分离,以允许如果有人希望只运行挂件而不启动界面。

当然,按钮的位置是我的第一次尝试,因为我已经重新编写了整个代码,现在它们可以很容易地移动到我们需要的任何框架/功能区等。

瓦西利斯

新界面 #75
贡献者

很棒的工作瓦西里!

新界面 #75
所有者作者

谢谢@mandrav.

新界面 #75
所有者作者

@onekk是的,您可以在用户按钮和命令行中的任何位置使用 eval 函数。
例如,我有一个用户宏,由@1bigpig它以快速动作扫描 gcode 的边缘。

g0 x[xmin] y[ymin]
g0 x[xmax]
g0 y[ymax]
g0 x[xmin]
g0 y[ymin]

然而,换刀功能现在位于 bCNC 内部。在“探针”选项卡中单击“工具”,您可以设置 bCNC 如何处理 M6(换刀命令)

  1. 按原样发送到 Grbl
  2. 完全忽略
  3. Replace with a “tool change” macro which
    • Stops the spindle
    • Raises to the Change-Z height
    • Rapid move to Change X,Y
    • Wait until you change the tool with a feed hold
    • Click on resume (hardware or pause software button)
    • go to Probe X,Y
    • lower to Probe Z
    • perform a probe scanning from ProbeZ to ProbeZ – Distance
    • reset the 0 of the workspace to match the new tool (maybe I should set it to the offset)
    • and go back inverting the order -> ChangeZ -> ChangeX,Y and continue the gcode

The first time you need to perform a calibration cycle, so bCNC to find the height of the probe tester (plate or switch) vs the 0 of your surface
You can also activate manually the tool change by clicking on the “Change” button

喜欢 (0)