added ruff test
This commit is contained in:
@@ -25,7 +25,6 @@ from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import math
|
||||
import math
|
||||
import os
|
||||
import sys
|
||||
from pathlib import Path
|
||||
@@ -116,16 +115,13 @@ STRINGS = {
|
||||
"setup_open": "设备设置",
|
||||
"setup_title": "设备设置",
|
||||
"setup_hint": "连接与总线初始化每次开机只需确认一次,因此收进这里;顶栏状态条持续显示结果,设置窗口可以一直开着。",
|
||||
"setup_tabs": ["连接", "总线初始化"],
|
||||
"setup_tabs": ["连接", "总线初始化", "轴映射"],
|
||||
"setup_rows": [
|
||||
["连接方式", "以太网 ▾"],
|
||||
["IP", "192.168.0.11"],
|
||||
["状态", "已连接"],
|
||||
["BAS 文件", "…\\bas\\ECAT.bas"],
|
||||
["初始化状态", "初始化成功"],
|
||||
["总线类型", "EtherCAT"],
|
||||
["节点数量", "5"],
|
||||
["轴数量", "5"],
|
||||
["X(工作台)", "驱动器 0"],
|
||||
["Y(工作台)", "驱动器 1"],
|
||||
["Z(压轴)", "驱动器 4"],
|
||||
["yaw(回转)", "驱动器 3"],
|
||||
["pitch(俯仰)", "驱动器 2"],
|
||||
],
|
||||
"setup_connect": "连接",
|
||||
"setup_disconnect": "断开连接",
|
||||
@@ -208,6 +204,11 @@ STRINGS = {
|
||||
"finger_preview_title": "三维预览",
|
||||
"finger_preview_checks": ["显示运动轴", "显示转台原点平面", "显示刀具路径"],
|
||||
"finger_play": "播放动作",
|
||||
"move_execute": "执行动作",
|
||||
"move_stop": "停止",
|
||||
"move_return": "回初始位",
|
||||
"move_confirm": "移动前确认",
|
||||
"move_status": "1/4 yaw → +36.8160 °(回初始位:先退压轴 Z)",
|
||||
"finger_preview_notes": [
|
||||
"颜色含义:绿→红 = 表面对齐残差;红/绿/蓝三色轴 = 工作台 X/Y/Z(位于原点);橙点 = 工作台原点。",
|
||||
"黄色直线 = 刀具轴(+Z,位置即刀具 X/Y);黄色方框 = 传感器安装基面(高度 = 传感器 Z,含安装板)。",
|
||||
@@ -270,16 +271,13 @@ STRINGS = {
|
||||
"setup_open": "Device setup",
|
||||
"setup_title": "Device setup",
|
||||
"setup_hint": "Connecting and bringing the bus up are checked once per machine start-up, so they live here. The status strip keeps reporting the result.",
|
||||
"setup_tabs": ["Connection", "Bus initialisation"],
|
||||
"setup_tabs": ["Connection", "Bus initialisation", "Axis mapping"],
|
||||
"setup_rows": [
|
||||
["Connection", "Ethernet ▾"],
|
||||
["IP", "192.168.0.11"],
|
||||
["State", "Connected"],
|
||||
["BAS file", "…\\bas\\ECAT.bas"],
|
||||
["Init state", "Initialised"],
|
||||
["Bus type", "EtherCAT"],
|
||||
["Nodes", "5"],
|
||||
["Axes", "5"],
|
||||
["X (table)", "Drive 0"],
|
||||
["Y (table)", "Drive 1"],
|
||||
["Z (press)", "Drive 4"],
|
||||
["yaw (rotation)", "Drive 3"],
|
||||
["pitch (tilt)", "Drive 2"],
|
||||
],
|
||||
"setup_connect": "Connect",
|
||||
"setup_disconnect": "Disconnect",
|
||||
@@ -362,6 +360,11 @@ STRINGS = {
|
||||
"finger_preview_title": "3D preview",
|
||||
"finger_preview_checks": ["Show motion axes", "Show table origin plane", "Show tool path"],
|
||||
"finger_play": "Play motion",
|
||||
"move_execute": "Execute",
|
||||
"move_stop": "Stop",
|
||||
"move_return": "Return to zero",
|
||||
"move_confirm": "Confirm before moving",
|
||||
"move_status": "1/4 yaw → +36.8160° (return to zero retracts Z first)",
|
||||
"finger_preview_notes": [
|
||||
"What the colours mean: green→red = the surface's alignment residual; the red/green/blue triad is the table's X/Y/Z at the origin; the orange dot is the origin.",
|
||||
"Yellow line = the tool axis (+Z, at the tool's own X/Y); the amber outline = the sensor base plane, at the sensor's Z offset (the plate).",
|
||||
@@ -629,7 +632,10 @@ def draw_left_rail(painter: QPainter, palette: Palette, s: dict, rect: QRect) ->
|
||||
y += 24
|
||||
_button(painter, QRect(inner.x(), y + 4, inner.width(), 28), s["enable_all"], palette)
|
||||
_button(painter, QRect(inner.x(), y + 40, inner.width(), 28), s["stop_all"], palette, danger=True)
|
||||
_button(painter, QRect(inner.x(), y + 76, inner.width(), 28), s["clear_alarms"], palette)
|
||||
# Returning every drive to zero is a machine-level action: here, in the rail that
|
||||
# is on screen in every tab, rather than repeated inside a tab.
|
||||
_button(painter, QRect(inner.x(), y + 76, inner.width(), 28), s["move_return"], palette)
|
||||
_button(painter, QRect(inner.x(), y + 112, inner.width(), 28), s["clear_alarms"], palette)
|
||||
|
||||
group = QRect(rect.x(), rect.y() + 280, rect.width(), 32)
|
||||
_panel(painter, group.adjusted(0, 0, 0, -8), palette)
|
||||
@@ -655,10 +661,11 @@ def draw_setup_dialog(painter: QPainter, palette: Palette, s: dict, rect: QRect)
|
||||
)
|
||||
|
||||
tabs = QRect(inner.x(), inner.y() + 38, inner.width(), inner.height() - 74)
|
||||
tab_w = 130
|
||||
tab_w = 120
|
||||
for index, label in enumerate(s["setup_tabs"]):
|
||||
tab = QRect(tabs.x() + index * tab_w, tabs.y(), tab_w, 26)
|
||||
active = index == 0
|
||||
# The axis mapping is the newest page, and the one worth reviewing.
|
||||
active = label == s["setup_tabs"][-1]
|
||||
painter.fillRect(tab, palette.window if active else palette.panel)
|
||||
painter.setPen(QPen(palette.border, 1))
|
||||
painter.drawRect(tab.adjusted(0, 0, -1, -1))
|
||||
@@ -667,16 +674,14 @@ def draw_setup_dialog(painter: QPainter, palette: Palette, s: dict, rect: QRect)
|
||||
painter.drawLine(tab.bottomLeft(), tab.bottomRight())
|
||||
_text(painter, tab, label, palette, size=10, bold=active, align=Qt.AlignmentFlag.AlignCenter)
|
||||
|
||||
# The rows are both tabs' contents stacked, in order: the connection fields and
|
||||
# the bus readouts, which is what the two tabs hold between them.
|
||||
# The mapping page: one row per platform direction, each showing the drive that
|
||||
# moves it. The values are the bench's own wiring.
|
||||
body = _panel(painter, tabs.adjusted(0, 26, 0, 0), palette)
|
||||
y = body.y() + 6
|
||||
for label, value in s["setup_rows"]:
|
||||
_text(painter, QRect(body.x(), y, 96, 22), label, palette, size=10, muted=True)
|
||||
_text(painter, QRect(body.x() + 104, y, body.width() - 104, 22), value, palette, size=10)
|
||||
y += 24
|
||||
_button(painter, QRect(body.x(), y + 6, 110, 26), s["setup_connect"], palette, primary=True)
|
||||
_button(painter, QRect(body.x() + 118, y + 6, 118, 26), s["setup_disconnect"], palette)
|
||||
_text(painter, QRect(body.x(), y, 150, 22), label, palette, size=10, muted=True)
|
||||
_text(painter, QRect(body.x() + 156, y, body.width() - 156, 22), value, palette, size=10)
|
||||
y += 26
|
||||
_button(painter, QRect(dialog.right() - 110, dialog.bottom() - 34, 96, 26), s["setup_close"], palette)
|
||||
|
||||
|
||||
@@ -1237,9 +1242,25 @@ def draw_finger_tab(painter: QPainter, palette: Palette, s: dict, rect: QRect) -
|
||||
painter.drawLine(box.x() + 5, box.y() + 13, box.x() + 10, box.y() + 5)
|
||||
_text(painter, QRect(box.x() + 15, box.y(), check_w - 15, checks_h), label, palette, size=9, muted=True)
|
||||
|
||||
play = QRect(inner_preview.x(), view.bottom() + checks_h + 2, 110, play_h - 4)
|
||||
row_y = view.bottom() + checks_h + 2
|
||||
play = QRect(inner_preview.x(), row_y, 110, play_h - 4)
|
||||
_button(painter, play, s["finger_play"], palette, primary=True)
|
||||
notes_y = play.bottom() + 4
|
||||
# The pose move: execute the selected point's solved pose, stop, and the policy
|
||||
# that decides whether either asks first.
|
||||
execute = QRect(play.right() + 8, row_y, 100, play_h - 4)
|
||||
_button(painter, execute, s["move_execute"], palette)
|
||||
stop = QRect(execute.right() + 8, row_y, 84, play_h - 4)
|
||||
_button(painter, stop, s["move_stop"], palette, danger=True)
|
||||
confirm = QRect(stop.right() + 10, row_y, inner_preview.width() - stop.right() - 10, play_h - 4)
|
||||
_text(painter, confirm, "☑ " + s["move_confirm"], palette, size=9, muted=True)
|
||||
_text(
|
||||
painter,
|
||||
QRect(inner_preview.x(), row_y + play_h, inner_preview.width(), 16),
|
||||
s["move_status"],
|
||||
palette,
|
||||
size=9,
|
||||
)
|
||||
notes_y = row_y + play_h + 18
|
||||
for text in s["finger_preview_notes"]:
|
||||
_text(painter, QRect(inner_preview.x(), notes_y, inner_preview.width(), 14), text, palette, size=8, muted=True)
|
||||
notes_y += 14
|
||||
|
||||
Reference in New Issue
Block a user