>
>
- (defun c:addme (/ trunc data ss i e match var opt fr sy)
- ;;; pBe04Mar2014 ;;;
- (defun trunc (s m [b]v w[/b])
- (atoi (if m
- (substr s (+ 2 (vl-string-position [b]v[/b] s)))
- (substr s (+ 2 (vl-string-position [b] w[/b] s nil t)))
- )
- )
- )
- [b](initget "Pack Bolt")
- (setq opt (getkword "\nChoose Option [Pack Washer/Bolt Information]"))
- (setq var
- (if (eq opt "Bolt")
- '(77 42 "*M##`**")
- '(80 45 "*PW-*mm")
- )
- fr (car var)
- sy (cadr var))[/b]
-
- (if (setq data nil
- ss (ssget "_X"
- [b](list '(0 . "TEXT")
- (cons 1 (last var))
- '(8 . "25_Bolt designation,7_Graphics")
- )[/b]
- )
- )
- (progn
- (repeat (setq i (sslength ss))
- (setq e (ssname ss (setq i (1- i))))
- (setq data (cons (cdr (assoc 1 (entget e))) data))
- )
- (setq
- data (vl-sort data
- '(lambda (b c)
- (cond
- ((< (setq d[b] (trunc b t fr sy )[/b]) [b](setq f (trunc c t fr sy)))[/b] t)
- ((= d f) (< [b](trunc b nil fr sy)[/b] [b](trunc c nil fr sy)[/b]))
- )
- )
- )
- )
- (While (setq a (car data))
- (setq ref (substr a (1+ (vl-string-position[b] (car var)[/b] a))))
- (setq match (vl-remove-if-not
- '(lambda (s) (wcmatch s (strcat "*" ref)))
- data
- )
- )
- (princ (strcat "\n"
- ref
- " = "
- (itoa (apply '+
- (mapcar '(lambda (k)
- (if (zerop (atoi k))
- 1
- (atoi k)
- )
- )
- match
- )
- )
- )
- )
- )
- (setq data (vl-remove-if '(lambda (y) (member y match)) data))
- )
- )
- )
- (princ)
- )
- (vl-load-com)
|