BOOLEAN
对两组图元 A 和 B 所围成的区域进行布尔运算而得到的形状:两者中的全部(并集)、两者共有的部分(交集)、从 A 中切除 B(差集)、只在其中一个而不在两者中的部分(异或),或沿 B 将 A 切分成多块(拆分)。它是一个图元,每当其图元变化时都会重新计算,因此会跟随它们。
语法
BOOLEAN "operation",[@a,…],[@b,…]
BOOLEAN @id,"operation",[@a,…],[@b,…],layer
BOOLEAN @id,"UNION",[@a,…],layer
| 参数 | 含义 |
|---|---|
| operation | "UNION"、"INTERSECT"、"SUBTRACT"(A − B)、"XOR"(在 A 或 B 中,但不同时在两者中)或 "SPLIT"(沿 B 切分 A)。不区分大小写。 |
| [@a,…] | A 的图元,以列表形式给出。 |
| [@b,…] | B 的图元,以列表形式给出。并集可以省略它:结果为 A 所围成的区域,重叠部分熔合在一起。 |
id、图层及其后的设置见图元设置。未指定图层时,结果放在当前图层上;布尔运算工具写入 A 的图层,或您选择的图层。
什么能围成区域
任何图元都可以,A 和 B 各自都可以由多个图元组成:
- 直线、圆弧、贝塞尔曲线、样条曲线、椭圆和多段线(带凸度或不带),各自闭合,或首尾相接:围成正方形的四条独立直线即可将其围成;
- 文字:其字母的轮廓(TrueType 字体的轮廓;笔画字体的字母是线,不围成任何区域);
- 块、放置的零件和导入的矢量图片(SVG、DXF、PDF、AI …):它们所绘制的曲线。
相互接触或交叉的形状会熔合在一起(两个重叠的圆是一个区域);相互嵌套的形状依次交替为实体和孔,因此卡纸板及其窗口得到一个环,字母 O 得到其内部的孔。形状内部的线不会将其分割,开放曲线也不围成任何区域,作为 SPLIT 的切分线时除外。
示例
P1=[0,0]
P2=[100,0]
P3=[100,100]
P4=[0,100]
POLYLINE @1,[P1,P2,P3,P4],TRUE
P5=[100,50]
P6=[140,50]
CIRCLE @2,P6,P5,TRUE
BOOLEAN @3,"UNION",[@1],[@2]
BOOLEAN @4,"SUBTRACT",[@1],[@2]
BOOLEAN @5,"INTERSECT",[@1],[@2]

一个正方形和一个压在其右边上的圆:它们的并集、被切去一个圆缺口的正方形,以及两者共有的半圆。圆弧仍是圆弧:移动 P5,三个结果都会随之变化。
P1=[0,0]
P2=[400,0]
P3=[400,500]
P4=[0,500]
POLYLINE @1,[P1,P2,P3,P4],TRUE
P10=[200,260]
P11=[290,260]
CIRCLE @2,P11,P10,TRUE
P20=[200,420]
P21=[230,330]
P22=[330,330]
P23=[250,280]
P24=[280,190]
P25=[200,240]
P26=[120,190]
P27=[150,280]
P28=[70,330]
P29=[170,330]
POLYLINE @3,[P20,P21,P22,P23,P24,P25,P26,P27,P28,P29],TRUE
BOOLEAN @4,"SUBTRACT",[@1],[@2,@3]
P30=[-24,-24]
P31=[424,-24]
P32=[424,524]
P33=[-24,524]
POLYLINE @5,[P30,P31,P32,P33],TRUE
BOOLEAN @6,"UNION",[@5],[@4]
画框装裱:从卡纸板中切除一个标志(一个圆和一个相互重叠的星形,与导入的 SVG 给出的一样),得到异形窗口;然后将卡纸与其外围的画框轮廓熔合,标志形状的窗口是其唯一的孔。
P1=[0,0]
P2=[120,0]
P3=[120,180]
P4=[0,180]
POLYLINE @1,[P1,P2,P3,P4],TRUE
P5=[60,150]
P6=[60,220]
CIRCLE @2,P6,P5,TRUE
BOOLEAN @3,"INTERSECT",[@1],[@2]
包装:一个纸盒面板及其印刷图案窗口的圆形;窗口切口是该圆形落在面板上的部分(即被面板的顶边和侧边截平的圆)。
P1=[0,0]
P2=[200,0]
P3=[200,40]
P4=[0,40]
POLYLINE @1,[P1,P2,P3,P4],TRUE
P5=[20,30]
TEXT @2,P5,"SIGN",40,0
P6=[100,-10]
P7=[100,50]
LINE @3,P6,P7
BOOLEAN @4,"UNION",[@1],[@2]
BOOLEAN @5,"SPLIT",[@1],[@3]
标识制作:一块背板及立在其上的字母,熔合成一个用于切割的轮廓(使用 TrueType 字体;默认笔画字体的字母是线,因此不会添加任何内容),以及被一条横穿的线分成两半的背板(每一半是结果中的一个形状)。
说明
结果的曲线由其各形状的环依次组成:每个外环为逆时针,然后是其孔,为顺时针。其边是图元自身曲线的一段,恰好在它们交叉处切断:直线仍是直线,圆弧仍是圆弧,贝塞尔曲线仍是贝塞尔曲线,椭圆仍是椭圆。当两条曲线的交点没有公式可求(例如两条贝塞尔曲线)时,会在真实曲线上按公差求出交点,并在该处切断曲线,而不是将其变成短直线。公差为图元尺寸的百万分之一(且不小于 0.000001):相距在公差以内的端点视为相接,结果中位于同一条直线或同一个圆的十倍公差范围内的各段会重新合并为一段。
如果什么都不剩(例如不重叠形状的交集),结果是位于这些形状所在处的一个点。如果其某个图元被删除,该图元会保留在构造图层上,与其他任何被用来生成内容的图元一样。
AREAOF 给出结果的面积,OFFSET 给出围绕它的一条线,填充工具可填充它;它也可以作为另一个 BOOLEAN 的形状之一。