(vl-load-com)
 - (vl-load-com)
- (defun c:tt (/ ss el ll i)
- (defun _getwalllength (e / el _HasWindows len)
- (defun _HasWindows (el)
- (assoc 330 (cdr (member (assoc 330 el) el)))
- )
- (setq el (entget e)
- len (apply 'distance (xdrx_entity_getstretchpoint e))
- )
- (if (_HasWindows el)
- (- len
- (apply
- '+
- (mapcar '(lambda (a)
- (cdr (assoc 40 (entget a))) ;_门窗洞开尺寸
- )
- (mapcar
- 'cdr
- (vl-remove-if-not
- '(lambda (x)
- (and (= (car x) 330)
- (/= (cdr (assoc 0 (entget (cdr x))))
- "BLOCK_RECORD"
- )
- ) ;_门窗
- )
- el
- )
- )
- )
- )
- )
- len
- )
- )
- (if (setq ss (ssget '((0 . "TCH_WALL"))))
- (progn
- (setq el
- (mapcar
- '(lambda (x)
- (list (vlax-get (vlax-ename->vla-object x) 'TotalWidth) ;_墙厚
- x
- )
- )
- (xdrx_pickset->ents ss)
- )
- el (XD::List:GroupByIndex el 1e-3)
- )
- (setq ll (mapcar '(lambda (x)
- (list (car x)
- (apply '+
- (mapcar '(lambda (a)
- (_getwalllength a)
- )
- (cdr x)
- )
- )
- )
- )
- el
- )
- i 0
- )
- (if (setq p (getpoint "\nOutput Point: "))
- (XD::Table:Make
- (cons
- '("序号" "墙厚" "总长度")
- (mapcar '(lambda (x)
- (list (itoa (setq i (1+ i)))
- (rtos (car x) 2 0)
- (rtos (cadr x) 2 0)
- )
- )
- ll
- )
- )
- p
- 800.
- 250.
- )
- ll
- )
- )
- )(princ)
- )
|