明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 7434|回复: 14

怎样合并两个选择集?

  [复制链接]
发表于 2007-8-3 10:32:00 | 显示全部楼层 |阅读模式

例如我向把S1 选择集和S2选择集合并成S3

该怎么表达?

用到什么函数?

发表于 2013-12-14 17:07:41 | 显示全部楼层
ygp820601 发表于 2012-12-18 21:00
呵呵,求差集的函数有问题,当两个选择集相同时,差集应该为nil,这种情况没有考虑到。
(defun ssinter (ss ...

这位朋友写的代码有很多问题呀,我重改了一个
  1. (defun ssunion (SS1 SS2 / n);求两个选择集的并集
  2.         (cond
  3.                 ((and (equal ss1 nil) (not (equal ss2 nil))) ss2)
  4.                 ((and (equal ss2 nil) (not (equal ss1 nil))) ss1)
  5.                 ((and (equal ss1 nil) (equal ss2 nil)) nil)
  6.                 (
  7.                         (and (not(equal ss2 nil))(not (equal ss1 nil)))
  8.                         (progn
  9.                                 (setq n 0)
  10.                                 (repeat (sslength ss2)
  11.                                         (if (not(ssmemb (ssname ss2 n) ss1))
  12.                                                 (setq ss1 (ssadd (ssname ss2 n) ss1))
  13.                                         )
  14.                                         (setq n (1+ n))
  15.                                 )
  16.                                 ss1
  17.                         )
  18.                 )
  19.         )
  20. )
回复 支持 1 反对 0

使用道具 举报

发表于 2020-10-23 10:56:07 | 显示全部楼层
yjtdkj 发表于 2013-12-14 17:07
这位朋友写的代码有很多问题呀,我重改了一个

感谢代码,取走用了
发表于 2007-8-4 16:36:00 | 显示全部楼层
去查查XYP1964的函数!
发表于 2007-8-6 08:21:00 | 显示全部楼层
本帖最后由 作者 于 2007-8-6 8:26:20 编辑

(setq s3 (ssadd ename s1))

ename是s2的实体,当然这个s2的实体要做循环的

分别取出S2中的实体,放到s1中

发表于 2007-8-6 10:59:00 | 显示全部楼层
本帖最后由 作者 于 2007-8-6 11:10:01 编辑

(setq i 0 ss3 ss2))

(while (setq name(ssname ss1 i))

(if (not (ssmemb name ss2))

(ssadd name ss3))

(setq i (1+ i))

)

发表于 2007-8-6 12:42:00 | 显示全部楼层
  (setq SS1 (ssget))
  (print "OK1!")
  (setq SS2 (ssget))
  (command "_.SELECT" SS1 SS2 "")
  (setq SS3 (ssget "P"))
发表于 2007-8-6 14:30:00 | 显示全部楼层
<img alt="" src="http://www.mjtd.com/bbs/Skins/default/topicface/face15.gif"/>差距啊
发表于 2007-8-8 17:38:00 | 显示全部楼层
  1. 今天学习的两个通用函数:
  2. ;;; ==================================================================
  3. ;;; 通用函数
  4. ;;; 两选择集的差集
  5. (defun SSDIFF (SS1 SS2)
  6. &#160;&#160;&#160; (command "_.select" SS1 "remove" SS2 "")
  7. &#160;&#160;&#160; (ssget "P")
  8. )
  9. ;;; 两选择集的并集
  10. (defun SSUNION (SS1 SS2)
  11. &#160;&#160;&#160; (command "_.select" SS1 SS2 "")
  12. &#160;&#160;&#160; (ssget "P")
  13. )
  14. ;;; ==================================================================
发表于 2007-8-8 18:57:00 | 显示全部楼层

举一反三,还差一个阿

求交集.hehe.路过

(defun SSins (SS1 SS2)
    (command "_.select" SS1 "r" SS2 "")
    (setq ss (ssget "P"))

    (command "_.select" SS1 "r" SS "")

     (ssget "P")
)

发表于 2007-8-8 19:11:00 | 显示全部楼层
本帖最后由 作者 于 2007-8-8 19:11:57 编辑

(defun ssinter (sssel1 sssel2 / sssel3)
  (command ".select" sssel1 "r" sssel2 "")
  (command ".select" sssel1 "r" "p" "")
  (setq sssel3 (ssget "p"))
  sssel3
)

发表于 2007-8-8 19:15:00 | 显示全部楼层
;;;a+b和b+c,求a+c
;;;方式 : (setq ss3 (ss-ac ss1 ss2))
(defun ss-ac (sssel1 sssel2 / sssel3)
  (command ".select" sssel1 "R" sssel2 "")
  (command ".select" sssel2 "R" sssel1 " a" "p" "")
  (setq sssel3 (ssget "p"))
  sssel3
)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-26 04:39 , Processed in 0.183997 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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