设计规则
设计规则检查图纸中是否存在会导致作业失败的问题:不闭合的轮廓、对刀具来说过短的切割线、重复绘制的线、离切割线过近的压痕线。文件 › 检查设计 会运行所有规则并列出发现的问题,每个问题都带有 显示 按钮;如果其规则能纠正该问题,还带有 修复 按钮(参见检查设计和修复问题)。每次机器导出(G-code、HP-GL 和后处理器)之前也会检查这些规则:如果发现问题,会询问您是否仍要导出。
声明设计规则
designRule({
name: "Holes big enough",
description: "Circles on the cutting layer are at least 3 mm across.",
severity: "error",
check(drawing) {
for (const e of drawing.elements)
if (e.kind === "CIRCLE" && e.cutting && e.radius < 1.5)
report(`${e.id} is only ${(2 * e.radius).toFixed(2)} across`, [e], e.start);
}
});
| 属性 | 含义 |
|---|---|
name、description |
在消息中显示的内容。 |
severity |
"warning"(省略时)或 "error":其问题的显示方式。 |
beforeExport |
为 false 时只在 检查设计 时检查,机器输出之前不检查。 |
check(drawing) |
检查图纸,并对每个问题调用 report。 |
fix(drawing, issue) |
可选:纠正一个问题(参见修复)。 |
fixLabel |
其修复所做的事,显示在 修复 按钮的提示和撤销步骤的名称中("Join the ends")。 |
图纸
| 属性 | 含义 |
|---|---|
name |
图纸的文件名,不含扩展名(如果尚未保存则为 "")。 |
units |
"mm" 或 "in"。 |
bounds |
其图元的范围:{minX, minY, maxX, maxY, width, height}(如果没有图元则为 null)。 |
layers |
图层表:每个图层为 {layer, name, cutting}。 |
elements |
每个导出的图元(不包括构造线或不输出的隐藏图元)。 |
selected |
其中被选中的数量。 |
page |
正在处理的页面(列出的就是该页面的图元)。 |
nests |
每个页面上的排样,如下所述。 |
frames |
斜接画框线条的画框:参见绘图 API。 |
notes |
图纸的备注,按名称访问:drawing.notes["Customer"](没有备注时为 {})。 |
每个图元包含:
| 属性 | 含义 |
|---|---|
id |
"@12"。 |
kind |
其命令:"LINE"、"ARC"、"CIRCLE"、"BEZIER"、"POLYLINE"、"POINT"…… |
layer、layerName |
其图层的编号和名称。 |
cutting |
该图层是否切穿。 |
selected |
是否被选中。 |
length |
其长度(点为 0)。 |
closed |
是否回到起点。 |
area |
闭合时所围的面积(不闭合时为 0)。 |
start、end |
其端点,形式为 {x, y}。 |
bounds |
{minX, minY, maxX, maxY, width, height}。 |
radius |
用于圆或圆弧。 |
rule |
其图层在刀模中是哪种刀线:"cut"、"crease"、"reverseCrease"、"partialCut"、"perforation"、"cutCrease" 或 "vCut";不是刀线时(尺寸标注、胶带、您自己的图层)为 null。 |
minRadius、minRadiusAt |
其最紧的弯曲:弯曲的最小半径(其圆弧、多段线中的圆弧,或曲线弯曲最大处),以及位置({x, y});直线时为 null。 |
corners |
转向超过 10° 的位置(多段线的转角),形式为 {x, y};其自身的端点不计算在内。 |
pieces |
按顺序列出其组成部分:多段线的各边和凸度段、曲线的各段、块生成的内容(或图元本身)。每一部分包含 kind("line"、"arc" 或 "curve")、start、end、startTangent 和 endTangent(其在两端的走向,为单位向量 {x, y})、layer 和 cutting;圆弧还包含其 centre、radius 和 sweep(弧度,逆时针为正;圆为整整一周),曲线还包含沿其分布的 points。 |
bridges |
如果有连接点(咬口),为 {count, width, at}:at 是每个连接点的位置,与制作刀模放置的位置相同({x, y})。 |
tool |
其切削所用的刀具设置(自身设置优先于其图层的设置),或为 null。 |
每个排样包含:
| 属性 | 含义 |
|---|---|
id、page、part |
其 id、所在的页面,以及其排样的零件(或页面)。 |
onPage、selected |
是否位于正在处理的页面上,以及是否被选中。 |
layerName |
其图层的名称。 |
sheet |
{width, height, margin, gutterX, gutterY},按图纸当前的状态。 |
perSheet |
每张纸的副本数(放不下时为 0)。 |
quantity |
所需的副本数(其 QUANTITY;0:一张纸的数量)。 |
sheets、made、spare |
每张纸都排满时所需的纸张数;生产的副本数;超出所需副本数的数量。 |
sheetArea、usedArea |
一张纸的面积,以及其中被使用的部分(整张纸)。 |
partsArea、partArea |
一张纸上副本的面积,以及一个副本的面积。 |
wasteArea、wastage |
一张纸的废料(纸张减去其副本),以及废料占纸张的比例。 |
utilisation |
副本覆盖一张纸的比例。 |
runWastage |
整个生产批次的废料:所有纸张减去所需副本,以比例表示(多余副本计为废料)。 |
problem |
没有排列结果的原因(零件比纸张大……),或为 null。 |
报表以相同的方式获得图纸。
报告和测量
| 函数 | 含义 |
|---|---|
report(message, elements, at, fix) |
一个问题:问题是什么;涉及的图元(一个图元、图元数组或它们的 id),显示问题时会选中这些图元;如果问题位于某处,其位置({x, y});以及如果规则能纠正它,其 fix 所需的内容(任意值;其中的 label 为该修复命名)。只有 message 是必需的;报告时未给出 fix 的问题不提供修复。 |
distanceBetween(a, b) |
两个图元之间的最短距离(相接或相交处为 0)。 |
crossings(a, b) |
两个图元相接或相交的位置:{x, y} 数组。 |
made3D() |
图纸在 3D 中生成的内容,与其 3D 页面生成的相同,并按其配合点组装:每个拉伸实体,形式为 {id, element, layer, thickness, materialThickness, ownThickness, noThickness, flush}:其轮廓的 id(element,没有自己的轮廓时为 null)、生成的厚度、其材料的厚度(其图层的 THICK,否则为图纸的 T)、其厚度是否为自己的(RULE THICK)、计算结果为 0 或更小的厚度设置("RULE THICK"、"LAYER3D THICK" 或 "T";都不是时为 null),以及对于它沿厚度方向嵌入的每个实体(裁口中的背板、槽中的面板),{neighbour, element, by}:它比该实体旁边的面凸出多少(by 大于 0)或低多少。规则第一次需要时才生成 3D。 |
也可以使用绘图 API 的读取函数:variable("L")、getPoint(4)、evaluate("…")。规则的 check 不能更改图纸;其 fix 可以。
修复
带有 fix 的规则会为每个报告时给出第四个值的问题提供 修复。修复会得到图纸(与 check 相同)和问题:{message, rule, elements, at, fix},其中 fix 是传给 report 的内容。它使用绘图 API(command("…")、setVariable、newPoint …)和以下函数更改图纸:
| 函数 | 含义 |
|---|---|
removeElement(e) |
从图纸中删除一个图元(或图元数组)。 |
joinEnds(e, at, other, to) |
将 e 位于 at 的端点连接到 other 位于 to 的端点(均为 {x, y}):该端点的点被定义为另一个点,因此会跟随它。 |
moveElements(e, dx, dy) |
将一个图元(或图元数组)移动 dx、dy,与拖动相同:移动量保存在新变量中(MOVX1、MOVY1)。 |
setPartSetting(e, key, value) |
将零件自己的某项 3D 设置("THICK"、"Z"、"DEPTH"、"LOOK" …:参见零件的 3D 设置)设为一个值或表达式,或将其去掉(null),从而使用其图层的设置。 |
修复所做的一切在撤销历史中是一步,名为 修复:…(其 fixLabel)。出错或没有做任何更改的修复会被撤回,并显示原因。
designRule({
name: "Holes big enough",
description: "Circles on the cutting layer are at least 3 mm across.",
fixLabel: "Remove the hole",
check(drawing) {
for (const e of drawing.elements)
if (e.kind === "CIRCLE" && e.cutting && e.radius < 1.5)
report(`${e.id} is only ${(2 * e.radius).toFixed(2)} across`, [e], e.start, { element: e.id });
},
fix(drawing, issue) {
removeElement(issue.fix.element);
}
});
应用自带的规则
| 规则 | 检查内容 |
|---|---|
| Open cut lines(错误) | 切割线的某个端点没有与其他切割线相接。修复会将端点连接到 0.5 mm(0.02 in)以内另一条切割线的端点(或轮廓自身的起点)。 |
| Very short cuts | 短于 1 mm(0.04 in)或长度为零的切割线。修复会删除该切割线。 |
| Lines drawn twice | 同一图层上位于相同两处之间的两条线。修复会删除第二条。 |
| Creases too near cuts | 与切割线距离在 2 mm(0.08 in)以内但未与之相接的压痕线。 |
| Rules bent too tight | 弯曲半径小于 1.5 mm(0.06 in)的切割刀线(切割线、打孔线、半切线、切压线),或小于 3 mm(0.12 in)的压痕刀线(压痕线、反向压痕线):刀线无法弯得这么紧。 |
| Knives too close | 两条不相接、但并排间距小于 3 mm(0.12 in)的切割刀线:它们之间的刀模板太少,也没有放弹垫海绵的空间。直线只在彼此并排(方向几乎相同且相互重叠)的地方计算,首尾相接或跨过转角的不计算。 |
| Bridge widths | 窄于 3 mm(0.12 in)的连接点,强度不足以固定刀模板;或宽于 12 mm(0.5 in)的连接点,使刀线失去支撑。 |
| Rules too short | 短于 3 mm(0.12 in)的刀线段:从一端到另一端的整条刀线(如果一个短图元在两端都与另一条刀线直线相接,则将其计为那条更长刀线的一部分),或刀线在连接点之间剩下的各段。短于 1 mm 的切割线由 Very short cuts 检查。 |
| Bridges too near corners | 边缘距其刀线的转角、端点,或与其相接或相交的其他刀线不足 3 mm(0.12 in)的连接点。 |
| Holes too near glass and stone edges | 在行业为玻璃或石材与瓷砖的图纸中:孔(圆孔,或长圆孔:由直边连接的两个半圆,可以是一条多段线,也可以是若干直线和圆弧)的边缘距某条边(其所在面板的边,或缺口、开孔的边)或另一个孔的边缘小于面板厚度的两倍(图纸的 T,或 6 mm、0.25 in);或距某个角(面板的角,或缺口、开孔的内角)小于厚度的六倍;或孔的直径(长圆孔为其宽度)小于面板的厚度。圆角从其两边延长线的交点起算。修复会将离边过近的孔沿直线移离该边。参见玻璃。 |
| Sharp inner corners in glass and stone | 在行业为玻璃或石材与瓷砖的图纸中:尖锐的内角(缺口、开孔或面板自身的内角,如 L 形),或圆角半径小于面板允许值的内角:玻璃为其厚度且至少 10 mm(0.375 in);石材为 10 mm(0.375 in)。圆弧和多段线的凸度段都算作圆角。参见玻璃页面上的 靠近边缘的孔。 |
| Notches too big in glass | 在行业为玻璃的图纸中:面板轮廓上的缺口(位于边上,或切掉一个角)宽度超过面板宽度的三分之一,或深度超过其高度的三分之一。参见玻璃。 |
| Cut-outs too near glass and stone edges | 在行业为玻璃的图纸中:开孔(面板内部不是孔的闭合形状)与面板各边之间的玻璃,左右两侧少于其宽度的一半,或上下两侧少于其高度的一半。在石材与瓷砖中:开孔周围的石材少于 50 mm(2 in)。参见玻璃。 |
| 3D thickness not the material's | 具有自己 3D 厚度(RULE THICK:参见零件的 3D 设置)且该厚度不是其材料厚度的零件:材料厚度即其图层的 3D 厚度,否则为图纸的 T。有意做得更薄的零件(6 mm 背板)也会列出,以提醒其所用的板材。修复会去掉其自己的厚度。 |
| Panels proud of or below their neighbours | 由配合点装入另一零件的裁口或槽中的面板,组装后其面比该零件旁边的面凸出或低(超过 0.05 mm、0.002 in):背板比其裁口的宽度更厚或更薄。 |
| Bodies with no thickness(错误) | 在 3D 中生成、厚度计算结果为 0 或更小的实体:其自己的厚度(RULE THICK 小于 0;在此处为 0 表示沿用图层的厚度)、其图层的 LAYER3D THICK,或图纸的 T(此时改用下一级的厚度,或按薄板生成)。 |
它们位于应用的 Extensions 文件夹中的 rules.js 内。前四条规则将图层 0 视为切割线,图层 1 视为压痕线;刀模规则按每个图元的 rule 判断,因此适用于任何图层表,其限值(毫米和英寸,英寸用于以英寸为单位的图纸)位于文件中该部分顶部的 DIE 表中。这些限值只是起点:请根据您的刀模制作方的刀线和机器进行核对。将该文件复制到您自己的文件夹即可修改限值或图层;玻璃和石材的距离(以厚度计)、内角的最小半径、缺口占面板的最大比例以及开孔距边缘的最小距离位于其 GLASS 表中。最后三条规则会生成图纸的 3D(made3D()),因此只在 检查设计 时检查,机器输出之前不检查;其限值位于 MADE3D 表中。
说明
- 出错的规则会作为单独的问题列出,并显示文件和行号,其他规则仍会继续检查。
- 问题显示在交互窗口中,每个问题标为错误或警告并带有其按钮,也显示在 检查设计 的列表中。