这一篇在干嘛?

《AutoCAD Workbook for Architects and Engineers》第 4 章「STRETCH、TRIM、EXTEND、OFFSET 与 ARRAY」的中文精讲。本章覆盖 36 个主题小节、85 张原文操作截图,从命令用途、操作步骤到易错点逐步展开。素材里的命令行示例均按原书保留。

🧭 本篇导航

STRETCH, TRIM, EXTEND, OFFSET, and ARRAY

本章进入 AutoCAD 修改(Modify)命令的核心地带。前一章你已经学会了如何用 Window、Crossing、Fence 等方式「选中」对象,本章要解决的是另一个问题:选中之后怎么「改」。具体包括五组技能:

  1. 使用选择集中的 Remove(移除)和 Add(添加)选项,对选择集做精细增删;
  2. 使用 STRETCH(拉伸)、TRIM(修剪)、EXTEND(延伸)、OFFSET(偏移)和 ARRAY(阵列)编辑图形。

这五个修改命令是日常绘图中使用频率最高的一批工具——画错一堵墙不必擦掉重画,用 STRETCH 拉一下即可;一堆平行线不用逐条绘制,OFFSET 一次到位;成组的桌椅、螺栓孔用 ARRAY 一键复制。掌握它们,绘图效率会有质的提升。

图 4.1:电气符号示例——由直线、实体(solid)和一个圆组成,本章将用它演示 Remove 选项。

Removing and Adding Objects

第 3 章讲的是如何把对象「加入」选择集(Window、Crossing、Window Polygon、Crossing Polygon、Fence、Previous、Last 等)。但实际操作中经常出现相反的需求:框选了一大片对象,结果多选了几个。这时如果按住 Shift 逐个去点当然可以,但如果多余的对象是一整类(比如上面那个符号里的圆),逐个点选就太慢了。AutoCAD 为此提供了 Remove 和 Add 两个选项,让你在构建选择集的过程中随时「剔除」和「补选」。

REMOVE Option

是什么:REMOVE 选项把命令行从「选择对象」切换成「移除对象」状态,此时你点到的对象会从已建好的选择集中被剔除,而不是被加入。

为什么需要它:当一组对象已经被整体选中(比如用窗口框选),而其中只有少数几个不需要时,用 REMOVE 只要一两次操作;不用它,你就只能放弃当前选择集,逐个点选每一个需要的对象。

易错点:选择 REMOVE 后,提示符会从 Select objects: 变成 Remove objects:——很多人没注意提示已经变了,继续框选以为在「加对象」,实际上在「减对象」。另外,在 REMOVE 状态下你依然可以使用 Window 和 Crossing 窗口来批量移除。

以图 4.1 的电气符号为例:假设你只想复制其中的直线和实体,不想复制圆。办法有两种——逐个点选四个对象(四次拾取),或者先用窗口选中全部对象、再用 REMOVE 剔除圆(三次拾取)。后者更省事。

用窗口框选整个电气符号(此时圆也被选中)。

移除圆之后的选择集——只剩直线和实体。

完整命令序列如下:

Command: COPY
Select objects: (pick 1)              ← 用窗口第一角点框选
Select opposite corner: (pick 2)      ← 窗口对角点,选中整个符号
Select objects: R                     ← 输入 R 进入移除模式
Remove objects: (pick 3)              ← 点选圆,将其从选择集中剔除
Remove objects:                       ← 回车结束移除
Specify base point or displacement, or [Multiple]: (pick 4)   ← 指定基点
Specify second point of displacement
or <use first point as displacement>: (pick 5)                ← 指定第二点完成复制

REMOVE 选项可以用在任何出现 Select objects: 提示的命令中,不限于 COPY。

Add Option

是什么:ADD 选项是 REMOVE 的反向操作——当你在移除模式下发现删多了,输入 A 即可把提示符从 Remove objects: 切回 Select objects:,继续往选择集里补充对象。

为什么需要它:有了这一对选项,你就可以在同一个选择过程中反复「删一点、补一点」,直到选择集里的对象完全符合要求,而不用推倒重来。

快捷方式:除了输入命令行等价词 ADD 或 A,更常用的方法是拾取时按住 Shift 键——按住 Shift 点选即等于临时移除,松开后又恢复添加状态。

图 4.2:Remove 与 Add 交替使用的示例——先框选、再剔除、又补选、再回到添加状态。

图 4.2 对应的完整命令行过程:窗口选择 → R 移除 → 窗口方式移除多个 → A 切回添加 → 补选一个对象 → 回车确认,再指定基点完成 COPY。

Command: COPY
Select objects: (pick 1)          ← 窗口第一角
Specify opposite corner: (pick 2) ← 窗口对角
Select objects: R                 ← 进入移除模式
Remove objects: (pick 3)          ← 点选要移除的对象
Other corner: (pick 4)            ← 也可以用窗口方式移除
Remove objects: A                 ← 输入 A 切回添加模式
Select objects: (pick 5)          ← 补选漏掉的对象
Select objects: ↓                 ← 回车结束选择
Specify base point or displacement, or [Multiple]: (pick 6)
Specify second point of displacement
or <use first point as displacement>: (continue with command)

你可以在 Remove 和 Add 之间像图 4.2 这样反复切换,直到对选择集满意为止。再次强调:按住 Shift 拾取是等价的快捷操作。

这些 Modify 命令与第 3 章介绍的命令同属一族,但内部结构更复杂一些——始终仔细阅读命令行提示,是高效使用它们的关键。和第 3 章的命令一样,REMOVE 和 ADD 功能可以在 Modify 下拉菜单和 Modify 工具栏中找到,也可以用别名直接在命令行输入。

The STRETCH Command

是什么:STRETCH(拉伸)命令把直线、多段线及其他线性对象拉长或缩短——它把对象(或一组对象)中被选中的一侧整体搬到一个新的位置,而与所选部分相连的其他部分会自动跟着「伸缩」。

为什么需要它:建筑设计中最典型的场景就是「门开在墙的另一边」:你不需要擦掉墙线重画,只需要把门和它所在的墙段一起拉伸到新位置,两侧的墙线会自动变长或变短补齐。不掌握 STRETCH,这类修改就只能删除重建。

最重要的规则(初学者必看):使用 STRETCH 时必须用交叉窗口(Crossing Window)选择对象,也就是从右向左拖动窗口。交叉窗口能选中「被窗口穿过」的对象;普通窗口只能选中「完全被包围」的对象,用它来做拉伸是初学者最常见的失败原因。

STRETCH 命令的 Modify 工具栏图标。

STRETCH 拉伸示意:指定基点和第二点,被选中的一侧随之移动,相连对象自动伸缩。

Notes

再强调一遍:STRETCH 必须配合交叉窗口使用。命令行虽然提示了 crossing-window 或 polygon 两种方式,但没有普通窗口这个选项。

图 4.3:用交叉窗口(从右向左拖动)框住要拉伸的一侧。

Command: STRETCH
Select objects to stretch by crossing-window or polygon ...
Select objects: (pick 1)                    ← 交叉窗口第一角(从右向左开始)
Other corner: (pick 2)                      ← 交叉窗口对角,框住右侧要拉伸的部分
Specify base point or displacement: (pick 3)           ← 指定基点
Specify second point of displacement: (pick 4)         ← 指定位移第二点(本例移动 3 个单位)

注意命令行里 Crossing 是自动生效的——你只要按图 4.3 所示从右向左拾取窗口的两个角点即可。被交叉窗口选中的对象会全部高亮显示,借此可以确认自己选对了范围。

Stretching Circles and Arcs

拉伸圆和圆弧时,行为有点特别,值得记住:

  • :整体作为一个圆被移动——拉伸不会把圆变成椭圆。如果交叉窗口只框到圆的一部分,结果就是整个圆平移。
  • 圆弧:如果只有一端被选中,圆弧会被拉伸成新的半径;如果整个圆弧都被完整包在交叉窗口里,则半径不变,只是平移。

图 4.4:交叉窗口框住了门(门线与门弧)以及门两侧的墙线,准备向新位置拉伸。

拉伸命令的起始提示:Select objects to stretch by crossing-window or polygon …

Danger

Danger(危险)提示图标。

如果交叉窗口把所有对象全部选中,你做的就不是拉伸(STRETCH)而是移动(MOVE)了。 只选你想拉伸的那一侧。这是 STRETCH 最经典的翻车点:窗口框太大 → 全部高亮 → 结果整组对象平移,图形关系完全没变。

Select objects: (pick 1)                    ← 交叉窗口第一角
Other corner: (pick 2)                      ← 对角
Select objects:                             ← 回车结束选择
Specify base point or displacement: (pick 3)           ← 基点
Specify second point of displacement: (pick 4)         ← 位移第二点

在图 4.4 中,交叉窗口内的对象包括:门线与门弧——它们会被整体移动;以及门两侧的两段墙线——它们会被拉伸以适应门的新位置。一次操作同时完成「移门」和「改墙」,这正是 STRETCH 的精髓。

拉伸完成后:门被移到新位置,两侧墙线自动伸长或缩短补齐。

The TRIM Command

是什么:TRIM(修剪)命令沿着一条边界(剪切边,cutting edge)把对象超出的部分切掉。它可以修剪单个对象,也可以一次修剪一批对象。

为什么需要它:绘图时经常先画出「多出来」的线条再修整——比如两面墙交叉处、圆和圆弧相交处。TRIM 让你不必精确计算交点位置,随手画长一点,再一剪到位。不用它,你就得用精确坐标一点点画,或者用擦除工具沿着交点 painstakingly 删线。

入口:Modify 工具栏上的 Trim 图标;Modify 下拉菜单中的 Trim;命令行等价词为 TRIM

前提条件(易错点):剪切边必须已经存在于图纸上。执行 TRIM 时先选剪切边、回车确认,再去点要剪掉的部分。如果图上根本没有任何可作为边界的对象,TRIM 无从下手。

剪切边可以是直线(如图 4.5),也可以是圆弧(如图 4.6),任何对象都可以充当边界。

图 4.5:以一条直线为剪切边,修剪与其相交的另一条直线。

Command: TRIM
Current settings: Projection=UCS, Edge=None       ← 当前设置:投影=UCS,边延伸=无
Select cutting edges...                           ← 开始选择剪切边
Select objects or <select all>: (pick 1)          ← 点选作为剪切边的对象
Select objects: ↓                                 ← 回车,表示剪切边选完了
Select object to trim or shift-select to extend or
[Fence/Crossing/Project/Edge/eRase/Undo]: (pick 2) ← 点选要剪掉的部分(点哪边剪哪边)

Notes

Notes(注意)提示图标。

TRIM 中的 Fence(栅栏)选项虽然常被当作「新功能」宣传,其实从 Release 12 时代就存在了。它非常实用:在「选择要修剪的对象」阶段输入 F,然后画一条折线,所有被这条折线穿过的对象都会被一次性剪掉——批量修剪时比逐个点选快得多。

图 4.6:圆弧被修剪到圆的边缘——以圆为剪切边,把伸出圆外的弧段切掉。

Command: TRIM
Current settings: Projection=UCS, Edge=None
Select cutting edges...
Select objects or <select all>: (pick 1)     ← 选圆作为剪切边
Select objects: J                            ← 回车确认(不再需要更多剪切边)
Select object to trim or shift-select to extend or
[Fence/Crossing/Project/Edge/eRase/Undo]: (pick 2, 3, 4, 5)  ← 依次点选四段要剪掉的弧
Select object to trim or .....ge/Undo]: ↓    ← 回车结束

图 4.6 中的各段圆弧沿圆的边缘被修剪整齐。

剪切边也可以一次选多个。 在图 4.7 中,所有对象互为剪切边——这时最省事的做法是直接回车(接受 <select all> 默认值),让全部对象都成为剪切边,然后随便点要删的部分。

图 4.7:一组相互交叉的线段,所有对象都被当作剪切边。

修剪前的图形状态。

选择剪切边阶段——把所有对象都选为边界。

修剪后:对象之间互相切齐,形成规则的网格交角。

修剪操作的结果示意。

Notes

Notes(注意)提示图标。

在 TRIM 和 EXTEND 两个命令中,提示里的 <select all> 的意思是:直接键入单词 All,让所有对象都充当边界。

Notes

Notes(注意)提示图标。

Fence 选项以及其他所有选择选项(Crossing、Project、Edge、eRase、Undo 等)同样是 EXTEND 命令序列的一部分——仍然非常实用,也仍然不是什么新东西。

下面是一次多剪切边、多修剪对象的完整过程:

Command: TRIM
Current settings: Projection=UCS, Edge=None
Select cutting edges...
Select objects or <select all>: (pick 1)     ← 窗口第一角
Other corner: (pick 2)                       ← 窗口对角,一次框选多条剪切边
Select objects:                              ← 回车确认
Select object to trim or shift-select to extend or
[Fence/Crossing/Project/Edge/eRase/Undo]: (pick 3 to 10)  ← 连续点选要剪掉的部分
Select object to trim or ..... /Undo]:       ← 回车结束

The EXTEND Command

是什么:EXTEND(延伸)命令同样需要指定边界,但它的用途与 TRIM 相反——把不够长的对象延长到边界处。在图 4.8 中,边界显然就是那条斜线(对角线),选中后它会高亮显示。

为什么需要它:和 TRIM 互补——TRIM 负责「剪掉多余的」,EXTEND 负责「补上不够的」。画两条本来应该相交、但端点没画到位的线时,不必重新计算端点坐标,EXTEND 一下就接到边界上。

入口:Modify 工具栏上的 Extend 图标;Modify 下拉菜单中的 Extend;命令行等价词为 EXTEND

EXTEND 命令的 Modify 工具栏图标。

在图 4.8 中,圆内的小直线被延伸到圆的周长上。

图 4.8:圆内的短线段延伸到圆周——先选圆作为边界,再点选要延伸的线段端部。

EXTEND 命令操作示意。

Command: EXTEND
Current settings: Projection=UCS, Edge=None
Select boundary edges...                          ← 开始选择边界边
Select objects or <select all>: (pick 1)          ← 点选边界(本例为圆)
Select objects:                                   ← 回车确认边界选择完毕
Select object to trim or shift-select to extend or
[Fence/Crossing/Project/Edge/eRase/Undo]: (pick 3 to 10)  ← 点选要延伸的线段
Select object to trim or ..... /Undo]:            ← 回车结束

注意:点选要延伸的对象时,要点在靠近边界的那一端——AutoCAD 会把对象往你点击的一侧延伸。点错一端,对象可能往反方向延伸或没有反应。

延伸进行中的状态。

延伸完成:短线段全部接到圆周上。

TRIM and EXTEND with Implied Intersections

**隐含交点(Implied Intersections)**指的是:两个对象现在并不相交,但如果把它们分别延长或缩短,将会相交的那个点。

  • 修剪时:可以把隐含交点当作剪切边使用(图 4.9)——即使两条线实际没碰到,也能以另一条线的延长线为界来剪。
  • 延伸时:可以把隐含交点当作边界使用(图 4.10)——对象能延伸到「假如边界再长一点就会相交」的位置。

要启用这个能力,需要用到 Edge(边)选项:在选择要延伸的对象之前输入 E,然后选择 Extend 模式。

图 4.9:利用隐含交点修剪——两条线并未实际相交,但仍可以互为剪切边。

利用隐含交点修剪后的结果。

Notes

如果 AutoCAD 回应 “no cutting edges selected”(未选择剪切边),说明这两个对象按当前设置无法相交。此时可以试试 Fillet 半径设为 0 的办法(用 FILLET 生成交角)。

图 4.10:利用隐含交点延伸——最右边三条线延伸到与竖线的「假想交点」处。

Command: EXTEND
Current settings: Projection=UCS, Edge=None
Select boundary edges...
Select objects <select all>: (pick 1)             ← 选竖线作为边界
Select objects:                                   ← 回车确认
Select object to extend shift-select to extend or [Fence/Crossing/Project/Edge/eRase/Undo]: E
                                                  ← 输入 E 启用 Edge(边)选项
Enter an implied edge extension mode [Extend/No extend]: E
                                                  ← 选择 Extend:允许延伸到隐含交点
Select object to extend or ....../Undo]: (pick 2, 3, 4)  ← 点选三条要延伸的线
Select object to extend or ....../Undo]: J        ← 回车结束

图 4.10 显示最后三个对象被延伸到它们与竖直线「可能相交」的位置——虽然竖线本身没有那么长,交点并不真实存在。

TRIM 和 EXTEND 还有其他选项(Project、eRase、Undo 等),可以查阅 Help 文件进一步探索。

The OFFSET Command

是什么:OFFSET(偏移)命令把一个对象按给定距离复制出一个平行的副本。可以说 OFFSET 是整个系统里使用频率最高的编辑命令——画墙线、车道线、同心圆、等距曲线,全靠它。

为什么需要它:手工画平行线的时代,你得复制对象再逐点平移、还要保证方向精确;OFFSET 一步到位,且对直线、圆弧、圆、多段线一律有效。注意:OFFSET 只在 X-Y 平面内工作,不能在 Z 方向偏移。

入口:命令行等价词为 OFFSET

OFFSET 命令的 Modify 工具栏图标。

OFFSET 的第一个输入是偏移距离——所有后续副本与原对象的间距。之后每选一个对象,再点一下「往哪边偏移」。易错点:指定方向的那个拾取点离对象多远完全无所谓,只有它所在的那一侧有意义(如图 4.11)。早期版本的 AutoCAD 提示语更少、更好理解,但命令的实际序列没有变。

图 4.11:偏移方向示意——拾取点只决定偏移在哪一侧,与距离无关。

Command: OFFSET
Specify Current settings: Erase source=NO Layer=Source OFFSETGAPTYPE=0
                                        ← 当前设置:不删除源对象,副本在源图层
Specify offset distance or [Through/Erase/Layer]<Through>: 8
                                        ← 输入偏移距离 8
Select object to offset or [exit/Undo]<exit>: (pick 1)   ← 选要偏移的对象
Specify point on side to offset: (pick 2)                ← 点一下偏移方向那一侧
Select object to offset or [exit/Undo]<exit>: (pick 3)   ← 继续选下一个对象(距离沿用 8)
Specify point on side to offset: (pick 4)                ← 指定它的偏移侧
Select object to offset or [exit/Undo]<exit>: (continue to pick points and sides)
                                        ← 「选对象→点方向」成对循环,直到回车退出

「选择要偏移的对象」和「指定偏移侧」这两个提示会成对地循环出现,直到你按回车退出。也就是说,设定一次距离后,可以连续偏移多个对象——这是 OFFSET 高效的关键。

如图 4.12 所示,对 ARC(圆弧)、CIRCLE(圆)和 PLINE(多段线)偏移时,副本会保持同一个圆心并得到偏移后的半径——圆越偏越大或越小,弧的半径同步增减,多段线则整体向外或向内「长胖/变瘦」。

图 4.12:圆弧、圆与多段线的偏移结果——圆心不变,半径按偏移距离变化。

Through 选项

老版本中,OFFSET 的 Through(通过)选项用来指定一个点,让后续所有偏移都通过这个点计算距离。现在它的行为更像 COPY:每个被拾取的对象都可以按各自独立的通过点放置,如图 4.13 所示。

Through 选项示意(a):按通过点放置副本。

图 4.13:每个对象按各自的通过点、以不同距离偏移。

Through 选项的命令过程示意。

Through 选项偏移完成的结果。

Notes

Notes(注意)提示图标。

OFFSET 命令中的 Undo 选项可以在不退出命令的情况下撤销上一次偏移操作——偏错了马上回退,不用退出重来。

Command: OFFSET (Through 方式)

Specify Current settings: Erase =NO ..... OFFSETGAPTYPE=0
Specify offset distance or [Through/Erase/Layer]<Through>: t
                                        ← 输入 t 采用 Through(通过点)方式
Select object to offset or [exit/Undo]<exit>: (pick 1)   ← 选对象
Specify through point: (pick 2)                          ← 副本将通过这个点
Select object to offset or [exit/Undo]<exit>: (pick 3)   ← 换下一个对象
Specify through point: (pick 4)                          ← 指定它自己的通过点
Select object to offset or [exit/Undo]<exit>: (pick 3)   ← 还可以再偏移同一个对象
Specify through point: (pick 4)
Select object to offset or [exit/Undo]<exit>: J          ← 回车结束

OFFSET + FILLET 半径 0 组合技:用 OFFSET 在多个距离上生成平行线,再用半径 0 的 FILLET「清理」交角,是绘制大量平行线图形(如墙体、机械轮廓)的标准工作流,如图 4.14 所示:

  • 图 4.14a 是最终零件;
  • 先把一条竖线按各个距离偏移(图 4.14b);
  • 再偏移各条横线(图 4.14c);
  • 最后用半径 0 的 FILLET 清理角点(图 4.14d);
  • 斜线可以随后再加。

图 4.14:OFFSET 与 FILLET 半径 0 配合作图的完整流程。

图 4.14a:最终完成的零件。

图 4.14b:竖线按各距离偏移出的平行线族。

图 4.14d:用 FILLET 半径 0 清理角点后的效果。

The ARRAY Command (Polar)

是什么:ARRAY(阵列)命令把选中的对象按**环形(Polar,极向)矩形(Rectangular)**图案成批复制。极向阵列是让副本围绕一个指定的中心点旋转复制。

为什么需要它:圆桌周围摆八把椅子、法兰盘上均布八个螺栓孔——这类「绕一个中心均匀分布」的图形,用 COPY 一次一次复制再旋转对位既慢又容易不均,ARRAY 一次搞定且绝对均匀。

入口:Modify 工具栏的 Array 图标;Modify 下拉菜单中的 Array,然后选 Polar;命令行等价词为 -ARRAY(注意带负号,表示不用对话框的命令行版本)。

小技巧:如果你嫌对话框又慢又笨重,可以在 ARRAY 命令前加一个减号「-」,直接使用无对话框的命令行版本。

ARRAY 命令的 Modify 工具栏图标。

Command: -ARRAY
Select objects: (pick 1)                     ← 点选要阵列的对象(椅子)
Other corner: (pick 2)                       ← 窗口对角
Select objects: ↓                            ← 回车,表示不再添加对象
Enter the type of array [Rectangular/Polar] <R>: P    ← 输入 P 选择 Polar(环形)
Specify center point of array: CENter of (pick 3)     ← 捕捉大圆(圆桌)的圆心作为阵列中心
Enter the number of items in the array: 8    ← 阵列后总数 8 个(含原对象)
Specify the angle to fill (+=CCW, -=CW) <360>: ↓      ← 回车接受 360°(逆时针为正,顺时针为负)
Rotate arrayed objects [Yes/No] <Y>: ↓       ← 回车接受默认:副本随角度旋转

在图 4.15 中,对象(一把椅子)绕大圆(圆桌)的圆心、在 360° 范围内等距阵列,且每个副本都随之旋转——所以椅子始终「面向」桌心。要在 ARRAY 对话框中实现这个效果,操作顺序是:先选对象,再拾取中心点,然后指定项目总数和填充角度。

图 4.15:椅子绕圆桌中心做 360° 环形阵列,共 8 把,副本随角度旋转。

易错点:命令执行过程中系统不会再逐项提示你「该选中心点了」——你必须自己在屏幕的每个区域完成对应的选择。如果阵列出来的对象出现在意料之外的位置,多半是中心点选错了。补救办法:

Command: U        ← 用 U(Undo)撤销一次失败的阵列

命令行输入 U 撤销错误的阵列。

极向阵列还有第二种定义方式:除了指定「总填充角度」,你也可以指定相邻两个对象之间的增量角度——在对话框里选择对应选项即可(如图 4.16)。比如 12 件、每件间隔 30°,和 12 件填满 360° 是等价的,两种思路哪种顺手用哪种。

图 4.16:按相邻对象间的增量角度定义的环形阵列。

对话框使用建议:只要对话框上有 Preview(预览)按钮,就先预览再确认——免得做错了再回头修改。再次提醒:对象跑到意料之外的位置,多半还是中心点的问题。

旋转与否:一般而言,副本在阵列时会绕阵列角度相应旋转。如果不希望它们旋转(比如椅子全部朝向同一方向),取消勾选 “Rotate items as copied”(复制时旋转项目)复选框即可。

ARRAY 对话框中控制副本是否旋转的选项。

环形阵列的对话框参数设置(中心点、项目数、填充角度)。

The ARRAY Command (Rectangular)

是什么:ARRAY 的 Rectangular(矩形)选项按行和列复制对象:先问你要几行(Y 方向的副本数)、几列(X 方向的副本数),再问行间距和列间距。

关键概念(易错点):这里的间距是中心到中心的距离(center-to-center distance),也就是说列距包含了对象本身的一半宽度。这个定义在建筑和机械两个领域都很常用:桌椅间距 = 椅子宽 + 过道宽;螺栓孔间距 = 孔心距。不搞清这一点,阵列出来的间距永远和预期差半个对象的宽度。

入口:命令行等价词为 ARRAY

矩形阵列的示意图。

在图 4.17 中,对象沿 X 方向(列方向)阵列。注意列间距里包含了对象本身宽度的一半。

图 4.17:对象沿 X 方向排成 7 列,列距 0.5625 个单位。

列距的构成:包含对象自身半宽。

ARRAY 既可以单向阵列也可以双向阵列。本例中阵列沿 X 方向生成一系列对象,间距 0.5625 个单位。

单向(列方向)阵列的结果。

对话框不习惯的话,参数全部可以用命令行输入,很多人觉得这样反而更快:

Command: -ARRAY
Select objects: (pick 1)                       ← 选对象
Other corner: (pick 2)                         ← 窗口对角
Select objects: J                              ← 回车结束选择
Enter the type of array [Rectangular/Polar]<R>: J      ← 回车接受默认 R(矩形)
Enter the number of rows(--)<1>: J             ← 行数接受默认 1(只阵列一列)
Enter the number of columns( )<1>: 7           ← 列数 7
Enter the distance between the columns: .5625  ← 列距 0.5625

行数与列数是总数,不是增量:当布局需要在 X、Y 两个方向都排很多对象时,同时指定行和列。输入的行数/列数是阵列后的总数——已有 1 个、还想要 6 个,总数就填 7。

精度提示:拾取点和距离值尽量配合 OSNAP(对象捕捉)使用,保证输入的数值尽可能准确。

阵列之后:ARRAY 生成的每个副本都是独立的对象,可以单独选择、单独修改,不会被当成一个整体锁死。

ARRAY: Multiple Rows and Columns

同时排多行多列时,间距的算法要心里有数:一把椅子宽 24 英寸,希望椅子之间留 18 英寸的过道,那么行距/列距应该是椅子宽度加过道宽度,即 24 + 18 = 3’6”(42 英寸)。是「中心到中心」的距离,不是净空。

图 4.18:椅子同时按行和列排列的布局。

Command: -ARRAY
Select objects: (pick 1)                       ← 选对象
Other corner: (pick 2)                         ← 窗口对角
Select objects: ↓                              ← 回车结束选择
Enter the type of array [Rectangular/Polar]<R>: ↓      ← 回车接受矩形阵列
Enter the number of rows(--)<1>: 3             ← 3 行
Enter the number of columns( )<1>: 5           ← 5 列
Enter the distance between the rows: 60        ← 行距 60(图中距离 B)
Enter the distance between the columns: 42     ← 列距 42(图中距离 A)

负距离的用法:输入负的距离值会让阵列朝反方向生成——列距为负时向排,行距为负时从原对象向排。

负距离阵列的方向示意:列距为负向左,行距为负向下。

What can go wrong with Modify commands?

从 Modify 菜单执行命令时,务必跟着命令行提示走,把每一步需要的信息都给足。命令行版本比对话框更容易做对——因为对话框会自作主张地采用默认值,你可能根本没意识到某些参数被默认了。

万一命令执行得面目全非,别慌,直接 Undo 撤销即可:

Command: U

记住这个安全网的存在,你才敢大胆尝试各种命令选项。

Tutorial:用 ARRAY、TRIM、EXTEND 和 OFFSET 绘制后院热水浴池

下面这个例子综合运用本章的 ARRAY、TRIM、EXTEND 和 OFFSET 命令,完成一个后院热水浴池平面图。

Step 1

完成后的热水浴池平面图——本教程的目标效果。

绘图环境设置:不要使用 LIMITS、GRID 或 SNAP,并把 DYNAMIC(动态输入)关闭。

关闭动态输入等辅助功能的提示。

Step 2

从点 0,0 到点 0,28 画一条直线,然后用 ARRAY 把它阵列成 16 条,形成放射状网格。画线时可以用极轴(POLAR)辅助,也可以直接键入坐标(本例采用键入坐标)。

Step 2:从 0,0 到 0,28 画第一条竖线。

用极轴追踪或直接键入坐标画线。

Command: L                            ← LINE 的别名
Specify start point: 0,0              ← 起点 0,0
Specify next point or [Undo]: 0,28    ← 终点 0,28
Specify next point or [Undo]: J       ← 回车结束画线
 
Command: Zoom All                     ← 缩放全部显示

画好的第一条竖线(长度 28)。

Command: ARRAY                        ← 用对话框版本做极向阵列

在屏幕右上角区域选择(拾取)这条线。选择完成后按回车(↓)返回对话框,再点 OK 接受阵列——结果是 16 条绕原点均布的线。

阵列完成:16 条绕中心均布的放射线。

Step 3

从点 0,0 到点 30,0 画一条横线,再用命令行版本阵列 15 行,与前一步的放射线组成矩形网格(这就是「庭院石板」的基底)。

Command: L
Specify start point: 0,0
Specify next point or [Undo]: 30,0
Specify next point or [Undo]: J
 
Command: -ARRAY                       ← 命令行版本阵列

Step 3:用命令行矩形阵列生成石板网格。

Enter the type of array [Rectangular/Polar]<R>: J    ← 回车接受矩形阵列
Enter the number of rows (---)<1>: 15                ← 15 行
Enter the number of columns ( )<1>: J                ← 列数接受默认 1
Enter the distance between rows ( ): 2               ← 行距 2

Step 4

画一个 CIRCLE 形成热水浴池的轮廓,再 OFFSET 出一圈凸缘(ridge)。

Step 4:画圆形成浴池形状。

Command: C                            ← CIRCLE 的别名
Specify center point for circle or [3P/2P/Ttr(tan tan rad)]: (pick 1)
                                      ← 拾取圆心
Specify Radius of circle or [Diameter]: 6    ← 半径 6

指定圆心与半径画圆。

Command: OFFSET
Specify Current settings: Erase source=NO Layer=Source OFFSETGAPTYPE=0
Specify offset distance or [Through/Erase/Layer]<Through>: 1    ← 偏移距离 1
Select object to offset or [exit/Undo]<exit>: (pick 2)          ← 选刚画的圆
Specify point on side to offset: (pick 3)                       ← 往外侧偏移
Select object to offset or [exit/Undo]<exit>:                   ← 回车结束

OFFSET 向外偏移距离 1,形成浴池的凸缘。

Step 5

现在把外圆内部的放射线和网格线修剪掉。用 Fence(栅栏)方式一次选中所有要剪的部分:

Step 5:用栅栏(Fence)折线穿过所有要修剪的线条。

Command: TRIM
Current settings Projection=UCS,
Edge=None
Select cutting edges...
Select objects or <select all>: (pick 1)      ← 选外圆作为剪切边
Select objects or <select all>:               ← 回车确认
Select object to trim or .....eRase/Undo: F   ← 输入 F 使用 Fence 选项
Specify first fence point or [Undo]: (pick 2) ← 栅栏第一点
Specify first fence point or [Undo]: (pick 3) ← 栅栏第二点
Specify first fence point or [Undo]: (pick 4) ← 栅栏第三点
Specify first fence point or [Undo]::         ← 回车结束栅栏
Select object to trim or [Project/Edge/Undo]: ← 回车结束命令

修剪后:外圆内部的所有网格线被清除。

如果栅栏没扫到个别线条、还有没剪干净的,改用逐个点选的方式用 TRIM 补剪。

对栅栏漏掉的对象单独拾取修剪。

Step 6

用 OFFSET 在原有石板外侧生成一圈更大的石板作为边框。

Step 6:向外偏移出一圈更大的石板边框。

Command: OFFSET
Specify Current ...E=0
Specify offset distance or
[Through/Erase/Layer]<Through>: 4             ← 偏移距离 4
Select object to offset or
[exit/Undo]<exit>: (pick 1)                   ← 选一条石板边线
Specify point on side to offset: (pick 2)     ← 向外侧偏移
Select object to offset or
[exit/Undo]<exit>: (pick 3,4,5,6,7,8)         ← 继续偏移其余各条边线

偏移完成的外圈边框。

绘图过程中可以用鼠标的滚轮缩放视图,或者用带比例因子的 ZOOM,让对象始终保持在屏幕上。

Step 7

用 FILLET(圆角)清理角点。把半径设为 0,FILLET 就会把两条不相接的线精确延长相交——这就是前面 OFFSET 小节提到的组合技:

Command: FILLET
Current settings: Mode = Trim, Radius = <5.0000>
Select first object or [Undo/Polyline/Radius/Trim/Multiple]: r
Specify fillet radius: 0                      ← 半径设为 0
Select first object or [Undo/...Multiple]: (pick 1)   ← 选第一条边
Specify second object: (pick 2)               ← 选第二条边

对全部四个角点执行 FILLET。

Step 7:用 FILLET 半径 0 清理四个角点。

圆角处理后的角部效果——两条边精确相交。

Step 8

用 EXTEND 把外侧一圈石板的线条补齐(延伸到边界),形成完整的边框。

Step 8:用 EXTEND 延伸边框线条。

Command: EXTEND
Current settings ...edges...
Select objects: (pick 1 to 4)                 ← 选 1 到 4 号对象作为边界
Select objects:                               ← 回车确认
Select object to extend or [Project/Edge/Undo]: F     ← 用 Fence 选择要延伸的对象
Specify first fence point: (pick 5)           ← 栅栏第一点
Specify next fence point or [Undo]:
(pick 6, 7, 8)                                ← 栅栏继续
Specify next fence point or [Undo]:(9, 10, 11, 12)
Specify next fence point or [Undo]:           ← 回车结束栅栏
Select object to extend or [Project/Edge/Undo]:       ← 回车结束命令

用栅栏一次选中所有要延伸的线段。

延伸完成后的边框图形。

最后用 STRETCH 把右侧的石板向外拉伸 2 个单位:

Command: STRETCH
Select objects to stretch by
crossing-window or polygon...
Select objects: C                             ← C 即 Crossing,交叉窗口
First corner: (pick 1)                        ← 交叉窗口第一角
Other corner: (pick 2)                        ← 对角
Select objects:                               ← 回车结束选择
Specify base point or displacement: (pick 3)  ← 基点
Specify second point of displacement: @1,0    ← 相对坐标位移 @1,0

用 STRETCH 交叉窗口框住右侧石板并拉伸。

完成后的热水浴池外部区域:包含 2×2、2×3 和 2×5 三种规格的石板。

Exercise 4a Practice

用本章的 Modify 命令完成这些零件图。按 1=1(原型)比例绘制。注意:页面上的零件图并未按实际比例印刷。

习题 4a 练习图形。

Exercise 4b Practice

绘制这些对象时,OFFSET 和 ARRAY 会派上大用场。

习题 4b:喷嘴(Nozzle)零件图。

Exercise 4 Architectural

用 OFFSET 布置墙体的 LINE(墙线成对平行,OFFSET 是最快的画法),再用半径 0 的 FILLET 清理墙线交角。窗户尺寸见第 137 页的一层平面图。剖面 A-A 见第 117 页。

习题 4 建筑图:工作平面图参考。

背景知识速览:**表现图(Presentation Drawings)**是用来向客户推销设计方案的;**施工图(Working Drawings)**则是给施工队用的。尺寸标注从框架外侧量起,因为木工是第一手使用者。外墙为 6 英寸立柱墙,外加 4 到 10 英寸的饰面。

Exercise 4a Mechanical

用对页的命令画出这个齿轮。保存文件,以便以后为它标注尺寸。

习题 4a 机械:齿轮与轮齿(TOOTH)细节。

Exercise 4b Mechanical

作图步骤提示:

a. 画出第一条线; b. 按指定距离 OFFSET; c. 添加底线和顶线; d. OFFSET 到顶部; e. 用半径 0 的 FILLET 清理两端; f. ARRAY 阵列。

习题 4b 机械的分步作图示意。

Exercise 4 Challenger

这是一个有趣的零件,以后你还可以把它建模成 3D 模型。

习题 4 挑战题零件图。

挑战题零件的另一个视图。

挑战题零件的第三视图。

✅ 自测一下

  1. 本章中 OSNAP 与 OTRACK 的区别是什么?
  2. 为什么图层(LAYER)是 AutoCAD 组织图形的核心机制?
  3. 相对坐标与极坐标输入分别在什么场景下最方便?
  4. WBLOCK 与 BLOCK 的本质差别是什么?
  5. Paper Space(图纸空间)解决了模型空间的什么痛点?