This is free LISP source code command to find intersection points from selected lines, polylines. Then draw circle at that point with specified radius size.
Here below is source code. Command is MINT
(setq elist (entget ent))
(list (list (cdr (assoc 10 elist)) (cdr (assoc 11 elist))))
)
(defun lwpoly->segments (ent / elist pts segs i)
(setq elist (entget ent))
(setq pts '())
(foreach d elist
(if (= (car d) 10)
(setq pts (append pts (list (cdr d))))
)
)
(setq segs '())
(setq i 0)
(while (< i (1- (length pts)))
(setq segs (append segs (list (list (nth i pts) (nth (1+ i) pts)))))
(setq i (1+ i))
)
;; segs
)
(defun get-segments (ent / type)
(setq type (cdr (assoc 0 (entget ent))))
(cond
((= type "LINE") (line->segments ent))
((= type "LWPOLYLINE") (lwpoly->segments ent))
(T '())
)
)
(defun intersect2 (p1 p2 p3 p4 / x1 y1 x2 y2 x3 y3 x4 y4 denom ua ub)
(setq x1 (car p1) y1 (cadr p1))
(setq x2 (car p2) y2 (cadr p2))
(setq x3 (car p3) y3 (cadr p3))
(setq x4 (car p4) y4 (cadr p4))
(setq denom (- (* (- x1 x2) (- y3 y4))
(* (- y1 y2) (- x3 x4))))
(if (equal denom 0.0 1e-9)
nil
(progn
(setq ua (/ (- (* (- x1 x3) (- y3 y4))
(* (- y1 y3) (- x3 x4)))
denom))
(setq ub (/ (- (* (- x1 x3) (- y1 y2))
(* (- y1 y3) (- x1 x2)))
denom))
(if (and (>= ua 0) (<= ua 1) (>= ub 0) (<= ub 1))
(list (+ x1 (* ua (- x2 x1)))
(+ y1 (* ua (- y2 y1)))
0.0)
nil
)
)
)
)
(defun C:MINT (/ ss n i ent segs allsegs j k pA pB pC pD ip)
(prompt "\nSelect lines/polylines: ")
(setq ss (ssget '((0 . "LINE,LWPOLYLINE"))))
(if (not ss)
(progn (princ "\nNo valid selection.") (princ))
)
;; Build list of segments
(setq allsegs '())
(setq n (sslength ss))
(setq i 0)
(while (< i n)
(setq ent (ssname ss i))
(setq segs (get-segments ent))
(setq allsegs (append allsegs segs))
(setq i (1+ i))
)
(prompt "\nIntersection points:")
(setq j 0)
(while (< j (length allsegs))
(setq k (1+ j))
(while (< k (length allsegs))
(setq pA (nth 0 (nth j allsegs)))
(setq pB (nth 1 (nth j allsegs)))
(setq pC (nth 0 (nth k allsegs)))
(setq pD (nth 1 (nth k allsegs)))
(setq ip (intersect2 pA pB pC pD))
(if ip
(progn
(princ "\n → ")
(princ ip)
(command "_.CIRCLE" ip "3") ; customizable 3 is radius size
)
)
(setq k (1+ k))
)
(setq j (1+ j))
)
(princ)
)


