找时间试试这个
- ; Break a line with 2mm offset
- ; by BIG AL nov 2014
- ; add getreal ver 2 for offset distance
- ; ver3 check for break always inside as direction of line may break to outside
- ; will fail if pline
- ; defun to work out start pt repeatedly
- (defun xyst (obj )
- (list (cadr (assoc 10 obj))
- (caddr (assoc 10 obj))
- )
- )
- ; defun to work out end pt repeatedly
- (defun xyend (obj )
- (list (cadr (assoc 11 obj))
- (caddr (assoc 11 obj))
- )
- )
- (defun C:break2mm ( / obj1 obj2 obj3 st1 st2 st3 end1 end2 end3 pt3 pt4)
- (setq obj1 (entget (Car (entsel "\npick 1st line"))))
- (setq obj2 (entget (car (entsel "\npick 2nd line"))))
- (setq obj3 (entget (car (entsel "\npick 3rd line"))))
- (setq oldsnap (getvar "osmode"))
- (setvar "osmode" 0)
- (setq st1 (xyst obj1)
- end1 (xyend obj1))
- (setq st2 (xyst obj2)
- end2 (xyend obj2))
- (setq st3 (xyst obj3)
- end3 (xyend obj3))
- (setq pt1 (inters st1 end1 st2 end2))
- (setq pt2 (inters st1 end1 st3 end3))
- (setq ang (angle st1 end1))
- (setq pt3 (polar pt1 ang 2.0))
- (setq pt4 (polar pt2 (+ pi ang) 2.0)) ; 2.0 is 2mm
- (command "Break" pt3 pt4)
- (setvar "osmode" oldsnap)
- ) ; defun
|