kkq0305 发表于 2022-10-15 13:05:58

选择集函数交集并集求差

本帖最后由 kkq0305 于 2022-10-17 10:51 编辑


[功能] 选择集交集
[参数] ss1 ss2 选择集
[返回] ss1与ss2公共图元组成的选择集 或者 nil
[用法] (setq ss1 (ssget) ss2 (ssget) ss3 (ssinters ss1 ss2))
(defun ssinters      (ss1 ss2 / n en)
(setq n 0)
(while (setq en (ssname ss2 n))
    (or      (ssmemb en ss1)
      (not (ssdel en ss2))
      (setq n (1- n))
    )
    (setq n (1+ n))
)
ss2
)
[功能] 选择集合并
[参数] ss1 ss2 选择集
[返回] ss1与ss2合并之后选择集 或者 nil
[用法] (setq ss1 (ssget) ss2 (ssget) ss3 (ssunion ss1 ss2))
(defun ssunion (ss1 ss2 / en)
(while (setq en (ssname ss2 0))
    (or      (ssmemb en ss1)
      (ssadd en ss1)
    )
    (ssdel en ss2)
)
ss1
)
[功能] 选择集相减
[参数] ss1 ss2 选择集
[返回] ss1除去ss2之后选择集 或者 nil
[用法] (setq ss1 (ssget) ss2 (ssget) ss3 (ssminus ss1 ss2))
(defun ssminus (ss1 ss2 / n en)
(setq n 0)
(while (setq en (ssname ss1 n))
    (and (ssmemb en ss2)
         (ssdel en ss1)
         (setq n (1- n))
    )
    (setq n (1+ n))
)
ss1
)


xujinhua 发表于 2022-10-15 17:43:05

这个好用,谢谢

taoyi0727 发表于 2022-10-15 17:54:47

这种写法会改变输入变量(SS1或SS2),和lisp的逻辑不太一样,结果最好赋值给ss3变量

guosheyang 发表于 2022-10-15 21:40:16

感谢递归哥的共享!

技术工作室 发表于 2022-10-16 07:32:12

先学习学习,支持一下

pyj643921 发表于 2022-10-17 15:36:02

学习一下

myhomer 发表于 2022-11-6 00:07:51

增加一个中间变量更加灵活

qazxswk 发表于 2024-3-24 02:07:56

不错,学习了
页: [1]
查看完整版本: 选择集函数交集并集求差