(defun dxfeg (c e)(cdr (assoc c (entget e))))
(defun dxf (c eg)(cdr (assoc c eg)))
;(defun c:t ()(flatten (car (entsel))));diagnostic routine
(defun c:flatten ()
  (setq ss (ssget) i 0)
  (while (< i (sslength ss))
    (flatten (ssname ss i))
    (setq i (1+ i))
    )
  )
(defun flatten (e)
  (setq name (dxfeg 0 e))
  (cond;we are not checking extrusion vector!!!!!!!
    ((= name "POLYLINE")(polyhan e))
    ((= name "LWPOLYLINE")(lwpolyhan e))
    ((= name "LINE")(linehan e))
    ((dxfeg 10 e);test for 10 group
       (handle10group e);
     )
    (t (princ " unanticipated entity encountered!!!! "))  ;if absent, report
    
     )
    )
  
(defun handle10group (e / p eg)
  (setq eg (entget e) p (dxfeg 10 e))
  (entmod
    (subst
      (cons 10 (list (car p)(cadr p) 0.0)) (assoc 10 eg) eg))
  )
(defun lwpolyhan (e)
(setq eg (entget e) p (dxfeg 10 e))
  (entmod
    (subst
      (cons 38  0.0) (assoc 38 eg) eg))
  )
(defun polyhan (e)
 (setq pl e)
 (while
  (and
    (setq e (entnext e))
    (setq eg (entget e))
    (/= "SEQEND" (dxf 0 eg))
    )
  (handle10group e) 
  )
  (entupd pl)
  )
    
(defun linehan (e / p10 p11)
  (setq eg
	 (entget e) p10 (dxfeg 10 e) p11 (dxfeg 11 e))
  (setq neg
    (subst
      (cons 10 (list (car p10)(cadr p10) 0.0)) (assoc 10 eg) eg)
 neg
  (subst
    (cons 11 (list (car p11)(cadr p11) 0.0)) (assoc 11 neg) neg)
 )

  (entmod neg)
)