这里有一个快速的
- (defun c:o2 (/ _dxf ss pts rf pt1 pt2)
- (defun _dxf (e n) (cdr (assoc n (entget e))))
- (defun _mid (p1 p2)
- (mapcar (function (lambda (a b) (/ (+ a b) 2.))) p1 p2))
- (while
- (and (princ "\nSelect 2 Lines to offset")
- (setq ss (ssget "_:L" '((0 . "LINE")))) (= (setq i (sslength ss)) 2))
- (setq pts (list (_dxf (setq 1st (ssname ss 0)) 10)
- (_dxf 1st 11)
- (_dxf (setq 2nd (ssname ss 1)) 10)
- (_dxf 2nd 11)))
- (setq rf (_mid (setq pt1 (_mid (car pts) (cadr pts)))
- (setq pt2 (_mid (caddr pts)
- (cadddr pts)))))
- (command "_offset" 50.0
- (ssname ss 0) "_non"
- (polar rf
- (angle rf pt1)
- (+ (distance rf pt1) 50.0))
- "")
- (command "_offset"
- 50.0 (ssname ss 1) "_non"
- (polar rf
- (angle rf pt2)
- (+ (distance rf pt2) 50.0))
- "")
- )
- (princ)
- )
我有点惊讶,真的没有其他人写了一个代码,这个刚刚从度假回来。
Anyhoo。。试试Michaels,告诉我你的想法(如果你的请求仍然需要lisp例程的话) |