如何获得boundary后的新生成的物体?
本帖最后由 作者 于 2009-12-22 9:10:29 编辑 <br /><br /> <p>怎么才能获得boundary后的所有物体或新生成的物体的选择集,然后转移到其它图层?下面的程序实现不了,问题出在哪?</p><p>(defun c:tt() <br/> (setq ss1 (ssget "X"))<br/> (command "boundary")<br/> (setq ss2 (ssget "_P"))<br/> (command "select" SS2 "r" SS1 "")<br/>)<br/></p> 感谢楼主的问题,感谢版主的解答!谢谢!!! 学习了,多谢 (entlast) <p>是这样么,还是不行啊</p><p>(defun c:tt() <br/> (command "boundary")<br/> (setq ent (entlast)) <br/> (command "change" ent "" "p" "la" "1" "")<br/>)<br/></p> (defun c:tt() <br/> (setq p (getpoint"\n拾取封闭线框内部点:"))<br/> (command "BOUNDARY" "A" "O" "P" "I" "N" "" "" p "")<br/> (setq ent (entlast)) <br/> (command "change" ent "" "p" "la" "图层1" "")<br/>) <p>先 entlast</p><p>然后 BOUNDARY</p><p>最后 entnext</p><p>这是老问题了,在论坛上搜一下</p> <p> 谢谢<strong><font face="Verdana" color="#61b713">xhq1954425</font></strong>帮助,按照你的程序能够获得边界并转移到新图层。不过对于不是封闭的多边形,点内部点会选择到外面的封闭多边形。我想要的是:点某个多边形(不管是封闭与否)内部点时,会出现虚线框,以便确认是否是对该多边形执行boundary,如果不是封闭的,会在其外面的闭合多边形上出现虚线框,以便检查使之封闭,然后再boundary。</p><p>如果去掉(command "BOUNDARY" "A" "O" "P" "I" "N" "" "" p "")最后的"",能够出现虚线框,但(setq ent (entlast)) 语句选不中boundary后新生成的边界,实现不了转移图层的目的,这是什么原因呢?如何才能实现?<br/><br/></p> <p><strong><font face="Verdana" color="#da2549">caoyin</font></strong>版主说的我也试了,</p><p>(defun c:tt() <br/> (setq ent (entlast))<br/> (setq p (getpoint)) <br/> (command "boundary" p "") <br/> (setq ss (ssadd)) <br/> (while (setq ent (entnext ent)) <br/> (ssadd ent ss)<br/> )<br/> (command "change" ss "" "p" "la" "图层1" "") <br/>)</p><p>但只要去掉(command "boundary" p "") 最后的" ",还是不能选中boundary后的边界,也就不能转移到新图层了</p> <p>;;;--------------------------------<br/>(defun ttt (en / ss)<br/> (if en<br/> (progn<br/> (setq ss (ssadd))<br/> (while (setq en (entnext en))<br/> (if (not (member (cdr (assoc 0 (entget en)))<br/> '("ATTRIB" "VERTEX" "SEQEND")<br/> )<br/> )<br/> (ssadd en ss)<br/> )<br/> )<br/> (if (zerop (sslength ss)) (setq ss nil))<br/> ss<br/> )<br/> (ssget "_x")<br/> )<br/>)</p><p><br/>;;;--------------------------------<br/>(defun c:tt (/ la p e ss)<br/>(setq la (getvar 'clayer))<br/>(setvar 'clayer "图层1")<br/>(setq p(getpoint "\n指定内部点: "))<br/>(setq e (entlast))<br/>(vl-cmdf "_.bpoly" p "")<br/>(or (setq ss (ttt e))<br/> (alert "* 错误 *\n\n未找到有限边界。\n\n边界不闭合,或边界对象不可访问。")<br/>)<br/>(setvar 'clayer la)<br/>ss<br/>)</p> 多谢<strong><font face="Verdana" color="#da2549">caoyin</font></strong>版主 <p>问一下,下面有一个单独的<font color="#ce350f">SS</font>(红色的)是什么意思?看不懂!<img alt="" src="http://www.mjtd.com/bbs/Skins/Default/emot/em11.gif" style="MARGIN: 6px; CURSOR: pointer;"/>帮忙给解释一下!谢谢!</p><p>(defun c:tt (/ la p e ss)<br/>(setq la (getvar 'clayer))<br/>(setvar 'clayer "图层1")<br/>(setq p(getpoint "\n指定内部点: "))<br/>(setq e (entlast))<br/>(vl-cmdf "_.bpoly" p "")<br/>(or (setq ss (ttt e))<br/> (alert "* 错误 *\n\n未找到有限边界。\n\n边界不闭合,或边界对象不可访问。")<br/>)<br/>(setvar 'clayer la)<br/><font color="#d73e18">ss</font><br/>)</p>
页:
[1]
2