yxp 发表于 2013-6-28 23:02:22

不知道标注全局比例?就动态修改。附: 标注断开及连续标注,标注合并

本帖最后由 yxp 于 2013-6-30 23:14 编辑

1 动态全局比例
   同时更新当前修改的标注样式的全局比例,使其对后续标注有效

动态全局比例源码:

2 标注断开+连续标注
   如果取点在标注内,就是断开,取点在标注外就是连续标注。

标注断开及连续,源码:

3 标注合并
   水平、垂直、对齐标注可批量一次选择,各自合并。

标注合并源码:



4 批量修改标注全局比例
非动态,手动输入比例
批量修改比例源码:

.

yefei812678 发表于 2023-12-18 10:38:18

yxp 发表于 2013-6-30 22:06
sorry ,原程序已更新,如果你不想下载就用下面的getmxy函数,替换原来的同名函数即可,Lsort 函数在标注断 ...

还是不行啊?

qazxswk 发表于 2022-2-4 16:26:18

yxp 发表于 2013-6-29 02:59
哈哈,难道这就是抛砖引玉?

这个代码,能不能修改为,直接连续标注,而不用先选择标注再进行连续标注。

tianyi1230 发表于 2013-6-28 23:18:03

沙发顶一个,

xyp1964 发表于 2013-6-29 00:27:12

yxp 发表于 2013-6-29 02:59:49

本帖最后由 yxp 于 2013-6-30 23:04 编辑

哈哈,难道这就是抛砖引玉?
;;========================================
;; 标注断开及连续标注程序
;; by明经通道QQ: 9034598 2009年8月15日
;;========================================
(vl-load-com)
(defun c:ddr (/ n x ent entL p2 p3 px1 px2 py1 py2 ptdd xl sa pt0 ppt ptdd)
(setvar "cmdecho" 0)
(command "undo" "be")
(setq entL '())
(if (setq ent (centsel "\n选择标注 或 <退出>:" "DIMENSION"))
   (progn
   (setq x (entget ent)
      entL (cons ent entL)
          p2 (dxf 13 x)
          p3 (dxf 14 x)
          px1 (list (car p2) (/ (+ (cadr p2)(cadr p3)) 2.0))
          px2 (list (car p3) (/ (+ (cadr p2)(cadr p3)) 2.0))
          py1 (list (/ (+ (car p2)(car p3)) 2.0) (cadr p2))
          py2 (list (/ (+ (car p2)(car p3)) 2.0) (cadr p3))
          ptdd (list p2 p3)
          XL (entget (dxf -2 (tblsearch "block" (dxf 2 x))))
          SA (abs (sin (angle (dxf 10 xl) (dxf 11 xl)))))
   (while (setq pt0 (getpoint "\n取点 或 <退出>:"))
       (command ".copy" ent "" "0,0" "@")
       (setq entL (cons (entlast) entL))
    (cond
      ((equal SA 1 1e-6) ;;水平
         (setq ptdd (cons (ptper pt0 px1 px2) ptdd)
               ppt (Lsort ptdd 0))
      )
      ((equal SA 0 1e-6) ;;垂直
         (setq ptdd (cons (ptper pt0 py1 py2) ptdd)
                ppt (Lsort ptdd 1))
       )
       (t (setq ptdd (cons (ptper pt0 p2 p3) ptdd)
            ppt (Lsort ptdd 2)))
      )
       (setq ppL (mapcar 'list ppt (cdr ppt))
            n 0)
         (repeat (length ppL)
         (setq xf (entget (nth n entL))
                nxf (subst (cons 13 (car(nth n ppL)))(assoc 13 xf) xf)
                wxf (subst (cons 14 (cadr (nth n ppL)))(assoc 14 nxf) nxf)
                n (1+ n))
         (entmod wxf)
         )
   ))
(princ "\n退出")
)
(command "undo" "e") (setvar "cmdecho" 1)
(princ)
)

(defun centsel (msg f)
(while (if (setq el (car (entsel msg))) (if (= (cdr (assoc 0 (entget el))) f) nil t) nil)) el
)
;;取值dxf
(defun dxf (x e)(cdr (assoc x e)))
;;求垂足
(defun ptper (pt0 pt1 pt2)
(inters pt0 (polar pt0 (+ (angle pt1 pt2) (/ pi 2)) 1.0) pt1 pt2 nil)
)

bai2000 发表于 2013-6-29 09:16:17

楼主好帅啊,能支持天正的标注么?

xiaxiang 发表于 2013-6-29 09:42:45

这个功能不错,支持一下

zlg258369 发表于 2013-6-29 10:26:07

yxp 发表于 2013-6-29 02:59 static/image/common/back.gif
哈哈,难道这就是抛砖引玉?再来一个。




这个不错呦

davide888 发表于 2013-6-29 10:50:26

真不错神人

yangist 发表于 2013-6-29 10:59:43

yxp 发表于 2013-6-29 02:59 static/image/common/back.gif
哈哈,难道这就是抛砖引玉?再来一个。




标注分解后缺少个删除原标注的步骤

davide888 发表于 2013-6-29 11:00:40

谢谢源码分享
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 不知道标注全局比例?就动态修改。附: 标注断开及连续标注,标注合并