选择集函数交集并集求差
本帖最后由 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
)
这个好用,谢谢 这种写法会改变输入变量(SS1或SS2),和lisp的逻辑不太一样,结果最好赋值给ss3变量 感谢递归哥的共享! 先学习学习,支持一下 学习一下 增加一个中间变量更加灵活 不错,学习了
页:
[1]