明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: xyp1964

[讨论] 【e派】工具箱函数再揭秘及应用实例

    [复制链接]
 楼主| 发表于 2012-7-30 13:52 | 显示全部楼层
本帖最后由 xyp1964 于 2019-1-26 17:05 编辑

  1. ;; xyp-Ssdel 选择集中删除特定类实体 (xyp-Ssdel sss "1")
  2. ;|
  3. 实例:
  4. 删除特定图层实体:
  5. (setq ss (xyp-Ssdel (ssget) 8 "1"))
  6. (setq ss (xyp-Ssdel (ssget) 8 '("1" "2")))
  7. 删除特定实体:
  8. (setq ss (xyp-Ssdel (ssget) 0 "circle"))
  9. (setq ss (xyp-Ssdel (ssget) 0 '("Line" "arc")))
  10. 删除特定文本:
  11. (setq ss (xyp-Ssdel (ssget) 1 "test"))
  12. (setq ss (xyp-Ssdel (ssget) 1 '("test" "测试")))
  13. |;
  14. (defun xyp-Ssdel (sss code lst / ss i s1)
  15.   (if (= (type sss) 'PICKSET)
  16.     (progn
  17.       (cond ((= (type lst) 'STR)
  18.              (setq ss (ssadd)
  19.                    i  -1
  20.              )
  21.              (while (setq s1 (ssname sss (setq i (1+ i))))
  22.                (if (/= (strcase (cdr (assoc code (entget s1)))) (strcase lst))
  23.                  (setq ss (ssadd s1 ss))
  24.                )
  25.              )
  26.             )
  27.             ((= (type lst) 'LIST)
  28.              (foreach x lst
  29.                (setq ss  (xyp-Ssdel sss x)
  30.                      sss ss
  31.                )
  32.              )
  33.             )
  34.       )
  35.       ss
  36.     )
  37.   )
  38. )

点评

(xyp-Ssdel sss "1,2,3,4") 删除颜色有木有 还有那个图层也能不能这样 (xyp-Ssdel sss "1,2,3,4") 删除图层1图层2图层3......  发表于 2012-8-25 09:36

评分

参与人数 1明经币 +1 收起 理由
头大无恼 + 1 很给力!

查看全部评分

 楼主| 发表于 2012-8-3 00:35 | 显示全部楼层
本帖最后由 xyp1964 于 2019-1-26 17:05 编辑

  1. ;; xyp-R2D 弧度转角度 (xyp-R2D rad)
  2. (defun xyp-R2D (rad) (* (/ rad pi) 180.0))

  3. ;; xyp-D2R 角度转弧度 (xyp-D2R ang)
  4. (defun xyp-D2R (ang) (* (/ ang 180.0) pi))

  5. ;; xyp-get-tblnext 获得特定符号表的列表 (xyp-get-tblnext "Block")
  6. ;; 有效符号表名称为Layer、Ltype、View、Style、Block、Appid、Ucs、Dimstyle 和 Vport
  7. (defun xyp-get-tblnext (table-name / lst d)
  8.   (while (setq d (tblnext table-name (null d)))
  9.     (setq lst (cons (cdr (assoc 2 d)) lst))
  10.   )
  11.   (vl-sort lst '<)  
  12. )
发表于 2012-8-3 08:35 | 显示全部楼层
精品啊!向院长致敬!支持源码!
发表于 2012-8-3 09:40 | 显示全部楼层
感谢 xyp1964 版主分享源码程序!
发表于 2012-8-3 09:52 | 显示全部楼层
看了院长的,应一个实用演示图加一个LISP源码,我是大陆人,看这些有点费劲
发表于 2012-8-3 18:31 | 显示全部楼层
没人点评的了,我来。精精精
发表于 2012-8-3 20:38 | 显示全部楼层
很好,很强大,院长就是院长啊,呵呵
 楼主| 发表于 2012-8-3 21:00 | 显示全部楼层
本帖最后由 xyp1964 于 2019-1-26 17:06 编辑

  1. ;; xyp-Join-Line 直线消重 (xyp-Join-Line ename1 ename2)
  2. (defun xyp-Join-Line (e1 e2 / p1 p2 p3 p4 ptn p10 p11)
  3.   (if (and (not (equal e1 e2))
  4.     (xyp-Etype e1 "LINE")
  5.     (xyp-Etype e2 "LINE")
  6.       )
  7.     (progn
  8.       (setq p1 (xyp-get-dxf 10 e1)
  9.      p2 (xyp-get-dxf 11 e1)
  10.      p3 (xyp-get-dxf 10 e2)
  11.      p4 (xyp-get-dxf 11 e2)
  12.       )
  13.       (if (and (XYP-3PointAtLine p1 p2 p3)
  14.         (XYP-3PointAtLine p1 p2 p4)
  15.    )
  16. (progn
  17.    (setq ptn (xyp-Sort-ptnByXYZ (list p1 p2 p3 p4))
  18.   p10 (car ptn)
  19.   p11 (last ptn)
  20.    )
  21.    (entdel e2)
  22.    (xyp-SUBUPD e1 10 p10)
  23.    (xyp-SUBUPD e1 11 p11)
  24.    t
  25. )
  26. nil
  27.       )
  28.     )
  29.     nil
  30.   )
  31. )
  32. ;; XYP-3PointAtLine 3点共线 (XYP-3PointAtLine p1 p2 p3)
  33. (defun XYP-3PointAtLine (p1 p2 p3 / dl d1 d2 d3)
  34.   (setq dl  1e-5
  35. d1  (distance p1 p2)
  36. d2  (distance p2 p3)
  37. d3  (distance p1 p3)
  38.   )
  39.   (if (or (equal (+ d3 d2) d1 dl)
  40.    (equal (+ d1 d2) d3 dl)
  41.    (equal (+ d1 d3) d2 dl)
  42.       )
  43.     t
  44.     nil
  45.   )
  46. )
  47. ;; xyp-Sort-ptnByXYZ 点表按照xyz从小到大排序 (xyp-Sort-ptnByXYZ ptn)
  48. (defun xyp-Sort-ptnByXYZ (ptn / p1 p2)
  49.   (vl-sort ptn
  50.     '(lambda (p1 p2)
  51.        (cond ((< (car p1) (car p2)) T)
  52.       ((and (= (car p1) (car p2))
  53.      (< (cadr p1) (cadr p2))
  54.        )
  55.        T
  56.       )
  57.       ((and (= (car p1) (car p2))
  58.      (= (cadr p1) (cadr p2))
  59.      (< (caddr p1) (caddr p2))
  60.        )
  61.        T
  62.       )
  63.       (T nil)
  64.        )
  65.      )
  66.   )
  67. )
  68. ;; 应用实例
  69. ;; gxyh(共线优化)
  70. (defun c:tt ()
  71.   (setq ss  (ssget '((0 . "line")))
  72. i   -1
  73. lst '()
  74.   )
  75.   (while (setq s1 (ssname ss (setq i (1+ i))))
  76.     (setq j i)
  77.     (if (not (member s1 lst))
  78.       (while (setq s2 (ssname ss (setq j (1+ j))))
  79. (if (not (member s2 lst))
  80.    (if (xyp-Join-Line s1 s2)
  81.      (setq lst (cons s2 lst))
  82.    )
  83. )
  84.       )
  85.     )
  86.   )
  87.   (princ)
  88. )



本帖子中包含更多资源

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

x
发表于 2012-8-3 21:21 | 显示全部楼层
xyp1964 发表于 2012-8-3 21:00

太花哨了没实际意用处。

点评

花拳绣腿!  发表于 2012-8-4 00:27
发表于 2012-8-3 21:43 | 显示全部楼层
感谢分享1111111
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-1 06:44 , Processed in 0.996526 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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