明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1758|回复: 6

[源码] 创建二级标注样式

[复制链接]
发表于 2024-9-28 22:37:55 | 显示全部楼层 |阅读模式

;新建标注样式-----------------------------------------------------------
(defun c:SDD ()
        ;函数功能:一键创建多个标注样式
       
        (setq XTBL_MingLingTiShi (getvar "cmdecho"))        ;获取当前的普通命令提示状态
        (setvar "cmdecho" 0)                ;不显示普通命令的提示
       
        ;根据需要创建字体样式
        (setq zt_name2 "standard")
        (setq boln (tblsearch "style" zt_name2))
        (if (= boln nil)
                (progn
                        (setq v6 (getvar "textstyle"))                ;获取当前文字样式并记录
                        (command "style" "standard" "gbenor.shx,gbcbig.shx" "0" "1" "0" "N" "N" "N")        ;样式名,字体名,文字高度,宽度因子,倾斜角度,反向显示,颠倒显示,垂直显示
                        (setvar "textstyle" v6)                ;恢复文字样式设置
                );end progn
        );end if
       
        (ff:bzys1)
        (progn (ff:bzys2 1)
                (command "dimtxt"   "3.5"      "dimasz"     "3.5"    ;文字高度                        ;箭头大小
                                          "dimexe"   "1.5"      "dimexo"     "1"   ;尺寸界限超出长度                ;尺寸界限起点距离:0.5  
                                          "dimgap"   "0.625"      "dimtoh"     "off"    ;标注文字周围的距离              ;文字在尺寸界线外的位置:关   
                                          "dimtih"   "OFF"             ;标注文字在尺寸界线内的位置:    ;关,     
                                          "DIMDLI"   "7"      "DIMATFIT"   "3"      ;控制基线标注中尺寸线的间距:    ;当尺寸界线不足放下标注文字和箭头时,函数DIMATFIT确定位置
                                          "DIMTAD"   "1"         "DIMDEC"     "0"      ;控制文字相对尺寸线的垂直位置,  ;小数位数:0         
                                          "DIMJUST"  "0"         "DIMDSEP"    "."      ;控制标注文字的水平位置:0,     ;小数分隔符为 .  
                                          "DIMTOFL"  "ON"         "dimtmove"   "0"      ;控制标注文字在尺寸界线外的位置:;关对齐,设置标注文字的移动规则:0 水平
                                          "dimcen"   "0"         "dimclrd"    "4"      ;标注圆心:不标,                ;为尺寸线、箭头和标注引线指定颜色:3
                                          "dimclre"  "4"         "DIMCLRT"    "2"     ;为尺寸界线指定颜色              ;为标注文字指定颜色
                                          "DIMSAH"   "0"       "DIMBLK"   ""     ;控制尺寸线箭头块的显示。0表示使用由 DIMBLK 系统变量设置的箭头块,1表示使用由 DIMBLK1 和 DIMBLK2 系统变量设置的箭头块 ;箭头:  实心闭合                        
                                          "DIMLDRBLK"  "_DOTSMALL" "DIMFXLON" "OFF"   ;箭头引线小点      ;固定的尺寸界线长度: OFF关闭
                                          "DIMSCALE"  "1"       "DIMTXSTY"  "Standard"    ;全局比例                 ;文字样式
                                          "-DIMSTYLE" "s" "Standard")
                      (while (/= (getvar 'CMDACTIVE) 0)(command "y"))
                      (command "-dimstyle" "s" "Standard$0")     ;线性样式
                      (while (/= (getvar 'CMDACTIVE) 0)(command "y"))
                      (command "dimtoh"     "on" "dimtih"   "on"             ;文字在尺寸界线外的位置:开 ;标注文字在尺寸界线内的位置:    ;开,     
                                          "-dimstyle" "s" "Standard$2")     ;角度样式
                      (while (/= (getvar 'CMDACTIVE) 0)(command "y"))
                      (command "dimtih"   "off"             ;标注文字在尺寸界线内的位置:    ;关,点标记模式:关
                                          "-dimstyle" "s" "Standard$3")     ;直径样式
                      (while (/= (getvar 'CMDACTIVE) 0)(command "y"))
                      (command"-dimstyle" "s" "Standard$4")      ;半径样式
                      (while (/= (getvar 'CMDACTIVE) 0)(command "y"))
                      (command "DIMCLRE"    "8"     ;为尺寸界线指定颜色: 8
                                          "-dimstyle" "s" "Standard$6")      ;坐标样式
                      (while (/= (getvar 'CMDACTIVE) 0)(command "y"))
                      (command "dimclrd"   "8" "DIMLDRBLK"  "_DOTSMALL"  ;为尺寸线、箭头和标注引线指定颜色:8  ;箭头引线小点
                                         "-dimstyle" "s" "Standard$7")      ;引线及公差样式
                      (while (/= (getvar 'CMDACTIVE) 0)(command "y"))
        )
        (progn (ff:bzys2 1)
                (command "dimtxt"   "3.5"      "dimasz"     "3.5"    ;文字高度                        ;箭头大小
                                          "dimexe"   "1.5"      "dimexo"     "1"   ;尺寸界限超出长度                ;尺寸界限起点距离:0.5  
                                          "dimgap"   "0.625"      "dimtoh"     "off"    ;标注文字周围的距离              ;文字在尺寸界线外的位置:关   
                                          "dimtih"   "OFF"            ;标注文字在尺寸界线内的位置:    ;关,      
                                          "DIMDLI"   "7"      "DIMATFIT"   "3"      ;控制基线标注中尺寸线的间距:    ;当尺寸界线不足放下标注文字和箭头时,函数DIMATFIT确定位置
                                          "DIMTAD"   "1"         "DIMDEC"     "0"      ;控制文字相对尺寸线的垂直位置,  ;小数位数:2         
                                          "DIMJUST"  "0"         "DIMDSEP"    "."      ;控制标注文字的水平位置:0,     ;小数分隔符为 .  
                                          "DIMTOFL"  "ON"         "dimtmove"   "0"      ;控制标注文字在尺寸界线外的位置:;关对齐,设置标注文字的移动规则:0 水平
                                          "dimcen"   "0"         "dimclrd"    "4"      ;标注圆心:不标,                ;为尺寸线、箭头和标注引线指定颜色:4
                                          "dimclre"  "4"         "DIMCLRT"    "2"     ;为尺寸界线指定颜色              ;为标注文字指定颜色
                                          "DIMSAH"   "0"       "DIMBLK"   ""     ;控制尺寸线箭头块的显示。0表示使用由 DIMBLK 系统变量设置的箭头块,1表示使用由 DIMBLK1 和 DIMBLK2 系统变量设置的箭头块 ;箭头:  实心闭合                        
                                         "DIMLDRBLK"  "_DOTSMALL" "DIMFXLON" "OFF"   ;箭头引线小点      ;固定的尺寸界线长度: OFF关闭
                                          "DIMSCALE"  "1"       "DIMTXSTY"  "Standard"    ;全局比例                 ;文字样式
                                          "DIMSTYLE" "S" "机械制图")
                      (while (/= (getvar 'CMDACTIVE) 0)(command "y"))
                      (command"-dimstyle" "s" "机械制图$0")     ;线性样式
                      (while (/= (getvar 'CMDACTIVE) 0)(command "y"))
                      (command  "dimtoh"     "on" "dimtih"   "on"              ;文字在尺寸界线外的位置:开 ;标注文字在尺寸界线内的位置:   
                                          "-dimstyle" "s" "机械制图$2")     ;角度样式
                      (while (/= (getvar 'CMDACTIVE) 0)(command "y"))
                      (command "dimtih"   "off"             ;标注文字在尺寸界线内的位置:    ;关,
                                          "-dimstyle" "s" "机械制图$3")     ;直径样式
                      (while (/= (getvar 'CMDACTIVE) 0)(command "y"))
                      (command"-dimstyle" "s" "机械制图$4")      ;半径样式
                      (while (/= (getvar 'CMDACTIVE) 0)(command "y"))
                      (command "DIMCLRE"    "8"     ;为尺寸界线指定颜色: 8
                                          "-dimstyle" "s" "机械制图$6")      ;坐标样式
                      (while (/= (getvar 'CMDACTIVE) 0)(command "y"))
                      (command "dimclrd"   "8" "DIMLDRBLK"  "_DOTSMALL"  ;为尺寸线、箭头和标注引线指定颜色:8  ;箭头引线小点
                                          "-dimstyle" "s" "机械制图$7")      ;引线及公差样式
                      (while (/= (getvar 'CMDACTIVE) 0)(command "y"))
        )
        (progn (ff:bzys2 1)
                (command "dimtxt"   "3.5"      "dimasz"     "1"    ;文字高度                        ;箭头大小
                                          "dimexe"   "1.5"      "dimexo"     "1"   ;尺寸界限超出长度                ;尺寸界限起点距离:0.5  
                                          "dimgap"   "0.625"      "dimtoh"     "off"    ;标注文字周围的距离              ;文字在尺寸界线外的位置:关   
                                          "dimtih"   "OFF"             ;标注文字在尺寸界线内的位置:    ;关,   
                                          "DIMDLI"   "7"      "DIMATFIT"   "3"      ;控制基线标注中尺寸线的间距:    ;当尺寸界线不足放下标注文字和箭头时,函数DIMATFIT确定位置
                                          "DIMTAD"   "1"         "DIMDEC"     "0"      ;控制文字相对尺寸线的垂直位置,  ;小数位数:0         
                                          "DIMJUST"  "0"         "DIMDSEP"    "."      ;控制标注文字的水平位置:0,     ;小数分隔符为 .  
                                          "DIMTOFL"  "ON"         "dimtmove"   "0"      ;控制标注文字在尺寸界线外的位置:;关对齐,设置标注文字的移动规则:0 水平
                                          "dimcen"   "0"         "dimclrd"    "4"      ;标注圆心:不标,                ;为尺寸线、箭头和标注引线指定颜色:3
                                          "dimclre"  "4"         "DIMCLRT"    "2"     ;为尺寸界线指定颜色              ;为标注文字指定颜色
                                          "DIMSAH"   "0"   "DIMBLK"  "_ARCHTICK"     ;控制尺寸线箭头块的显示。0表示使用由 DIMBLK 系统变量设置的箭头块,1表示使用由 DIMBLK1 和 DIMBLK2 系统变量设置的箭头块;箭头:  建筑标记      
                                          "DIMLDRBLK"  "_DOTSMALL" "DIMFXLON" "OFF"   ;箭头引线小点      ;固定的尺寸界线长度: OFF关闭
                                          "DIMSCALE"  "1"       "DIMTXSTY"  "Standard"    ;全局比例                 ;文字样式
                                          "DIMSTYLE" "S" "建筑制图")
                      (while (/= (getvar 'CMDACTIVE) 0)(command "y"))
                      (command"-dimstyle" "s" "建筑制图$0")     ;线性样式
                      (while (/= (getvar 'CMDACTIVE) 0)(command "y"))
                      (command "dimtoh"     "on" "dimtih"   "on"              ;文字在尺寸界线外的位置:开 ;标注文字在尺寸界线内的位置:    ;开,     
                                          "-dimstyle" "s" "建筑制图$2")     ;角度样式
                      (while (/= (getvar 'CMDACTIVE) 0)(command "y"))
                      (command "dimtih"   "off"             ;标注文字在尺寸界线内的位置:    ;关,
                                          "-dimstyle" "s" "建筑制图$3")     ;直径样式
                      (while (/= (getvar 'CMDACTIVE) 0)(command "y"))
                      (command"-dimstyle" "s" "建筑制图$4")      ;半径样式
                      (while (/= (getvar 'CMDACTIVE) 0)(command "y"))
                      (command "DIMCLRE"    "8"     ;为尺寸界线指定颜色: 8
                                         "-dimstyle" "s" "建筑制图$6")      ;坐标样式
                      (while (/= (getvar 'CMDACTIVE) 0)(command "y"))
                      (command "dimclrd"   "8" "DIMLDRBLK"  "_DOTSMALL"  ;为尺寸线、箭头和标注引线指定颜色:8  ;箭头引线小点
                                         "-dimstyle" "s" "建筑制图$7")      ;引线及公差样式
                      (while (/= (getvar 'CMDACTIVE) 0)(command "y"))
        )
        ;(if (= n 0)
        ;        (alert "当前文档已包含所有标注样式,不需要再次创建!")
        ;        (progn
        ;                                        ;将标注样式“机械制图”置为当前
        ;                (alert (strcat "成功创建" (rtos n 2 0) "个标注样式"))
        ;        )
        ;)
        (command "DIMSTYLE" "R" "机械制图")
        (setvar "cmdecho" XTBL_MingLingTiShi)         ;恢复普通命令提示原来的显示状态
        (princ)       
)

(defun ff:bzys1()
        ;***************尺寸线相关变量***************
        (setvar "DIMCLRD" 256)        ;尺寸线的颜色,256表示ByLayer
        (setvar "DIMLTYPE" "ByLayer")        ;尺寸线的线型ByLayer
        (setvar "DIMLWD" -1)        ;尺寸线的线宽,-1表示ByLayer
        (setvar "DIMDLE" 0)                ;尺寸线超出标记,设为0
        (setvar "DIMDLI" 0.5)        ;尺寸线基线间距,设为0.5
        (setvar "DIMSD1" 0)                ;隐藏尺寸线1,0表示取消勾选,1表示勾选
        (setvar "DIMSD2" 0)                ;隐藏尺寸线2,0表示取消勾选,1表示勾选
       
        ;***************尺寸界线相关变量***************
        (setvar "DIMCLRE" 256)        ;尺寸界线的颜色,256表示ByLayer
        (setvar "DIMLTEX1" "ByLayer")        ;尺寸界线1的线型ByLayer
        (setvar "DIMLTEX2" "ByLayer")        ;尺寸界线2的线型ByLayer
        (setvar "DIMLWE" -1)        ;尺寸界线的线宽,-1表示ByLayer
        (setvar "DIMEXE" 1)                ;尺寸界线超出尺寸线量,1
        (setvar "DIMEXO" 0.5)                ;尺寸界线的起点偏移量,0.5
        (setvar "DIMFXLON" 0)        ;已启用固定的尺寸界线,1表示ON开启,0表示OFF关闭
        (setvar "DIMFXL" 3)                ;固定的尺寸界线长度设为3
        (setvar "DIMSE1" 0)                ;隐藏尺寸界线1,0表示取消勾选,1表示勾选
        (setvar "DIMSE2" 0)                ;隐藏尺寸界线2,0表示取消勾选,1表示勾选
       
        ;***************符号和箭头相关变量***************
        ;(setvar "DIMBLK" "")                ;设置尺寸线末端显示的箭头块。
        (setvar "DIMSAH" 0)                        ;控制尺寸线箭头块的显示。0表示使用由 DIMBLK 系统变量设置的箭头块,1表示使用由 DIMBLK1 和 DIMBLK2 系统变量设置的箭头块
        (setvar "DIMBLK1" "")                ;第一个箭头的样式
        (setvar "DIMBLK2" "")                ;第二个箭头的样式
        ;(setvar "DIMLDRBLK" "_DOTSMALL")                ;引线箭头的样式
        ;=====dimblk取值如下
        ;"" 实心闭合
        ;"_DOT" 点
        ;"_DOTSMALL" 小点
        ;"_DOTBLANK" 空心点
        ;"_ORIGIN" 指示原点
        ;"_ORIGIN2" 指示原点 2
        ;"_OPEN" 打开
        ;"_OPEN90" 直角
        ;"_OPEN30" 30 度角
        ;"_CLOSED" 闭合
        ;"_SMALL" 空心小点
        ;"_NONE" 无
        ;"_OBLIQUE" 倾斜
        ;"_BOXFILLED" 填充框
        ;"_BOXBLANK" 框
        ;"_CLOSEDBLANK" 空心闭合
        ;"_DATUMFILLED" 实心基准三角形
        ;"_DATUMBLANK" 基准三角形
        ;"_INTEGRAL" 完整标记
        ;"_ARCHTICK" 建筑标记
        (setvar "DIMASZ" 2)                ;箭头大小,2
        (setvar "DIMCEN" 0.5)        ;圆形标记大小,设为0时表示无圆心标记,设为-1时表示“直线”标记
        (setvar "DIMARCSYM" 0)                ;弧长符号。设为0表示勾选“标注文字的前缀”。设为1表示勾选“标注文字的上方”。设为2表示勾选“无”。
        ;;;        (setvar "DIMJOGANG" 45)                ;半径折弯标注-折弯角度
       
        ;***************文字相关变量***************
        (setvar "DIMTXSTY" "standard")                ;文字样式
        (setvar "DIMCLRT" 2)                ;文字颜色,256表示ByLayer
        (setvar "DIMTFILL" 0)                ;文字填充颜色。设为0表示“无”,设为1表示“背景”,设为2表示引用变量DIMTFILLCLR的值
        (setvar "DIMTFILLCLR" 256)                ;文字背景颜色。当变量DIMTFILL的值设为2时此值可显示效果
        (setvar "DIMTXT" 2.5)                ;文字高度
        (setvar "DIMTAD" 1)                ;文字位置-垂直,0表示居中,1表示上,2表示外部,3表示JIS,4表示下
        (setvar "DIMJUST" 0)                ;文字位置-水平,0表示居中,1表示第一条尺寸界线,2表示第二条尺寸界线,3表示第一条尺寸界线上方,4表示第二条尺寸界线上方
        (setvar "DIMTXTDIRECTION" 0)        ;指定标注文字的阅读方向。0表示从左到右,1表示从右到左。
        (setvar "DIMGAP" 0.5)        ;文字位置-从尺寸线偏移量
        (setvar "DIMTIH" 0)        ;控制所有标注类型(坐标标注除外)的标注文字在尺寸界线内的位置。0表示将文字与尺寸线对齐,1表示水平绘制文字。
        (setvar "DIMTOH" 0)        ;控制标注文字在尺寸界线外的位置。0表示将文字与尺寸线对齐,1表示水平绘制文字。
        (setvar "DIMTIX" 0)                ;对于半径标注和直径标注,启用 DIMTIX 可始终强制将标注文字放置在圆或圆弧外部
        (setvar "DIMSOXD" 0)        ;如果尺寸界线内没有足够的空间,则隐去箭头。0表示显示箭头,1表示隐藏箭头。如果 DIMTIX 设定为关,则 DIMSOXD 不起作用。
       
        ;***************调整相关变量***************
        (setvar "DIMATFIT" 3)        ;如果尺寸界线之间没有足够空间放置文字和箭头,那么首先从中移出:0表示文字和箭头,1表示箭头,2表示文字,3表示文字或箭头(最佳效果)
        (setvar "DIMTMOVE" 0)        ;文字不在默认位置上时,将其放置在:0表示“尺寸线旁边”,1表示“尺寸线上方,带引线”,2表示“尺寸线上方,不带引线”
        (setvar "DIMSCALE" 1)        ;标注特征比例,0表示勾选“将标注缩放到布局”,大于0的数字表示勾选“使用全局比例,数字表示全局比例的值”
        (setvar "DIMTOFL" 0)        ;控制是否在尺寸界线之间绘制尺寸线,0表示取消勾选“在尺寸界线之间绘制尺寸线”,1表示勾选“在尺寸界线之间绘制尺寸线”
       
        ;***************主单位相关变量***************
        (setvar "DIMLUNIT" 2)        ;线性标注-单位格式,1表示科学,2表示小数,3表示工程,4表示建筑,5表示分数,6表示Windows桌面
        (setvar "DIMDEC" 0)        ;线性标注-精度,0表示取整,1-8表示x位小数
        (setvar "DIMDSEP" ".")        ;线性标注-小数分隔符,有3个值可选:"."  ","  " "
        (setvar "DIMRND" 0)        ;线性标注-舍入
        (setvar "DIMPOST" "")        ;线性标注-为标注测量值指定文字前缀或后缀(或两者),""表示空。使用 <> 指示文字相对于标注值的位置。例如,输入 <>mm 可将 5.0 毫米的半径标注显示为“5.0mm”。如果输入 mm <>,标注将显示为“mm 5.0”。
       
        (setvar "DIMZIN" 8)        ;线性标注-消零,0表示消除0英尺和0英寸,8表示消除后续的零
        (setvar "DIMAUNIT" 0)        ;角度标注-单位格式,0表示十进制度数,1表示度分秒,2表示百分度,3表示弧度
        (setvar "DIMADEC" 1)        ;角度标注-精度,0表示取整,1-8表示x位小数
        (setvar "DIMAZIN" 2)        ;线性标注-消零,0表示都不勾选,1表示勾选“前导”,2表示勾选“后续”,3表示同时勾选“前导”和“后续”
)


(defun ff:bzys2(BLYZ /)
        ;***************主单位相关变量***************
        (setvar "DIMLFAC" BLYZ)        ;测量单位比例-比例因子
)
(c:SDD)  ;注意这个SDD和输入命令要保持一致

;=========换算单位和公差相关的系统变量如下,供自定义参考

;公差位置垂直        DIMTOLJ        0
;公差文字比例因子        DIMTFAC        1
;公差极限偏差        DIMTOL        关
;公差极限偏差上限        DIMTP        0
;公差极限偏差下限        DIMTM        0
;公差消零        DIMTZIN        8
;公差界限        DIMLIM        关
;公差精度        DIMTDEC        2
;换算公差消零        DIMALTTZ        0
;换算公差精度        DIMALTTD        3
;换算前缀和后缀        DIMAPOST      
;换算单位        DIMALTU        2
;换算比例因子        DIMALTF        0
;换算消零        DIMALTZ        0
;换算精度        DIMALTD        3
;换算舍入        DIMALTRND        0
;换算零后缀        DIMALTMZS      
;换算零因子        DIMALTMZF        100

评分

参与人数 1明经币 +1 收起 理由
统一网名 + 1 很给力!

查看全部评分

发表于 2024-9-29 15:47:32 | 显示全部楼层
很好→很棒!很好~很棒!!很好……很棒!!!字体创建→建议结合自己电脑里字体的路径→容易成功创建!
发表于 2024-9-29 20:47:49 来自手机 | 显示全部楼层
哇,备注的好详细
发表于 2024-9-29 21:41:44 | 显示全部楼层
感谢分享,辛苦了
发表于 2024-9-30 17:26:45 | 显示全部楼层
说明仔细,可以列为教学范例,收藏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-22 20:13 , Processed in 0.188326 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表