明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3688|回复: 5

[求助]:怎样可以获得由-boundary命令生成的多条多义线或面域命(在含孤岛的情况)

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

如题,怎样可以获得由-boundary命令生成的多条多义线或面域命(在含孤岛的情况)?

(defun test()

(setq ssee (ssget))

(setq ptt (getpoint))

(COMMAND "-boundary" "A" "O" "P" "B" "N" SSEE "" "X" PTT "")

(setq ss (ssget "p"))

)

ss返回最后一个边界名,得不到内部的检测孤岛生成的边界名,请高手指教!!!

如图十字丝为光标选择点,我想得到紫线与四条绿线的选择集,但只能得到紫线选择集,有没有其他办法得到我的效果,请指教,小弟先谢了!!!

本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2007-3-4 10:07:00 | 显示全部楼层
本帖最后由 作者 于 2007-3-4 10:49:02 编辑

我用的方法有两种,一种是反应器,一种是entnext,下面的是entnext方法

;;____________________________________________________________________________________________________
;; 〓 (lt:sslast en mod) 〓
;;  [功能] 获取在图元 en 之后产生的图元的选择集
;;  [参数] en----图元名
;;         mod---返回方式,为T时返回选择集,为nil时返回图元名列表
;;  [返回] 选择集或图元名列表
;;  [测试]1.(setq ent (entlast))
;;              执行创建图元的命令,如 LINE,BOUNDARY
;;              (setq lst (lt:sslast ent T))
;;           2.(setq s (lt:sslast (car(entsel)) T))
(defun lt:sslast (ent mod / enlst ss n)
  (while ent
    (setq ent (entnext ent))
    (if (and ent (not (vlax-erased-p ent))) (setq enlst (cons ent enlst)))
  )
  (if enlst
    (if mod
      (progn (setq ss (ssadd) n (length enlst))
             (repeat n (setq ent (nth (setq n (1- n)) enlst)) (ssadd ent ss))
             ss
      )
      enlst
    )
  )
)

回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2007-3-2 15:50:00 | 显示全部楼层
我想在生成边界之前先生成一个临时图层,然后在边界生成后,可以选择这个图层上所有多义线得到,最后把它们转到我想要的图层上,再删除临时图层.这样比较麻烦,每次还要判断临时图层在不在图形中,如在,更改新的临时图层名.各位大侠有没有更简便的方法.
 楼主| 发表于 2007-3-5 09:07:00 | 显示全部楼层
caoyin发表于2007-3-4 10:07:00我用的方法有两种,一种是反应器,一种是entnext,下面的是entnext方法;;____________________________________________________________________________________________________;; 〓

谢谢caoyin的指点,用entnext函数得下一个实体的方法,这确实是个好方法,还可以再改进一下,只返回主图元的选择集或主图元名,一般我们不对子实体进行处理,如果需要,可以通过主实体找到子实体,下面是我改了一下,加了main参数,main为T时,返回主实体,main为nil时返回全部实体.再次谢谢!!!

(defun lt:sslast (ent mod main / enlst ss n)
  (vl-load-com)
  (while ent
    (setq ent (entnext ent))
    (if (and ent (not (vlax-erased-p ent)))
        (cond ((and main (not (MEMBER (CDR (ASSOC 0 (ENTGET ent))) (quote ("ATTRIB" "VERTEX" "SEQEND")))))
        (setq enlst (cons ent enlst)))
       ((not main) (setq enlst (cons ent enlst)))
 )
  )
    )
  (if enlst
    (if mod
      (progn (setq ss (ssadd) n (length enlst))
             (repeat n (setq ent (nth (setq n (1- n)) enlst)) (ssadd ent ss))
             ss
      )
      enlst
    )
  )
)

发表于 2015-3-29 20:42:11 | 显示全部楼层
byghbcx 发表于 2007-3-5 09:07
谢谢caoyin的指点,用entnext函数得下一个实体的方法,这确实是个好方法,还可以再改进一下,只返回主图元的选 ...

正好要用到,但是看不明白是什么意思?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-1 13:56 , Processed in 0.175814 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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