tangdeyu 发表于 2009-7-11 15:16:00

[原创]已知3线,如何用trim命令将第3线之第1、2线之间剪切掉?

<p>如:</p><p>\</p><p>---\----------------L1</p><p>------\-------------L2</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; L3</p><p>亦知道L3在L1、L2之间的一点p,但就是剪切不掉中间的那一段</p><p>(command "trim" L1 L2 "" L3&nbsp; &nbsp;p "")</p><p>盼高手明示,先谢谢了……</p>

nzl1116 发表于 2009-7-11 15:47:00

(defun break2 (line&nbsp;pt1&nbsp; pt2&nbsp;&nbsp; /&nbsp;&nbsp;&nbsp; modelspace<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; entity&nbsp;startPt&nbsp; endPt&nbsp;&nbsp; dist1&nbsp;&nbsp;&nbsp; dist2&nbsp;&nbsp;&nbsp; minDist<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxDist&nbsp;aList&nbsp; pnt1&nbsp;&nbsp; pnt2<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp; (vl-load-com)<br/>&nbsp; (setq&nbsp;modelspace<br/>&nbsp; (vla-get-modelspace<br/>&nbsp;&nbsp;&nbsp; (vla-get-ActiveDocument<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vlax-get-acad-object)<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )<br/>&nbsp; )<br/>&nbsp; (if (equal (type line) 'ENAME)<br/>&nbsp;&nbsp;&nbsp; (setq entity line)<br/>&nbsp;&nbsp;&nbsp; (setq entity (vlax-vla-object-&gt;ename line))<br/>&nbsp; )<br/>&nbsp; (setq&nbsp;startPt&nbsp;(cdr (assoc 10 (entget entity)))<br/>&nbsp;endPt&nbsp;(cdr (assoc 11 (entget entity)))<br/>&nbsp;entity&nbsp;(vlax-ename-&gt;vla-object entity)<br/>&nbsp; )<br/>&nbsp; (vla-delete entity)<br/>&nbsp; (setq&nbsp;dist1&nbsp;(distance startPt pt1)<br/>&nbsp;dist2&nbsp;(distance startPt pt2)<br/>&nbsp;minDist&nbsp;(min dist1 dist2)<br/>&nbsp;maxDist&nbsp;(max dist1 dist2)<br/>&nbsp;aList&nbsp;(list (cons dist1 pt1) (cons dist2 pt2))<br/>&nbsp;pnt1&nbsp;(cdr (assoc minDist aList))<br/>&nbsp;pnt2&nbsp;(cdr (assoc maxDist aList))<br/>&nbsp; )<br/>&nbsp; (list&nbsp;(vla-addline<br/>&nbsp;&nbsp; modelspace<br/>&nbsp;&nbsp; (vlax-3d-point startPt)<br/>&nbsp;&nbsp; (vlax-3d-point pnt1)<br/>&nbsp;)<br/>&nbsp;(vla-addline<br/>&nbsp;&nbsp; modelspace<br/>&nbsp;&nbsp; (vlax-3d-point pnt2)<br/>&nbsp;&nbsp; (vlax-3d-point endPt)<br/>&nbsp;)<br/>&nbsp; )<br/>)

tangdeyu 发表于 2009-7-11 15:59:00

<p>谢谢这么快就回复。</p><p>但我想知道的是,能不能用我上面的简单形式实现此功能?</p>

Student 发表于 2009-7-11 16:22:00

<p>试试如何:</p><p>(command "trim" L1 L2 "" (list L3 p) "")</p>

tangdeyu 发表于 2009-7-11 22:42:00

<p>谢谢student,试过了,不行……</p>

cauin 发表于 2009-7-11 22:59:00

怎么会不行呢,我试没问题

tangdeyu 发表于 2009-7-11 23:23:00

<p>我改成这样就行了……谢谢上边高手的帮助……</p><p>(command "trim" L1 L2 "" (list (car L3) p) "")</p>

cauin 发表于 2009-7-12 00:57:00

原来你的L3不是图元名,而是(图元名 点)
页: [1]
查看完整版本: [原创]已知3线,如何用trim命令将第3线之第1、2线之间剪切掉?