明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 10020|回复: 29

[源码] GS工具箱,快速拉线标注,简单、实用、源码

  [复制链接]
发表于 2019-9-26 09:10:21 | 显示全部楼层 |阅读模式


  1. (defun c:DDF (/ minsize pt1 pt2 ss intlist x y lds olden pts1 pts2 n ens code i ptx endata)
  2. (if ddf_old_minsize (setq  minsize ddf_old_minsize))

  3. (while (progn (initget  "S")  (setq pt1 (getpoint "\n指定标注起始方向 \n输入S可以设置过滤尺寸")))
  4. (while (= "S" pt1)
  5.        (if (null ddf_old_minsize)
  6.            (setq minsize (getdist "\n请输入过滤尺寸,默认为【5mm】"))
  7.            (setq minsize (getdist (strcat "\n请输入过滤尺寸,上次输入为【" (rtos ddf_old_minsize 2 2) "mm】"))))
  8.         (if (null minsize) (setq minsize 5))
  9.         (setq ddf_old_minsize minsize)
  10.         (initget  "S")
  11.         (setq pt1 (getpoint "\n指定标注起始方向 \n输入S可以设置过滤尺寸"))
  12. );end while

  13. (if (null minsize) (setq minsize 5))
  14. (setq ddf_old_minsize minsize)
  15. (setq pt2 (getpoint pt1 "\n指定标注方向"))
  16. (if (setq ss (ssget "F" (list pt1 pt2) '((0 . "*E,CIRCLE,ARC")(6 . "BYLAYER"))))
  17. (progn
  18. (setq intlist () endata (ssnamex ss))
  19. (foreach x endata (foreach y (cdddr x) (setq intlist (cons (cadr y) intlist))))
  20. ;;点要排序一下才行,按从开始点的距离来排序

  21. (setq lds (+ 10 (distance pt1 pt2)))
  22. (setq intlist (vl-remove-if-not '(lambda (x) (<= (distance x pt1) lds)) intlist))
  23. (setq intlist  (vl-sort  intlist   '(lambda (x y) (< (distance pt1 x) (distance pt1 y)))))
  24. ;;这里开始写标注程序
  25.    (setq olden (entlast) ss (ssadd))
  26.      (setq n 0)
  27.      (repeat (- (length intlist) 1)
  28.              (setq pts1 (nth n intlist)
  29.                    pts2 (nth (1+ n) intlist))
  30.              (if (> (distance pts1 pts2) minsize) (ddf_entmakedim pts1 pts2))
  31.              (setq n (1+ n))
  32.       );end repeat
  33. (while (setq ens (entnext olden)) (setq ss (ssadd ens ss) olden ens))
  34.   ;;下面开始来移动

  35. (while (and
  36.         (setq code (grread T 8))
  37.         (/= 11 (car code))
  38.         (/= 25 (car code))
  39.         (/= 3 (car code))
  40.         (= 5 (car code)))
  41.         (redraw)
  42.         (setq ptx (cadr code))
  43.         (setq i 0)
  44.         (repeat (sslength ss)
  45.                  (setq endata (entget (ssname ss i)))
  46.                  (entmod (subst (cons 10 ptx) (assoc 10 endata) endata ))
  47.        (setq i (1+ i))
  48.    ); end repeat
  49. );end while
  50. ));end if
  51. );end while
  52. (princ "\n标注完成")
  53. (prin1)
  54. );end



  55. (defun ddf_entmakedim (pt1 pt2 /)
  56. (cond
  57.   ((or (equal 0 (angle pt1 pt2) 0.001) (equal pi (angle pt1 pt2) 0.001))
  58.           (entmake
  59.           (list
  60.          '(0 . "DIMENSION")
  61.          '(100 . "AcDbEntity")
  62.          '(100 . "AcDbDimension")
  63.         (cons 10 pt1)
  64.         '(70 . 32) '(1 . "")
  65.         '(100 . "AcDbAlignedDimension")
  66.         (cons 13 pt1) (cons 14 pt2)
  67.        '(100 . "AcDbRotatedDimension")
  68.     )
  69.     )
  70.   )
  71. ((or (equal (/ pi 2) (angle pt1 pt2) 0.001) (equal (* pi 1.5) (angle pt1 pt2) 0.001))
  72.    (entmake
  73.       (list
  74.       '(0 . "DIMENSION")
  75.       '(100 . "AcDbEntity")
  76.       '(100 . "AcDbDimension")
  77.       (cons 10 pt1)
  78.       '(70 . 33) '(1 . "")
  79.      '(100 . "AcDbAlignedDimension")
  80.     (cons 13 pt1) (cons 14 pt2)
  81.     )
  82.   )
  83.   )
  84. ((and (null (equal 0 (angle pt1 pt2) 0.001)) (null (equal (/ pi 2) (angle pt1 pt2) 0.001)))
  85.    (entmake
  86.       (list
  87.       '(0 . "DIMENSION")
  88.       '(100 . "AcDbEntity")
  89.       '(100 . "AcDbDimension")
  90.       (cons 10 pt1)
  91.       '(70 . 33) '(1 . "")
  92.      '(100 . "AcDbAlignedDimension")
  93.     (cons 13 pt1) (cons 14 pt2)
  94.     )
  95.   )
  96. )
  97. );end cond
  98. );end
  99. (prin1)


















  100.       

本帖子中包含更多资源

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

x

评分

参与人数 4明经币 +3 金钱 +25 收起 理由
nuan1989 + 5 厉害.
xiangganglv + 1 + 20 很给力!
USER2128 + 1 赞一个!
BaoWSE + 1 赞一个!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2019-12-19 13:12:56 | 显示全部楼层
不会用,脑壳痛。
回复 支持 0 反对 1

使用道具 举报

发表于 2019-11-13 10:12:54 | 显示全部楼层
感谢楼主分享   很实用
回复 支持 0 反对 1

使用道具 举报

发表于 2019-11-12 12:52:54 | 显示全部楼层
cghdy 发表于 2019-11-12 12:50
大兄弟。能不能整个完整版的,有错误用不得

http://bbs.mjtd.com/forum.php?mo ... D%CF%DF%B1%EA%D7%A2
回复 支持 0 反对 1

使用道具 举报

发表于 2019-10-10 04:50:33 | 显示全部楼层
这个和CAD默认的qdim快速标注有什么不同吗,是否交点标注。怎么不见运行命令
回复 支持 0 反对 1

使用道具 举报

发表于 2019-9-26 11:12:02 来自手机 | 显示全部楼层
能斜拉吗,迷你的可以斜拉

点评

斜拉是基本操作  发表于 2019-9-26 14:19
发表于 2019-9-26 16:55:20 | 显示全部楼层
怎么用不起来大兄弟??
发表于 2019-9-26 20:42:42 | 显示全部楼层
非常好!收藏学习!
发表于 2019-9-27 07:36:06 来自手机 | 显示全部楼层
大胸弟,的程序bug太多
发表于 2019-9-27 08:21:06 | 显示全部楼层
哈哈不错,思路很好,我做的虽然比你这个强大,但是你这个思路非常简洁,思路值得借鉴
发表于 2019-9-27 14:10:46 | 显示全部楼层
pengfei2010 发表于 2019-9-27 08:21
哈哈不错,思路很好,我做的虽然比你这个强大,但是你这个思路非常简洁,思路值得借鉴

能发一个吗大兄弟???
发表于 2019-9-27 15:12:37 | 显示全部楼层
不错,谢谢楼主
发表于 2019-9-28 14:08:49 | 显示全部楼层
会技术,点赞!会分享,点赞!说话还好听,更要点赞。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-23 02:37 , Processed in 0.185865 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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