谁有将多线段反向的程序
谁有将多线段反向的程序,在这先谢过了! 自带的reserve命令呀 论坛里有,你搜索一下。 我只找到直线反向的,可多段线没有! <P>以前明总帖的:</P><P>Sub RevPline<FONT color=red>(</FONT><FONT color=red>)</FONT><BR> <FONT color=blue>Dim</FONT> ent <FONT color=blue>As</FONT> AcadEntity<BR> <FONT color=blue>Dim</FONT> pnt <FONT color=blue>As</FONT> Variant<BR> <FONT color=blue>Dim</FONT> NewCoord<FONT color=red>(</FONT><FONT color=red>)</FONT> <FONT color=blue>As</FONT> Double<BR> <FONT color=blue>Dim</FONT> i <FONT color=blue>As</FONT> Integer<BR> <FONT color=blue>On</FONT> <FONT color=blue>Error</FONT> <FONT color=blue>Resume</FONT> <FONT color=blue><FONT color=blue>Next</FONT></FONT><BR> <FONT color=blue><FONT color=blue>Do</FONT></FONT><BR> ThisDrawing.Utility.GetEntity ent, pnt, <FONT color=#880000>"选择多段线:"</FONT><BR> <FONT color=blue><FONT color=blue>If</FONT></FONT> Err <FONT color=blue><FONT color=blue>Then</FONT></FONT> <FONT color=blue>Exit</FONT> <FONT color=blue><FONT color=blue>Sub</FONT></FONT><BR> <FONT color=blue><FONT color=blue>If</FONT></FONT> <FONT color=blue>TypeName</FONT><FONT color=red>(</FONT>ent<FONT color=red>)</FONT> <FONT color=blue>Like</FONT> <FONT color=#880000>"IAcad*Polyline"</FONT> <FONT color=blue><FONT color=blue>Then</FONT></FONT> <FONT color=blue>Exit</FONT> <FONT color=blue><FONT color=blue>Do</FONT></FONT><BR> <FONT color=blue>Loop</FONT><BR> <FONT color=blue>Dim</FONT> Coord <FONT color=blue>As</FONT> Variant<BR> <FONT color=blue>Dim</FONT> CoordCount <FONT color=blue>As</FONT> Integer<BR> <FONT color=blue>Dim</FONT> Bulge<FONT color=red>(</FONT><FONT color=red>)</FONT> <FONT color=blue>As</FONT> Double<BR> <FONT color=blue><FONT color=blue>If</FONT></FONT> <FONT color=blue>TypeName</FONT><FONT color=red>(</FONT>ent<FONT color=red>)</FONT> <FONT color=blue>=</FONT> <FONT color=#880000>"IAcadLWPolyline"</FONT> <FONT color=blue><FONT color=blue>Then</FONT></FONT><BR> Coord <FONT color=blue>=</FONT> ent.Coordinates<BR> CoordCount <FONT color=blue>=</FONT> <FONT color=red>(</FONT><FONT color=blue>UBound</FONT><FONT color=red>(</FONT>Coord<FONT color=red>)</FONT> <FONT color=blue>+</FONT> 1<FONT color=red>)</FONT> <FONT color=blue>/</FONT> 2<BR> <FONT color=blue>ReDim</FONT> NewCoord<FONT color=red>(</FONT><FONT color=blue>UBound</FONT><FONT color=red>(</FONT>Coord<FONT color=red>)</FONT><FONT color=red>)</FONT> <FONT color=blue>As</FONT> Double<BR> <FONT color=blue>For</FONT> i <FONT color=blue>=</FONT> 0 To <FONT color=blue>UBound</FONT><FONT color=red>(</FONT>Coord<FONT color=red>)</FONT> <FONT color=blue>-</FONT> 1 Step 2<BR> NewCoord<FONT color=red>(</FONT><FONT color=blue>UBound</FONT><FONT color=red>(</FONT>Coord<FONT color=red>)</FONT> <FONT color=blue>-</FONT> i <FONT color=blue>-</FONT> 1<FONT color=red>)</FONT> <FONT color=blue>=</FONT> Coord<FONT color=red>(</FONT>i<FONT color=red>)</FONT><BR> NewCoord<FONT color=red>(</FONT><FONT color=blue>UBound</FONT><FONT color=red>(</FONT>Coord<FONT color=red>)</FONT> <FONT color=blue>-</FONT> i<FONT color=red>)</FONT> <FONT color=blue>=</FONT> Coord<FONT color=red>(</FONT>i <FONT color=blue>+</FONT> 1<FONT color=red>)</FONT><BR> <FONT color=blue><FONT color=blue>Next</FONT></FONT><BR> <FONT color=blue>ReDim</FONT> Bulge<FONT color=red>(</FONT>CoordCount <FONT color=blue>-</FONT> 1<FONT color=red>)</FONT> <FONT color=blue>As</FONT> Double<BR> <FONT color=blue>For</FONT> i <FONT color=blue>=</FONT> 0 To CoordCount <FONT color=blue>-</FONT> 1<BR> Bulge<FONT color=red>(</FONT>i<FONT color=red>)</FONT> <FONT color=blue>=</FONT> ent.GetBulge<FONT color=red>(</FONT>i<FONT color=red>)</FONT><BR> <FONT color=blue><FONT color=blue>Next</FONT></FONT><BR> ent.Coordinates <FONT color=blue>=</FONT> NewCoord<BR> <FONT color=blue>For</FONT> i <FONT color=blue>=</FONT> 0 To CoordCount <FONT color=blue>-</FONT> 2<BR> ent.SetBulge i, -Bulge<FONT color=red>(</FONT>CoordCount <FONT color=blue>-</FONT> 2 <FONT color=blue>-</FONT> i<FONT color=red>)</FONT><BR> <FONT color=blue><FONT color=blue>Next</FONT></FONT><BR> ThisDrawing.Regen acActiveViewport<BR> <FONT color=blue><FONT color=blue>ElseIf</FONT></FONT> <FONT color=blue>TypeName</FONT><FONT color=red>(</FONT>ent<FONT color=red>)</FONT> <FONT color=blue>=</FONT> <FONT color=#880000>"IAcadPolyline"</FONT> <FONT color=blue><FONT color=blue>Then</FONT></FONT><BR> Coord <FONT color=blue>=</FONT> ent.Coordinates<BR> CoordCount <FONT color=blue>=</FONT> <FONT color=red>(</FONT><FONT color=blue>UBound</FONT><FONT color=red>(</FONT>Coord<FONT color=red>)</FONT> <FONT color=blue>+</FONT> 1<FONT color=red>)</FONT> <FONT color=blue>/</FONT> 3<BR> <FONT color=blue>ReDim</FONT> NewCoord<FONT color=red>(</FONT><FONT color=blue>UBound</FONT><FONT color=red>(</FONT>Coord<FONT color=red>)</FONT><FONT color=red>)</FONT> <FONT color=blue>As</FONT> Double<BR> <FONT color=blue>For</FONT> i <FONT color=blue>=</FONT> 0 To <FONT color=blue>UBound</FONT><FONT color=red>(</FONT>Coord<FONT color=red>)</FONT> <FONT color=blue>-</FONT> 1 Step 3<BR> NewCoord<FONT color=red>(</FONT><FONT color=blue>UBound</FONT><FONT color=red>(</FONT>Coord<FONT color=red>)</FONT> <FONT color=blue>-</FONT> i <FONT color=blue>-</FONT> 2<FONT color=red>)</FONT> <FONT color=blue>=</FONT> Coord<FONT color=red>(</FONT>i<FONT color=red>)</FONT><BR> NewCoord<FONT color=red>(</FONT><FONT color=blue>UBound</FONT><FONT color=red>(</FONT>Coord<FONT color=red>)</FONT> <FONT color=blue>-</FONT> i <FONT color=blue>-</FONT> 1<FONT color=red>)</FONT> <FONT color=blue>=</FONT> Coord<FONT color=red>(</FONT>i <FONT color=blue>+</FONT> 1<FONT color=red>)</FONT><BR> NewCoord<FONT color=red>(</FONT><FONT color=blue>UBound</FONT><FONT color=red>(</FONT>Coord<FONT color=red>)</FONT> <FONT color=blue>-</FONT> i<FONT color=red>)</FONT> <FONT color=blue>=</FONT> Coord<FONT color=red>(</FONT>i <FONT color=blue>+</FONT> 2<FONT color=red>)</FONT><BR> <FONT color=blue><FONT color=blue>Next</FONT></FONT><BR> <FONT color=blue><FONT color=blue>If</FONT></FONT> ent.<FONT color=blue>Type</FONT> <FONT color=blue>=</FONT> acSimplePoly <FONT color=blue><FONT color=blue>Then</FONT></FONT><BR> <FONT color=blue>ReDim</FONT> Bulge<FONT color=red>(</FONT>CoordCount <FONT color=blue>-</FONT> 1<FONT color=red>)</FONT> <FONT color=blue>As</FONT> Double<BR> <FONT color=blue>For</FONT> i <FONT color=blue>=</FONT> 0 To CoordCount <FONT color=blue>-</FONT> 1<BR> Bulge<FONT color=red>(</FONT>i<FONT color=red>)</FONT> <FONT color=blue>=</FONT> ent.GetBulge<FONT color=red>(</FONT>i<FONT color=red>)</FONT><BR> <FONT color=blue><FONT color=blue>Next</FONT></FONT><BR> <FONT color=blue><FONT color=blue>End</FONT> If</FONT><BR> ent.Coordinates <FONT color=blue>=</FONT> NewCoord<BR> <FONT color=blue><FONT color=blue>If</FONT></FONT> ent.<FONT color=blue>Type</FONT> <FONT color=blue>=</FONT> acSimplePoly <FONT color=blue><FONT color=blue>Then</FONT></FONT><BR> <FONT color=blue>For</FONT> i <FONT color=blue>=</FONT> 0 To CoordCount <FONT color=blue>-</FONT> 2<BR> ent.SetBulge i, -Bulge<FONT color=red>(</FONT>CoordCount <FONT color=blue>-</FONT> 2 <FONT color=blue>-</FONT> i<FONT color=red>)</FONT><BR> <FONT color=blue><FONT color=blue>Next</FONT></FONT><BR> <FONT color=blue><FONT color=blue>End</FONT> If</FONT><BR> ThisDrawing.Regen acActiveViewport<BR> <FONT color=blue><FONT color=blue>End</FONT> If</FONT><BR> <BR> <FONT color=blue><FONT color=blue>End</FONT></FONT> Sub</P> <P>有没有lisp版得呢</P>
;;By LUCAS(龙龙仔)
;;FOR LWPOLYLINE ONLY
(defun C:TEST (/ ENT ENT1 Q Q1 Q3 Q4 N)
(setq ENT (entget (setq ENT1 (car (entsel)))))
(setq Q (reverse (member (assoc 39 (reverse ENT)) (reverse ENT))))
(setq Q1 (member (assoc 10 ENT) ENT))
(setq N0
Q3 NIL
)
(repeat (/ (- (length Q1) 1) 4)
(setq Q3 (append Q3
(list (nth N Q1)
(cons 42 (* -1 (cdr (nth (+ N 3) Q1))))
(cons 41 (cdr (nth (+ N 1) Q1)))
(cons 40 (cdr (nth (+ N 2) Q1)))
)
)
)
(setq N (+ N 4))
)
(setq Q3 (reverse Q3))
(entmake (append Q
(member (assoc 10 Q3) Q3)
(list (nth 0 Q3))
(list (nth 1 Q3))
(list (nth 2 Q3))
(list (last Q1))
)
)
(entdel ENT1)
(princ)
)
<P>很好</P> <P>顶</P>
<P> </P> 有没有先判断方向,若符合再反向的? 下定了
页:
[1]
2