我被要求解决在试图将图形导出到PDF3D时发生的CAD应用程序的内存使用问题。

导出功能对于简单模型或仅仅是复杂模型的一部分,但对于整个复杂模型的表现都很好。

我们正在使用U3D SourceForge项目来创建U3D对象;将其插入PDF之后。它是创建有问题的对象。

U3D SourceForge项目是一个内置的C ++库,用于C ++,自2007年以来已经死亡,文档较差,其样品的收藏远非足够!在项目列表中,还指出它有内存问题!

因此,我被要求双方攻击问题:

  1. 维护U3D代码。

  2. 更改应用程序与U3D库交互的方式。

他们还说了侧面2.优先,因为它在我们的控制之下。

试图解决问题时,我得到了两个结论:

  1. 我强烈怀疑U3D方法Encodex负责记忆误用。

  2. 我尝试了许多小事的变化,以与LIB(更改压缩参数,标志等)相互作用的方式,每次结果都是内存过度分配。

所以问题是:继续使用此库值得吗?它的代码不喜欢阅读...或者可能是一个好主意,最好以相同的目的查看其他Libs?我没有探索它们,但是我正在认真考虑改用Vcglib或Libharu ...如果您知道这很好,请提出其他建议。

其他替代方法是:使用视觉技术PDF3D出口商,其成本不可接受,或者开发我自己对U3D出口商的实施,这将使U3D的Funcionlationality非常有限,并且可以'' NT准备预期的截止日期。因此,以禁止的方式采取这些选择。

我真的需要帮助来决定什么是最好的。

预先感谢Sérgio

有帮助吗?

解决方案 2

经过一些绝望和糟糕的夜晚,试图发现记忆泄漏或其他记忆问题,我们得出了最实用的解决方案:

仅提取加载文件并将其作为U3D导出到小程序中所需的代码部分,然后使主CAD应用程序调用它。即使它不是最优雅的解决方案,它确实可以很好地工作 - 甚至连2 GB障碍物都无法达到记忆使用情况。

我希望我已被授权以这种方式解决问题。我提出了其他一些事情,例如:

  • 迁移到64位

  • 使用现代Windows版本支持将每个进程的内存限制扩展到2 GB的选项

这两种解决方案都无法接受,因为需要强迫某些客户重新安装已经运行的硬件或软件。

其他提示

一些注释:VCGLIB-无关,Meshlab依靠VCGLIB用于核心函数,但是对于U3D导出命令行工具,使用了从文本格式转换为U3D,并且该工具来自SF U3D lib。 libharu-可以将3D模型嵌入其PDF输出中,而不是创建模型(U3D或PRC文件)。

另一个选择是超出其他Adobe 3D PDF格式,PRC。 Acrobat SDK具有伪代码形式的格式描述。基于PRC输出是在渐近工具中实现的。如果您有兴趣,请在SourceForge上找到它,并在Asymptote论坛上提出问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top