; 使用用户输入偏移量调整标注尺寸线
; 命令: QAZ
; 功能: 让用户输入偏移量,批量调整选中标注的尺寸线偏移
(defun c:QAZ (/ ss i ent ent_data offset dim_type new_ent_data)
(vl-load-com)
; 获取用户输入的偏移量
(setq offset (get-user-offset))
(if (not offset)
(progn
(princ "\n偏移量获取失败,命令取消")
(return)
)
)
; 选择需要调整的标注
(princ "\n请选择需要调整的标注对象...")
(setq ss (ssget '((0 . "DIMENSION"))))
(if (not ss)
(progn
(princ "\n未选择任何标注对象,命令取消")
(return)
)
)
; 遍历所有选中标注并应用偏移
(setq i 0)
(repeat (sslength ss)
(setq ent (ssname ss i)
ent_data (entget ent)
dim_type (logand (cdr (assoc 70 ent_data)) 7)) ; 获取标注类型
; 根据标注类型修改对应组码
(cond
; 线性标注和对齐标注(修改组码44)
((member dim_type '(0 1))
(if (assoc 44 ent_data)
; 存在组码44则替换
(setq new_ent_data (subst (cons 44 offset) (assoc 44 ent_data) ent_data))
; 不存在则添加组码44
(setq new_ent_data (append ent_data (list (cons 44 offset))))
)
)
; 角度标注(修改组码54)
((= dim_type 2)
(if (assoc 54 ent_data)
(setq new_ent_data (subst (cons 54 offset) (assoc 54 ent_data) ent_data))
(setq new_ent_data (append ent_data (list (cons 54 offset))))
)
)
; 其他标注类型提示
(t
(princ (strcat "\n标注 " (itoa (1+ i)) " 为不支持的类型,跳过处理"))
(setq new_ent_data nil)
)
)
; 应用修改
(if new_ent_data
(progn
(entmod new_ent_data)
(princ (strcat "\n已调整标注 " (itoa (1+ i)) " 的尺寸线偏移量"))
)
)
(setq i (1+ i)
new_ent_data nil)
)
(princ (strcat "\n\n处理完成!共调整 " (itoa i) " 个标注"))
(princ)
)
; 获取用户输入的尺寸线偏移量
(defun get-user-offset ()
(setq offset (getreal "\n请输入尺寸线偏移量(如500): "))
(if offset
offset ; 返回用户输入的偏移量
(progn ; 用户取消输入时的处理
(princ "\n未输入有效偏移量,使用默认值500")
500.0 ; 返回默认值
)
)
)
(princ "\n标注尺寸线偏移调整工具已加载!输入命令【QAZ】启动")
(princ "\n功能:输入偏移量,批量调整选中标注的尺寸线偏移")
(princ)
标注都贴合物体了 我想让标注远离物体 这个代码怎么不管用 麻烦老师看一下 抱歉有点乱 不知道怎么回事 不能上传附件了
网友答: 为什么你可以上传图片网友答:
不知道呢
网友答:
可能网站网络不太稳定
; 命令: QAZ
; 功能: 让用户输入偏移量,批量调整选中标注的尺寸线偏移
(defun c:QAZ (/ ss i ent ent_data offset dim_type new_ent_data)
(vl-load-com)
; 获取用户输入的偏移量
(setq offset (get-user-offset))
(if (not offset)
(progn
(princ "\n偏移量获取失败,命令取消")
(return)
)
)
; 选择需要调整的标注
(princ "\n请选择需要调整的标注对象...")
(setq ss (ssget '((0 . "DIMENSION"))))
(if (not ss)
(progn
(princ "\n未选择任何标注对象,命令取消")
(return)
)
)
; 遍历所有选中标注并应用偏移
(setq i 0)
(repeat (sslength ss)
(setq ent (ssname ss i)
ent_data (entget ent)
dim_type (logand (cdr (assoc 70 ent_data)) 7)) ; 获取标注类型
; 根据标注类型修改对应组码
(cond
; 线性标注和对齐标注(修改组码44)
((member dim_type '(0 1))
(if (assoc 44 ent_data)
; 存在组码44则替换
(setq new_ent_data (subst (cons 44 offset) (assoc 44 ent_data) ent_data))
; 不存在则添加组码44
(setq new_ent_data (append ent_data (list (cons 44 offset))))
)
)
; 角度标注(修改组码54)
((= dim_type 2)
(if (assoc 54 ent_data)
(setq new_ent_data (subst (cons 54 offset) (assoc 54 ent_data) ent_data))
(setq new_ent_data (append ent_data (list (cons 54 offset))))
)
)
; 其他标注类型提示
(t
(princ (strcat "\n标注 " (itoa (1+ i)) " 为不支持的类型,跳过处理"))
(setq new_ent_data nil)
)
)
; 应用修改
(if new_ent_data
(progn
(entmod new_ent_data)
(princ (strcat "\n已调整标注 " (itoa (1+ i)) " 的尺寸线偏移量"))
)
)
(setq i (1+ i)
new_ent_data nil)
)
(princ (strcat "\n\n处理完成!共调整 " (itoa i) " 个标注"))
(princ)
)
; 获取用户输入的尺寸线偏移量
(defun get-user-offset ()
(setq offset (getreal "\n请输入尺寸线偏移量(如500): "))
(if offset
offset ; 返回用户输入的偏移量
(progn ; 用户取消输入时的处理
(princ "\n未输入有效偏移量,使用默认值500")
500.0 ; 返回默认值
)
)
)
(princ "\n标注尺寸线偏移调整工具已加载!输入命令【QAZ】启动")
(princ "\n功能:输入偏移量,批量调整选中标注的尺寸线偏移")
(princ)
网友答: 为什么你可以上传图片网友答:
qifeifei 发表于 2025-8-30 11:28
为什么你可以上传图片
不知道呢
网友答:
xunifengshen 发表于 2025-8-30 11:31
不知道呢
可能网站网络不太稳定