DXF专题:DXF页面与导入 → 孔位表与工艺 → DXF后处理 → G196扩孔实例
加工向导根据输入的尺寸计算刀路,DXF功能则从图形文件中取得位置,再给这些位置填写加工参数。两者最后都把结果交给软件原有的程序页面。
本章先讲现有DXF入口、页面和导入脚本怎样配合。整个专题沿用同一个四孔DXF文件,接着依次学习孔位表与工艺、生成加工程序,最后完成G196扩孔实例。
DXF开关是 #929.item[12],当前没有放在配置菜单中,需要自己到宏参数窗口修改。
#929.item12,名称为DXF导图。这里不显示方括号,它就是脚本中的 #929.item[12]。#929.item[12] |
主界面效果 |
|---|---|
| 0/否 | 隐藏DXF入口 |
| 1/是 | 显示DXF入口,可以打开DXF页面 |
点击截图可查看原图。
点击截图可查看原图。
这个开关只控制入口和页面显示。它没有替你设定孔深、刀号、坐标系,也没有把钻孔页面切换成轮廓加工页面。
下载本章的四孔DXF文件。它只包含四个独立的圆,全部位于Z=0平面,没有额外轮廓。
| 导入后的编号 | 圆心X | 圆心Y | DXF圆半径 | 实际圆直径 |
|---|---|---|---|---|
| NO.1 | 10 | 10 | 2 | 4 |
| NO.2 | 40 | 10 | 2 | 4 |
| NO.3 | 10 | 35 | 2 | 4 |
| NO.4 | 40 | 35 | 3 | 6 |
点击主导航中的 DXF,再点导入DXF选择这个文件。DXF是主导航的一个入口;它与“程序”并列,不是“刀路预览/文件管理/加工向导”之后的第四个子页面。
点击截图可查看原图。
图3 已选中NO.2,并将它的孔底Z改为−7。其他孔为−5。可以拖动页面分隔条,为孔位表和参数区留出足够宽度。
页面上的内容各有职责:
| 区域 | 存放或显示什么 |
|---|---|
| 左侧绘图区 | 导入的圆,以及生成时画出的孔间连接线 |
| 孔位表 | 是否加工、圆心、几何尺寸、G81/G82/G83加工方式 |
| 右上工艺区 | 当前所选孔的刀号、转速、孔底Z、R平面、进给等 |
| 排序与筛选区 | 哪些孔参加加工,以及孔位处理顺序 |
| 程序头、程序尾 | 在生成内容前后添加的固定程序文字 |
| 程序体 | “生成G代码”形成的完整可编辑文本,包含头、生成段和尾 |
注意当前版本的“孔径”文字:表中显示的数值实际取自DXF圆半径。 因而本图前三孔显示2,第四孔显示3。后面的“孔位筛选直径”也按这个半径数值比较。本章保留实际界面名称,并按实际读取的数值说明操作。
打开 env/maininterface/maininterface.ui,DXF标签的对象名是 label_49。与本章有关的属性是:
-A: (clickedEvent:/env/dxfpage[0](#810permission=7))
-C(#929item12==1)
-V0
把它逐项读出来:
#929item12==1:判断DXF开关是否打开。-V0:以第0个条件决定显示;条件成立才显示。#810.permission=7,表示选择DXF页面,再执行 /env/dxfpage。[0]表示使用主Qt脚本通道,和前面章节的主页面操作一致。env/dxfpage很短,可以完整读懂:
IF#899.version==1GOTO1
#899.version=1
#899.itemdesc[0]="/env/dxf/dxf.ui"
widgetFunc["QFrame","dxfframe","refresh",""]
N1
#899.itemdesc[0]提供UI文件路径,主界面的 dxfframe 按这个定义装入页面。#899.version在这里用作“已经装入”的标记,避免每次点击都重新创建控件。主框架还会根据 #810.permission==7 和DXF开关决定该区域的显示。
这与前面多页面章节的方法相同:入口改变选页参数,框架决定显示哪一块,页面脚本负责第一次装入UI。
DXF页面文件是 env/dxf/dxf.ui。先记住下面这张表,之后查功能就知道从哪里开始。
| 原界面操作 | 对象名 | 执行脚本 | 主要结果 |
|---|---|---|---|
| 导入DXF | pushButton_43 |
dxfloader |
读图,建立孔位表,为每个孔复制默认参数 |
| 上移/下移/置顶 | pushButton_5/pushButton_34/pushButton_3 |
uppath/downpath/headpath |
调整显示行对应的孔编号 |
| 保存参数 | pushButton_35 |
saveDrillParam |
将当前孔的参数保存为以后导入时使用的默认值 |
| 孔位筛选 | pushButton_37 |
holeselect |
按尺寸条件重设每个孔的勾选状态 |
| 生成G代码 | pushButton_44 |
generatecode |
整理每孔参数,生成文本,重填程序体 |
| 保存载入 | pushButton_42 |
loadgcode |
将程序体保存为NC文件,交给原有程序页面 |
表中脚本均位于 env/dxf/。导入与保存载入绑定鼠标释放事件;其余这些按钮绑定点击事件。排查按钮动作时,要查看对象的事件属性,不能只按按钮上印的文字猜文件名。
本专题同时附上完整导入脚本、完整生成脚本和完整保存载入脚本,可与本章及后续章节的逐段说明对照阅读。
dxfloader先弹出文件选择框,再调用两个内置操作。下面是入口部分的原脚本节选:
#100=""
widgetFunc["openFileName","*.dxf","",100]
IF#100==""GOTO2
widgetFunc["readDxf",#100,"",0]
#100接收所选路径。随后脚本把 #6002.item[0] 到 #6002.item[9] 拼成冒号分隔的默认工艺文字,再调用:
widgetFunc["dxfDrillInit","","",#6001.description]
两项工作的分界要清楚:
readDxf读图。 文件中的几何实体进入软件内部的图形数据。dxfDrillInit建立钻孔清单。 当前实现从各图层的圆实体取圆心和半径,创建 #6001 孔位记录,并画出这些圆。dxfloader准备每孔工艺。 为 #6003~#6012 分配与孔数相同的子项,把 #6002 中的默认值及相应的输入类型、选项文字复制过去。因此,能够读入某种几何,不等于钻孔页面会把它当孔。本页取的是圆实体;用多段线或若干圆弧拼成的圆形,不会仅凭外观看起来像圆就自动进入这份钻孔清单。 本页也没有按图层名称选择加工孔的输入项。
重新导入会重新建立孔表和每孔参数,并清空旧程序体。需要保留本次生成的NC,应先保存;需要保留某组默认工艺,应先选择对应孔,再点“保存参数”。
参数不是为每个孔连续分配十个宏号,而是每一种工艺占一个参数号,各孔占这个参数的不同子项。例如,所有孔的孔底Z都在 #6007,所有孔的进给都在 #6012。
导入脚本先把 #6003~#6012 的子项数清零,再设为孔数;随后外层循环逐孔,内层循环逐项复制。复制的原语句是:
#[6003+#6002.channel].itemunit[#6002]=#6002.itemunit[#6002.channel]
#[6003+#6002.channel].itemtype[#6002]=#6002.itemtype[#6002.channel]
#[6003+#6002.channel].item[#6002]=#6002.item[#6002.channel]
在这几行里,#6002 主值临时充当孔号,#6002.channel 临时充当工艺项号;#6002.item[...] 才是默认工艺。以原NO.2的进给为例,孔号为1,进给项号为9,第三行相当于:
#6012.item[1]=#6002.item[9]
前两行同时复制输入类型和选项文字。因此,复制默认工艺不只是复制数值:表格要创建下拉框,还需要知道它是选项类型,并取得选项名称。导入后,各孔拥有自己的值,修改NO.2不会改写默认值或NO.1。
| 现象 | 优先检查 |
|---|---|
| 主界面没有DXF入口 | 在宏参数窗口检查 #929.item[12],不要只在配置菜单中寻找 |
| 图形像圆,孔位表却没有这项 | 原实体是否为圆;当前钻孔初始化不把多段线外观自动当孔 |
导入后的孔已经有了编号和各自的默认工艺。下一章用这些数据解释列表选孔、图形高亮和右侧输入为什么能同步变化。
上一课:加工向导 · 阅读目录 · 下一课:孔位表与工艺