乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 13|回复: 3

[编程交流] 绘图中的块大小

[复制链接]

12

主题

25

帖子

13

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-5 22:18:38 | 显示全部楼层 |阅读模式
是否可以生成块及其大小的列表(kb)?
 
我经常收到客户的图纸,有时文件大小很大,包含数百个区块。我希望能够运行一个例程,告诉我哪些块对大文件大小的影响最大,这样我就可以调查它们,并尝试将文件大小降低到更易于管理的程度。
 
谢谢
 
抢劫
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-5 22:42:29 | 显示全部楼层
您可以使用BCOUNT生成插入块的列表,并编写脚本以通过WBLOCK将这些块保存在磁盘上。完成后,在Explorer中对其进行排序。
  1. -WBLOCK PathToExport NameOfBlock<p>;end of script[code]</p><p>By the way, this will not treat the not inserted ones.</p>
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 23:10:59 | 显示全部楼层
下面将报告每个块中组件的数量-这不一定会揭示内存使用量方面最大的块定义(因为一些实体需要比其他实体更多的内存来定义),但它可以提供关于哪些块主要影响文件大小的总体概念:
  1. (defun c:bsize ( / l )
  2.    (vlax-for b (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))
  3.        (if (and (= :vlax-false (vla-get-islayout b))
  4.                 (= :vlax-false (vla-get-isxref   b))
  5.            )
  6.            (setq l (cons (cons (vla-get-name b) (vla-get-count b)) l))
  7.        )
  8.    )
  9.    (if l
  10.        (progn
  11.            (princ (LM:padbetween "\nBlock Name" "Components" "." 51))
  12.            (princ (LM:padbetween "\n" "" "=" 51))
  13.            (foreach x (vl-sort l '(lambda ( a b ) (> (cdr a) (cdr b))))
  14.                (princ (LM:padbetween (strcat "\n" (car x)) (itoa (cdr x)) "." 51))
  15.            )
  16.            (princ (LM:padbetween "\n" "" "=" 51))
  17.        )
  18.        (princ "\nNo blocks found.")
  19.    )
  20.    (princ)
  21. )
  22. ;; Pad Between  -  Lee Mac
  23. ;; Returns the concatenation of two supplied strings padded to a
  24. ;; desired length using a supplied character.
  25. ;; s1,s2 - [str] strings to be concatenated
  26. ;; ch    - [str] character for padding
  27. ;; ln    - [int] minimum length of returned string
  28. (defun LM:padbetween ( s1 s2 ch ln )
  29.    (   (lambda ( a b c )
  30.            (repeat (- ln (length b) (length c)) (setq c (cons a c)))
  31.            (vl-list->string (append b c))
  32.        )
  33.        (ascii ch)
  34.        (vl-string->list s1)
  35.        (vl-string->list s2)
  36.    )
  37. )
  38. (vl-load-com) (princ)

 
关于上述每个块的引用数,请考虑使用我的嵌套块计数器程序或块计数器程序。
 
我希望这有帮助,
 
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 23:35:47 | 显示全部楼层
仔细查看任何名为$aec62Fe45jk的块。这些块通常是复制和粘贴块,可以包含大量信息,如完整的dwg,最好单独保存并使用外部参照。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-11 06:30 , Processed in 0.649660 second(s), 60 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表