If you're talking about Line entities specifically [not just "linework" including things like Polylines], here's another way:
(defun C:PLI ; = Points at Line Intersections
(/ ss n lin1 m lin2 int ldata1 ldata2)
(if (setq ss (ssget '((0 . "LINE"))))
(repeat (1- (setq n (sslength ss)))
(setq lin1 (ssname ss (setq n (1- n))))
(repeat (setq m n)
(setq lin2 (ssname ss (setq m (1- m))))
(if
(setq int
(inters
(cdr (assoc 10 (setq ldata1 (entget lin1))))
(cdr (assoc 11 ldata1))
(cdr (assoc 10 (setq ldata2 (entget lin2))))
(cdr (assoc 11 ldata2))
T ; they actually intersect
); inters
); set
(command "_.point" "_none" int)
); if
); repeat
); repeat
); if
(princ)
); defun
It draws the Points on the current Layer, and displays them under the current PDMODE setting -- specifics for such things could be built into it if desired. It will draw duplicate Points only when more than two Lines intersect at the same location.
Kent Cooper, AIA