本帖最后由 yjr111 于 2012-2-23 23:25 编辑
也可以这样 - ;;;;封闭线单段偏移
- (defun c:oo (/ od ss_1 s1 s3 s2 sa sa1 ssK3 e)
- (vl-load-com)
- (setq mycad(vlax-get-acad-object)
- mydoc(vla-get-ActiveDocument mycad)
- myms(vla-get-ModelSpace mydoc)
- )
- (setq nowLayer(vla-get-name (vla-get-ActiveLayer mydoc)))
- (setvar "clayer" nowLayer)
- (Setvar "cmdecho" 0)
- (command "_undo" "g")
- (setq od (getvar 'offsetdist))
- (princ "\n 请输入偏移复制距离<")
- (princ od)
- (princ ">")
- (setq od (getreal))
- (if od
- (setvar 'offsetdist od)
- )
- (prompt "\n 请选择要偏移复制的图元")
- (SETQ ss_1 NIL)
- (WHILE (null ss_1)
- (setq ss_1 (entsel))
- )
- (SETQ S1 (CaR SS_1))
- (redraw s1 3)
- (prompt "\n 请选择偏移复制方向")
- (setq s3 (getpoint))
- (IF (= (cdr (assoc 0 (entget s1))) "LWPOLYLINE")
- (PROGN
- (setq s2 (CAR (cdr ss_1)))
- (setq sa (entlast))
- (command "_explode" s1)
- (setq sa1 (ssnamex (ssget s2)))
- (setq ssk3 (ssadd))
- (setq e (entnext sa))
- (ssadd e ssk3)
- (while e
- (setq e (entnext e))
- (if e
- (ssadd e ssk3)
- )
- )
- (SETQ s1 (nth 1 (car sa1)))
- (command "_offset" "" s1 s3 "")
- (vla-put-Layer (setq vla_e1(vlax-ename->vla-object (entlast))) nowlayer)
- (vla-put-Color vla_e1 acbylayer)
- (command "_pedit" s1 "" "j" ssk3 "")
- )
- (progn
- (command "_offset" "" s1 s3 "")
- (vla-put-Layer (setq vla_e1(vlax-ename->vla-object (entlast))) nowlayer)
- (vla-put-Color vla_e1 acbylayer)
- )
- )
- (command)
- (command "_undo" "e")
- (princ)
- )
|