; Ellipse or ellipse arc to polyline
; Written By: Peter Jamtgaard 8/1/2006
; Modified by Tom Beauford to convert Lines, Arcs, Splines, and Circles as well.
; Menu item: ^P(or C:El2p (load "El2p.lsp"));El2p
(defun C:El2p (/ El2p ss count)
(defun El2p (ent / sngIncrement sngPosition pedacept)
  (setq obj (vlax-ename->vla-object ent)
         EnTyp (cdr (assoc 0 (entget ent)))
  )
  (princ "\nEntity Type = ")(princ EnTyp)
  (cond
   ((= EnTyp "ELLIPSE")
     (setq obj (vlax-ename->vla-object ent)
       sngIncrement (/ (vlax-curve-getdistatparam obj (vlax-curve-getendparam obj)) 100.0)
       sngPosition 0.0
     )
     (command "ortho" "off" "pline") 
     (repeat 101
       (command (vlax-curve-getpointatdist obj sngPosition))
       (setq sngPosition (+ sngPosition sngIncrement))
     )
     (command "")
   ); EnTyp = ELLIPSE
   ((= EnTyp "CIRCLE")
     (setq obj (vlax-ename->vla-object ent)
       ps (vlax-variant-value (vlax-get-property obj 'Center)); Center
       center (vlax-safearray->list ps)  ; Center
       radius (vlax-get-property obj 'Radius) ; Radius
       pt1 (polar center 0 radius)       ; start point for polyline
       pt2 (polar center 3.14159 radius) ; second point for pline arc
       ELA (vlax-get-property obj 'Layer)  ; layer
       ELT (vlax-get-property obj 'Linetype) ; Linetype
       ELS (vlax-get-property obj 'LinetypeScale) ; LinetypeScale
       PltSty (vlax-get-property obj 'PlotStyleName) ; PlotStyleName
       TruClr (vlax-get-property obj 'TrueColor) ; TrueColor
     )
     (command "pline" pt1 "Arc" "CE" center pt2 "Close") 
     (setq ent (entlast)
               obj (vlax-ename->vla-object ent)
     )
     (vlax-dump-object EOBJ) ; List object properties
     (vl-catch-all-apply 'vla-put-Layer (list EOBJ ELA))
     (vl-catch-all-apply 'vla-put-Linetype (list EOBJ ELT))
     (vl-catch-all-apply 'vla-put-LinetypeScale (list EOBJ ELS))
     (vl-catch-all-apply 'vla-put-PlotStyleName (list EOBJ PltSty))
     (vl-catch-all-apply 'vla-put-TrueColor (list EOBJ TruClr))
   ); EnTyp = CIRCLE
 
   ((or(= EnTyp "ARC")(= EnTyp "LINE"))
     (setq pedacept (Getvar "peditaccept"))
     (setvar "peditaccept" 1) 
     (command "_.pedit" ent "_exit")
     (setvar "peditaccept" pedacept)
   ); EnTyp = ARC or LINE
   (T(princ "\nEntity Type = ")(princ EnTyp))
 ); if (= (type ent) 'ENAME)
; (vla-delete objEllipse)
 (princ)
)
(princ "\nSelect Lines, Arcs, Splines, Circles,  Ellipses, and Ellipse Arcs: ")
  (setq count 0)
  (if (setq ss (ssget '((0 . "line,arc,spline,circle,ellipse"))))
    (repeat (sslength ss)
      (el2p (ssname ss count))
      (setq count (1+ count))
    )
    (princ "\nNo modifyable objects selected!")
  )
 (princ)
); defun C:El2p