Try this lisp:
Code:
(defun c:IsoRect (/ pt1 pt2 iso getColor c)
(defun getColor (/ C)
(list
(cond
((wcmatch (setq c (strcase (getvar 'CeColor))) "BYLAYER") '(62 . 256))
((wcmatch c "BYBLOCK") '(62 . 0))
(t (cons 62 (atoi c)))
)
)
)
(if (and (setq pt1 (getpoint "Pick 1st point of rectangle: "))
(setq pt2 (getpoint pt1 "Pick 2nd point of rectangle: "))
)
(if (entmake (append
(list '(0 . "LWPOLYLINE")
'(100 . "AcDbEntity")
(cons 67 (if (or (= (getvar 'TileMode) 1) (> (getvar 'CVport) 1)) 0 1))
(cons 410 (if (or (= (getvar 'TileMode) 1) (> (getvar 'CVport) 1)) "Model" (getvar 'CTab)))
(cons 8 (getvar 'CLayer))
(cons 6 (getvar 'CeLType))
)
(getColor)
(list '(100 . "AcDbPolyline")
'(90 . 4)
'(70 . 1)
(cons 10 pt1)
'(91 . 0)
(cons 10
(inters pt1
(polar pt1
(if (= (setq iso (getvar 'SnapIsoPair)) 2)
(- (/ pi 6))
(/ pi 6)
)
1.
)
pt2
(polar pt2
(if (= iso 1)
(* (/ pi 6) 5)
(/ pi 2)
)
1.
)
nil
)
)
'(91 . 0)
(cons 10 pt2)
'(91 . 0)
(cons 10
(inters
pt2
(polar pt2
(if (= iso 2)
(- (/ pi 6))
(/ pi 6)
)
1.
)
pt1
(polar pt1
(if (= iso 1)
(* (/ pi 6) 5)
(/ pi 2)
)
1.
)
nil
)
)
'(91 . 0)
'(210 0.0 0.0 1.0)
)
)
)
(princ "Done.")
(princ "Error")
)
)
(princ)
)