; 使用用户输入偏移量调整标注尺寸线
; 命令: 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
不知道呢

可能网站网络不太稳定
  • 上一篇:[原创]lsp文件注释删除工具V1.0
  • 下一篇:没有了