My original Double Offset application was designed to precisely emulate the prompts & options offered by the standard AutoCAD OFFSET command, however with the offset being performed to both sides rather than a selected side.
Here's a quickly written alternative to permit multiple object selection:
(defun c:mdoff ( / d i o s )
(initget 6)
(if
(and
(setq d (getdist "\nSpecify offset distance: "))
(setq s
(ssget "_:L"
'(
(0 . "ARC,CIRCLE,ELLIPSE,*LINE")
(-4 . "<NOT")
(-4 . "<AND")
(0 . "POLYLINE") (-4 . "&") (70 . 80)
(-4 . "AND>")
(-4 . "NOT>")
)
)
)
)
(repeat (setq i (sslength s))
(setq i (1- i)
o (vlax-ename->vla-object (ssname s i))
)
(foreach x (list d (- d))
(vl-catch-all-apply 'vlax-invoke (list o 'offset x))
)
)
)
(princ)
)
(vl-load-com) (princ)