求大神写个平行线尺寸标注
求大神写个平行线尺寸标注,斜着的水平或者竖直的平行线间的尺寸标注,点选两个平行线或者多选多条平行线后自动标注平行线之间的尺寸。这样对于平行线可以不用去点点而且这时候DAL和DLI可以通用。提高画图速度。希望高手行动起来,我发的好多问题没人理会,菜鸟在这里恳求大家把论坛气氛弄上去啊,是不是我的问题都太简单?还是太难?首先谢谢老大回复,能否发给我一下啊,我邮箱9492883@QQ.COM,或者取消下收费啊,没钱的人啊, 下载来用还不能用没有XYp-star程序,还花了一币,亏了 呵呵,xyp1964他的都是为代码, 我写的代码很有年头了,就是有些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
顶起来这个帖子,到目前为止,没有标注平行线间距的好代码!!!
有的 探索者可以办到 本帖最后由 e2002 于 2019-6-30 23:19 编辑
这种有什么好写的?直接qdim不就得了。至于平行线非正交当前UCS的情况,先转一下UCS,然后qdim即可。
另外:现在的dim命令功能也很强大。
我一直想表达的是:
要学好Acad的基本功能,而不是遇到点什么就要去写程序来处理。
更不可取的是自己不会写就做伸手党。
页:
[1]