DXF页面:从开启功能到导入图形

阅读目录 · English

DXF专题:DXF页面与导入 → 孔位表与工艺 → DXF后处理 → G196扩孔实例

加工向导根据输入的尺寸计算刀路,DXF功能则从图形文件中取得位置,再给这些位置填写加工参数。两者最后都把结果交给软件原有的程序页面。

本章先讲现有DXF入口、页面和导入脚本怎样配合。整个专题沿用同一个四孔DXF文件,接着依次学习孔位表与工艺、生成加工程序,最后完成G196扩孔实例。

1.先在宏参数窗口启用DXF

DXF开关是 #929.item[12],当前没有放在配置菜单中,需要自己到宏参数窗口修改。

  1. 登录开发者权限,进入主界面的参数页面。
  2. 在功能键区打开宏参数管理。英文界面名称为 Macro Param.。功能键位置可以配置,按名称找,不必认定是固定的F键;若面板未放置此功能,可按功能键配置的方法选择它。
  3. 在左边参数列表找到 929,点击这一行。中间上部显示参数主字段,下部显示子项。
  4. 在子项表找到 #929.item12,名称为DXF导图。这里不显示方括号,它就是脚本中的 #929.item[12]。
  5. 将这一行的参数值 item选为是,即数值 1。修改的是子项值,不是929的主值、标题、类型或版本。
  6. 关闭宏参数窗口,主界面出现 DXF 入口。结束配置后正常退出软件,使设置按正常保存流程保留。
#929.item[12] 主界面效果
0/否 隐藏DXF入口
1/是 显示DXF入口,可以打开DXF页面

图1:原生宏参数窗口,选中929后找到DXF导图子项

点击截图可查看原图。

图2:需要修改的是第12子项的参数值,图中已经选择是

点击截图可查看原图。

这个开关只控制入口和页面显示。它没有替你设定孔深、刀号、坐标系,也没有把钻孔页面切换成轮廓加工页面。

2.准备四个圆,先看懂整个页面

下载本章的四孔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:标准DXF页面,左边显示四个圆,中间为孔位表,右边为当前孔的参数和程序文字

点击截图可查看原图。

图3 已选中NO.2,并将它的孔底Z改为−7。其他孔为−5。可以拖动页面分隔条,为孔位表和参数区留出足够宽度。

页面上的内容各有职责:

区域 存放或显示什么
左侧绘图区 导入的圆,以及生成时画出的孔间连接线
孔位表 是否加工、圆心、几何尺寸、G81/G82/G83加工方式
右上工艺区 当前所选孔的刀号、转速、孔底Z、R平面、进给等
排序与筛选区 哪些孔参加加工,以及孔位处理顺序
程序头、程序尾 在生成内容前后添加的固定程序文字
程序体 “生成G代码”形成的完整可编辑文本,包含头、生成段和尾

注意当前版本的“孔径”文字:表中显示的数值实际取自DXF圆半径。 因而本图前三孔显示2,第四孔显示3。后面的“孔位筛选直径”也按这个半径数值比较。本章保留实际界面名称,并按实际读取的数值说明操作。

3.入口为什么能显示,页面又是怎样装入的

打开 env/maininterface/maininterface.ui,DXF标签的对象名是 label_49。与本章有关的属性是:

-A: (clickedEvent:/env/dxfpage[0](#810permission=7))
-C(#929item12==1)
-V0

把它逐项读出来:

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。

4.把按钮和脚本对应起来

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/。导入与保存载入绑定鼠标释放事件;其余这些按钮绑定点击事件。排查按钮动作时,要查看对象的事件属性,不能只按按钮上印的文字猜文件名。

本专题同时附上完整导入脚本、完整生成脚本和完整保存载入脚本,可与本章及后续章节的逐段说明对照阅读。

5.导入图形,实际建立了哪些数据

dxfloader先弹出文件选择框,再调用两个内置操作。下面是入口部分的原脚本节选:

#100=""
widgetFunc["openFileName","*.dxf","",100]
IF#100==""GOTO2
widgetFunc["readDxf",#100,"",0]

#100接收所选路径。随后脚本把 #6002.item[0] 到 #6002.item[9] 拼成冒号分隔的默认工艺文字,再调用:

widgetFunc["dxfDrillInit","","",#6001.description]

两项工作的分界要清楚:

  1. readDxf读图。 文件中的几何实体进入软件内部的图形数据。
  2. dxfDrillInit建立钻孔清单。 当前实现从各图层的圆实体取圆心和半径,创建 #6001 孔位记录,并画出这些圆。
  3. 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。

6.遇到问题,先检查这些位置

现象 优先检查
主界面没有DXF入口 在宏参数窗口检查 #929.item[12],不要只在配置菜单中寻找
图形像圆,孔位表却没有这项 原实体是否为圆;当前钻孔初始化不把多段线外观自动当孔

导入后的孔已经有了编号和各自的默认工艺。下一章用这些数据解释列表选孔、图形高亮和右侧输入为什么能同步变化。

上一课:加工向导 · 阅读目录 · 下一课:孔位表与工艺