AutoCAD AutoLISP entmake函数如何深度解析创建标注样式(DIMSTYLE)的详细过程?
摘要:前言 在 AutoCAD 二次开发中,entmake 函数相比 command 命令具有三大核心优势: 高效性:直接操作图形数据库,避免交互式命令延迟 稳定性:消除命令行参数解析导致的不可控错误 精确性:支持完整 DXF 组码配置,实现像素
前言
在 AutoCAD 二次开发中,entmake 函数相比 command 命令具有三大核心优势:
高效性:直接操作图形数据库,避免交互式命令延迟
稳定性:消除命令行参数解析导致的不可控错误
精确性:支持完整 DXF 组码配置,实现像素级样式控制
本文深度解析使用 entmake 创建标注样式的关键技术细节,包含:
必须组码的最小集合与完整参数模板
未文档化组码(49/50/69 等)的实战应用
箭头样式等特殊参数的解决方案
全量 DXF 组码对照表(含类型/默认值/LISP 适配说明)
阅读本文后,您将能够:
通过代码批量生成符合企业标准的标注样式
精准修改现有标注参数配置
开发自动化标注工具插件
规避官方文档未说明的兼容性问题
基于 AutoCAD 2023/2025 实测数据,适用于需要高效定制 CAD 标注系统的开发者。
entmake 创建标注样式所需的最小组码列表
经测试必须包含以下组码,才能成功创建标注样式(未指定的组码均为默认值):
(entmake
(list
(cons 0 "DIMSTYLE") ; 图元类型
(cons 100 "AcDbSymbolTableRecord") ; 子类标记
(cons 100 "AcDbDimStyleTableRecord") ; 子类标记
(cons 2 "my-style") ; 标注样式名称
(cons 70 0) ; 标准标记值(必须项)
)
)
(*测试环境:AutoCAD 2023/2025)
实际创建标注样式时,可根据需要自行增加配置项。
包含全部 DXF 组码的代码示例
(entmake
(list
(cons 0 "DIMSTYLE") ; 图元类型
(cons 100 "AcDbSymbolTableRecord") ; 子类标记
(cons 100 "AcDbDimStyleTableRecord") ; 子类标记
(cons 2 "my-style") ; 标注样式名称
(cons 70 0) ; 标准标记值(必须项,和下文文字背景颜色的组码数字相同,功能不同)
;; -------------------------------
;; DXF帮助中展示的组码,和对应的系统变量
;; -------------------------------
(cons 3 "") ; DIMPOST—为标注测量值指定文字前缀或后缀(或两者)。
(cons 4 "") ; DIMAPOST—指定用于所有标注类型(角度标注除外)的换算标注测量值的文字前缀或后缀(或两者都指定)。
;; (cons 5 "") ; DIMBLK—【已废弃】现在为对象 ID
;; (cons 6 "") ; DIMBLK1—【已废弃】现在为对象 ID
;; (cons 7 "") ; DIMBLK2—【已废弃】现在为对象 ID
(cons 40 1) ; DIMSCALE—设置应用于标注变量(用于指定尺寸、距离或偏移量)的全局比例因子。
(cons 41 60) ; DIMASZ—控制尺寸线和引线箭头的大小。并控制基线的大小。
(cons 42 0) ; DIMEXO—指定尺寸界线偏离原点的距离。
(cons 43 200) ; DIMDLI—控制基线标注中尺寸线的间距。
(cons 44 40) ; DIMEXE—指定尺寸界线超出尺寸线的距离。
(cons 45 0) ; DIMRND—将所有标注距离舍入为指定值。
(cons 46 0) ; DIMDLE—当使用小斜线代替箭头进行标注时,设置尺寸线超出尺寸界线的距离。
(cons 47 0) ; DIMTP—为标注文字设置最大(即最高)公差限制(当 DIMTOL 或 DIMLIM 设定为开时)。
(cons 48 0) ; DIMTM—为标注文字设置最小(即最低)公差限制(当 DIMTOL 或 DIMLIM 设定为开时)。
(cons 140 70) ; DIMTXT—指定标注文字的高度(除非当前文字样式具有固定的高度)。
(cons 141 0.09) ; DIMCEN—通过 DIMCENTER、DIMDIAMETER 和 DIMRADIUS 命令控制圆或圆弧圆心标记以及中心线的绘制。
(cons 142 0) ; DIMTSZ—指定线性标注、半径标注以及直径标注中绘制的代替箭头的小斜线的尺寸。
