3
14
12
初来乍到
使用道具 举报
106
1万
101
顶梁支柱
(defun c:bnum ( / *error* mutter ss doc ) ;; © Lee Mac ~ 05.06.10 (defun *error* ( msg ) (and mutter (setvar 'nomutt mutter)) (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*") (princ (strcat "\n** Error: " msg " **"))) (princ) ) (or *title (setq *title "Block Data")) (or *prev (setq *prev "ON")) (setq mutter (getvar 'nomutt)) (setvar 'nomutt 1) (princ "\nSelect Blocks to Count <All> : ") (cond ( (not (progn (setq ss (cond ( (ssget '((0 . "INSERT")))) ( (ssget "_X" '((0 . "INSERT")))))) (setvar 'nomutt mutter) ss)) (princ "\n** No Blocks Found **") ) ( (_DisplayResult (mapcar (function (lambda ( x ) (list (car x) (itoa (cadr x)))) ) ( (lambda ( / l n ) (vlax-for obj (setq ss (vla-get-ActiveSelectionSet (setq doc (vla-get-ActiveDocument (vlax-get-acad-object))) ) ) (if (zerop (logand 45 (cdr (assoc 70 (tblsearch "BLOCK" (setq n (BlockName obj))))))) (setq l (assoc++ n l)) ) ) l ) ) ) ) ) ( (princ "\n** No Blocks Found **") ) ) (princ))(defun _DisplayResult ( lst / rLen ) (if lst (progn (setq rLen (+ 3 (apply (function max) (cons 5 (mapcar (function strlen) (mapcar (function cadr) lst) ) ) ) ) ) (mapcar (function (lambda ( item ) (princ (strcat "\n" (PadRight (TidyString (car item) 40) "." 40) "|" (PadLeft (cadr item) "." rLen) ) ) ) ) (append (list '("MANUFACTURER_NUMBER" "QUANTITY") (list (PadRight "" "-" 40) (PadLeft "" "-" rLen)) ) (setq lst (vl-sort lst (function (lambda ( a b ) (< (car a) (car b))) ) ) ) (list (list (PadRight "" "-" 40) (PadLeft "" "-" rLen)) ) ) ) (terpri) (if (> (atof (getvar 'ACADVER)) 16.) (progn (while (progn (initget "Yes No Settings") (setq choix (getkword "\nTable? [Yes/No/Settings] <Yes> : ")) (cond ( (or (not choix) (eq "Yes" choix)) (GrMove (AddTable (GetActiveSpace (vla-get-ActiveDocument (vlax-get-acad-object) ) ) (getvar 'VIEWCTR) *title (cons '("Block Name" "Count") lst) (eq "ON" *prev)