46
161
104
后起之秀
;; ============================================== ;;;; ;;;; @@@@@ @ @@@@ @ @@@@ @@@ @@ @ @ ;;;; @ @ @ @ @ @ @ @ @ @ @ ;;;; @ @ @@@@ @ @@@@ @ @ @ @@ ;;;; @ @ @ @ @ @ @ @ @ @ ;;;; @@@@@ @ @@@@ @@@@ @@@@ @@@ @@@ @@@@ @ @ ;;;; ;;;; ============================================== ;;;; 22:50 2018-01-11 © ziele_o2k ;;;; ============================================== ;;;; some code copied from Lee Mac's Block Counter ;;;; http://www.lee-mac.com/blockcounter.html ;;;; ============================================== ;;(defun c:detsum ( / pz:sub _pt _ss _enx _k _v _res _tab _row _hgt _wth _tg1 _tg2 _tg3) (defun pz:sub ( @key @val @lst / _itm ) (if (setq _itm (assoc @key @lst)) (subst (cons @key (+ @val (cdr _itm))) _itm @lst) (cons (cons @key @val) @lst) ) ) (if (and (setq _ss (ssget '((0 . "DIM*")))) (setq _pt (cd:USR_GetPoint "\nTable insertion point: " 1 nil)) ) (progn (foreach %1 (cd:SSX_Convert _ss 0) (setq _enx (entget %1) _k (cdr(assoc 1 _enx)) _v (cdr(assoc 42 _enx)) _res (pz:sub _k _v _res) ) ) (setq _res (vl-sort (mapcar '(lambda (%) (list (car %) (cd:CON_Real2Str (cdr %) 2 1)) ) _res ) '(eval (list 'lambda '( a b ) (list '< '(strcase (car a)) '(strcase (car b))))) ) ) (setq _hgt (vla-gettextheight (vla-item (vla-item (vla-get-dictionaries (cd:ACX_ADoc)) "acad_tablestyle") (getvar 'ctablestyle) ) acdatarow ) _tg1 "Detail sum" _tg2 "Detail name" _tg3 "Sum" ) (setq _tab (cd:ACX_AddTable (cd:ACX_ASpace) _pt (+ (length _res) 2) 2 (* 2 _hgt) (* _hgt (max (apply 'max (mapcar 'strlen (append (list _tg2) (list _tg3) (apply 'append _res) ) ) ) (/ (strlen _tg1) 2) ) ) ) ) (vla-setText _tab 0 0 _tg1) (vla-setText _tab 1 0 _tg2) (vla-setText _tab 1 1 _tg3) (setq _row 2) (foreach %1 _res (vla-setText _tab _row 0 (car %1)) (vla-setText _tab _row 1 (cadr %1)) (setq _row (1+ _row)) ) ) ) (princ));; ================================================================== ;;;; ================================================================== ;;;; ================================================================== ;;;; ================================================================== ;;;; Subfunctions form CADPL-Pack-v1.lsp http://forum.cad.pl ;;;; ================================================================== ;;;; ================================================================== ;;;; ================================================================== ;;;; ================================================================== ;;; =========================================================================================== ;; Pobiera punkt od uzytkownika / Gets point from user ;; Msg [sTR] - komunikat do wyswietlenia / message to display ;; Bit [iNT/nil] - bit sterujacy (patrz initget) / control bit (see initget) ;; Pt [list/nil] - punkt bazowy / base point ;; ------------------------------------------------------------------------------------------- ;; (cd:USR_GetPoint "\nWskaz punkt: " 1 nil) ;; (cd:USR_GetPoint "\nWskaz drugi punkt: " 32 '(5 10 0)) ;; =========================================================================================== ;(defun cd:USR_GetPoint (Msg Bit Pt / res) (if Bit (initget Bit))