是否有任何开源 Java 或 JavaScript 库可用于解析 .dwg 文件并从中获取对象。
我想从我的项目的文本表中提取数据。
似乎 AutoCAD 开发人员社区更喜欢 .NET 和 C/C++ 而不是 JAVA。
我发现的唯一免费替代方法是首先将 .dwg 转换为 .dxf 并使用 Kabeja lib 从中读取。
opendesignaliance 的Teigha库具有C++、C# 和 Java接口。Teigha 是 RealDWG 的替代品,它被许多 CAD 软件供应商广泛使用。它很稳定,可以毫无问题地读取/编辑/写入 dwg。我们有超过 3 年的经验,我可以说它非常好而且便宜很多。当我们要在 RealDWG 和 Teigha 之间进行选择时,我们选择了 Teigha,我很高兴我们做到了。
利用 SWIG 为 Java 创建 Teigha
2013 年,ODA 使用 SWIG 提供的 Java 支持创建了“Teigha for Java”。Teigha for Java 包括以下内容:
Java 访问 .dwg 和 .dgn 文件的完整 Teigha API。支持 Windows、Linux 和 Mac 平台。API 与 Teigha.NET 非常相似,简化了语言之间的转换。
感谢所有回答的人,我已经测试了你所有的提议,这是我发现的,截至 2015 年:
目前没有免费且可靠的解决方案来读取和操作 .dwg 和 .dxf 文件。这尤其适用于最新版本的 AutoCAD,例如:Autocad 2010、Autocad 2013 等、RF 2013、RF 2010。
可靠(且昂贵)的解决方案将是 ODA 的 Teigha(每年 2000 美元)和 Autocad 的 C# 中的 RealDWG(每年 5000 美元)......
更便宜的替代品如下:
Kabeja 和 Ycad 等开源库可能能够处理较旧的 AutoCAD 版本,但不要对它们抱有太大期望,因为这些项目自几年前以来就处于非活动状态。不过,值得关注 Apache Tika,因为他们开始为 .dwg 文件编写解析器,但开发速度很慢。
就个人而言,我认为 AutoDesk 现在在 CAD 市场上拥有强大而自私的垄断地位,他们让其他人难以加入。 .dwg 文件的格式版本经常变化,我猜开源开发人员会不得不在某个时候放弃并改用官方产品。
让我们希望在未来几年有更多的开源解决方案
Autodesk 主要使用 C++ 开发 AutoCAD,并提供对 C++、.NET、JavaScript、VBA 和 LISP 的插件支持,这就是为什么没有原生 Java 支持的原因。所有这些都需要在机器上安装 AutoCAD。
或者,您可以使用 AutoCAD I/O Web 服务(基本上是云上的运行实例)来运行自定义代码并提取数据或创建新图形。这将支持所有 DWG 功能。检查http://developer.autodesk.com
正如您所指出的,请改用 DXF 格式,还有开源 Java 库 YCAD,您可以使用并且非常易于使用。