找回密码
 立即注册
首页 业界区 业界 AutoCAD AutoLISP 中使用 entmake 创建标注样式(DIMSTY ...

AutoCAD AutoLISP 中使用 entmake 创建标注样式(DIMSTYLE)的深度解析

殷罗绮 2025-6-2 23:52:01
前言

在 AutoCAD 二次开发中,entmake 函数相比 command 命令具有三大核心优势:

  • 高效性:直接操作图形数据库,避免交互式命令延迟
  • 稳定性:消除命令行参数解析导致的不可控错误
  • 精确性:支持完整 DXF 组码配置,实现像素级样式控制
本文深度解析使用 entmake 创建标注样式的关键技术细节,包含:

  • 必须组码的最小集合与完整参数模板
  • 未文档化组码(49/50/69 等)的实战应用
  • 箭头样式等特殊参数的解决方案
  • 全量 DXF 组码对照表(含类型/默认值/LISP 适配说明)
阅读本文后,您将能够:

  • 通过代码批量生成符合企业标准的标注样式
  • 精准修改现有标注参数配置
  • 开发自动化标注工具插件
  • 规避官方文档未说明的兼容性问题
基于 AutoCAD 2023/2025 实测数据,适用于需要高效定制 CAD 标注系统的开发者。
entmake 创建标注样式所需的最小组码列表

经测试必须包含以下组码,才能成功创建标注样式(未指定的组码均为默认值):
  1. (entmake
  2.   (list
  3.     (cons 0 "DIMSTYLE") ; 图元类型
  4.     (cons 100 "AcDbSymbolTableRecord") ; 子类标记
  5.     (cons 100 "AcDbDimStyleTableRecord") ; 子类标记
  6.     (cons 2 "my-style") ; 标注样式名称
  7.     (cons 70 0) ; 标准标记值(必须项)
  8.   )
  9. )
复制代码
(*测试环境:AutoCAD 2023/2025)
实际创建标注样式时,可根据需要自行增加配置项。
包含全部 DXF 组码的代码示例
  1. (entmake
  2.   (list
  3.     (cons 0 "DIMSTYLE") ; 图元类型
  4.     (cons 100 "AcDbSymbolTableRecord") ; 子类标记
  5.     (cons 100 "AcDbDimStyleTableRecord") ; 子类标记
  6.     (cons 2 "my-style") ; 标注样式名称
  7.     (cons 70 0) ; 标准标记值(必须项,和下文文字背景颜色的组码数字相同,功能不同)
  8.     ;; -------------------------------
  9.     ;; DXF帮助中展示的组码,和对应的系统变量
  10.     ;; -------------------------------
  11.     (cons 3 "") ; DIMPOST—为标注测量值指定文字前缀或后缀(或两者)。
  12.     (cons 4 "") ; DIMAPOST—指定用于所有标注类型(角度标注除外)的换算标注测量值的文字前缀或后缀(或两者都指定)。
  13.     ;; (cons 5 "") ; DIMBLK—【已废弃】现在为对象 ID
  14.     ;; (cons 6 "") ; DIMBLK1—【已废弃】现在为对象 ID
  15.     ;; (cons 7 "") ; DIMBLK2—【已废弃】现在为对象 ID
  16.     (cons 40 1) ; DIMSCALE—设置应用于标注变量(用于指定尺寸、距离或偏移量)的全局比例因子。
  17.     (cons 41 60) ; DIMASZ—控制尺寸线和引线箭头的大小。并控制基线的大小。
  18.     (cons 42 0) ; DIMEXO—指定尺寸界线偏离原点的距离。
  19.     (cons 43 200) ; DIMDLI—控制基线标注中尺寸线的间距。
  20.     (cons 44 40) ; DIMEXE—指定尺寸界线超出尺寸线的距离。
  21.     (cons 45 0) ; DIMRND—将所有标注距离舍入为指定值。
  22.     (cons 46 0) ; DIMDLE—当使用小斜线代替箭头进行标注时,设置尺寸线超出尺寸界线的距离。
  23.     (cons 47 0) ; DIMTP—为标注文字设置最大(即最高)公差限制(当 DIMTOL 或 DIMLIM 设定为开时)。
  24.     (cons 48 0) ; DIMTM—为标注文字设置最小(即最低)公差限制(当 DIMTOL 或 DIMLIM 设定为开时)。
  25.     (cons 140 70) ; DIMTXT—指定标注文字的高度(除非当前文字样式具有固定的高度)。
  26.     (cons 141 0.09) ; DIMCEN—通过 DIMCENTER、DIMDIAMETER 和 DIMRADIUS 命令控制圆或圆弧圆心标记以及中心线的绘制。
  27.     (cons 142 0) ; DIMTSZ—指定线性标注、半径标注以及直径标注中绘制的代替箭头的小斜线的尺寸。
  28.     (cons 143 25.4) ; DIMALTF—控制换算单位的乘数。
  29.     (cons 144 1) ; DIMLFAC—为线性标注测量值设置比例因子。
  30.     (cons 145 0) ; DIMTVP—控制标注文字在尺寸线上方或下方的垂直位置。
  31.     (cons 146 1) ; DIMTFAC—与通过 DIMTXT 系统变量设置一样,指定分数和公差值的文字高度相对于标注文字高度的比例因子。
  32.     (cons 147 20) ; DIMGAP—设置当打断尺寸线以符合标注文字时,标注文字周围的距离。
  33.     (cons 148 0) ; DIMALTRND—舍入换算标注单位。
  34.     (cons 71 0) ; DIMTOL—将公差附在标注文字中。
  35.     (cons 72 0) ; DIMLIM—生成标注界限作为默认文字。
  36.     (cons 73 0) ; DIMTIH—控制所有标注类型(坐标标注除外)的标注文字在尺寸界线内的位置。
  37.     (cons 74 0) ; DIMTOH—控制标注文字在尺寸界线外的位置。
  38.     (cons 75 0) ; DIMSE1—控制是否隐去第一条尺寸界线。
  39.     (cons 76 0) ; DIMSE2—控制是否隐去第二条尺寸界线。
  40.     (cons 77 1) ; DIMTAD—控制文字相对于尺寸线的垂直位置。
  41.     (cons 78 0) ; DIMZIN—控制针对主单位值的消零处理。
  42.     (cons 79 0) ; DIMAZIN—针对角度标注进行消零处理。
  43.     (cons 170 0) ; DIMALT—控制标注中换算单位的显示。
  44.     (cons 171 2) ; DIMALTD—控制换算单位中的小数位数。
  45.     (cons 172 1) ; DIMTOFL—控制是否在尺寸界线之间绘制尺寸线(即使标注文字被放置在尺寸界线之外)。
  46.     (cons 173 0) ; DIMSAH—控制尺寸线箭头块的显示。
  47.     (cons 174 1) ; DIMTIX—在尺寸界线之间绘制文字。
  48.     (cons 175 0) ; DIMSOXD—如果尺寸界线内没有足够的空间,则隐去箭头。
  49.     (cons 176 1) ; DIMCLRD—为尺寸线、箭头和标注引线指定颜色。
  50.     (cons 177 1) ; DIMCLRE—为尺寸界线、圆心标记和中心线指定颜色。
  51.     (cons 178 3) ; DIMCLRT—为标注文字指定颜色。
  52.     (cons 179 0) ; DIMADEC—控制角度标注中显示的精度小数位数。
  53.     ;; (cons 270 0) ; DIMUNIT—【已废弃】现在使用 DIMLUNIT 和 DIMFRAC
  54.     (cons 271 0) ; DIMDEC—设置标注主单位中显示的小数位数。
  55.     (cons 272 0) ; DIMTDEC—设置标注主单位的公差值中显示的小数位数。
  56.     (cons 273 2) ; DIMALTU—为所有标注子样式(角度标注除外)的换算单位设定单位格式。
  57.     (cons 274 2) ; DIMALTTD—设置换算标注单位中的公差值的小数位数。
  58.     (cons 275 0) ; DIMAUNIT—为角度标注设定单位格式。
  59.     (cons 276 0) ; DIMFRAC—设置分数格式(当 DIMLUNIT 设定为 4 [建筑] 或 5 [分数] 时)。
  60.     (cons 277 2) ; DIMLUNIT—为所有标注类型(角度标注除外)设置单位。
  61.     (cons 278 (ascii ".")) ; DIMDSEP—指定创建单位格式为小数的标注时要使用的单字符小数分隔符。(输入为 ASCII 值)
  62.     (cons 279 0) ; DIMTMOVE—设置标注文字的移动规则。
  63.     (cons 280 0) ; DIMJUST—控制标注文字的水平位置。
  64.     (cons 281 0) ; DIMSD1—控制是否隐去第一条尺寸线和箭头。
  65.     (cons 282 0) ; DIMSD2—控制是否隐去第二条尺寸线和箭头。
  66.     (cons 283 1) ; DIMTOLJ—设置公差值相对于表面标注文字的垂直对正方式。
  67.     (cons 284 0) ; DIMTZIN—控制对公差值的消零处理。
  68.     (cons 285 0) ; DIMALTZ—控制对换算单位标注值的消零处理。
  69.     (cons 286 0) ; DIMALTTZ—控制对公差值的消零处理。
  70.     ;; (cons 287 0) ; DIMFIT—【已废弃】现在使用 DIMATFIT 和 DIMTMOVE
  71.     (cons 288 0) ; DIMUPT—控制用户定位文字的选项。
  72.     (cons 289 3) ; DIMATFIT—尺寸界线内的空间不足以同时放下标注文字和箭头时,此系统变量将确定这两者的排列方式。
  73.     (cons 340 (tblobjname "STYLE" "Standard")) ; DIMTXSTY—指定标注的文字样式。(输入为 STYLE 图元名)
  74.     (cons 371 -2) ; DIMLWD—为尺寸线指定线宽。
  75.     (cons 372 -2) ; DIMLWE—为尺寸界线指定线宽。
  76.     ;; -------------------------------
  77.     ;; 箭头样式相关组码,比较特殊,具体参见下文标注箭头说明
  78.     ;; -------------------------------
  79.     ;; (cons 341 "") ; DIMLDRBLK—指定引线箭头的类型。(输入为 BLOCK_RECORD 图元名)
  80.     ;; (cons 342 "") ; DIMBLK—设置尺寸线末端显示的箭头块。(输入为 BLOCK_RECORD 图元名)
  81.     ;; (cons 343 "") ; DIMBLK1—为尺寸线的第一个端点设置箭头(当 DIMSAH 处于打开状态时)。(输入为 BLOCK_RECORD 图元名)
  82.     ;; (cons 344 "") ; DIMBLK2—为尺寸线的第二个端点设置箭头(当 DIMSAH 处于打开状态时)。(输入为 BLOCK_RECORD 图元名)
  83.     ;; -------------------------------
  84.     ;; DXF帮助中未说明的组码,和对应的系统变量
  85.     ;; -------------------------------
  86.     (cons 50 (/ pi 4)) ; DIMJOGANG—决定折弯半径标注中,尺寸线的横向线段的角度。(输入为弧度值)
  87.     (cons 49 1) ; DIMFXL—设置起始于尺寸线,直至标注原点的尺寸界线总长度。
  88.     (cons 69 1) ; DIMTFILL—控制标注文字的背景。
  89.     (cons 70 0) ; DIMTFILLCLR—为标注中的文字背景设置颜色。
  90.     (cons 90 0) ; DIMARCSYM—控制弧长标注中圆弧符号的显示。
  91.     (cons 290 0) ; DIMFXLON—控制是否将尺寸界线设定为固定长度。
  92.     (cons 345 (tblobjname "LTYPE" "ByLayer")) ; DIMLTYPE—设置尺寸线的线型。(输入为 LTYPE 图元名)
  93.     (cons 346 (tblobjname "LTYPE" "ByLayer")) ; DIMLTEX1—设置第一条尺寸界线的线型。(输入为 LTYPE 图元名)
  94.     (cons 347 (tblobjname "LTYPE" "ByLayer")) ; DIMLTEX2—设置第二条尺寸界线的线型。(输入为 LTYPE 图元名)
  95.   )
  96. )
复制代码
DXF 组码对照表

以下是 DXF 组码对照表,包含 CAD 帮助文档中的系统变量类型和默认值。
注意其中默认值均为系统变量的默认值,部分不能直接用于 lisp 代码,使用注意事项查看对应备注。
组码系统变量说明类型默认值备注0-图元类型字符串"DIMSTYLE"【必须项】【不可变】100-子类标记字符串"AcDbSymbolTableRecord"【必须项】【不可变】100-子类标记字符串"AcDbDimStyleTableRecord"【必须项】【不可变】2-标注样式名称字符串无【必须项】70-标准标记值整数0【必须项】和下文文字背景颜色的组码数字相同,功能不同3DIMPOST为标注测量值指定文字前缀或后缀(或两者)。字符串无4DIMAPOST指定用于所有标注类型(角度标注除外)的换算标注测量值的文字前缀或后缀(或两者都指定)。字符串""5DIMBLK【已废弃】现在为对象 ID字符串""【已废弃】6DIMBLK1【已废弃】现在为对象 ID字符串""【已废弃】7DIMBLK2【已废弃】现在为对象 ID字符串""【已废弃】40DIMSCALE设置应用于标注变量(用于指定尺寸、距离或偏移量)的全局比例因子。实数141DIMASZ控制尺寸线和引线箭头的大小。并控制基线的大小。实数0.1800(英制)或 2.5000(公制)42DIMEXO指定尺寸界线偏离原点的距离。实数0.0625(英制)或 0.6250(公制)43DIMDLI控制基线标注中尺寸线的间距。实数0.3800(英制)或 3.7500(公制)44DIMEXE指定尺寸界线超出尺寸线的距离。实数0.1800(英制)或 1.2500(公制)45DIMRND将所有标注距离舍入为指定值。实数046DIMDLE当使用小斜线代替箭头进行标注时,设置尺寸线超出尺寸界线的距离。实数047DIMTP为标注文字设置最大(即最高)公差限制(当 DIMTOL 或 DIMLIM 设定为开时)。实数048DIMTM为标注文字设置最小(即最低)公差限制(当 DIMTOL 或 DIMLIM 设定为开时)。实数0140DIMTXT指定标注文字的高度(除非当前文字样式具有固定的高度)。实数0.1800(英制)或 2.5000(公制)141DIMCEN通过 DIMCENTER、DIMDIAMETER 和 DIMRADIUS 命令控制圆或圆弧圆心标记以及中心线的绘制。实数0.0900(英制)或 2.5000(公制)142DIMTSZ指定线性标注、半径标注以及直径标注中绘制的代替箭头的小斜线的尺寸。实数0143DIMALTF控制换算单位的乘数。实数25.4000(英制)或 0.0394(公制)144DIMLFAC为线性标注测量值设置比例因子。实数1145DIMTVP控制标注文字在尺寸线上方或下方的垂直位置。实数0146DIMTFAC与通过 DIMTXT 系统变量设置一样,指定分数和公差值的文字高度相对于标注文字高度的比例因子。实数1147DIMGAP设置当打断尺寸线以符合标注文字时,标注文字周围的距离。实数0.0900(英制)或 0.6250(公制)148DIMALTRND舍入换算标注单位。实数071DIMTOL将公差附在标注文字中。参数072DIMLIM生成标注界限作为默认文字。参数073DIMTIH控制所有标注类型(坐标标注除外)的标注文字在尺寸界线内的位置。参数1(英制)或 0(公制)74DIMTOH控制标注文字在尺寸界线外的位置。参数1(英制)或 0(公制)75DIMSE1控制是否隐去第一条尺寸界线。参数076DIMSE2控制是否隐去第二条尺寸界线。参数077DIMTAD控制文字相对于尺寸线的垂直位置。整数0(英制)或 1(公制)78DIMZIN控制针对主单位值的消零处理。整数0(英制)或 8(公制)79DIMAZIN针对角度标注进行消零处理。整数0170DIMALT控制标注中换算单位的显示。参数0171DIMALTD控制换算单位中的小数位数。整数2(英制)或 3(公制)172DIMTOFL控制是否在尺寸界线之间绘制尺寸线(即使标注文字被放置在尺寸界线之外)。参数0(英制)或 1(公制)173DIMSAH控制尺寸线箭头块的显示。参数0174DIMTIX在尺寸界线之间绘制文字。参数0175DIMSOXD如果尺寸界线内没有足够的空间,则隐去箭头。参数0176DIMCLRD为尺寸线、箭头和标注引线指定颜色。整数0177DIMCLRE为尺寸界线、圆心标记和中心线指定颜色。整数0178DIMCLRT为标注文字指定颜色。整数0179DIMADEC控制角度标注中显示的精度小数位数。整数0270DIMUNIT【已废弃】现在使用 DIMLUNIT 和 DIMFRAC【已废弃】271DIMDEC设置标注主单位中显示的小数位数。整数4(英制)或 2(公制)272DIMTDEC设置标注主单位的公差值中显示的小数位数。整数4(英制)或 2(公制)273DIMALTU为所有标注子样式(角度标注除外)的换算单位设定单位格式。整数2274DIMALTTD设置换算标注单位中的公差值的小数位数。整数2(英制)或 3(公制)275DIMAUNIT为角度标注设定单位格式。整数0276DIMFRAC设置分数格式(当 DIMLUNIT 设定为 4 [建筑] 或 5 [分数] 时)。整数0277DIMLUNIT为所有标注类型(角度标注除外)设置单位。整数2278DIMDSEP指定创建单位格式为小数的标注时要使用的单字符小数分隔符。单字节字符. (英制)或(公制)lisp 使用时,字符需要转成 ASCII 码值279DIMTMOVE设置标注文字的移动规则。整数0280DIMJUST控制标注文字的水平位置。整数0281DIMSD1控制是否隐去第一条尺寸线和箭头。参数0282DIMSD2控制是否隐去第二条尺寸线和箭头。参数0283DIMTOLJ设置公差值相对于表面标注文字的垂直对正方式。整数1(英制)或 0(公制)284DIMTZIN控制对公差值的消零处理。整数0(英制)或 8(公制)285DIMALTZ控制对换算单位标注值的消零处理。整数0286DIMALTTZ控制对公差值的消零处理。整数0287DIMFIT【已废弃】现在使用 DIMATFIT 和 DIMTMOVE【已废弃】288DIMUPT控制用户定位文字的选项。参数0289DIMATFIT尺寸界线内的空间不足以同时放下标注文字和箭头时,此系统变量将确定这两者的排列方式。整数3340DIMTXSTY指定标注的文字样式。字符串Standardlisp 中使用时输入STYLE类型的图元名,可以使用tblobjname获得341DIMLDRBLK指定引线箭头的类型。字符串""lisp 中使用时输入BLOCK_RECORD类型的图元名,比较特殊,参考下文标注箭头说明342DIMBLK设置尺寸线末端显示的箭头块。字符串""lisp 中使用时输入BLOCK_RECORD类型的图元名,比较特殊,参考下文标注箭头说明343DIMBLK1为尺寸线的第一个端点设置箭头(当 DIMSAH 处于打开状态时)。字符串""lisp 中使用时输入BLOCK_RECORD类型的图元名,比较特殊,参考下文标注箭头说明344DIMBLK2为尺寸线的第二个端点设置箭头(当 DIMSAH 处于打开状态时)。字符串""lisp 中使用时输入BLOCK_RECORD类型的图元名,比较特殊,参考下文标注箭头说明371DIMLWD为尺寸线指定线宽。枚举-2372DIMLWE为尺寸界线指定线宽。枚举-249*DIMFXL设置起始于尺寸线,直至标注原点的尺寸界线总长度。实数150*DIMJOGANG决定折弯半径标注中,尺寸线的横向线段的角度。实数45lisp 中使用时输入弧度值69*DIMTFILL控制标注文字的背景。整数070*DIMTFILLCLR为标注中的文字背景设置颜色。整数090*DIMARCSYM控制弧长标注中圆弧符号的显示。整数0290*DIMFXLON控制是否将尺寸界线设定为固定长度。参数0345*DIMLTYPE设置尺寸线的线型。字符串""lisp 中使用时输入LTYPE类型的图元名,可以使用tblobjname获得(包括 ByLayer 和 ByBlock 都需要输入对应图元名)346*DIMLTEX1设置第一条尺寸界线的线型。字符串""lisp 中使用时输入LTYPE类型的图元名,可以使用tblobjname获得(包括 ByLayer 和 ByBlock 都需要输入对应图元名)347*DIMLTEX2设置第二条尺寸界线的线型。字符串""lisp 中使用时输入LTYPE类型的图元名,可以使用tblobjname获得(包括 ByLayer 和 ByBlock 都需要输入对应图元名)(*符号表示该组码未在 DXF 参考手册中列出,本人通过实际测试得出。)
标注箭头说明

组码 341~344 比较特殊,输入的是 BLOCK_RECORD 类型的图元名,但是 BLOCK_RECORD 类型的图元又比较特殊,无法通过正常的 tblobjname 函数取得。所以如果想要实现使用entmake自定义标注箭头样式,有两种方法。
方法一:在图纸内通过标注样式对话框让 CAD 自动生成对应箭头块

具体操作如下:

  • 随便创建一个的样式,将箭头样式改成你准备用程序设置的样式(如:空心闭合箭头)。这一步是为了让 AutoCAD 先加载箭头对应的块,否则块没有创建的时候查找块名会报错。
  • 在 AutoCAD 的帮助文档中,DIMBLK(系统变量)的页面找到你想要的箭头样式,记下对应的块名(如:空心闭合箭头对应的块名为"_CLOSEDBLANK")。此时如果使用(cdr (assoc 330 (entget (tblobjname "BLOCK" "\_CLOSEDBLANK"))))命令,即可获得该箭头样式对应的 BLOCK_RECORD 图元名。(其中"_CLOSEDBLANK"可以改成你需要的箭头样式块名)
  • 假设你需要两个箭头均为空心闭合,只需要在 entmake 创建标注样式的代码段中添加:(cons 342 (cdr (assoc 330 (entget (tblobjname "BLOCK" "\_CLOSEDBLANK"))))),就能成功创建箭头样式是空心闭合的标注样式了。(如果需要两个箭头独立设置,可以分别设置 343 和 344 组码,并且记得将 173 组码设置为 1,这样才能使 343 和 344 组码起效)
方法二:直接在代码中使用 entmake 生成对应箭头块

此方法需要先在程序中生成对应箭头块,以空心闭合箭头块为例,以下是生成箭头块的函数:
  1. (defun create-closed-blank-arrow-block (/ line-lists)
  2.   ;; 创建块定义 (BLOCK)
  3.   (entmake
  4.     (list
  5.       '(0 . "BLOCK")             ; 实体类型为块定义
  6.       '(2 . "_CLOSEDBLANK")      ; 块名(根据实际需要修改)
  7.       '(10 . (0 0))              ; 基点(插入点)
  8.       '(70 . 0)                  ; 标志位:0表示普通块
  9.       '(8 . "0")                 ; 图层(默认"0"层)
  10.     )
  11.   )
  12.   ;; 添加块内容(根据实际需要修改)
  13.   (setq line-lists '(((-1 0.166666666) (0 0))
  14.                      ((0 0) (-1 -0.166666666))
  15.                      ((-1 0.166666666) (-1 -0.166666666))
  16.                     )
  17.   ) ; 空心闭合箭头的三条线段
  18.   (foreach line line-lists
  19.     (entmake
  20.       (list
  21.         '(0 . "LINE")              ; 实体类型为直线
  22.         (cons 10 (car line))       ; 起点坐标
  23.         (cons 11 (cadr line))      ; 终点坐标
  24.         '(8 . "0")                 ; 图层(与块定义一致)
  25.         '(62 . 0)                  ; 颜色 ByBlock 【必须】
  26.         '(6 . "ByBlock")           ; 线型 ByBlock 【必须】
  27.         '(370 . -2)                ; 线宽 ByBlock 【必须】
  28.       )
  29.     )
  30.   ) ; 使用 entmake 生成三条线段
  31.   ;; 结束块定义 (ENDBLK)
  32.   (entmake '((0 . "ENDBLK")))
  33. )
复制代码
注意:块内所有元素的颜色、线型、线宽均需要设置为ByBlock,否则在使用时箭头颜色无法保持与尺寸线颜色一致。
注意:箭头块定义的名称和图形需要和 CAD 自动生成的一致。虽然不一致也能使用,但是尺寸线会有一些小问题。(例如以_Small(空心小点)为块名,但是实际箭头块为空心闭合箭头时,尺寸线会一直延伸到尺寸界限)
具体操作如下:

  • 使用生成箭头块的函数生成对应箭头块,并记录箭头块的名称。此时如果使用(cdr (assoc 330 (entget (tblobjname "BLOCK" "\_CLOSEDBLANK"))))命令,即可获得该箭头样式对应的 BLOCK_RECORD 图元名。(其中"_CLOSEDBLANK"可以改成你需要的箭头样式块名)
  • 假设你需要两个箭头均为空心闭合,只需要在 entmake 创建标注样式的代码段中添加:(cons 342 (cdr (assoc 330 (entget (tblobjname "BLOCK" "\_CLOSEDBLANK"))))),就能成功创建箭头样式是空心闭合的标注样式了。(如果需要两个箭头独立设置,可以分别设置 343 和 344 组码,并且记得将 173 组码设置为 1,这样才能使 343 和 344 组码起效)
以下是一些补充说明:
如果需要箭头样式为『无』,此时只需要创建一个名为_NONE的空块即可。以下是生成空箭头块的函数:
  1. (defun create-none-arrow-block ()
  2.   ;; 创建空箭头块定义
  3.   (entmake
  4.     (list
  5.       '(0 . "BLOCK")
  6.       '(2 . "_NONE")        ; 空箭头专用名称
  7.       '(10 (0 0))
  8.       '(70 . 0)
  9.       '(8 . "0")
  10.     )
  11.   )
  12.   ;; 直接结束块定义,不添加任何几何实体
  13.   (entmake '((0 . "ENDBLK")))
  14. )
复制代码
如果需要用户自定义箭头样式,操作方式和上面一样,只是注意块名称要和系统预留的箭头块名不一样。
用户自定义箭头块绘制标准:

  • 箭头绘制方向为从左(-X)到右(+X),且右顶点为原点
  • 整体尺寸建议上下宽度 0.2-0.3,左右长度 1.0
  • 复杂箭头建议使用多段线或面域实体
附:DIMBLK 系统变量说明内的预留箭头块名

箭头样式块名实心闭合无点_DOT小点_DOTSMALL空心点_DOTBLANK原点标记_ORIGIN原点标记 2_ORIGIN2打开_OPEN直角_OPEN9030 度角_OPEN30闭合_CLOSED空心小点_SMALL无_NONE倾斜_OBLIQUE实心框_BOXFILLED方框_BOXBLANK空心闭合_CLOSEDBLANK实心基准三角形_DATUMFILLED基准三角形_DATUMBLANK完整标记_INTEGRAL建筑标记_ARCHTICK其他系统变量说明

以下以 DIM 开头的系统变量不保存在标注样式中,需要通过setvar单独设置。
系统变量说明类型默认值备注DIMANNO指示当前标注样式是否为注释性样式。整数0只读DIMASSOC控制标注对象的关联性以及是否分解标注。整数2DIMCONSTRAINTICON控制标注约束的锁定图标的显示。位码3保存于注册表DIMCONTINUEMODE确定连续标注或基线标注的标注样式和图层是否继承自正在连续使用的标注。整数1保存于注册表DIMLAYER为新的标注指定默认图层。字符串使用当前值DIMPICKBOX在 DIM 命令中设置对象选择目标高度(以像素为单位)。整数5保存于注册表DIMSTYLE显示图形中的标注使用的单位类型(英制/标准或 iso-25/公制)。字符串Standard(英制)或 ISO-25(公制)DIMTXTDIRECTION指定标注文字的阅读方向。整数0DIMTXTRULER在编辑标注文字时,控制标尺的显示。参数1保存于注册表参考资料

[1] Autodesk AutoCAD 2025 系统变量
[2] Autodesk AutoCAD 2025 DXF 参考手册
[3] entmake 创建图元必要条件 & 对指定对像生成 entmake 所需的必要条件函数

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册