也许是这个未经测试
- (defun c:p (/ ply dist slen nos pl_sequence entity_name startpt endpt len pt ang_pt)
- (vl-load-com)
- (setq ply (ssget "x" (list (cons 0 "lwpolyline") (cons 8 "Property_Boundary"))))
- (setq dist (getreal "Specify offset distance :"))
- (setq slen (sslength ply))
- (setq nos 0)
- (repeat slen
- (setq pl_sequence (entget (ssname ply nos)))
- (setq entity_name (cdr (assoc -1 pl_sequence)))
- (setq startpt (vlax-curve-getstartPoint entity_name))
- (setq endpt (vlax-curve-getEndPoint entity_name))
- (setq len (distance startpt endpt))
- (setq pt (polar startpt (setq ang (angle startpt endpt)) (/ len 2)))
- (setq ang_pnt (polar pt (+ ang (/ pi 2)) dist))
- (command "offset" dist entity_name ang_pnt "")
- (setq nos (+ 1 nos))
- ) ;_ end repeat
- (princ)
- ) ;_ end defun
|