下面是另一个快速示例:
- (defun c:foo (/ b c l pts s w x)
- ;; RJP - 3.9.2018
- (if (setq s (ssget '((0 . "lwpolyline"))))
- (foreach pl (vl-remove-if 'listp (mapcar 'cadr (ssnamex s)))
- (setq pts (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= 10 (car x))) (entget pl))))
- (setq l (cons (car pts) l))
- (setq c (cadr (car pts)))
- (setq w (apply 'max (mapcar '(lambda (a b) (- (cadr a) (cadr b))) pts (cdr pts))))
- ;; Use 1/2 of max Y variance distance .. based off of example drawing
- (setq w (/ w 2.))
- (foreach x (cdr pts)
- (if (not (equal c (cadr x) w))
- (setq l (cons x l)
- c (cadr x)
- )
- )
- )
- (setq l (reverse l))
- (entmakex (apply 'append
- (list (list '(0 . "LWPOLYLINE")
- '(100 . "AcDbEntity")
- '(8 . "Smooth")
- '(100 . "AcDbPolyline")
- (cons 90 (length l))
- '(62 . 2)
- '(43 . 0.0)
- '(70 . 0)
- )
- (mapcar '(lambda (x) (cons 10 x)) l)
- (list (assoc 210 (entget pl)))
- )
- )
- )
- )
- )
- (princ)
- )
平滑scj。图纸 |