nishuihanjian 发表于 2015-5-17 10:39:25

求大神写个平行线尺寸标注

求大神写个平行线尺寸标注,斜着的水平或者竖直的平行线间的尺寸标注,点选两个平行线或者多选多条平行线后自动标注平行线之间的尺寸。这样对于平行线可以不用去点点而且这时候DAL和DLI可以通用。提高画图速度。希望高手行动起来,我发的好多问题没人理会,菜鸟在这里恳求大家把论坛气氛弄上去啊,是不是我的问题都太简单?还是太难?

xyp1964 发表于 2015-5-17 13:54:26


nishuihanjian 发表于 2015-5-17 16:20:26

首先谢谢老大回复,能否发给我一下啊,我邮箱9492883@QQ.COM,或者取消下收费啊,没钱的人啊,

nishuihanjian 发表于 2015-5-31 16:20:02

下载来用还不能用没有XYp-star程序,还花了一币,亏了

simpleye 发表于 2015-5-31 16:41:25

呵呵,xyp1964他的都是为代码,

尘缘一生 发表于 2018-5-9 20:52:13

我写的代码很有年头了,就是有些BUG

;;;==选择平行一组直线,标准他们间距尺寸==========================================*
(defun c:ll (/ s p n a pt0 pt00 pt1 pt2 pt3 pt4 pt5 pt6 ang x1 x2 y1 y2 p1
            dis ang1 nam e pt10 pt11 f ptp0 pt01
            )
(sset)
(setq s (ssget))
(while (/= s nil)
    (setq p (- (sslength s) 1))
    (setq n 0)
    (setq a (ssadd))
    (while (<= n p)
      (setq pt1 (entget (ssname s n)))
      (if (or
            (= "LINE" (cdr (assoc 0 pt1)))
            (= "LWPOLYLINE" (cdr (assoc 0 pt1)))
          )
      (ssadd (ssname s n) a)
      )
      (setq n (+ n 1))
    )
    (setq p (- (sslength a) 1))
    (setq n 0)
    (while (<= n p)
      (setq pt1 (entget (setq nam (ssname a n))))
      (if (= n 0)
      (progn
          (if (= "LINE" (cdr (assoc 0 pt1)))
            (progn
            (setq pt2 (cdr (assoc 10 pt1)))
            (setq pt3 (cdr (assoc 11 pt1)))
            )
          )
          (if (= "LWPOLYLINE" (cdr (assoc 0 pt1)))
            (progn
            (setq pt2 (entnext nam))
            (setq pt3 (entnext pt2))
            (setq pt2 (entget pt2))
            (setq pt3 (entget pt3))
            (setq pt2 (cdr (assoc 10 pt2)))
            (setq pt3 (cdr (assoc 10 pt3)))
            )
          )
          (setq ang1 (angle pt2 pt3))
          (setvar "SNAPANG" ang1)
          (setq ang (+ ang1 (/ pi 2)))
          (setq pt4 (polar pt2 ang (* (getvar "DIMSCALE") 3.0)))
          (setq e (list pt2))
      )
      )
      (if (> n 0)
      (progn
          (if (= "LINE" (cdr (assoc 0 pt1)))
            (progn
            (setq pt10 (cdr (assoc 10 pt1)))
            (setq pt11 (cdr (assoc 11 pt1)))
            )
          )
          (if (= "LWPOLYLINE" (cdr (assoc 0 pt1)))
            (progn
            (setq pt10 (entnext nam))
            (setq pt11 (entnext pt10))
            (setq pt10 (entget pt10))
            (setq pt11 (entget pt11))
            (setq pt10 (cdr (assoc 10 pt10)))
            (setq pt11 (cdr (assoc 10 pt11)))
            )
          )
          (setq ang1 (angle pt10 pt11))
          (if (and
                (/= (abs (- ang ang1)) 0.0)
                (/= (abs (- ang ang1)) pi)
            )
            (progn
            (setq pt10 (inters
                           pt2
                           pt4
                           pt10
                           pt11
                           nil
                         )
            )
            (setq e (append
                        (list pt10)
                        e
                      )
            )
            )
          )
      )
      )
      (setq n (+ n 1))
    )
    (setq p (- (length e) 1))
    (setq n 0)
    (setq f (ssadd))
    (while (< n p)
      (setq pt0 (nth n e))
      (setq pt1 (nth (+ n 1) e))
      (setq pt5 (polar pt0 (- ang1 (* 0.25 pi)) (* (getvar "DIMSCALE") 0.71)))
      (setq pt6 (polar pt0 (+ ang1 (* 0.75 pi)) (* (getvar "DIMSCALE") 0.71)))
      (command "_.PLINE" pt5 "W" (* (getvar "DIMSCALE") 0.45) "" pt6 "")
      (ssadd (entlast) f)
      (setq pt5 (polar pt0 ang1 (* (getvar "DIMSCALE") 10.0)))
      (setq pt6 (polar pt0 (+ ang1 pi) (* (getvar "DIMSCALE") 4.0)))
      (command "_.PLINE" pt5 "W" 0 "" pt6 "")
      (ssadd (entlast) f)
      (if (= n 0)
      (setq pt00 pt0)
      )
      (if (= n (- p 1))
      (progn
          (setq pt1 (nth p e))
          (setq pt5 (polar pt1 (- ang1 (* 0.25 pi)) (* (getvar "DIMSCALE") 0.71)))
          (setq pt6 (polar pt1 (+ ang1 (* 0.75 pi)) (* (getvar "DIMSCALE") 0.71)))
          (command "_.PLINE" pt5 "W" (* (getvar "DIMSCALE") 0.45) "" pt6 "")
          (ssadd (entlast) f)
          (setq pt5 (polar pt1 ang1 (* (getvar "DIMSCALE") 10.0)))
          (setq pt6 (polar pt1 (+ ang1 pi) (* (getvar "DIMSCALE") 4.0)))
          (command "_.PLINE" pt5 "W" 0 "" pt6 "")
          (ssadd (entlast) f)
          (setq ptp0 pt1)
          (command "_.PLINE" pt00 "W" 0 "" ptp0 "")
          (ssadd (entlast) f)
      )
      )
      (setq dis (distance pt1 pt0))
      (setq y1 (nth 1 pt0))
      (setq y2 (nth 1 pt1))
      (setq x1 (nth 0 pt0))
      (setq x2 (nth 0 pt1))
      (if (> y1 y2)
      (progn
          (setq ang (angle pt1 pt0))
          (setq pt01 (polar pt1 ang (/ dis 2)))
      )
      )
      (if (< y1 y2)
      (progn
          (setq ang (angle pt0 pt1))
          (setq pt01 (polar pt0 ang (/ dis 2)))
      )
      )
      (if (= y1 y2)
      (progn
          (if (> x1 x2)
            (progn
            (setq ang (angle pt1 pt0))
            (setq pt01 (polar pt1 ang (/ dis 2)))
            )
          )
          (if (< x1 x2)
            (progn
            (setq ang (angle pt0 pt1))
            (setq pt01 (polar pt0 ang (/ dis 2)))
            )
          )
      )
      )
      (setq pt01 (polar pt01 (+ ang (/ pi 2)) (getvar "DIMSCALE")))
      (setvar "dimlfac" (/ 100 (getvar "dimscale")))
      (setq dis (rtos (* (getvar "dimlfac") dis)))
      (setq p1 (strlen dis))
      (setq pt4 (polar pt01 ang p1))
      (setq pt3 (polar pt01 (+ ang pi) p1))
      (setvar "TEXTSTYLE" "STANDARD")
      (setq ang (angle pt3 pt4))
      (command "TEXT" pt3 (* (getvar "DIMSCALE") 3.0) ang dis)
      (ssadd (entlast) f)
      (setq n (+ n 1))
    )
    (setvar "ORTHOMODE" 1)
    (command "MOVE" f "" pt00 pause "")
    (setvar "ORTHOMODE" 0)
    (setvar "SNAPANG" 0)
    (sset1)
    (setq s (ssget))
)
)
;;; ================================

尘缘一生 发表于 2019-6-23 21:32:18

顶起来这个帖子,到目前为止,没有标注平行线间距的好代码!!!

依然小小鸟 发表于 2019-6-24 08:59:58

尘缘一生 发表于 2019-6-23 21:32
顶起来这个帖子,到目前为止,没有标注平行线间距的好代码!!!

有的 探索者可以办到

e2002 发表于 2019-6-24 19:24:52

本帖最后由 e2002 于 2019-6-30 23:19 编辑

这种有什么好写的?直接qdim不就得了。至于平行线非正交当前UCS的情况,先转一下UCS,然后qdim即可。

另外:现在的dim命令功能也很强大。


我一直想表达的是:
       要学好Acad的基本功能,而不是遇到点什么就要去写程序来处理。
       更不可取的是自己不会写就做伸手党。




页: [1]
查看完整版本: 求大神写个平行线尺寸标注