ARTICLE · 1355928
AutoCAD批量导入PDF插件(二)
上一期我们做了 INPDF,把 PDF 批量导入 AutoCAD。很多人导入后遇到的第一个问题是:
图是进来了,但比例不对。例如,PDF 里量一段标注是 1200,图纸上写的却是 5000。
手动缩放要算比例、记小数、反复试,很容易出错,对齐缩放又有操作繁琐的问题。
为此这里提供一个 LISP 工具:定值缩放。选对象、点两点确定原始距离、输入目标长度,程序自动算比例并缩放。

使用步骤
1. 保存源码
把文末完整源码复制,保存为 DSC.lsp。如果中文显示乱码,可将文件另存为 ANSI/GBK 编码。
2. 加载插件
在 AutoCAD 中输入 APPLOAD,选择 DSC.lsp 加载。加载后命令行不会有额外提示,直接输入命令即可。
3. 运行命令
命令行输入:DSC
4. 选择对象
命令行提示选择对象,框选或点选需要缩放的全部图形,回车确认。未选择对象直接回车,命令会提示“未选择对象”并结束。
5. 指定第一点(基点)
在图形上点击一个点作为缩放基点。这个点是缩放时保持不动的参考点,通常选对象上某个角点或关键定位点。
6. 指定第二点(确定原始距离)
以刚才的基点为起点,再点一个点,两点连线就是当前的实际长度。例如 PDF 图上标注写着 1200 的那一段,就点这段的两个端点。
7. 核对原始距离
命令行会显示:原始距离 = 3756.42输入目标长度 <3756.42>:先看一眼这个数值,确认你点的两点确实是要校准的那一段。
8. 输入目标长度
直接输入你希望这段距离变成的长度,例如:1200
回车后,程序自动计算比例并执行缩放,命令行提示 ”定值缩放完成”。
如果这一步直接回车,则使用原始距离,比例 1:1,对象不会变化。
9. 检查结果
用 DIST 或标注命令量一下刚校准的那一段,应该正好等于你输入的目标长度。确认无误后,再继续处理其余图形。
典型使用场景
参数说明
完整源码
复制以下代码,保存为 DSC.lsp(特别注意,要打开扩展名显示才能正常更改),用 APPLOAD 加载,命令:DSC。
;;; 定值缩放 - 以两点参考距离和目标长度缩放对象;;; 命令: 定值缩放;;; 功能: 选择对象,指定第一点(基点)和第二点(参考距离),输入目标长度,;;; 程序自动计算比例并缩放。;;; BY:麻瓜工坊。(defun c:dsc (/ ss p1 p2 dist1 target_dist scale_factor);; 关闭命令回显(setvar "cmdecho" 0);; 选择对象(setq ss (ssget))(if (null ss)(progn(princ "\n未选择对象,命令结束。")(setvar "cmdecho" 1)(exit)));; 获取第一点(基点)(setq p1 (getpoint "\n指定第一点(作为基点): "))(if (null p1)(progn(princ "\n未指定基点,命令结束。")(setvar "cmdecho" 1)(exit)));; 获取第二点(确定参考距离)(setq p2 (getpoint p1 "\n指定第二点(确定原始距离): "))(if (null p2)(progn(princ "\n未指定第二点,命令结束。")(setvar "cmdecho" 1)(exit)));; 计算原始距离(setq dist1 (distance p1 p2))(if (equal dist1 0.0 1e-8)(progn(princ "\n两点重合,无法计算比例。")(setvar "cmdecho" 1)(exit)));; 显示原始距离并提示输入目标长度(princ (strcat "\n原始距离 = " (rtos dist1 2 2)))(setq target_dist (getdist p1 (strcat "\n输入目标长度 <" (rtos dist1 22) ">: ")));; 如果用户直接回车,使用原始距离(即不缩放)(if (null target_dist)(setq target_dist dist1));; 检查目标长度是否为零(if (equal target_dist 0.0 1e-8)(progn(princ "\n目标长度为零,无法缩放。")(setvar "cmdecho" 1)(exit)));; 计算比例因子并执行缩放(setq scale_factor (/ target_dist dist1))(command "scale" ss "" p1 scale_factor);; 恢复命令回显(setvar "cmdecho" 1)(princ "\n定值缩放完成。")(princ));; 加载时自动注册命令(princ)
功能特点
两点定参考:在对象上点两点确定“现在有多长”,不需要自己量。
直接输入目标长度:想要 5000 就输 5000,程序自动算比例。
自动显示原始距离:输入目标长度前,命令行会先告诉你当前距离,方便核对。
回车即不缩放:目标长度直接回车,等于按原距离缩放,比例 1:1,不会误操作。
异常保护:未选对象、未指定点、两点重合、目标长度为零,都会给出提示并安全退出。
纯 LISP 单文件:复制保存、
APPLOAD加载即可,无额外依赖。
适用版本:AutoCAD 各版本通用(仅使用基础 AutoLISP 函数)。















































































