明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1850|回复: 9

[提问] 求大神写个平行线尺寸标注

[复制链接]
发表于 2015-5-17 10:39:25 | 显示全部楼层 |阅读模式
求大神写个平行线尺寸标注,斜着的水平或者竖直的平行线间的尺寸标注,点选两个平行线或者多选多条平行线后自动标注平行线之间的尺寸。这样对于平行线可以不用去点点而且这时候DAL和DLI可以通用。提高画图速度。希望高手行动起来,我发的好多问题没人理会,菜鸟在这里恳求大家把论坛气氛弄上去啊,是不是我的问题都太简单?还是太难?
发表于 2015-5-17 13:54:26 | 显示全部楼层

本帖子中包含更多资源

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

x
 楼主| 发表于 2015-5-17 16:20:26 | 显示全部楼层
首先谢谢老大回复,能否发给我一下啊,我邮箱9492883@QQ.COM,或者取消下收费啊,没钱的人啊,
 楼主| 发表于 2015-5-31 16:20:02 | 显示全部楼层
下载来用还不能用没有XYp-star程序,还花了一币,亏了
发表于 2015-5-31 16:41:25 | 显示全部楼层
呵呵,xyp1964他的都是为代码,
发表于 2018-5-9 20:52:13 | 显示全部楼层
我写的代码很有年头了,就是有些BUG

  1. ;;;==选择平行一组直线,标准他们间距尺寸==========================================*
  2. (defun c:ll (/ s p n a pt0 pt00 pt1 pt2 pt3 pt4 pt5 pt6 ang x1 x2 y1 y2 p1
  3.               dis ang1 nam e pt10 pt11 f ptp0 pt01
  4.             )
  5.   (sset)
  6.   (setq s (ssget))
  7.   (while (/= s nil)
  8.     (setq p (- (sslength s) 1))
  9.     (setq n 0)
  10.     (setq a (ssadd))
  11.     (while (<= n p)
  12.       (setq pt1 (entget (ssname s n)))
  13.       (if (or
  14.             (= "LINE" (cdr (assoc 0 pt1)))
  15.             (= "LWPOLYLINE" (cdr (assoc 0 pt1)))
  16.           )
  17.         (ssadd (ssname s n) a)
  18.       )
  19.       (setq n (+ n 1))
  20.     )
  21.     (setq p (- (sslength a) 1))
  22.     (setq n 0)
  23.     (while (<= n p)
  24.       (setq pt1 (entget (setq nam (ssname a n))))
  25.       (if (= n 0)
  26.         (progn
  27.           (if (= "LINE" (cdr (assoc 0 pt1)))
  28.             (progn
  29.               (setq pt2 (cdr (assoc 10 pt1)))
  30.               (setq pt3 (cdr (assoc 11 pt1)))
  31.             )
  32.           )
  33.           (if (= "LWPOLYLINE" (cdr (assoc 0 pt1)))
  34.             (progn
  35.               (setq pt2 (entnext nam))
  36.               (setq pt3 (entnext pt2))
  37.               (setq pt2 (entget pt2))
  38.               (setq pt3 (entget pt3))
  39.               (setq pt2 (cdr (assoc 10 pt2)))
  40.               (setq pt3 (cdr (assoc 10 pt3)))
  41.             )
  42.           )
  43.           (setq ang1 (angle pt2 pt3))
  44.           (setvar "SNAPANG" ang1)
  45.           (setq ang (+ ang1 (/ pi 2)))
  46.           (setq pt4 (polar pt2 ang (* (getvar "DIMSCALE") 3.0)))
  47.           (setq e (list pt2))
  48.         )
  49.       )
  50.       (if (> n 0)
  51.         (progn
  52.           (if (= "LINE" (cdr (assoc 0 pt1)))
  53.             (progn
  54.               (setq pt10 (cdr (assoc 10 pt1)))
  55.               (setq pt11 (cdr (assoc 11 pt1)))
  56.             )
  57.           )
  58.           (if (= "LWPOLYLINE" (cdr (assoc 0 pt1)))
  59.             (progn
  60.               (setq pt10 (entnext nam))
  61.               (setq pt11 (entnext pt10))
  62.               (setq pt10 (entget pt10))
  63.               (setq pt11 (entget pt11))
  64.               (setq pt10 (cdr (assoc 10 pt10)))
  65.               (setq pt11 (cdr (assoc 10 pt11)))
  66.             )
  67.           )
  68.           (setq ang1 (angle pt10 pt11))
  69.           (if (and
  70.                 (/= (abs (- ang ang1)) 0.0)
  71.                 (/= (abs (- ang ang1)) pi)
  72.               )
  73.             (progn
  74.               (setq pt10 (inters
  75.                            pt2
  76.                            pt4
  77.                            pt10
  78.                            pt11
  79.                            nil
  80.                          )
  81.               )
  82.               (setq e (append
  83.                         (list pt10)
  84.                         e
  85.                       )
  86.               )
  87.             )
  88.           )
  89.         )
  90.       )
  91.       (setq n (+ n 1))
  92.     )
  93.     (setq p (- (length e) 1))
  94.     (setq n 0)
  95.     (setq f (ssadd))
  96.     (while (< n p)
  97.       (setq pt0 (nth n e))
  98.       (setq pt1 (nth (+ n 1) e))
  99.       (setq pt5 (polar pt0 (- ang1 (* 0.25 pi)) (* (getvar "DIMSCALE") 0.71)))
  100.       (setq pt6 (polar pt0 (+ ang1 (* 0.75 pi)) (* (getvar "DIMSCALE") 0.71)))
  101.       (command "_.PLINE" pt5 "W" (* (getvar "DIMSCALE") 0.45) "" pt6 "")
  102.       (ssadd (entlast) f)
  103.       (setq pt5 (polar pt0 ang1 (* (getvar "DIMSCALE") 10.0)))
  104.       (setq pt6 (polar pt0 (+ ang1 pi) (* (getvar "DIMSCALE") 4.0)))
  105.       (command "_.PLINE" pt5 "W" 0 "" pt6 "")
  106.       (ssadd (entlast) f)
  107.       (if (= n 0)
  108.         (setq pt00 pt0)
  109.       )
  110.       (if (= n (- p 1))
  111.         (progn
  112.           (setq pt1 (nth p e))
  113.           (setq pt5 (polar pt1 (- ang1 (* 0.25 pi)) (* (getvar "DIMSCALE") 0.71)))
  114.           (setq pt6 (polar pt1 (+ ang1 (* 0.75 pi)) (* (getvar "DIMSCALE") 0.71)))
  115.           (command "_.PLINE" pt5 "W" (* (getvar "DIMSCALE") 0.45) "" pt6 "")
  116.           (ssadd (entlast) f)
  117.           (setq pt5 (polar pt1 ang1 (* (getvar "DIMSCALE") 10.0)))
  118.           (setq pt6 (polar pt1 (+ ang1 pi) (* (getvar "DIMSCALE") 4.0)))
  119.           (command "_.PLINE" pt5 "W" 0 "" pt6 "")
  120.           (ssadd (entlast) f)
  121.           (setq ptp0 pt1)
  122.           (command "_.PLINE" pt00 "W" 0 "" ptp0 "")
  123.           (ssadd (entlast) f)
  124.         )
  125.       )
  126.       (setq dis (distance pt1 pt0))
  127.       (setq y1 (nth 1 pt0))
  128.       (setq y2 (nth 1 pt1))
  129.       (setq x1 (nth 0 pt0))
  130.       (setq x2 (nth 0 pt1))
  131.       (if (> y1 y2)
  132.         (progn
  133.           (setq ang (angle pt1 pt0))
  134.           (setq pt01 (polar pt1 ang (/ dis 2)))
  135.         )
  136.       )
  137.       (if (< y1 y2)
  138.         (progn
  139.           (setq ang (angle pt0 pt1))
  140.           (setq pt01 (polar pt0 ang (/ dis 2)))
  141.         )
  142.       )
  143.       (if (= y1 y2)
  144.         (progn
  145.           (if (> x1 x2)
  146.             (progn
  147.               (setq ang (angle pt1 pt0))
  148.               (setq pt01 (polar pt1 ang (/ dis 2)))
  149.             )
  150.           )
  151.           (if (< x1 x2)
  152.             (progn
  153.               (setq ang (angle pt0 pt1))
  154.               (setq pt01 (polar pt0 ang (/ dis 2)))
  155.             )
  156.           )
  157.         )
  158.       )
  159.       (setq pt01 (polar pt01 (+ ang (/ pi 2)) (getvar "DIMSCALE")))
  160.       (setvar "dimlfac" (/ 100 (getvar "dimscale")))
  161.       (setq dis (rtos (* (getvar "dimlfac") dis)))  
  162.       (setq p1 (strlen dis))
  163.       (setq pt4 (polar pt01 ang p1))
  164.       (setq pt3 (polar pt01 (+ ang pi) p1))
  165.       (setvar "TEXTSTYLE" "STANDARD")
  166.       (setq ang (angle pt3 pt4))
  167.       (command "TEXT" pt3 (* (getvar "DIMSCALE") 3.0) ang dis)
  168.       (ssadd (entlast) f)
  169.       (setq n (+ n 1))
  170.     )
  171.     (setvar "ORTHOMODE" 1)
  172.     (command "MOVE" f "" pt00 pause "")
  173.     (setvar "ORTHOMODE" 0)
  174.     (setvar "SNAPANG" 0)
  175.     (sset1)
  176.     (setq s (ssget))
  177.   )
  178. )
  179. ;;; ================================


发表于 2019-6-23 21:32:18 | 显示全部楼层
顶起来这个帖子,到目前为止,没有标注平行线间距的好代码!!!
发表于 2019-6-24 08:59:58 | 显示全部楼层
尘缘一生 发表于 2019-6-23 21:32
顶起来这个帖子,到目前为止,没有标注平行线间距的好代码!!!

有的 探索者可以办到
发表于 2019-6-24 19:24:52 | 显示全部楼层
本帖最后由 e2002 于 2019-6-30 23:19 编辑

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

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


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




点评

QDIM标不出倾斜的,到目前为止,论坛没有放出来的代码!  发表于 2019-6-30 19:52
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-18 20:36 , Processed in 0.202468 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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