本帖最后由 ZZXXQQ 于 2014-11-11 20:57 编辑
 - (defun c:tps (/ dat datlst dnlst fil ed et)
- (setvar "CMDECHO" 0)
- (setq datlst (list))
- (setq fil (ssget '((0 . "TEXT")(1 . "DN#*-#*-#*"))));取文本中符合DN***-**-***字串
- (repeat (setq i (sslength fil))
- (setq ed (entget(ssname fil (setq i (1- i)))))
- (setq et (cdr (assoc 1 ed)))
- (setq dat (read(strcat "(" (vl-string-translate "-" " " et) ")"))) ;(DN*** ** **)
- (setq datlst (cons dat datlst))
- )
- (setq datlst (vl-sort datlst
- '(lambda (a b) (< (vl-princ-to-string (car a)) (vl-princ-to-string (car b))))));排序
- (setq dnlst (list))
- (foreach x datlst
- (if (not(member (car x) dnlst)) (progn
- (setq dnlst (cons (car x) dnlst));(DN*** ...)
- (set (car x) 0.0)
- ))
- (set (car x) (+ (apply 'max (cdr x)) (eval(car x))));取大值加入DN***
- )
- (foreach x (reverse dnlst)
- (write-line (strcat "\n\n\t\t totle 排水管径 " (vl-princ-to-string x) " = " (rtos(eval x))))
- )
- (setvar "CMDECHO" 1)
- (princ)
- )
|