赛科(天津)智能科技有限公司
二次开发手册

首页>支持与服务>二次开发手册

二次开发手册

坐标输入框怎样显示、输入和确认

发布时间:2026-10-16 点击次数:1004

下载中英双语离线手册(ZIP,8.7 MB,含原始分辨率截图)

阅读目录 · English

上一课讲了坐标整行怎样显示或隐藏。这一课只盯住一个熟悉的地方:主界面X轴的“工件坐标”输入框。沿着“平时显示 → 点击 → 输入 → 回车或退出”的顺序,就能看懂一个原生输入框怎样用几条宏式规则完成工作。

本篇使用标准界面的坐标输入框和配套脚本。图中125、24、12.5等为教学示例数值,用来区分当前坐标、正在输入的文字和确认后交给脚本的数值。

操作前先确认系统已解除复位,并处于空闲状态。 如果状态显示“复位”,应先通过软件原有复位操作解除,待系统空闲后,再点击工件坐标框、输入数值并按回车。复位状态会阻止后续MDI执行,即使输入框能够接收文字,也不能据此判断坐标已设置完成。

1.三个外形相似的框,作用不同

图1:坐标显示示例:X机械坐标125.000,工件坐标24.000,剩余距离0.000

点击截图可放大查看,原始分辨率图片见离线包。

X轴位置 原控件名称 是否可输入 原设计用途
“机械坐标”下 lineEdit_10 只读 持续显示机械坐标
“工件坐标”下 lineEdit_19 可输入 平时显示工作位置;进入编辑后接收临时输入
第三列 lineEdit_11 只读 按条件显示RTCP坐标、剩余距离或零

这里的只读属性是UI中的 readOnly:第一、三列为 true,中间为 false。不要因为三者都叫 QLineEdit,就认为都可以修改同一种坐标。

机械坐标框的属性很简单:

-T(#300.item30)
-D

它已经在文字、数值和状态篇中介绍过。下面重点解释中间这个可编辑的框。

2.先把X工件坐标框的原属性摆完整

在 env/maininterface/maininterface.ui 中,lineEdit_19 的 accessibleDescription 是:

-T2(#2502)
-T2(#300_item6-#324_item8+#309_item0)
-C,1(#1006item0==0) 
-C,0(#1006item0==1)
-D

-事件: (clickedEvent:/env/edit_x[1])
-事件: (FocusOut:/env/edit_x_exit[1])
-事件: (Esc:/env/edit_x_exit[1])
-事件: (Return:/env/edit_x_end[1])

不要一次背下全部语法,先把它分成三组:前两行提供两种内容,中间三行决定选哪种并持续更新,后四行说明发生操作时调用哪个脚本。

原写法 在本例中的意思
第一个 -T2(...) 内容候选0,来源是临时参数 #2502
第二个 -T2(...) 内容候选1,来源是工作坐标表达式
-T2 里的2 实数类型,不是候选下标,也不是固定保留两位小数
-C,1(条件) 条件成立,选择内容候选1
-C,0(条件) 条件成立,选择内容候选0
-D 参加动态文字更新;是否实际改写框中文字还受焦点等条件影响
四个事件 分别处理点击、失去焦点、Esc、Return

当前实数显示处理在 #330.item[8]=0 时使用三位小数,为1时使用四位。本例显示三位。-T2 的2、-C,1 的1、事件末尾 [1] 的1分别是类型、内容下标、通道,不能混为一谈。

3.平时为什么显示24.000

#1006.item[0] 表示X坐标框的编辑状态:0表示平时显示,1表示进入本例的临时输入状态。

当它为0时,先遇到的这条条件成立:

-C,1(#1006item0==0)

于是读取第二个内容候选:

#300_item6-#324_item8+#309_item0

这不是直接读机械显示位置 #300.item[30]。当前三项分别对应X工作位置、X方向刀长补偿值和X的G52偏置。用下面的示例值计算:

参数 示例值
#300.item[6] 25
#324.item[8] 3
#309.item[0] 2

因此图1显示 25-3+2=24.000。机械坐标框中的示例值125来自 #300.item[30]。两个框读取不同的参数,不能拿机械坐标框的125直接代入这条工件坐标显示公式。

原属性里的 #300_item6 和脚本里的 #300.item[6] 都是在引用这个参数项;阅读UI属性和脚本时,可以据此对应起来。

4.点击后,先切换“写到哪里”

点击X工件坐标框,原 env/edit_x 执行:

IF#319.item[3]==1GOTO1
#2502=0
#1006.item[0]=1
N1

启动标志为1时跳过;否则清空临时输入参数,并把X编辑状态置1。于是内容候选从正常坐标切到 #2502,后续提交输入时也按这条临时参数绑定处理。

图2:点击X工件坐标框后取得输入焦点,原24.000被选中

点击截图可放大查看,原始分辨率图片见离线包。

这里要区分临时参数和屏幕文字:临时参数变成0,不等于框里的文字马上变成0.000。 图2中输入框保留并选中了24.000,方便直接输入新数值。普通可输入框有焦点时,动态刷新不会反复覆盖正在编辑的文字。

此时直接键入所需数值即可替换选中的文字。理解这个设计时,既要看当前绑定的是哪个参数,也要看输入框是否处于编辑状态。

5.输入时,为什么不会被实时坐标覆盖

现在输入 12.5:

图3:原X工件坐标框内正在输入12.5;这还不是已执行的坐标结果

点击截图可放大查看,原始分辨率图片见离线包。

原更新规则对QLineEdit作了区分:没有输入焦点时可以刷新;只读框在没有选中文字时也可以刷新。当前X工件坐标框既可编辑,又有焦点,因此保留用户正在输入的文字。

这一阶段有三个不同的值要分开:

所在位置 输入12.5、尚未确认时的内容
输入框文字 12.5
临时参数 #2502 仍为点击时初始化的0
原工作坐标表达式 仍计算为24

原控件不是每敲一个字符就执行 edit_x_end。完成输入的事件才会把框内文字提交给绑定参数。这也避免了把半个数值当作完整的坐标处理请求。

6.Esc和移开焦点,都退出,但不完全一样

两个事件都调用 env/edit_x_exit,原脚本只有:

#1006.item[0]=0

它让显示重新选择正常坐标候选。区别发生在调用这个退出脚本之前。

按Esc

从图3按Esc,输入框恢复显示24.000,#2502 仍为0,没有产生新的坐标处理请求。

图4:Esc退出后恢复原工作坐标24.000

点击截图可放大查看,原始分辨率图片见离线包。

原Esc分支先调用退出事件,再按当前候选重新设置显示文字,最后移开焦点。

直接移开焦点

重新点击X框,输入 18.25,再离开这个框:显示恢复24.000,#1006.item[0]=0,但临时参数 #2502 已经变成18.25。

图5:移开焦点后同样显示24.000,但临时参数已收到18.25

点击截图可放大查看,原始分辨率图片见离线包。

原因是原FocusOut处理在文字有变化时,可能先提交绑定参数,再调用FocusOut脚本。本例绑定的是临时参数,退出脚本也没有调用 edit_x_end,所以没有形成新的坐标处理请求。

操作 #2502 的内容 X编辑状态 是否产生坐标处理请求
输入12.5后按Esc 0 回到0 否
输入18.25后移开焦点 18.25 回到0 否
输入12.5后按Return 12.5 回到0 是,下一节展开

前两种操作都没有确认修改坐标,但移开焦点会影响临时参数。六轴共用 #2502,设计类似输入功能时,应把临时输入与确认处理分开安排。

7.回车:先提交数值,再执行确认脚本

重新点击X框,输入12.5并按Return。原处理顺序是:

  1. 从输入框读取文字,按当前内容候选提交给绑定参数,本例为 #2502。
  2. 调用 Return 对应的 env/edit_x_end。
  3. 根据脚本改变后的状态重新显示,再清除输入焦点。

当前 env/main 会设置 #1006.item[6]=0。在这个标准模式下,edit_x_end 的实际路径依次完成:检查X是否处于编辑状态 → 清除编辑状态 → 复制临时值 → 指定NC文件 → 设置请求标志。完整原脚本如下,后面的另一种模式分支在第10节说明:

IF#1006.item[0]==0GOTO1
#1006.item[0]=0
IF#1006.item[6]==1GOTO2
#2503=#2502
#404="edit_x.nc"
GOTO4
N2
IF#319.item[11]==1GOTO3
#[#337.item[1]].item[23]=#2502-#300.item[6]+#324.item[8]
GOTO1
N3
#2503=#2502
#404="gotozero_x.nc"
N4
#319.item[10]=1
#319.item[3]=1
N1

输入12.5并按Return时,确认脚本按以下方式传递数据:

参数 交出的值 用途
#1006.item[0] 0 X已退出编辑
#2502 12.5 接收本次输入
#2503 12.5 交给后续坐标处理的值
#404 edit_x.nc 后续处理文件名
#319.item[10] 1 选择MDI执行方式
#319.item[3] 1 启动标志

确认脚本负责交出数值和处理文件,后续由NC执行坐标设置。启动标志为1时,edit_x 会跳过进入编辑的赋值;这个判断控制的是编辑状态,输入框本身仍可以取得焦点。定制时,应分别考虑脚本的状态判断和控件是否允许输入。

#319.item[10] 表示选择了MDI方式,不单独表示“仍在运行”。本次处理完成后,#319.item[3] 回到0,界面恢复空闲;MDI方式标志可以仍为1。

这里还要分清复位请求 #319.item[1] 和复位状态 #319.item[6]。后者为1时,NC解释器不会开始执行MDI文件;仅把MDI标志和启动标志置1不能解除这个限制。原 edit_x_end 不负责解除复位。若在复位中已经按过回车,应先解除复位、等待空闲,再重新输入并回车,不能把先前的请求当作等待自动补执行的任务。定制坐标输入时,也应保留原有复位操作,不要在确认脚本中强制清除复位状态。

8.把当前点的工件坐标设为输入值

这个功能就是:机床保持在当前位置,把当前点的X工件坐标设为用户输入的数值。 输入0可将当前点设为X零点;输入其他数值,则给当前点指定相应的X工件坐标。软件通过调整当前工件坐标系的偏置完成这件事。

原 env/edit_x.nc 使用下面这条 G91G92 语句实现:

G91G92XREAL[#2503]-#300.item[6]+#324.item[8]

可以把这条语句分成两步理解:先算出需要改变多少坐标,再用 G91G92 调整坐标偏置,使当前点获得输入的工件坐标。

原语句中的部分 在这里做什么
REAL[#2503] 将确认的输入文字转换为实数,作为希望设定的坐标值
-#300.item[6]+#324.item[8] 结合当前X工作位置和刀长补偿,计算这次设置需要的坐标改变量
G91G92X... 按计算出的改变量调整当前工件坐标系的偏置,保持机床当前位置

例如,在额外偏置和刀长补偿均为0的简单情况下,当前X工件坐标为24,用户输入12.5,表达式得到 12.5-24+0=-11.5。执行后,原来的这个点被设为X=12.5;机床不需要移动到另一个位置。这个算例采用零补偿条件,与第3节的显示计算示例条件不同。

图6给出这个算例按回车后的界面:X工件坐标变为12.500,X机械坐标仍为125.000。 本例原G54的X偏置为101,设置后变为112.5,因此同一个机械位置对应的工件坐标是 125-112.5=12.5。Y、Z及其他轴的坐标保持不变。

图6:回车完成坐标设置后,X工件坐标为12.500,机械坐标仍为125.000

点击截图可放大查看,原始分辨率图片见离线包。

理解到这里,操作过程就完整了:输入想给当前点设定的坐标 → 回车提交 → 原NC语句调整坐标偏置 → 界面读回新的工件坐标。 坐标组、偏置的进一步说明见坐标专题,请求的后续处理见加工调度。

9.第三列为什么会同时换标题和数值

第三列不是另一个可输入的工件坐标框。标题 label_25 有两个内容候选:RTCP坐标、剩余距离,按下面条件选择:

-T(#1100itemtitle28)
-T(#1100itemtitle29)
-C,1(#330item39==1||#945item0==1)
-C,0(1)

注意这里标题候选0和1的实际文字顺序要读语言包:itemtitle28 是“剩余距离”,itemtitle29 是“RTCP坐标”。当 #330.item[39] 或 #945.item[0] 为1时,选候选1,标题变为“RTCP坐标”。

图7:RTCP显示示例:第三列标题为RTCP坐标,X值为12.500

点击截图可放大查看,原始分辨率图片见离线包。

X第三列 lineEdit_11 的完整属性是:

-T(#300.item12)
-T(#357item134-(#300item36-#357item54))
-T(-#357item134+(#300item36-#357item54))
-T("0.000")
-C,0(#330item39==1||#945item0==1)
-C,1(#319item3==1&&#319item11==0&&#357item134>=0)
-C,2(#319item3==1&&#319item11==0&&#357item134<0)
-C,3(1)
-D

逐条读条件,遇到第一个成立且指定内容的规则就选定,不把后面的真条件再覆盖上来:

先后顺序 条件 显示内容
1 RTCP显示条件成立 #300.item[12],此处不是 #300.item[42]
2 启动、非仿真,节点X运动量非负 运动量减去公式中的位置差
3 启动、非仿真,节点X运动量为负 对负方向使用另一条原公式
4 以上均未选中 固定文字 0.000

以正向计算为例:当 #357.item[134]=100、#357.item[54]=10、#300.item[36]=40 时,公式得到 100-(40-10)=70.000。

图8:剩余距离计算示例:X显示70.000

点击截图可放大查看,原始分辨率图片见离线包。

#357 的这些项来自当前执行的程序段:134对应X运动量,54对应其中的X编程坐标;#300.item[36] 是X工作显示位置。这些值由运行过程提供,定制页面时应读取它们,不把它们当作普通输入参数改写。

负向计算使用另一条公式:运动量-100、程序段内的X坐标10、显示位置-20时,得到 -(-100)+(-20-10)=70。如果同时满足RTCP显示条件,则优先显示RTCP坐标,例如图7的12.500。设计多种显示内容时,条件的排列顺序也决定了显示结果。

10.其他轴和另一种模式怎样对照

六轴都复用临时参数 #2502,用各自的 #1006.item[0..5] 标记编辑状态。原控件和正常显示表达式为:

轴/控件 正常显示表达式
X/lineEdit_19 #300_item6-#324_item8+#309_item0
Y/lineEdit_20 #300_item7-#324_item9+#309_item1
Z/lineEdit_21 #300_item8-#324_item10+#309_item2
A/lineEdit_22 #300_item33-#[301+#324_item4].item3-#308_item3-#308item9
B/lineEdit_27 #300_item34-#[301+#324_item4].item4-#308_item4-#308item10
C/lineEdit_30 #300_item35-#[301+#324_item4].item5-#308_item5-#308item11

XYZ直接使用相应工作位置、刀补和G52项;ABC使用机械显示位置,减当前工件组及 #308 的两组对应偏置。以G54为例,#324.item[4]=1,301+1指向 #302。不要把六轴都简化为同一条“机械坐标减G54”。

文件名按轴对应:edit_x、edit_x_exit、edit_x_end、edit_x.nc;其余轴使用y、z、a、b、c后缀。复制设计时,必须同时核对控件、显示公式、编辑标记和脚本目标,不能只把画面上的X改成Y。

确认脚本中 #1006.item[6]=1 的分支属于另一种定位处理。当前标准 main 将模式设为0,本章按模式0讲解当前位置的坐标设置。定制时保留这一设置;定位功能需要另外安排操作入口、目标位置和配套执行程序,不能仅切换这一个数值。

11.遇到问题,按这个顺序查

现象或误解 应检查什么
点击后没变成0 临时参数与屏幕文字不同;有焦点时动态刷新会保护输入文字
输入框显示正常,回车却写错位置 当前 -T 候选是不是临时参数;不能只查画面文字
Esc和离开输入框应完全一样 FocusOut可能先写临时参数,再执行退出脚本
-T2 表示保留两位小数 2是实数类型;当前小数位由实数显示处理和单位设置决定
回车后就能断言已经执行完 先看提交值和请求,再核对后续NC处理及完成结果
能输入数值,回车后坐标却没有改变 先看状态是否显示“复位”;解除复位并等待空闲后重新输入、回车,再查NC文件和执行提示
第三列有启动条件就一定显示剩余距离 RTCP条件排在前面,且仿真状态也会影响选择
加上 -D 就会一直覆盖输入 还要检查焦点、只读和选中文字状态

这套原设计值得学习的不是记住几个参数号,而是把“显示用的数值”“正在输入的文字”“确认交出的数值”安排清楚,再用短脚本连接各个操作。

接下来回到“程序”页面,沿文件管理看选中的文件怎样变成程序文字和加工列表中的一项。

上一课:轴配置 · 下一课:文件加载 · 阅读目录

Copyright © 2018-2024 赛科(天津)智能科技有限公司 All Rights Reserved.

在线咨询