怎样求得任意两条线的中心线
<P>任意点选两条线,自动绘出这两条线的中心线</P><P>谢谢!</P> (defun c:cen (/ e1 e2 p11 p12 p21 p22 ag1 ag2 agc p11d p12d pbg pend p) <BR> (if (and (print "选择第一条直线:")<BR> (setq e1 (car (entsel)))<BR> (= "LINE" (cdr (assoc 0 (setq e1 (entget e1)))))<BR> (print "选择第二条直线:")<BR> (setq e2 (car (entsel)))<BR> (= "LINE" (cdr (assoc 0 (setq e2 (entget e2)))))<BR> )<BR> (progn <BR> (setq p11 (cdr (assoc 10 e1)) p12 (cdr (assoc 11 e1))<BR> p21 (cdr (assoc 10 e2)) p22 (cdr (assoc 11 e2))<BR> ag1 (angle p11 p12) ag2 (angle p21 p22)<BR> )<BR> (if (< (cos (- ag2 ag1)) 0)<BR> (setq p p21 p21 p22 p22 p<BR> ag2 (angle p21 p22)<BR> ) ) <BR> (setq agc (- ag2 ag1)<BR> agc (if (< agc 0) (+ agc (* 2 pi)) agc)<BR> agc (+ ag1 (/ agc 2.) (/ pi 2.)) <BR> p11d (inters p11 (polar p11 agc 1000.) p21 p22 nil)<BR> p12d (inters p12 (polar p12 agc 1000.) p21 p22 nil)<BR> pbg (mapcar '+ p11 p11d) pbg (mapcar '/ pbg '(2. 2. 2.))<BR> pend (mapcar '+ p12 p12d) pend (mapcar '/ pend'(2. 2. 2.))<BR> ) <BR> (entmake (list '(0 . "LINE") (cons 10 pbg) (cons 11 pend)))<BR> )<BR> ) <BR> (princ)<BR>)
页:
[1]