[求助]如何得到LWPolyLine的始点和终点座标?
<P>各位前辈:<BR> 一条LWPOLYLINE里用entget取得它的DXF组码后,很难DXF组码里得到这条线的起点和终点,请问各位有什么方法能得到这条LWPOLYLINE的起点和终点吗?先谢谢了!</P> <P>第一个10组码及最后一个10组码.</P><P>(setq pts (vl-remove-if-not '(lambda (x) (= 10 (car x))) (entget e)))</P>
<P>(setq pt-begin (cdr (car pts)) pt-end (cdr (last pts)) )</P> (setq s0 (car (entsel "\n请选择一条<STRONG>LWPolyLine</STRONG>线:"))<BR> s0end (entget s0 ) ;取出<STRONG>LWPolyLine</STRONG>线信息列表<BR> )<BR> ;;;——取出<STRONG>LWPolyLine</STRONG>线起点坐标P0———————————<BR> (setq n 0 p0 nil)<BR> (while (= p0 nil)<BR> (setq plist (car (nth n s0end)))<BR> (if (= plist 10) (setq p0 (cdr (nth n s0end))))<BR> (setq n (+ n 1))<BR> )<BR> ;;;——取出<STRONG>LWPolyLine</STRONG>线终点坐标Pn———————————<BR> (setq n (- (length s0end) 1) pn nil)<BR> (while (= pn nil)<BR> (setq plist (car (nth n s0end)))<BR> (if (= plist 10) (setq pn (cdr (nth n s0end))))<BR> (setq n (- n 1))<BR> ) 本帖最后由 作者 于 2006-7-13 17:16:00 编辑
来个更快的(setq spname (car (entsel "\n选一条线:")))
(setq Mid-Point (vlax-curve-getPointAtDistspname (* 0.5(vlax-curve-getEndParam spname))));对象的中点
(setq spt (vlax-curve-getstartpoint spname));对象的起点
(setq ept (vlax-curve-getendpoint spname));对象的终点
(setq s0 (car (entsel "\n请选择一条LWPolyLine线:"))
s0end (entget s0)) ;取出LWPolyLine线信息列表
(setq p0 (cdr (assoc 10 s0end)));;;—取出LWPolyLine线起点坐标P0—
(setq pn (cdr (assoc 10 (reverse s0end)))) ;;;—取出LWPolyLine线终点坐标Pn—
<P>楼上真聪明!</P>
<P> </P> <P>推荐用4楼,通用性好</P> reverse 这个想法很好 reverse 这个想法很好
页:
[1]