本教程由本次 HW805 断层角砾岩图案的完整排查过程沉淀而成,覆盖"报错诊断 → 原理认知 → VLISP 生成 → 部署加载 → 故障速查"全流程,可作为以后处理公司其他 PAT 图案的通用手册。
为什么用 VLISP 而不用记事本?因为 LISP 通过 open/write-line 函数写文件,能自动保证 ANSI 编码、CRLF 换行、末尾空行——把手工编辑最容易翻车的三件事一次性锁死。
三种方式任选其一:
在 VLISP 编辑器中:菜单"文件(File)" → "新建文件(New File)",出现空白编辑窗口。
把下面这段通用模板粘贴进去(以 HW805 为例,你要做其他图案时只需替换其中的字符串列表,见第六节的"如何替换"):
代码块
lisp
自动换行
复制代码
123456789101112131415161718
(defun c:MKHW805 (/ f p)
(setq p (strcat (getvar "DWGPREFIX") "HW805.pat"))
(setq f (open p "w"))
(foreach s (list
"*HW805,FAULT BRECCIA"
"206.565,7.75,3.25,8.9443,-4.4721,0.559,-21.8017"
"270,7.25,3,0,10,0.5,-9.5"
;; ... 这里依次粘贴所有图案行,每行一个字符串,用双引号包住,行尾逗号分隔
"341.565,9.2547,9.8155,-9.4868,-3.1623,0.7906,-30.8322"
)
(write-line s f)
)
(write-line "" f) ;; ← 末尾空行,必不可少!
(close f)
(princ (strcat "\n文件已生成: " p))
(princ)
)
复制成功
完整 60 行 HW805 版本见第五节附录。 关键代码解读:
在 VLISP 编辑器中:
重启后,命令行先做两步验证:
代码块
lisp
自动换行
复制代码
12
(findfile "HW805.pat")
复制成功
-HATCH → 拾取内部点 → 特性(T) → 图案(P) → 输入 HW805 → 比例 1 → 角度 0
复制成功
不弹"图案错误"、矩形内出现按 10×10 周期平铺的符号 → 大功告成。
要让所有图纸都能用,把生成的 HW805.pat 复制到:
代码块
PlainText
自动换行
复制代码
12
C:\Program Files\Autodesk\AutoCAD 2024\Support\
复制成功
或
代码块
PlainText
自动换行
复制代码
12
C:\Users\你的用户名\AppData\Roaming\Autodesk\AutoCAD 2024\Rxx.x\chs\Support\
复制成功
代码块
lisp
自动换行
复制代码
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
(defun c:MKHW805 (/ f p)
(setq p (strcat (getvar "DWGPREFIX") "HW805.pat"))
(setq f (open p "w"))
(foreach s (list
"*HW805,FAULT BRECCIA"
"206.565,7.75,3.25,8.9443,-4.4721,0.559,-21.8017"
"270,7.25,3,0,10,0.5,-9.5"
"206.565,7.25,2.5,8.9443,-4.4721,0.559,-21.8017"
"225,7.75,7.75,7.0711,-7.0711,0.7071,-13.435"
"108.435,7.25,7.25,9.4868,-3.1623,0.7906,-30.8322"
"341.565,7,8,-9.4868,-3.1623,0.7906,-30.8322"
"206.565,4.75,5.25,8.9443,-4.4721,0.559,-21.8017"
"270,4.25,5,0,10,0.5,-9.5"
"206.565,4.25,4.5,8.9443,-4.4721,0.559,-21.8017"
"206.565,2.75,3.25,8.9443,-4.4721,0.559,-21.8017"
"270,2.25,3,0,10,0.5,-9.5"
"206.565,2.25,2.5,8.9443,-4.4721,0.559,-21.8017"
"225,1.75,1.75,7.0711,-7.0711,0.7071,-13.435"
"108.435,1.25,1.25,9.4868,-3.1623,0.7906,-30.8322"
"341.565,1,2,-9.4868,-3.1623,0.7906,-30.8322"
"206.565,1,1.25,8.9443,-4.4721,0.559,-21.8017"
"270,0.5,1,0,10,0.5,-9.5"
"206.565,0.5,0.5,8.9443,-4.4721,0.559,-21.8017"
"225,6.75,1.75,7.0711,-7.0711,0.7071,-13.435"
"108.435,6.25,1.25,9.4868,-3.1623,0.7906,-30.8322"
"341.565,6,2,-9.4868,-3.1623,0.7906,-30.8322"
"206.565,5.75,1.25,8.9443,-4.4721,0.559,-21.8017"
"270,5.25,1,0,10,0.5,-9.5"
"206.565,5.25,0.5,8.9443,-4.4721,0.559,-21.8017"
"225,3.75,3.75,7.0711,-7.0711,0.7071,-13.435"
"108.435,3.25,3.25,9.4868,-3.1623,0.7906,-30.8322"
"341.565,3,4,-9.4868,-3.1623,0.7906,-30.8322"
"225,2.75,7.75,7.0711,-7.0711,0.7071,-13.435"
"108.435,2.25,7.25,9.4868,-3.1623,0.7906,-30.8322"
"341.565,2,8,-9.4868,-3.1623,0.7906,-30.8322"
"206.565,1.75,7.25,8.9443,-4.4721,0.559,-21.8017"
"270,1.25,7,0,10,0.5,-9.5"
"206.565,1.25,6.5,8.9443,-4.4721,0.559,-21.8017"
"225,0.75,5.75,7.0711,-7.0711,0.7071,-13.435"
"108.435,0.25,5.25,9.4868,-3.1623,0.7906,-30.8322"
"341.565,0,6,-9.4868,-3.1623,0.7906,-30.8322"
"206.565,4,9.25,8.9443,-4.4721,0.559,-21.8017"
"270,3.5,9,0,10,0.5,-9.5"
"206.565,3.5,8.5,8.9443,-4.4721,0.559,-21.8017"
"206.565,6.75,7.25,8.9443,-4.4721,0.559,-21.8017"
"270,6.25,7,0,10,0.5,-9.5"
"206.565,6.25,6.5,8.9443,-4.4721,0.559,-21.8017"
"225,5.75,5.75,7.0711,-7.0711,0.7071,-13.435"
"108.435,5.25,5.25,9.4868,-3.1623,0.7906,-30.8322"
"341.565,5,6,-9.4868,-3.1623,0.7906,-30.8322"
"225,5,9.75,7.0711,-7.0711,0.7071,-13.435"
"108.435,4.5,9.25,9.4868,-3.1623,0.7906,-30.8322"
"341.565,4.25,10,-9.4868,-3.1623,0.7906,-30.8322"
"206.565,9.75,5.25,8.9443,-4.4721,0.559,-21.8017"
"270,9.25,5,0,10,0.5,-9.5"
"206.565,9.25,4.5,8.9443,-4.4721,0.559,-21.8017"
"225,8.75,3.75,7.0711,-7.0711,0.7071,-13.435"
"108.435,8.25,3.25,9.4868,-3.1623,0.7906,-30.8322"
"341.565,8,4,-9.4868,-3.1623,0.7906,-30.8322"
"206.565,9,9.25,8.9443,-4.4721,0.559,-21.8017"
"270,8.5,9,0,10,0.5,-9.5"
"206.565,8.5,8.5,8.9443,-4.4721,0.559,-21.8017"
"225,10.0047,9.5655,7.0711,-7.0711,0.7071,-13.435"
"108.435,9.5047,9.0655,9.4868,-3.1623,0.7906,-30.8322"
"341.565,9.2547,9.8155,-9.4868,-3.1623,0.7906,-30.8322"
)
(write-line s f)
)
(write-line "" f)
(close f)
(princ (strcat "\n文件已生成: " p))
(princ)
)
复制成功
拿任何一个新图案(比如 B012 砂状凝灰岩),只需改三处:
代码块
lisp
自动换行
复制代码
1234567891011121314151617
(defun c:MK_B012 (/ f p) ; ← ① 改命令名
(setq p (strcat (getvar "DWGPREFIX") "B012.pat")) ; ← ② 改文件名
(setq f (open p "w"))
(foreach s (list
"*B012,SANDY TUFF" ; ← ③ 改首行(建议描述用ASCII)
"在此粘贴图案第2行数据"
"在此粘贴图案第3行数据"
;; ... 依次列出全部数据行
)
(write-line s f)
)
(write-line "" f)
(close f)
(princ (strcat "\n文件已生成: " p))
(princ)
)
复制成功
从原始 .pat 文件提取数据行的小技巧:
一句话心法:PAT 报错十有八九出在"文件封装层"而不是"图案数据层",用 VLISP 让 AutoCAD 自己写出文件 + 起新名字避开缓存,可以解决 95% 的疑难杂症。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删