AutoCAD 排版脚本 · 功能与命令速查¶
适用范围:AutoLISP 脚本,面向 CAD 图纸中的文字译前预处理和译后文字调整。
脚本目录:Scripts(共 21 个提供功能的.lsp文件,清单见文末「附一」)。
加载与使用¶
- 用
APPLOAD加载Scripts文件夹内的.lsp文件;建议把常用脚本一起加入「启动组」,或把Scripts文件夹加入 AutoCAD 支持文件搜索路径。 - 除特别注明外,多数命令采用 先选中对象、再输入命令 的操作方式。
- 命令名即上表所列的完整命令名(如
ARRANGEADTP、SELECTADTPALL),在命令行直接输入即可。 - 术语约定:
- Adtp 样式:译文文字。
- 原文:位于译文上方、样式名非 Adtp 的其他单行/多行文字。
一、Adtp 译文相关¶
1. 选择 Adtp 译文及其上方原文(selectadtpall.lsp)¶
先选中「译文 + 其上方原文」所在区域,命令会把样式为 adtp 的文字选出,同时把每个译文上方 3 倍字高、左右 2 倍字高范围内最近的其他样式文字一并选中。
| 命令 | 功能 |
|---|---|
SELECTADTPALL |
选中全部 adtp 单行+多行译文,并各自连带选中其上方最近原文 |
SELECTADTPALLT |
同上,译文仅限单行文字(TEXT) |
SELECTADTPALLM |
同上,译文仅限多行文字(MTEXT) |
2. 译文自身居中并对齐原文中心(ADTPCENTERX.lsp)¶
把每个 adtp 译文的自身对齐方式改为居中——单行文字为水平居中、多行文字为中上对齐——并移动译文,使其「文字横向中心」(文字的实际几何中心,而非插入点)贴齐其上方 3 倍字高范围内最近原文的文字横向中心;Y 坐标不变。
| 命令 | 功能 |
|---|---|
ADTPCENTERX |
处理选中区域内的全部 adtp 译文(单行+多行) |
ADTPCENTERXT |
同上,仅处理单行译文(TEXT) |
ADTPCENTERXM |
同上,仅处理多行译文(MTEXT) |
3. 筛选 Adtp 样式文字(selectadtp.lsp)¶
在已选中的对象里筛选出指定样式的文字并重新设为选中状态。
| 命令 | 功能 |
|---|---|
SELECTADTP |
从当前选中对象中筛选样式名为 adtp 的单行+多行文字 |
SELECTADTPT |
同上,仅筛选 adtp 单行文字(TEXT) |
SELECTADTPM |
同上,仅筛选 adtp 多行文字(MTEXT) |
SELECTTEXTBYSTYLE |
按命令行提示输入任意样式名,筛选该样式的文字 |
4. 筛选「因框宽自动折行」的 Adtp 多行文字(SelectAdtpMWrap.lsp)¶
从所选文字中挑出因固定框宽自动折行成两行及以上的 adtp 多行文字,并把它们设为当前选中集。判断条件(需全部满足):对象为 MTEXT、样式名为 adtp、内容不含手写换行符 \P、有固定框宽(> 0),且把文字复制一份并取消宽度限制后,原文字沿「行叠排方向」的跨度大于取消宽度后的 1.5 倍。对文字旋转 0°/90°/任意角度均适用。
| 命令 | 功能 |
|---|---|
SELECTADTPMWRAP |
选中因固定框宽自动折行(≥2 行)的 adtp 多行文字 |
5. Adtp 文字字高缩放(adtp20off.lsp / adtp20up.lsp)¶
对选中对象中的 adtp 单行/多行文字整体缩放字高,支持进入块定义处理嵌套文本。
| 命令 | 功能 |
|---|---|
ADTP20OFF |
将选中对象(含块内嵌套)中 adtp 文字字高缩小至原高度的 80% |
ADTP20UP |
将选中对象(含块内嵌套)中 adtp 文字字高放大至原高度的 120% |
6. 修正 Adtp 样式名(FixAdtpStyle.lsp)¶
扫描整张图纸(模型空间、布局及所有块),把样式名为「Adtp+纯数字」(如 Adtp1、Adtp2)的文字统一修正为正式样式 Adtp;若该样式不存在会自动创建。
| 命令 | 功能 |
|---|---|
FIXADTPSTYLE |
全图修正 Adtp+数字 样式为正式 Adtp 样式 |
二、译文行位置与重叠消除¶
7. 译文等间距重排、消除重叠(ArrangeAdtp.lsp)¶
同一栏的译文上下行距忽大忽小、甚至互相压字时使用。框选一栏(或一整块)的 adtp 译文后运行命令,译文会保持原有的上下先后顺序,自动重新排布到互不重叠。左右位置不变,不会跑出原来所在的栏位。只有 adtp 样式的文字会被处理,选区里的直线等其他对象自动忽略。
| 命令 | 功能 |
|---|---|
ARRANGEADTP |
译文在框选范围内上下均匀分布、互不重叠;上下两端仍保持在原选区范围内(空间不够时会提示) |
ARRANGEADTP20 |
从最上面一条译文起依次向下紧排,条与条之间只留一点空隙,排列更紧凑,整列可能超出行框范围 |
8. 多行文字上移贴近横线(MTNearUpLine.lsp)¶
用于把折行成两行及以上的多行文字整体上移,贴到它上方那条横线的下面(例如表格单元格里文字离横线太远、需要往上顶的情况)。框选「文字 + 横线」后运行命令:命令会自动找到文字正上方最近的横线,把文字上移到位,贴近但不压到横线;左右位置不变。只有折行成多行的文字会被移动,单行文字不受影响,也不限文字样式。
| 命令 | 功能 |
|---|---|
MTNEARUPLINE |
把折行成两行及以上的多行文字上移贴到上方横线下(左右位置不变) |
三、通用文字批量调整¶
9. 任意文字字高缩放(text20off.lsp / text20up.lsp)¶
与 adtp 专用版不同,这两个命令对选中的全部单行/多行文字生效,不限样式(也不进入块内)。
| 命令 | 功能 |
|---|---|
TEXT20OFF |
将选中文字(不限样式)字高缩小至原高度的 80% |
TEXT20UP |
将选中文字(不限样式)字高放大至原高度的 120% |
10. 文字统一对齐并按 X 对齐(TXMATCHX.lsp)¶
运行后按提示选择统一对齐方式(左 / 中 / 右),命令会把所选文字统一为该对齐方式,再让所有文字的对齐点 X 对齐到其中位置最高文字的 X。
| 命令 | 功能 |
|---|---|
TXMATCHX |
所选文字统一为 左/中/右 对齐,并按最高文字的 X 竖线对齐 |
11. 多行文字行距设置(MTLineSpace.lsp)¶
批量清除多行文字原有行距设置后,按输入的行距系数重新设置。
| 命令 | 功能 |
|---|---|
MTLINESPACE |
输入行距系数(如 1.2、1.5),统一重设所选多行文字行距 |
12. 单行文字转多行文字(TextToMText.lsp / TextToMTextTC.lsp)¶
两个脚本都是把 TEXT 转成 MTEXT 并保留原外观,区别在于转换后的多行文字附着方式。
| 命令 | 功能 |
|---|---|
TEXTTOMTEXT |
将所选单行文字(TEXT)转为多行文字(MTEXT),保留位置、字高、颜色、样式、图层及对齐语义 |
T2M |
将文字统一为中上对齐:单行文字转为多行文字(宽度保持原显示宽度),已是多行文字的只改为中上对齐点 |
四、文字合并¶
13. 简单横向合并(MERGETEXT.lsp)¶
把所选文字按从左到右的顺序合并到最左侧的文字中(内容直接连接),并删除其余文字对象;保留最左侧对象的位置、图层、颜色与样式。
| 命令 | 功能 |
|---|---|
MERGETEXT |
将选中文字从左到右合并到最左侧一个文字内 |
14. 按视觉行合并段落(MergeTextLines.lsp)¶
自动按 Y 坐标把选中的文字划分成若干「视觉行」(行判定容差 = 行首对象字高 × 0.7,系数可由全局变量 mrgline-tol-factor 调整),再对每一行按 X 从左到右合并到该行最左侧文字,并删除该行其余对象;各行互不干扰。
| 命令 | 功能 |
|---|---|
MERGETEXTLINES |
选中断开的段落文字,按行自动合并,内容落到每行最左侧 |
五、按文字内容处理¶
15. 选择相同文字(SelectSame.lsp)¶
选中一个或多个文字后,命令会在全图中选中所有内容与之完全相同的单行/多行文字(比较前自动去除 MTEXT 格式代码,TEXT 与 MTEXT 可互相匹配)。
| 命令 | 功能 |
|---|---|
SELECTSAME |
全图选中与当前所选文字内容完全相同的文字 |
16. 选择含剪贴板文字(SelectClip.lsp)¶
先复制一段文字到剪贴板,命令会遍历全图,选中所有文字内容中包含剪贴板文字的单行/多行文字;剪贴板若含多行,则按行拆分、包含任意一行即选中。
| 命令 | 功能 |
|---|---|
SELECTCLIP |
全图选中内容包含剪贴板文字的文字对象 |
17. 重复文字标红(DupTextRed.lsp)¶
遍历所选单行/多行文字,去掉 MTEXT 格式控制码后按内容查重:整段内容与所选范围内另一个文字对象完全相同(部分相同不算)即视为重复,统一改为红色(颜色号 1);空内容不参与判断。仅改颜色、不改坐标,所选范围之外的文字不参与比较。
| 命令 | 功能 |
|---|---|
DUPTEXTRED |
把选区内内容完全重复的文字改为红色 |
六、打印设置¶
18. A3 横向 PDF 打印设置(PrintSelPDF.lsp)¶
将当前布局的默认打印参数统一设为:DWG To PDF.pc3 绘图仪、monochrome.ctb 单色打印样式表、ISO full bleed A3 横向、窗口范围、居中打印、布满图纸。之后在打印对话框中框选要打印的窗口即可。
| 命令 | 功能 |
|---|---|
PDFSET |
把当前布局默认打印设置改为 A3 横向单色 PDF |
附一、脚本文件清单¶
| 文件名 | 命令 | 一句话功能 |
|---|---|---|
adtp20off.lsp |
ADTP20OFF |
adtp 文字字高缩小 80%(含块内嵌套) |
adtp20up.lsp |
ADTP20UP |
adtp 文字字高放大 120%(含块内嵌套) |
ADTPCENTERX.lsp |
ADTPCENTERX / ADTPCENTERXT / ADTPCENTERXM |
译文居中并横向对齐原文中心 X |
ArrangeAdtp.lsp |
ARRANGEADTP / ARRANGEADTP20 |
adtp 译文等间距重排、消除重叠(仅 Y 轴,X 不变) |
DupTextRed.lsp |
DUPTEXTRED |
选区内内容完全重复的文字改为红色 |
FixAdtpStyle.lsp |
FIXADTPSTYLE |
全图把 Adtp+数字 样式修正为 Adtp |
MERGETEXT.lsp |
MERGETEXT |
所选文字从左到右合并到最左侧 |
MergeTextLines.lsp |
MERGETEXTLINES |
按 Y 坐标分行,逐行从左到右合并 |
MTLineSpace.lsp |
MTLINESPACE |
按输入系数统一重设多行文字行距 |
MTNearUpLine.lsp |
MTNEARUPLINE |
超一行的多行文字上移贴近上方横线 |
PrintSelPDF.lsp |
PDFSET |
当前布局设为 A3 横向单色 PDF 打印 |
selectadtp.lsp |
SELECTADTP / SELECTADTPT / SELECTADTPM / SELECTTEXTBYSTYLE |
按样式名筛选文字 |
selectadtpall.lsp |
SELECTADTPALL / SELECTADTPALLT / SELECTADTPALLM |
选 adtp 译文及其上方邻近原文 |
SelectAdtpMWrap.lsp |
SELECTADTPMWRAP |
选因固定框宽自动折行(≥2 行)的 adtp 多行文字 |
SelectClip.lsp |
SELECTCLIP |
全图选含剪贴板文字的文字 |
SelectSame.lsp |
SELECTSAME |
全图选与所选内容完全相同的文字 |
text20off.lsp |
TEXT20OFF |
选中文字(不限样式)字高缩小 80% |
text20up.lsp |
TEXT20UP |
选中文字(不限样式)字高放大 120% |
TextToMText.lsp |
TEXTOMTEXT |
TEXT 转 MTEXT,保留位置/字高/颜色/样式/图层 |
TextToMTextTC.lsp |
T2M |
文字统一为中上对齐(TEXT 转为 MTEXT) |
TXMATCHX.lsp |
TXMATCHX |
文字统一对齐方式并按最高文字 X 对齐 |
附二、常用组合示例¶
- 译文对齐:框选「译文 + 其上方原文」区域 → 运行
SELECTADTPALL一次选全译文及其原文 → 运行ADTPCENTERX,译文自动改为居中/中上对齐并贴齐各原文中心。 - 译文列消重叠重排:框选一列 adtp 译文 → 运行
ARRANGEADTP(在框选范围内均匀分布,不超出选区)或ARRANGEADTP20(自上而下紧凑排列);若还需让译文贴近上方横线,再运行MTNEARUPLINE。 - 查重处理:框选待检查区域 → 运行
DUPTEXTRED把内容完全重复的文字标红 → 再用SELECTSAME按需定位全图同类文字。