许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  AutoCAD自己写PAT填充图案,手把手教你弄

AutoCAD自己写PAT填充图案,手把手教你弄

阅读数 5
点赞 0
article_banner


AutoCAD 自定义填充图案(PAT)保姆级教程

本教程由本次 HW805 断层角砾岩图案的完整排查过程沉淀而成,覆盖"报错诊断 → 原理认知 → VLISP 生成 → 部署加载 → 故障速查"全流程,可作为以后处理公司其他 PAT 图案的通用手册。


一、本次问题复盘(先记住结论)

核心经验:能用 LISP 生成就不要手工用记事本编辑;能换新名字就不要与旧文件重名。

二、PAT 文件规范速查(必须烂熟于心的硬性规则)

以下规则来自 Autodesk 官方文档,违反任意一条都会导致加载失败或"图案错误":

三、VLISP 生成法 · 保姆级流程(核心章节)

为什么用 VLISP 而不用记事本?因为 LISP 通过 open/write-line 函数写文件,能自动保证 ANSI 编码、CRLF 换行、末尾空行——把手工编辑最容易翻车的三件事一次性锁死。

第 1 步:准备工作

  • 打开 AutoCAD,新建或打开一张图纸,并保存到一个你有写权限的文件夹(比如 D:\工作\)。 原因:脚本会把 .pat 生成到 (getvar "DWGPREFIX") 即当前图纸所在目录。
  • 确认你能看到文件扩展名(文件资源管理器 → 查看 → 勾选"文件扩展名")。

第 2 步:打开 Visual LISP 编辑器

三种方式任选其一:

第 3 步:新建源码文件

在 VLISP 编辑器中:菜单"文件(File)" → "新建文件(New File)",出现空白编辑窗口。

第 4 步:粘贴生成代码

把下面这段通用模板粘贴进去(以 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 版本见第五节附录。 关键代码解读:

第 5 步:加载代码

在 VLISP 编辑器中:

  • 菜单"工具(Tools)" → "加载编辑器中的代码(Load Code in Editor)"
  • 或直接点击工具栏上的"加载活动编辑窗口"按钮
  • 加载成功后,VLISP 底部控制台会显示 #<...> 或无报错提示

第 6 步:切换回 AutoCAD 执行命令

  • 按 Alt+W 然后 A,或点击 VLISP 工具栏的"激活 AutoCAD"按钮
  • 在 AutoCAD 命令行输入:MKHW805 回车
  • 命令行会打印出文件的完整生成路径,务必记下来

第 7 步:完全重启 AutoCAD

  • 彻底退出 acad.exe(任务管理器确认无残留进程),不只是关闭图纸
  • 原因:图案文件在启动时读取并缓存,不重启会读到旧定义

第 8 步:验证生成是否成功

重启后,命令行先做两步验证:

代码块

lisp


     自动换行
   


     复制代码
   

12


(findfile "HW805.pat")


      复制成功
     
     
     
     
  • 若返回的路径 = 第 6 步打印的路径 → 文件已就位 ✅
  • 若返回别的路径 → 磁盘上还有同名旧文件抢了优先级,见第四节排查 然后画一个不小于 30×30 的矩形,用命令行方式测试:
  • 代码块
  • PlainText

  •      自动换行
       

  •      复制代码
       
  • 12
-HATCH → 拾取内部点 → 特性(T) → 图案(P) → 输入 HW805 → 比例 1 → 角度 0


      复制成功
     
     
     
     

不弹"图案错误"、矩形内出现按 10×10 周期平铺的符号 → 大功告成。

第 9 步:部署到全局(可选)

要让所有图纸都能用,把生成的 HW805.pat 复制到:

代码块

PlainText


     自动换行
   


     复制代码
   

12


C:\Program Files\Autodesk\AutoCAD 2024\Support\


      复制成功
     
     
     
     

代码块

PlainText


     自动换行
   


     复制代码
   

12


C:\Users\你的用户名\AppData\Roaming\Autodesk\AutoCAD 2024\Rxx.x\chs\Support\


      复制成功
     
     
     
     

(后者是官方推荐的自定义图案目录)复制需管理员权限。

四、故障速查表(遇到问题先翻这里)



五、附录:HW805 完整 VLISP 生成脚本(可直接复制使用)

代码块

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 文件提取数据行的小技巧

  1. 用记事本打开原始 .pat(只是查看,不保存)
  2. 复制首行 * 之后的所有数据行
  3. 在 VLISP 里每行前后手动加英文双引号 ",行尾加逗号 ,(最后一行不加)
  4. 或者:先粘贴到 Excel 一列,旁边一列用公式 =""""&A1&"""," 自动加引号逗号,再整体粘回 LISP


七、最佳实践清单(打印贴墙上)

新图案一律用 VLISP 生成,不用记事本手工建文件 ✅ 改完/换完 .pat 必须完全退出 AutoCAD 重启测试一律用 -HATCH 命令行方式,报错信息更直接 ✅ 测试矩形不小于 30×30,比例 1,角度 0遇到莫名报错先换新名字试,斩断缓存干扰 ✅ HPQUICKPREVIEW 设 0 关闭快速预览,避免"预览≠实际"的困惑 ✅ 用 (findfile "XXX.pat") 一招定位 AutoCAD 实际在读哪个文件不要再往 acad.pat / acadiso.pat 里追加自定义图案——独立 .pat 文件更易管理 ✅ 把本教程存成书签,下次直接翻第四节速查表

一句话心法:PAT 报错十有八九出在"文件封装层"而不是"图案数据层",用 VLISP 让 AutoCAD 自己写出文件 + 起新名字避开缓存,可以解决 95% 的疑难杂症。


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空