这真是个好主意,我把它改了一点,用平均点来寻找中心点:(只在规则形状上)
- ; pline around points
- ; By AlanH info@alanh.com.au
- :
- June
- 2020
- (vl-load-com)
- (defun c:plpoints (/ ss pt pts x ent lst)
- (setq ss (ssget (list (cons 0 "POINT"))))
- (setq ptlist nil)
- (repeat (setq x (sslength ss))
- (setq ent (ssname ss (setq x (- x 1))))
- (setq pts (cdr (assoc 10 (entget ent))))
- (setq ptlist (cons pts ptlist))
- (setq pt (average ptlist))
- )
- ;;; (setq pt (getpoint "pick center point"))
- (setq lst '())
- (foreach a ptlist
- (setq
- lst (cons (list (angle a pt) (list (car a) (cadr a))) lst)
- )
- )
- (setq lst (vl-sort lst '(lambda (x y) (< (car x) (car y)))))
- (entmakex
- (append (list (cons 0 "LWPOLYLINE")
- (cons 100 "AcDbEntity")
- (cons 100 "AcDbPolyline")
- (cons 90 (length lst))
- (cons 70 1)
- )
- (mapcar (function (lambda (p) (cons 10 (nth 1 p)))) lst)
- )
- )
- (princ)
- )
- (c:clpoints)
- (defun average (lst)
- (mapcar '(lambda (x) (/ x (length lst)))
- (apply 'mapcar (cons '+ lst))
- )
- )
|