Check this ....... (lightly tested)
(defun c:RH ( / sset Line1_Ent Line2_Ent Line1_Obj Line2_Obj Dia Rad Point IP_Lines IP_Lines_Nil Tmp_Line_Obj Cir_Ent Cir_Obj IP_Temp Arc_SA Arc_SPt Arc_EA Arc_EPt)
(vl-load-com)
(defun Get_Line ( No / ss )
(defun Sng_Sel ( msg / sel )
(princ msg)
(setvar 'nomutt 1)
(setq sel (vl-catch-all-apply 'ssget (list '((0 . "LINE")))))
(setvar 'nomutt 0)
(if (not (vl-catch-all-error-p sel)) sel)
)
(while (not (and (setq ss (Sng_Sel (strcat "\nSelect Line-" (rtos No 2 0) "...")))
(= 1 (sslength ss))
)
)
(if (< 1 (sslength ss))(princ "\nSelect Single Line Only......."))
)
(if ss (ssname ss 0))
)
(setq sset (ssadd))
(setq Line1_Ent (Get_line 1))(ssadd Line1_Ent sset)
(setq Line2_Ent (Get_line 2))(ssadd Line2_Ent sset)
(if (not (eq Line1_Ent Line2_Ent))
(progn
(setq Line1_Obj (vlax-ename->vla-object Line1_Ent))
(setq Line2_Obj (vlax-ename->vla-object Line2_Ent))
(if (not (setq IP_Lines (inters (vlax-get Line1_Obj "startpoint")(vlax-get Line1_Obj "endpoint")(vlax-get Line2_Obj "startpoint")(vlax-get Line2_Obj "endpoint"))))
(setq IP_Lines_Nil (inters (vlax-get Line1_Obj "startpoint")(vlax-get Line1_Obj "endpoint")(vlax-get Line2_Obj "startpoint")(vlax-get Line2_Obj "endpoint") nil))
)
(if (or IP_Lines IP_Lines_Nil)
(progn
(if (getenv "Dia") (setq Dia (atof (getenv "Dia")))(setq Dia nil))
(setq Dia
(cond
((getreal (strcat "\nEnter Diameter of Circle" (if Dia (strcat " <" (rtos Dia 2 2) ">: ") ": "))))
(Dia)
)
)
(if Dia
(progn
(setenv "Dia" (rtos Dia 2))
(setq Rad (/ Dia 2))
(setq Point (getpoint "\nPick the side you want to TRIM: "))
)
)
(if (and Rad Point)
(progn
(vla-StartUndoMark (vla-get-ActiveDocument (vlax-get-acad-object)))
(setvar 'cmdecho 0)
(if IP_Lines_Nil
(if (vlax-curve-getDistAtPoint Line1_Obj IP_Lines_Nil)
(if (< (distance IP_Lines_Nil (getpropertyvalue Line2_Ent "startpoint")) (distance IP_Lines_Nil (getpropertyvalue Line2_Ent "endpoint")))
(setpropertyvalue Line2_Ent "startpoint" IP_Lines_Nil)
(setpropertyvalue Line2_Ent "endpoint" IP_Lines_Nil)
)
(if (vlax-curve-getDistAtPoint Line2_Obj IP_Lines_Nil)
(if (< (distance IP_Lines_Nil (getpropertyvalue Line1_Ent "startpoint")) (distance IP_Lines_Nil (getpropertyvalue Line1_Ent "endpoint")))
(setpropertyvalue Line1_Ent "startpoint" IP_Lines_Nil)
(setpropertyvalue Line1_Ent "endpoint" IP_Lines_Nil)
)
(command "_fillet" "r" 0 "_fillet" Line1_Ent Line2_Ent)
)
)
)
(if IP_Lines_Nil (setq IP_Lines IP_Lines_Nil))
(entmake (list (cons 0 "LINE")(cons 100 "AcDbEntity")(cons 100 "AcDbPolyline")(cons 10 IP_Lines)(cons 11 Point)))
(setq Tmp_Line_Obj (vlax-ename->vla-object (setq Cir_Ent (entlast))))
(entmake (list (cons 0 "CIRCLE")(cons 100 "AcDbEntity")(cons 100 "AcDbCircle")(cons 10 IP_Lines)(cons 40 Rad)))
(setq Cir_Obj (vlax-ename->vla-object (setq Cir_Ent (entlast))))
(setq IP_Temp (vlax-safearray->list (vlax-variant-value (vla-intersectwith Cir_Obj Tmp_Line_Obj acextendnone))))
(vla-delete Tmp_Line_Obj)
(vla-GetBoundingBox (vlax-ename->vla-object Cir_Ent) 'minPt 'maxpt)
(vla-ZoomWindow (vlax-get-acad-object) minPt maxpt)
(command "_.trim" sset "" "f"
"_none" (polar IP_Temp (angle IP_Temp IP_Lines) (/ Rad 100))
"_none" (polar IP_Temp (angle IP_Temp Point) (/ Rad 100))
"" ""
)
(setq Arc_SA (cdr (assoc 50 (entget Cir_Ent))))
(setq Arc_SPt (polar IP_Lines Arc_SA Rad))
(setq Arc_EA (cdr (assoc 51 (entget Cir_Ent))))
(setq Arc_EPt (polar IP_Lines Arc_EA Rad))
(if (vlax-curve-getDistAtPoint (vlax-ename->vla-object Line1_Ent) Arc_SPt)
(command "break" Line1_Ent "_none" IP_Lines "_none" Arc_SPt)
(command "break" Line2_Ent "_none" IP_Lines "_none" Arc_SPt)
)
(if (vlax-curve-getDistAtPoint (vlax-ename->vla-object Line2_Ent) Arc_EPt)
(command "break" Line2_Ent "_none" IP_Lines "_none" Arc_EPt)
(command "break" Line1_Ent "_none" IP_Lines "_none" Arc_EPt)
)
(vla-zoomprevious (vlax-get-acad-object))(setvar 'cmdecho 1)
(vla-EndUndoMark (vla-get-ActiveDocument (vlax-get-acad-object)))
)
)
)
(Princ "\nLines are not Intersecting check Lines (Elevations).......")
)
)
(princ "\nPicked Lines are Same, Try again.......")
)
(princ)
)
There are two question to you....... Answer me logically & programmatically first ....... then I should move further .......
- When two lines are collinear, how can you decide the point of intersection.
- When you select two Poly line, what should be its point of intersection (whether they are intersecting with each other Or the intersection point will get by extending two pairs of end point taking one end from each poly lines).
Debashis Bhunia
Co-Founder of Geometrifying Trigonometry(C)
________________________________________________
Walking is the First step of Running, Technique comes Next....