viz528 发表于 2006-2-17 17:10:00

[求助]:[0217]怎样捕抓用TRIM、BREAK等命令后所产生的两物件呢?

<P>[求助]:怎样捕抓用TRIM、BREAK等命令后所产生的两物件呢?<BR>小弟用TRIM、BREAK等命令后,<BR>物件就变成两个了,<BR>那如果要捕捉这两物件,<BR>该用哪各命令才可以捕抓的到呢?<BR>烦请各位高手可以解答一下<BR>谢谢~</P>
<P>如:<BR>TRIM一段弧后,所产生的两段弧,该怎样捕抓.<BR>BREAK一段线后,所产生的两段线,该怎样捕抓.</P>

ljpnb 发表于 2006-2-17 18:06:00

<P>在break和trim命令之前,本身就可以得到物体,break和trim命令之后,会多出一个物体,可以用(entlast)来得到。</P>

vken7az2p 发表于 2006-2-17 20:42:00

<P>&nbsp;<A name=83998><FONT color=#000066><B>ljpnb</B></FONT></A> 楼主您这样说</P>
<P>是指之前用一次entlast</P>
<P>用过这些命令之后再用一次 entlast 吗?</P>

vken7az2p 发表于 2006-2-17 22:15:00

<P>我用这样的程序但不行耶</P>
<P>(setq ee (car (entsel)))<BR>(setq ee1 (entget ee))<BR>(command "_.Break" ee "_f" Pause "@")<BR>(SETQ ss (entlast))<BR>(SETQ ss1 (entget ss))</P>

vken7az2p 发表于 2006-2-18 05:03:00

本帖最后由 作者 于 2006-2-18 5:56:31 编辑

小弟找到答案了
(setq e(entsel "\n选择多段线: ")
s1 (car e)
)
(command "break" e pause)
(setq s2 (entlast))
(princ "\ns1 = ")
(princ "\ns2 = ")

但如果是像 ljpnb 楼主您以前发过一篇
dispbbs.asp?boardid=3&id=46805(defun c:test ()
(setq obj1 (vlax-ename->vla-object (car (entsel "\n选择线段1:"))))
(setq obj2 (vlax-ename->vla-object (car (entsel "\n选择线段2:"))))
(setq startpoint1 (vla-get-startpoint obj1)
p1   (vlax-safearray->list (vlax-variant-value startpoint1))
endpoint1   (vla-get-endpoint obj1)
p2   (vlax-safearray->list (vlax-variant-value endpoint1))
startpoint2 (vla-get-startpoint obj2)
p3   (vlax-safearray->list (vlax-variant-value startpoint2))
endpoint2   (vla-get-endpoint obj2)
p4   (vlax-safearray->list (vlax-variant-value endpoint2))
)
(setq coord (vla-IntersectWith obj1 obj2 acExtendBoth)
p0    (vlax-safearray->list (vlax-variant-value coord))
)
(vla-put-startpoint obj1 coord)
(vla-put-startpoint obj2 coord)
(if (> (distance p0 p1) (distance p0 p2))
    (progn
      (vla-put-endpoint obj1 startpoint1)
      (setq p2 p1)
    )
)
(if (> (distance p0 p3) (distance p0 p4))
    (progn
      (vla-put-endpoint obj2 startpoint2)
      (setq p4 p3)
    )
)
(setq rad 10)
(setq point1 (vlax-3d-point (polar p0 (angle p0 p2) rad))
point2 (vlax-3d-point(polar p0 (angle p0 p2) (* rad 2.0)))
point3 (vlax-3d-point(polar p0 (angle p0 p4) rad))
point4 (vlax-3d-point(polar p0 (angle p0 p4) (* rad 2.0)))
)
(vla-put-startpoint obj1 point1)
(vla-put-endpoint obj1 point2)
(vla-put-startpoint obj2 point3)
(vla-put-endpoint obj2 point4)
)

写的程序,想要补抓往圆心的那线断,
是否也是使用
(vla-put-startpoint obj1 point1)
(vla-put-endpoint obj1 point2)
来重画线断呢?
但关於在圆上求出的相交点,
就不知道是在哪段描述,
及线转为 vlisp后就不用先删除线段在画出吗?
以上问题希望您能解答一下
感谢您

ljpnb 发表于 2006-2-18 07:54:00

<P>你指出的我以前贴过那个程序,我是通过直接修改两直线的端点来实现最终的目的,并没有进行break或是trim。</P>

vken7az2p 发表于 2006-2-18 08:14:00

<P>01.是这样的,如果以您这最后重绘而成的图元来说,</P>
<P>如要抓取该怎样做呢?</P>
<P>02.那如果是由这程序来完成重绘的动作,也可以轻易的重画出内圆的线了~</P>
<P>是否如此呢?</P>

czcxxx 发表于 2015-10-22 08:33:25

页: [1]
查看完整版本: [求助]:[0217]怎样捕抓用TRIM、BREAK等命令后所产生的两物件呢?