lazybug 发表于 2005-12-14 17:38:00

[lisp][求助]关于lisp调用“extend”的方向的问题

<P>我的程序如下,问题是当延伸的时候方向只能是向下或者向左,我想知道怎样才能向右或者向上延伸。我试过改ucs的方向但是没有用,是由某个系统变量控制的么,我也没有找到。请高手帮忙看一下</P>
<P>(我做了个示意图,但是不会贴,就放在文件里了。运行我的程序得到的结果是第二幅图的样子,我需要的是第三副的样子)</P>
<P>(defun c:et (/ en ss n k old_edgemode)<BR>&nbsp;&nbsp;&nbsp; (setvar "cmdecho" 0)<BR>&nbsp;&nbsp;&nbsp; (command "undo" "begin")<BR>&nbsp;&nbsp;&nbsp; (princ "\n&lt;选择要延伸到的边界&gt;")<BR>&nbsp;&nbsp;&nbsp; (setq en (ssget))<BR>&nbsp;&nbsp;&nbsp; (princ "\n&lt;选择要延伸的对象&gt;")<BR>&nbsp;&nbsp;&nbsp; (setq ss (ssget))&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; (setq old_edgemode (getvar "edgemode"))<BR>&nbsp;&nbsp;&nbsp; (setvar "edgemode" 0)<BR>&nbsp;&nbsp;&nbsp; (setq k 0)<BR>&nbsp;&nbsp;&nbsp; (repeat (sslength en)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq en1 (ssname en k))<BR>&nbsp;(setq n 0)<BR>&nbsp;(repeat&nbsp;(sslength ss)<BR>&nbsp;&nbsp;&nbsp;&nbsp; (setq ss1 (ssname ss n))<BR>&nbsp;&nbsp;&nbsp;&nbsp; (command "extend" en1 "" ss1 "")<BR>&nbsp;&nbsp;&nbsp;&nbsp; (setq n (1+ n))<BR>&nbsp;)<BR>&nbsp;(setq k (1+ k))<BR>&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp; (setvar "edgemode" old_edgemode)<BR>&nbsp;&nbsp;&nbsp; (command "undo" "end")<BR>&nbsp;&nbsp;&nbsp; (prin1)<BR>)</P>

bud 发表于 2005-12-15 10:18:00

可以将要延伸的实体改成实体离延伸边界最近的点<BR>如pt1和pt2分别是线上的两个端点,且pt1最接近边界<BR>那么可以用(command "extend" en1 "" pt1 "")

lazybug 发表于 2005-12-15 15:59:00

<P>可以这样啊,没想到</P>
<P>我回去试试</P>
<P>谢谢先</P>

lazybug 发表于 2005-12-16 16:07:00

<P>太麻烦</P>
<P>有没有简单的方法</P>
<P>高手请指点一下</P>
页: [1]
查看完整版本: [lisp][求助]关于lisp调用“extend”的方向的问题