(defun c:filletlines ( / 3d2d v^v unit acos angle3d marc ss i li lil lixl lill p pl ml lilr sp ep p1 p2 rlpl r gr p a ip d v aep1 aep2 li cp dd arc arcl x )
(vl-load-com)
(defun 3d2d ( p )
(mapcar '+ '(0.0 0.0) p)
)
(defun v^v ( u v )
(mapcar '(lambda ( s1 s2 a b ) (+ ((eval s1) (* (nth a u) (nth b v))) ((eval s2) (* (nth a v) (nth b u))))) '(+ - +) '(- + -) '(1 0 0) '(2 2 1))
)
(defun unit ( v )
(mapcar '(lambda ( x ) (/ x (distance '(0.0 0.0 0.0) v))) v)
)
(defun acos ( x )
(cond
((equal x 1.0 1e- 0.0)
((equal x -1.0 1e- pi)
((equal x 0.0 1e- (/ pi 2.0))
((equal x -0.0 1e- (* 3.0 (/ pi 2.0)))
((atan (/ (sqrt (- 1.0 (* x x))) x)))
)
)
(defun angle3d ( p1 por p2 / vec1 vec2 dd ang )
(setq vec1 (unit (mapcar '- p1 por))
vec2 (unit (mapcar '- p2 por))
dd (distance vec1 vec2)
ang (acos (- 1.0 (/ (expt dd 2) 2.0)))
)
(if (minusp ang) (+ ang pi) ang)
)
(defun marc ( c p1 p2 / dxf10 dxf40 dxf210 dxf50 dxf51 uz )
(setq dxf10 (trans c 0 (setq uz (v^v (mapcar '- p1 c) (mapcar '- p2 c)))))