 - (defun c:zdt (/ pts wnp dil dis)
- (setq pts
- (mapcar 'cdr
- (vl-remove-if
- (function (lambda (x) (/= (car x) 10)))
- (entget (car (entsel)))
- )
- )
- )
- (or
- (< (apply
- '+
- (mapcar
- (function
- (lambda (pt1 pt2)
- (- (* (car pt1) (cadr pt2)) (* (cadr pt1) (car pt2)))
- )
- )
- (cons (last pts) pts)
- pts
- )
- )
- 0
- )
- (setq pts (reverse pts))
- )
- (setq wnp (list (apply 'min (mapcar 'car pts)) (apply 'max (mapcar 'cadr pts))))
- (setq diL (mapcar (function (lambda (pt) (distance pt wnp))) pts))
- (setq dis (vl-position (apply 'min diL) diL))
- (or (= dis 0)
- (repeat dis
- (setq pts (append (cdr pts) (list (car pts))))
- )
- )
- (setq dis 0)
- (setq dil (append pts (list (car pts))))
- (foreach pt pts
- (entmakex
- (list
- '(0 . "TEXT")
- '(100 . "AcDbEntity")
- '(67 . 0)
- '(8 . "0")
- '(410 . "Model")
- '(100 . "AcDbText")
- '(10 0.0 0.0 0.0)
- (cons 11 (polar pt (+ (angle pt (cadr dil)) (* pi 0.5)) 8))
- (cons 40 5.0)
- (cons 1 (strcat "J" (itoa (setq dis (1+ dis)))))
- '(41 . 0.8)
- '(51 . 0.0)
- '(71 . 0)
- '(72 . 1)
- '(210 0.0 0.0 1.0)
- '(100 . "AcDbText")
- '(73 . 2)
- )
- )
- (setq dil (cdr dil))
- )
- (princ)
- )
|