(defun C:alcr()
   (cond ((= En1 "LINE")
            (setq E1 (cdr (assoc 10 l1))
                  E2 (cdr (assoc 11 l1))
            )
            (if (> (distance P1 E1) (distance P1 E2))
               (setq Ee E2 E2 E1 E1 Ee)
            )
         )
         ((= En1 "ARC")
            (setq C1 (cdr (assoc 10 l1))
                  R1 (cdr (assoc 40 l1))
                  A0 (angle C1 P1)
                  E1 (polar C1 (cdr (assoc 50 l1)) R1)
                  E2 (polar C1 (cdr (assoc 51 l1)) R1)
            )
            (if (> (distance P1 E1) (distance P1 E2))
               (setq E1 E2 E2 (polar E1 (+ (angle E1 C1) (* 0.5 pi)) R1))
               (setq E2 (polar E1 (+ (angle C1 E1) (* 0.5 pi)) R1))
            )
         )
         (t (*error* "\nEntity is not Line or arc !!!"))
   )
   (if (= En2 "LINE")
      (progn
         (setq E3 (cdr (assoc 10 l2))
               E4 (cdr (assoc 11 l2))
               Pm (Lp E3 E4 E1)
               Pn (Lp E3 E4 E2)
               O (distance Pm E1)
               N (distance Pn E2)
         )
         (if (> 0 (sin (- (angle Pm P2) (angle Pm E1))))
            (setq Ee E4 E4 E3 E3 Ee)
         )
         (setq A1 (angle E3 E4)
               A2 (- (angle Pm P1) A1)
               A3 (- A0 A1)
               O (distance Pm E1)
               N (distance Pn E2)
               A (> (sin A2) 0)
               B (> O N)
               G (or (and A B) (and (null A) (null B)))
         )
         (if (> 0.00001 (abs A3))
            (setq Pc (polar E1 (angle E1 Pm) (* 0.5 L)))
            (setq Pin (inters E1 E2 E3 E4 nil)
                  A4 (angle Pin E1)
                  A5 (* 0.5 (- (angle Pin E3) A4))
                  L (distance Pin E1)
                  K (/ L (cos A5))
                  Pc (polar Pin (+ A5 A4) K)
            )
         )
         (setq Pa (Lp E3 E4 Pc))
         (command "erase" P2 "")
         (if B
            (command "line" Pa E4 "")
            (command "line" E3 Pa "")
         )
      )
      (progn
         (setq C2 (cdr (assoc 10 l2))
               R2 (cdr (assoc 40 l2))
               A0 (angle E1 E2)
               A1 (angle E1 C2)
               A2 (- A1 A0)
               A3 (- (angle E1 P2) A1)
               Pm (lp E1 E2 C2)
               K (distance E1 Pm)
               L (distance C2 Pm)
               a (> (cos A2) 0)
               b (> (sin A2) 0)
               c (> (distance E1 C2) R2)
               d (> L R2)
               e (> (sin A3) 0)
         )
         (if (or (null C) (and b d e) (and (null b) d (null e)))
            (setq R2 (- 0 R2))
         )
         (if (null B) (setq L (- 0 L)))
         (if (or (and a (null d) (null e)) (and (null b) d)
                 (and (null a) (null d) e)
             )
             (setq R (/ (- (+ (* K K) (* L L)) (* R2 R2)) 2. (- R2 L))
                   Y (- 0 R)
                   Pc (polar E1 (- A0 (* 0.5 pi)) (abs R))
                   g t
             )
             (setq R (/ (- (+ (* K K) (* L L)) (* R2 R2)) 2. (+ R2 L))
                   Y R
                   Pc (polar E1 (+ A0 (* 0.5 pi)) (abs R))
                   g nil
             )
         )
         (command "erase" P2 "")
         (if c (setq Pa (polar Pc (angle Pc C2) (abs R)))
               (setq Pa (polar Pc (angle C2 Pc) (abs R)))
         )
         (if (= En2 "ARC") (setq E3 (polar C2 (cdr (assoc 50 l2)) R2)
                                 E4 (polar C2 (cdr (assoc 51 l2)) R2)
                                 f nil
                           )
                           (setq f t)
         )
         (if (or (and d (null e)) (and (null a) c (null e))
                 (and a (null c) (null e)) (and (null a) (null c) e)
                 (and a c (null d) e)
             )
            (if f
               (command "arc" Pa "c" C2 "a" 180)
               (command "arc" Pa "c" C2 E4)
            )
            (if f
               (command "arc" Pa "c" C2 "a" -180)
               (command "arc" E3 "c" C2 Pa)
            )
         )
      )
   )
   (if g (command "arc" E1 "c" Pc Pa)
         (command "arc" Pa "c" Pc E1)
   )
)
