Java 如何从AutoCAD中创建的DXF中提取零部件?
我试图找到一种方法,如何从AutoCAD创建的.dxf文件中获取一些具体组件。具体而言,将在AutoCAD中绘制一座建筑物,并指定窗、门和其他类似构件 我从ribbonsoft或kabeja中找到了一些库,如dxflib,它们能够提取直线、圆弧等。但是,如果我能直接识别窗、门等组件,这将非常有帮助。我需要它的原因是,我必须在应用程序中将现有建筑转换为我自己的数据模型(抽象一些不必要的属性) 有这样的解决办法吗?不管是免费的还是付费的。解决方案是否使用C/C++、Java、Lisp等语言也无关紧要。。。(最好是java:)Java 如何从AutoCAD中创建的DXF中提取零部件?,java,parsing,autocad,cad,dxf,Java,Parsing,Autocad,Cad,Dxf,我试图找到一种方法,如何从AutoCAD创建的.dxf文件中获取一些具体组件。具体而言,将在AutoCAD中绘制一座建筑物,并指定窗、门和其他类似构件 我从ribbonsoft或kabeja中找到了一些库,如dxflib,它们能够提取直线、圆弧等。但是,如果我能直接识别窗、门等组件,这将非常有帮助。我需要它的原因是,我必须在应用程序中将现有建筑转换为我自己的数据模型(抽象一些不必要的属性) 有这样的解决办法吗?不管是免费的还是付费的。解决方案是否使用C/C++、Java、Lisp等语言也无关紧要
非常感谢您的回答和帮助:)使用下面的代码。。。它会帮助你的。它是用C写的#
List tlistenties=new List();
Database Database=HostApplicationServices.WorkingDatabase;
使用(Transaction=database.TransactionManager.StartTransaction())
{
BlockTableRecord btRecord=(BlockTableRecord)transaction.GetObject(SymbolUtilityServices.GetBlockModelSpaceId(数据库),OpenMode.ForRead);
foreach(btRecord中的ObjectId)
{
添加((实体)transaction.GetObject(id,OpenMode.ForRead));
}
Commit();
}您能具体说明我如何从cad cia获取对象吗?:)一些互连或soIt实际上取决于这些组件是否以任何方式存储。如果有,kaps有你的答案。如果不是,我想答案是否定的。
List<Entity> tListEntities = new List<Entity>();
Database database = HostApplicationServices.WorkingDatabase;
using (Transaction transaction = database.TransactionManager.StartTransaction())
{
BlockTableRecord btRecord = (BlockTableRecord)transaction.GetObject(SymbolUtilityServices.GetBlockModelSpaceId(database), OpenMode.ForRead);
foreach (ObjectId id in btRecord)
{
tListEntities.Add((Entity)transaction.GetObject(id, OpenMode.ForRead));
}
transaction.Commit();