明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
123
返回列表 发新帖
楼主: matichen

[求助]请问如何实现点选闭合多义线获得ssget集?

    [复制链接]
发表于 2007-9-11 12:19:00 | 显示全部楼层
本帖最后由 作者 于 2007-9-11 20:56:31 编辑

各位老师好:可能我前面说的不够清楚,我发一个图上去,图中全部是闭合的多断线(也可能是二维多段线),我想实现的是我选择白色的多断线时自动生成一个选择集,此选择集要包括白色线内的所有线,也就是2、3、4闭合线,不能包括5闭合线,我用ssget命令的很多参数都无法实现,用WP参数时4闭合线会漏选,用CP参数时又会多选了5闭合线,请各位老师多指教。拜托大家了,急等……

本帖子中包含更多资源

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

x
发表于 2007-9-11 12:20:00 | 显示全部楼层
各位老师好:可能我前面说的不够清楚,我发一个图上去,图中全部是闭合的多断线(也可能是二维多段线),我想实现的是我选择白色的多断线时自动生成一个选择集,此选择集要包括白色线内的所有线,也就是2、3、4闭合线,不能包括5闭合线,我用ssget命令的很多参数都无法实现,用WP参数时4闭合线会漏选,用CP参数时又会多选了5闭合线,请各位老师多指教。拜托大家了,急等……

本帖子中包含更多资源

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

x
发表于 2007-9-11 16:35:00 | 显示全部楼层
;下面函数通过选择封闭线建立线内(不包括本身)选择集。
  1. (DEFUN C:TT ()
  2. (IF (AND (PRINC "\nSelect a Polyline 选择多段线 :")
  3.            (SETQ SS (SSGET '((0 . "LWPOLYLINE") (70 . 129))))) (PROGN
  4.   (SETQ EN (SSNAME SS 0)
  5. ENT (ENTGET EN)
  6. PLST (LIST))
  7.   (FOREACH N ENT (IF (= (CAR N) 10) (SETQ PLST (CONS (CDR N) PLST))))
  8.   (SETQ PLST (REVERSE PLST))
  9.   (IF (SETQ SS1 (SSGET "WP" PLST '((0 . "LWPOLYLINE") (70 . 129))))
  10.    (SETQ SS1 (SSDEL EN SS1))
  11.   )
  12. ))
  13. (SSLENGTH SS1)
  14. )
复制代码
发表于 2007-9-11 19:03:00 | 显示全部楼层

(ssadd 外框多义线实体 wp选集) 不就是楼主的要求了么?呵呵

发表于 2007-9-11 21:02:00 | 显示全部楼层
我试了不行,和外围线有重合点的选不上.
发表于 2007-9-11 22:21:00 | 显示全部楼层
hndwl发表于2007-9-11 21:02:00我试了不行,和外围线有重合点的选不上.

看看贴子说明,程序中将外围线从选择集中去除了。只要将

   (IF (SETQ SS1 (SSGET "WP" PLST '((0 . "LWPOLYLINE") (70 . 129))))
    (SETQ SS1 (SSDEL EN SS1))
   )
改成

  (SETQ SS1 (SSGET "WP" PLST '((0 . "LWPOLYLINE") (70 . 129))))
就可以取得4个封闭体了。

发表于 2007-9-12 18:40:00 | 显示全部楼层
ZZXXQQ发表于2007-9-11 22:21:00看看贴子说明,程序中将外围线从选择集中去除了。只要将   (IF  (SETQ SS1 (SSGET  \"WP\" PLST '((0 . \"LWPOLYLINE\")  (70 . 129))))  

ZZXXQQ老兄:我试了确实不行啊,无论怎样都只能取到2的线,3和4线取不到啊.麻烦您再试一下.

发表于 2007-9-13 01:52:00 | 显示全部楼层

看来还是把plst向外偏移

发表于 2007-9-13 03:23:00 | 显示全部楼层

对,只有把多段线向外偏移一定的距离,再过滤掉与偏移多段线相交的多段线。

发表于 2007-9-13 07:33:00 | 显示全部楼层


(defun c:fb()
(setq zxzj (ssget))

(setq zdm (ssname zxzj 0))

(setq tym (entget zdm))
    (setq zdlist nil)
    (setq dh 0);点号初始化
    (setq n 0)
    (while (/= (nth n tym ) nil)
      (progn
 (if (= (car (nth n tym )) 10)
   (progn
     (setq dh (+ dh 1))
     (setq zdlist (append zdlist (list (list (cadr (nth n tym)) (caddr (nth n tym))))))
     (setq zb (list dh (list (cadr (nth n tym)) (caddr (nth n tym)))))
     ;(princ zb zdwj1)
     ;(princ "\n" zdwj1)
   );end progn
 );end if
      );end progn
      (setq n (+ n 1))
    );end while,坐标提取及坐标表构建完毕。

(setq jzx (ssget "cp" zdlist '((0 . "LWPOLYLINE") (70 . 1))));界址线选择集
)

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-15 16:54 , Processed in 0.172973 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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