OK... All the ideas are pretty good... but I will recommend to start from step 1.
Using the command (function) approach first, that way you will understand every step/argument a command is asking.
Then, for step 2.... I will recommend to use entmake and the entget , entsel, setq, car functions (open the autolisp help and read about them) first i.e.
;; for example select a line...
Command: (setq ename (car (entsel "\nSelect an entity: ")))
Command: (entget ename)
;; it will retun something like this:
((-1 . <Entity name: 7bf506b8>)
(0 . "LINE")
(330 . <Entity name: 7de67cd8>)
(5 . "6332CCB540837")
(100 . "AcDbEntity")
(67 . 0)
(410 . "Model")
(8 . "CONDUIT")
(100 . "AcDbLine")
(10 -5502.45 556.187 0.0)
(11 -5315.0 648.508 0.0)
(210 0.0 0.0 1.0))
;; then remove the unnacessary data from the list
(
;;; (-1 . <Entity name: 7bf506b8>)
(0 . "LINE")
;;; (330 . <Entity name: 7de67cd8>)
;;; (5 . "6332CCB540837")
(100 . "AcDbEntity")
(67 . 0)
(410 . "Model")
(8 . "CONDUIT")
(100 . "AcDbLine")
(10 -5502.45 556.187 0.0)
(11 -5315.0 648.508 0.0)
(210 0.0 0.0 1.0))
;; erase, first manually the selected line, then call entmake
(entmake
'((0 . "LINE")
(100 . "AcDbEntity")
(67 . 0)
(410 . "Model")
(8 . "CONDUIT")
(100 . "AcDbLine")
(10 -5502.45 556.187 0.0)
(11 -5315.0 648.508 0.0)
(210 0.0 0.0 1.0))
);; end of entmake
Study each of the DXF data... became familiar... and then move to a complex approach, when you feel comfortable.
HTH.