eachy 发表于 2006-5-27 06:39:15

[日积月累]:对垂直、水平标注按间距分列/行对齐(附件更新)

应一位网友所写的标注对齐程序。

注意:测试请下载附件,以下代码不能直接使用!!

(defun c:AlDim (/ ss ssl i e el p dl tf dist)
(if (and (setq ss (ssget '((0 . "dimension") (70 . 32))))
           (setq dist (getdist "\n输入间距: "))
      )
    (progn
      (command ".undo" "be")
      (setq ssl        (sslength ss)
          i        -1
      )
      (repeat ssl
        (setq e       (ssname ss (setq i (1+ i)))
              el (entget e)
              p       (cdr (assoc 10 el))
              dl (cons (list p e) dl)
        )
        (if
          (and (not tf) (equal (cdr (assoc 50 el)) (/ pi 2.) 1e-6)) ;_ver
           (setq tf t)
        )
      )
      (if tf
        (setq dl (ea:sort_entitydl 1 4 dist)) ;_ver
        (setq dl (ea:sort_entitydl 0 1 dist))
      )
      (setq p (caaar dl))
      (foreach x dl
        (foreach d x
          (setq el (entget (cadr d)))
          (entmod (subst (cons 10
                             (if tf
                               (list (car p) (cadar d))
                               (list (caar d) (cadr p))
                             )
                       )
                       (assoc 10 el)
                       el
                  )
          )
        )
        (setq p        (if tf
                  (mapcar '+ (list dist 0. 0.) p)
                  (mapcar '- p (list 0. (- dist) 0.))
                )
        )
      )
      (command ".undo" "end")
    )
)
(princ)
)
(princ "\nStart command with AlDim , eachy [www.xdcad.net]!")
(princ)

xbx7920 发表于 2006-5-27 09:23:15

个人觉得没有aeo斑竹的具有相同功能的程序好。

eachy 发表于 2006-5-27 09:32:09

这里有一个
http://www.xdcad.net/forum/showthread.php?s=&threadid=51960

aeo 发表于 2006-5-27 17:01:07

最初由 xbx7920 发布
个人觉得没有aeo斑竹的具有相同功能的程序好。

一直想写一个圆弧标注对齐的,就是没时间.

圆弧标注要移动一下位置很麻烦,比直线的麻烦的多.

不知谁写了,省的我动脑筋.
一般的商用软件里都没有.

eachy 发表于 2006-5-28 07:22:39

最初由 aeo 发布


一直想写一个圆弧标注对齐的,就是没时间.

圆弧标注要移动一下位置很麻烦,比直线的麻烦的多.

不知谁写了...

(defun c:aladim        (/ ss ssl i e el typ r dis pc dl)
(if
    (and (setq ss (ssget '((0 . "dimension") (100 . "*AngularDimension"))))
       (setq dis (getdist "\n间距: "))
    )
   (progn
       (setq ssl (sslength ss)
             i       -1
       )
       (repeat ssl
       (setq e   (ssname ss (setq i (1+ i)))
             el(entget e)
             typ (cdr (assoc 100 (reverse el)))
       )
       (if (wcmatch typ "*2*")
           (setq pcen (inters (cdr (assoc 10 el))
                              (cdr (assoc 15 el))
                              (cdr (assoc 14 el))
                              (cdr (assoc 13 el))
                              nil
                      )
               r    (distance pcen (cdr (assoc 16 el)))
           )
           (setq pcen (cdr (assoc 15 el))
               r    (distance pcen (cdr (assoc 10 el)))
           )
       )
       (setq dl (cons (list r pcen e) dl))
       )
       (setq dl (ea:sort_entity dl nil nil dis))
       (setq pc        (cadaar dl)
             r        (caaar dl)
             dl        (mapcar '(lambda (x) (mapcar 'last x)) dl)
       )
       (foreach        a dl
       (foreach d a
           (setq el (entget d)
               p(cdr (assoc 11 el))
           )
           (entmod (subst (cons 11 (polar pc (angle pc p) r))
                          (assoc 11 el)
                          el
                   )
           )
       )
       )
       (setq r (+ r dis))
   )
)
(princ)
)

coolzhb 发表于 2006-5-28 20:54:12

Re: [日积月累]:对垂直、水平标注按间距分列/行对齐(附件更新)

最初由 eachy 发布
应一位网友所写的标注对齐程序。

注意:测试请下载附件,以下代码不能直接使用!!

(defun c:AlDim (/ ss ssl i e el p dl tf dist)
(if (and (setq ss (ssget '((0 . "dimension"...

谢谢eachy版主的程序,已经达到我的要求了!

l19811102 发表于 2006-5-29 22:11:19

ea的程序有个问题(不知道是不是编程思路本来就是这样),假设输入的间距是800,而如果两行尺寸之间的距离不足800,那么程序就将两行标注对齐。
是不是应该加一个开关,询问究竟是要将多行标注全部对齐,还是调整标注的间距?

eachy 发表于 2006-5-29 22:52:50

最初由 l19811102 发布
ea的程序有个问题(不知道是不是编程思路本来就是这样),假设输入的间距是800,而如果两行尺寸之间的距离不足800,那么程序就将两行标注对齐。
是不是应该加一个开关,询问究竟是要将多行标注全部对齐,还是调整标...
查看 ea:sort_entity 的说明文件,将dis修改为一个合适的值或者在图中指定
(ea:sort_entity dl nil nil dis))

monkey12 发表于 2006-7-26 10:42:45

非常感谢楼主提供.......楼主,能帮俺写一个能标注当一个角度大于180度的程序吗????
万分感激!!!!

whxiwei 发表于 2008-4-1 18:02:22

我看看,使用一下啊

langjs 发表于 2009-4-15 17:59:07

好的,谢谢

lcl19811125 发表于 2009-12-31 12:06:05

郁闷,没有爱心币,下不了!!

flowerson 发表于 2009-12-31 15:04:05

版主,附件下载不了了!请帮忙查查原因。

lcl19811125 发表于 2009-12-31 15:34:01

有了爱心币,下了两次都没有东西,快查查啊

6020 发表于 2026-2-3 14:08:03

没看到附件,试试回复后能不能看到附件
页: [1]
查看完整版本: [日积月累]:对垂直、水平标注按间距分列/行对齐(附件更新)