Roy_043 发表于 2016-4-25 15:32:15

使用动态块会产生较大的Dwg文件;WBLOCK将文件缩小到文件大小的10%

我有一个插件,大量使用3D动态块。这些块往往比较复杂,有许多视图状态、查找表、属性等。这些块有100多个,每个块都模拟了具有各种配置选项的不同机械设备模块
我的插件将这些块插入到图形中,并设置块的动态特性。我遇到的问题是生成的图形文件太大。即使从图形中清除了所有可清除的对象,这些文件的大小也可以是10或20 MB
如果我对其中一个大型图形中的所有对象进行WBlock,则生成的文件包含原始图形中的全部动态块定义和实例,并且与原始图形完全相同,但新图形的大小要小得多(约为原始文件大小的10%)。我能做些什么(除了以某种方式自动锁定图形)来减小这些文件的大小,使它们更接近于锁定图形?我试图了解原始文件中包含哪些额外数据,而不是WBlock文件中包含的数据,如果存在任何问题,我可以在不使用WBlock的情况下避免或消除这些额外数据
例如,在插入块和设置块动态属性时,我使用事务(TransactionMananger.StartopEnclosureTransaction)。事务处理的使用是否影响图形大小?我创建了许多辅助函数,用于插入块、设置块属性以及在块引用的扩展字典中设置值。所有这些操作当前都包装在事务中。当插入一个给定的块时,其中一些函数会被多次调用。例如,当设置块的动态属性时,我为块的每个动态属性调用一次helper函数,从而为每个属性生成一个事务。设置扩展字典值也是如此
例如,重构我的代码以便在单个事务中设置所有属性会对文件大小产生任何影响吗?从代码中完全删除事务会对图形文件大小产生任何影响吗<谢谢,凯文
**** Hidden Message *****

芝麻茶馆 发表于 2016-4-25 18:15:22

在我调查这个绘图大小问题的过程中,我使用了一个LISP命令(本网站提供的代码),它计算给定绘图数据库中的各种对象并将信息写入命令控制台。我对原始绘图运行了一次命令,对“WBlock”生成的绘图运行了一次整个绘图。在这种情况下,WBlock绘图比原始绘图小50%,尽管我看不出db对象计数有任何差异。我已经为这两张图附加了Counts的输出。我正在努力从我的老板那里获得发布这两张图的许可(抱歉)。
谢谢,
凯文

毛毛 发表于 2016-4-25 20:02:41

没有dwgs,我做不了什么。
尝试分析这个。

流星 发表于 2016-4-26 03:22:35

字典。从29数到18。这是非常重要的,因为字典可以包含大量的数据。我将调查所有被列为“无名的”(实际上有一个名称,但没有“名称属性”)或没有“计数属性”的字典条目。
页: [1]
查看完整版本: 使用动态块会产生较大的Dwg文件;WBLOCK将文件缩小到文件大小的10%