hawnn 发表于 2009-7-22 22:38:00

[已解决]关于(Entsel)

本帖最后由 作者 于 2009-7-25 22:47:14 编辑 <br /><br /> <p>在Lisp中,(entsel)如果选中一个对象则返回一个表,由点选对象时的光标坐标点及对象实体名&nbsp; 但如果未选中一个实体则返回nil</p><p>我想问的是,有没有什么办法,在(entsel)没有点中任何对象的时候返回一个它的点座标,然后我就以个点为基础,用(getcorner)来获取范围</p><p>在CAD里,不管是移动,复制,或者其它命令,好像都可以这么用</p>

luowy 发表于 2009-7-22 23:44:00

你说的是getpoint么?

淮上 发表于 2009-7-22 23:53:00

<p>移动,复制得到的是选择集,用函数ssget</p><p>至于你说的那种效果——可用grread来模仿</p>

xchrimp 发表于 2009-7-23 10:58:00

mmmmmm 发表于 2009-7-23 14:20:00

<p>可以用GETPOINT代替ENTSEL,然后根据所得到的点,用(ENTSELP POINT)来判断是否有实体被点中。</p>

xchrimp 发表于 2009-7-23 15:08:00

淮上 发表于 2009-7-23 20:12:00

(if (setq p1 (getpoint "\n请选择一个对象"))<br/>&nbsp; (cond ((setq b (nentselp p1)) (car b))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((setq p2 (getcorner p1 "\n选择另外一个角点"))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (setq b (ssget "c" p1 p2))(ssname b 0))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )<br/>)

hawnn 发表于 2009-7-25 22:47:00

<strong><font color="#000000" face="Verdana">谢谢 xchrimp,&nbsp; 4楼是我想要的解决方案</font></strong>

mmmmmm 发表于 2009-7-29 14:12:00

<p>可以更简单的方法</p><p>(if (setq obj (entsel"\n Pick object:"))</p><p>&nbsp;&nbsp; (setq pt (cadr obj))</p><p>&nbsp;&nbsp; (setq pt (cadr (grread 5)))</p><p>)</p>

xchrimp 发表于 2009-7-29 14:48:00

页: [1] 2
查看完整版本: [已解决]关于(Entsel)