本帖最后由 ZZXXQQ 于 2020-11-18 09:32 编辑
 - (defun c:lll ()
- (setvar "CMDECHO" 0)
- (command "_.UNDO" "BE")
- (setq w (strcase(getstring "\n请选择项[缩短(SD)/总长(ZC)/伸长(SC)]: ") nil))
- (cond
- ((= w "ZC")
- (setq d (/ (getdist "\n输入总长度: ") 2))
- (setq ss(ssget '((0 . "LINE"))))
- (setq i -1)
- (repeat (sslength ss)
- (setq en (ssname ss (setq i (1+ i))) e1 (entget en))
- (setq pt1 (cdr(assoc 10 e1))
- pt2 (cdr(assoc 11 e1)))
- (setq ds (- d (/ (distance pt1 pt2) 2)))
- (command "_.LENGTHEN" "DE" ds (list en pt1) (list en pt2) "")
- )
- )
- ((= w "SC")
- (setq d (getdist "\n输入每边伸长值: "))
- (setq ss (ssget '((0 . "LINE"))))
- (setq i -1)
- (repeat (sslength ss)
- (setq en (ssname ss (setq i (1+ i))) e1 (entget en))
- (setq pt1 (cdr(assoc 10 e1))
- pt2 (cdr(assoc 11 e1)))
- (command "_.LENGTHEN" "DE" d (list en pt1) (list en pt2) "")
- )
- )
- ((= w "SD")
- (setq d (getreal "\n输入每边缩短值: "))
- (setq ss(ssget '((0 . "LINE"))))
- (setq i -1)
- (repeat (sslength ss)
- (setq en (ssname ss (setq i (1+ i))) e1 (entget en))
- (setq pt1 (cdr(assoc 10 e1))
- pt2 (cdr(assoc 11 e1)))
- (if (> (distance pt1 pt2) (+ d d))
- (command "_.LENGTHEN" "DE" (- d) (list en pt1) (list en pt2) "")
- )
- )
- )
- )
- (setvar "osmode" 3)
- (command "_.UNDO" "E")
- (setvar "CMDECHO" 1)
- (princ)
- )
|