下面将报告每个块中组件的数量-这不一定会揭示内存使用量方面最大的块定义(因为一些实体需要比其他实体更多的内存来定义),但它可以提供关于哪些块主要影响文件大小的总体概念:
- (defun c:bsize ( / l )
- (vlax-for b (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))
- (if (and (= :vlax-false (vla-get-islayout b))
- (= :vlax-false (vla-get-isxref b))
- )
- (setq l (cons (cons (vla-get-name b) (vla-get-count b)) l))
- )
- )
- (if l
- (progn
- (princ (LM:padbetween "\nBlock Name" "Components" "." 51))
- (princ (LM:padbetween "\n" "" "=" 51))
- (foreach x (vl-sort l '(lambda ( a b ) (> (cdr a) (cdr b))))
- (princ (LM:padbetween (strcat "\n" (car x)) (itoa (cdr x)) "." 51))
- )
- (princ (LM:padbetween "\n" "" "=" 51))
- )
- (princ "\nNo blocks found.")
- )
- (princ)
- )
- ;; Pad Between - Lee Mac
- ;; Returns the concatenation of two supplied strings padded to a
- ;; desired length using a supplied character.
- ;; s1,s2 - [str] strings to be concatenated
- ;; ch - [str] character for padding
- ;; ln - [int] minimum length of returned string
- (defun LM:padbetween ( s1 s2 ch ln )
- ( (lambda ( a b c )
- (repeat (- ln (length b) (length c)) (setq c (cons a c)))
- (vl-list->string (append b c))
- )
- (ascii ch)
- (vl-string->list s1)
- (vl-string->list s2)
- )
- )
- (vl-load-com) (princ)
关于上述每个块的引用数,请考虑使用我的嵌套块计数器程序或块计数器程序。
我希望这有帮助,
李 |