是否使用Java中的AutoCAD库读取.dwg文件?

是否使用Java中的AutoCAD库读取.dwg文件?,java,autocad,dxf,dwg,Java,Autocad,Dxf,Dwg,是否有任何开源Java或JavaScript库可用于解析.dwg文件并从中获取对象 我想为我的项目从文本表中提取数据 AutoCAD开发人员社区似乎更喜欢.NET和C/C++而不是JAVA 唯一的自由选择是通过将DWG转换为.dxf,并使用Kabja LIB读取。

是否有任何开源Java或JavaScript库可用于解析.dwg文件并从中获取对象

我想为我的项目从文本表中提取数据

AutoCAD开发人员社区似乎更喜欢.NET和C/C++而不是JAVA


唯一的自由选择是通过将DWG转换为.dxf,并使用Kabja LIB读取。


或者,您可以使用AutoCAD I/O webservice(基本上是云端上正在运行的实例)来运行自定义代码、提取数据或创建新图形。将支持所有DWG功能的。从has接口检查Teigha库。Teigha是RealDWG的替代品,被许多CAD软件供应商广泛使用。它是稳定的,并且能够毫无问题地读取/编辑/写入DWG。我们有超过3年的经验,我可以说它是优秀的,便宜得多。当我们在RealDWG和Teigha之间选择时,我们选择了Teigha,我很高兴我们做到了

利用SWIG创建Teigha for Java

2013年,ODA利用SWIG提供的Java支持创建了“Teigha” 用于Java”。Teigha for Java包括以下内容:

Java访问.dwg和.dgn文件的完整Teigha API。 支持Windows、Linux和Mac平台。 API与Teigha.NET非常相似,简化了语言之间的转换


正如您所指出的,改用DXF格式,还有开源java库YCAD,您可以使用并且非常容易使用。

感谢所有回答的人,我已经测试了您的所有主张,以下是截至2015年我发现的:

目前没有免费可靠的解决方案来读取和操作.dwg和.dxf文件。这尤其适用于最新版本的AutoCAD,例如:AutoCAD 2010、AutoCAD 2013等,RF 2013、RF 2010

可靠(且昂贵)的解决方案将是ODA的Teigha(每年2000美元)和Autocad的RealDWG(每年5000美元)

较便宜的替代品如下:

  • AutoCAD I/O每月10美元(如Augusto Gonclaves所建议),但目前功能有限
  • 在AutoCAD 2015/2016的付费实例中编写LISPS例程并使用脚本文件运行它们
  • 等待更完整的AutoCad Core Console实现
开源库(如Kabeja和YCad)可能能够处理较旧的AutoCAD版本,但对它们的期望不高,因为这些项目自几年前以来就处于非活动状态。不过,值得关注的是ApacheTika,因为他们开始为.dwg文件编写解析器,但开发速度很慢

就我个人而言,我认为AutoDesk现在在CAD市场上拥有强大而自私的垄断地位,他们正在使其他人难以加入。dwg文件的格式版本经常变化,我想开源开发者在某个时候不得不放弃,转而使用官方产品


让我们期待未来几年有更多的开源解决方案

试试这个,我认为这个项目已经失败了。。。我联系了作者,但几天后没有回复。。。此外,.dwg格式的发展非常频繁,库的最后一次提交是在几年前。您可以签出项目并进行slite修改,或者以其他方式进行修改,正如我们在这里所做的那样,文件处理是本机的(C/C++),并使用JNI和javaEr进行inetract,Java和JavaScript有些不同。是的,AutoCAD似乎讨厌Java。。。我正在尝试为Nuxeo文档管理系统tp parse and read.dwg文件开发一个插件,但是现在Java中所有可用的库似乎都不起作用。。。现在唯一的解决方案是通过.dxf converrison并使用Kabeja获取对象如果计算机上安装了AutoCAD,则可以使用开发人员版本AccoronSole.exe,这是AutoCAD的命令行版本,可以从任何语言(通过命令行)进行自动化。在安装文件夹中检查此exe。注意:您不能在不同的文件夹计算机上复制和粘贴,这需要完全安装AutoCAD。AccorOnSole.exe上的反馈:零指南,零支持,使用非常有限。。。我尝试了数据提取,但控制台崩溃了。。。不支持ATTOUT。。互联网上很少有指南。。。现在看来,AutoCAD对这项新功能并不在乎。。。您可以找到所有不同的连接选项。是针对教育/研究的。他们说这是免费的。不过你需要提交申请。@OgnyanDimitrov:回答得好,我有一个问题:将autocad文件导入java意味着将autocad线条转换为java中的
s,其中每个
有两个坐标
x
y
?因此,在java中,每个autocad行将是两个
s?Teigha(BricsCAD)库有自己的类,就像RealDWG(autocad)有自己的类一样。CAD库中的任何类都不会“转换”为Java类。AutoCAD中的每个Point3d、Point2D、多段线、直线、圆弧、圆、多行文字在Teigha中都有相应的类—Point3d、Point2D、多段线、直线等。来自AutoCAD的代码几乎与Teigha(API级别)的源代码兼容,尽管内部实现不同。我们将一个大型应用程序从AutoCAD迁移到BricsCAD,并使用相同的代码维护和开发了两个版本(AuCad和BrixCAD),几乎不费吹灰之力。“当我们在RealDWG和Teigha之间进行选择时,我们选择了Teigha,我很高兴我们做到了。”。。。我选择了RealDwg,但我不高兴我这么做了,因为那些记分的人。@Cadblock你能提供一个指向RealDwg的Java接口的链接吗