明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1492|回复: 10

请教下标注全局比例怎么同步更新?

[复制链接]
发表于 2023-5-19 09:23:57 | 显示全部楼层 |阅读模式
100明经币
本帖最后由 15062311027 于 2023-5-19 09:30 编辑

原贴出处:http://bbs.mjtd.com/forum.php?mo ... %FD&_dsign=3ce0c766

该帖子中动态修改标注动态比例,经原作者修改后,原来的标注样式的界面中全局比例已经同步变化了,但其他已经标注好的标注不同步更新,请教下怎么修改可以同步更新该样式的所有已标注全局比例?
插件

附件: 您需要 登录 才可以下载或查看,没有账号?注册

最佳答案

查看完整内容

;; ;;动态比例 by 明经通道 QQ9034598 ;; (defun c:NM(/ crel cret dxf h lle llt mouse obj objset pt pt2 pt3 sc1 sc2 sname txt xent) (defun creT()(entmake (list '(0 . "TEXT") (cons 1 "1") (list 10 0 0 0) (cons 40 1)))) (defun creL(p1 p2)(entmake (list '(0 . "LINE") (cons 10 p1) (cons 11 p2)))) (setvar "cmdecho" 0) (setq xent (entsel "\n请选择标注对象:")) (if (and xent (= (cdr (assoc 0 ...
发表于 2023-5-19 09:23:58 | 显示全部楼层
;;
;;动态比例   by 明经通道  QQ9034598
;;
(defun c:NM(/ crel cret dxf h lle llt mouse obj objset pt pt2 pt3 sc1 sc2 sname txt xent)
        (defun creT()(entmake (list '(0 . "TEXT") (cons 1 "1") (list 10 0 0 0) (cons 40 1))))
        (defun creL(p1 p2)(entmake (list '(0 . "LINE") (cons 10 p1) (cons 11 p2))))
        (setvar "cmdecho" 0)
        (setq xent (entsel "\n请选择标注对象:"))
        (if (and xent (= (cdr (assoc 0 (entget (car xent)))) "DIMENSION"))
                (progn
                        (setq obj (vlax-ename->vla-object (car xent))
                                pt (cadr xent))
                        (setq sc1 (vla-get-ScaleFactor obj)
                                sname (vla-get-StyleName obj))
                        (creL pt pt)
                        (setq LLe (entget (entlast)))
                        (creT)
                        (setq LLt (entget (entlast)))
                        (while (or (= (car (setq mouse (grread t 5 0))) 5)(= (car mouse) 2))
                                (setq pt2 (cadr mouse)
                                        h (* 0.02 (getvar "VIEWSIZE"))
                                        sc2 (* sc1 (/ (distance pt pt2) h) 0.1)
                                        txt (strcat "全局比例=" (rtos sc2 2))
                                        pt3 (polar pt2 (* -0.45 pi) (* 1.5 h)))
                                (foreach x (list (cons 1 txt)(cons 10 pt3)(cons 40 h))
                                        (setq LLt (subst x (assoc (car x) LLt) LLt)))
                                (entmod LLt)
                                (entmod (subst (cons 11 pt2)(assoc 11 LLe) LLe))
                                (if (null (equal sc2 0 1e-6)) (vla-put-ScaleFactor obj sc2))                               
                        )
                        (setvar "DIMSCALE" sc2)
                        (setq objset (ssget "X" '((0 . "DIMENSION"))))
                        (command "dimedit" "h" objset "")
                        (vl-cmdf "-dimstyle" "a" objset  "")
                        (setq dxf (entget (tblobjname "dimstyle" sname)))
                        (entmod (subst (cons 40 sc2)(assoc 40 dxf) dxf))
                        (command "-DIMSTYLE" "R" sname)
                        (entdel (cdr (assoc -1 LLE)))
                        (entdel (cdr (assoc -1 LLT)))
                )
        )       
        (setvar "cmdecho" 1)
        (princ)
)


回复

使用道具 举报

 楼主| 发表于 2023-5-19 11:03:06 | 显示全部楼层
xj6019 发表于 2023-5-19 09:23
;;
;;动态比例   by 明经通道  QQ9034598
;;

谢谢援手!!!
回复

使用道具 举报

 楼主| 发表于 2023-5-21 08:52:26 | 显示全部楼层
xj6019 发表于 2023-5-19 09:23
;;
;;动态比例   by 明经通道  QQ9034598
;;

你好 虽然现在可以把已经标注的同步更新过来  但是重新标注的还是没有同步变?麻烦你有空再修改下哈
回复

使用道具 举报

 楼主| 发表于 2023-5-21 09:04:12 | 显示全部楼层
xj6019 发表于 2023-5-19 09:23
;;
;;动态比例   by 明经通道  QQ9034598
;;

好像不是插件的问题 原先的插件可以把标注样式里的全局比例同步改了 现在我试了之前的插件 竟然也没有同步改掉了 不知道咋回事
回复

使用道具 举报

发表于 2023-5-21 09:22:48 | 显示全部楼层
15062311027 发表于 2023-5-21 08:52
你好 虽然现在可以把已经标注的同步更新过来  但是重新标注的还是没有同步变?麻烦你有空再修改下哈

这样试试

(defun c:NM(/ crel cret dxf h lle llt mouse obj objset pt pt2 pt3 sc1 sc2 sname txt xent)
        (defun creT()(entmake (list '(0 . "TEXT") (cons 1 "1") (list 10 0 0 0) (cons 40 1))))
        (defun creL(p1 p2)(entmake (list '(0 . "LINE") (cons 10 p1) (cons 11 p2))))
        (setvar "cmdecho" 0)
        (setq xent (entsel "\n请选择标注对象:"))
        (if (and xent (= (cdr (assoc 0 (entget (car xent)))) "DIMENSION"))
                (progn
                        (setq obj (vlax-ename->vla-object (car xent))
                                pt (cadr xent))
                        (setq sc1 (vla-get-ScaleFactor obj)
                                sname (vla-get-StyleName obj))
                        (creL pt pt)
                        (setq LLe (entget (entlast)))
                        (creT)
                        (setq LLt (entget (entlast)))
                        (while (or (= (car (setq mouse (grread t 5 0))) 5)(= (car mouse) 2))
                                (setq pt2 (cadr mouse)
                                        h (* 0.02 (getvar "VIEWSIZE"))
                                        sc2 (* sc1 (/ (distance pt pt2) h) 0.1)
                                        txt (strcat "全局比例=" (rtos sc2 2))
                                        pt3 (polar pt2 (* -0.45 pi) (* 1.5 h)))
                               
                                (foreach x (list (cons 1 txt)(cons 10 pt3)(cons 40 h))
                                        (setq LLt (subst x (assoc (car x) LLt) LLt)))
                                (entmod LLt)
                                (entmod (subst (cons 11 pt2)(assoc 11 LLe) LLe))
                                (if (null (equal sc2 0 1e-6)) (vla-put-ScaleFactor obj sc2))                              
                        )
                        (setvar "DIMSCALE" sc2)
                        (setq objset (ssget "X" '((0 . "DIMENSION"))))
                        (command "dimedit" "h" objset "")
                        (vl-cmdf "-dimstyle" "a" objset  "")
                        (setq dxf (entget (tblobjname "dimstyle" sname)))
                        (entmod (subst (cons 40 sc2)(assoc 40 dxf) dxf))
                        (command "-DIMSTYLE" "R" sname)
                        (entdel (cdr (assoc -1 LLE)))
                        (entdel (cdr (assoc -1 LLT)))
                )
        )      
        (setvar "DIMSCALE" sc2)       
        (setvar "cmdecho" 1)
        (princ)
)
回复

使用道具 举报

 楼主| 发表于 2023-5-21 09:22:55 | 显示全部楼层
xj6019 发表于 2023-5-19 09:23
;;
;;动态比例   by 明经通道  QQ9034598
;;

你好 测试了下 现在是必须自己在标注样式界面手动修改一下全局比例 接下来再使用插件才会同步修改全部比例 这个是哪里设置有问题么?
回复

使用道具 举报

 楼主| 发表于 2023-5-21 09:25:34 | 显示全部楼层
xj6019 发表于 2023-5-21 09:22
这样试试

(defun c:NM(/ crel cret dxf h lle llt mouse obj objset pt pt2 pt3 sc1 sc2 sname txt xe ...

厉害 可以了 谢谢哈
回复

使用道具 举报

发表于 2024-2-14 18:10:57 | 显示全部楼层
非常厉害,AutoCAD2023测试通过
回复

使用道具 举报

发表于 2024-2-17 12:47:00 | 显示全部楼层
收藏了,谢谢大师分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-18 08:33 , Processed in 0.188749 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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