byghbcx 发表于 2007-3-2 15:21:00

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

<p>如题,怎样可以获得由-boundary命令生成的多条多义线或面域命(在含孤岛的情况)?</p><p>(defun test()</p><p>(setq ssee (ssget))</p><p>(setq ptt (getpoint))</p><p>(COMMAND "-boundary" "A" "O" "P" "B" "N" SSEE "" "X" PTT "")</p><p>(setq ss (ssget "p"))</p><p>)</p><p>ss返回最后一个边界名,得不到内部的检测孤岛生成的边界名,请高手指教!!!</p><p>如图十字丝为光标选择点,我想得到紫线与四条绿线的选择集,但只能得到紫线选择集,有没有其他办法得到我的效果,请指教,小弟先谢了!!!</p>

caoyin 发表于 2007-3-4 10:07:00

本帖最后由 作者 于 2007-3-4 10:49:02 编辑 <br /><br /> <p>我用的方法有两种,一种是反应器,一种是entnext,下面的是entnext方法</p><p>;;____________________________________________________________________________________________________<br/>;;&nbsp;〓 (lt:sslast en mod) 〓<br/>;;&nbsp; [功能] 获取在图元 en 之后产生的图元的选择集<br/>;;&nbsp; [参数] en----图元名<br/>;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mod---返回方式,为T时返回选择集,为nil时返回图元名列表<br/>;;&nbsp; [返回] 选择集或图元名列表<br/>;;&nbsp; [测试]1.(setq ent (entlast))<br/>;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 执行创建图元的命令,如 LINE,BOUNDARY<br/>;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;(setq lst (lt:sslast ent T))<br/>;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; 2.(setq s (lt:sslast (car(entsel)) T))<br/>(defun lt:sslast (ent mod / enlst ss n)<br/>&nbsp; (while ent<br/>&nbsp;&nbsp;&nbsp; (setq ent (entnext ent))<br/>&nbsp;&nbsp;&nbsp; (if (and ent (not (vlax-erased-p ent))) (setq enlst (cons ent enlst)))<br/>&nbsp; )<br/>&nbsp; (if enlst<br/>&nbsp;&nbsp;&nbsp; (if mod<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (progn (setq ss (ssadd) n (length enlst))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (repeat n (setq ent (nth (setq n (1- n)) enlst)) (ssadd ent ss))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ss<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; enlst<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )<br/>)</p>

byghbcx 发表于 2007-3-2 15:50:00

我想在生成边界之前先生成一个临时图层,然后在边界生成后,可以选择这个图层上所有多义线得到,最后把它们转到我想要的图层上,再删除临时图层.这样比较麻烦,每次还要判断临时图层在不在图形中,如在,更改新的临时图层名.各位大侠有没有更简便的方法.

byghbcx 发表于 2007-3-5 09:07:00

caoyin发表于2007-3-4 10:07:00static/image/common/back.gif我用的方法有两种,一种是反应器,一种是entnext,下面的是entnext方法;;____________________________________________________________________________________________________;;&nbsp;〓

<p>谢谢caoyin的指点,用entnext函数得下一个实体的方法,这确实是个好方法,还可以再改进一下,只返回主图元的选择集或主图元名,一般我们不对子实体进行处理,如果需要,可以通过主实体找到子实体,下面是我改了一下,加了main参数,main为T时,返回主实体,main为nil时返回全部实体.再次谢谢!!!</p><p>(defun lt:sslast (ent mod main / enlst ss n)<br/>&nbsp; (vl-load-com)<br/>&nbsp; (while ent<br/>&nbsp;&nbsp;&nbsp; (setq ent (entnext ent))<br/>&nbsp;&nbsp;&nbsp; (if (and ent (not (vlax-erased-p ent)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cond ((and main (not (MEMBER (CDR (ASSOC 0 (ENTGET ent))) (quote ("ATTRIB" "VERTEX" "SEQEND")))))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq enlst (cons ent enlst)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((not main) (setq enlst (cons ent enlst)))<br/>&nbsp;)<br/>&nbsp; )<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp; (if enlst<br/>&nbsp;&nbsp;&nbsp; (if mod<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (progn (setq ss (ssadd) n (length enlst))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (repeat n (setq ent (nth (setq n (1- n)) enlst)) (ssadd ent ss))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ss<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; enlst<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )<br/>)</p>

yhly555 发表于 2015-3-29 20:42:11

byghbcx 发表于 2007-3-5 09:07 static/image/common/back.gif
谢谢caoyin的指点,用entnext函数得下一个实体的方法,这确实是个好方法,还可以再改进一下,只返回主图元的选 ...

正好要用到,但是看不明白是什么意思?

H-浩浩-H 发表于 2017-8-3 21:30:41

:lol:lol:lol:lol:lol
页: [1]
查看完整版本: [求助]:怎样可以获得由-boundary命令生成的多条多义线或面域命(在含孤岛的情况)