AutoCAD .Net 使用 Database.ReadDwgFile 读取dwg文件而不显示文档窗口

我们常常会碰到需要读取外部的 dwg 文件,而又不想在 AutoCAD 的文档窗口中显示。
AutoCAD .Net API 提供了 Database.ReadDwgFile 来实现。
我们首先需要构建一个 Database 对象。
public Database(bool buildDefaultDrawing, bool noDocument);
第一个参数必须传 false。
第二个参数根据需要,传 true、false 均可。
然后调用 Database.ReadDwgFile 方法。
最好紧接着调用 db.CloseInput(true); 关闭文件。

以下示例代码演示:
通过以上提到的方法读取 dwg 文件,并遍历获取模型空间中的图元信息。

[CommandMethod("ReadDwgFileTest")]
public static void ReadDwgFileTest()
{
    Document doc = Application.DocumentManager.MdiActiveDocument;

    using (Database db = new Database(false, true))
    {
        try
        {
            // 读取dwg文件
            string dwgFileFullPath = 
                @"D:\WangYao\AutoCAD\workspace\AcadDotNet\TestFiles\test_001.dwg";
            db.ReadDwgFile(dwgFileFullPath,
                FileOpenMode.OpenForReadAndAllShare, false, "");
            db.CloseInput(true);
        }
        catch (System.Exception ex)
        {
            doc.Editor.WriteMessage("\nUnable to read drawing file.");
            return;
        }

        using (Transaction tr = db.TransactionManager.StartTransaction())
        {
            // 模型空间
            BlockTable blkTbl = tr.GetObject(db.BlockTableId, OpenMode.ForRead)
                as BlockTable;
            BlockTableRecord modelSpace = tr.GetObject(
                blkTbl[BlockTableRecord.ModelSpace], OpenMode.ForRead)
                as BlockTableRecord;

            // 遍历模型空间
            foreach (ObjectId oid in modelSpace)
            {
                DBObject dbobj = tr.GetObject(oid, OpenMode.ForRead);
                if (dbobj is Entity)
                {
                    Entity entity = dbobj as Entity;
                    doc.Editor.WriteMessage("\nEntity: {0}, {1}, {2}, {3}",
                        entity.Id, 
                        entity.GetType().ToString(), 
                        entity.Layer, 
                        entity.Color.ToString());
                }
            }
        }
    }
}

我在我本机上运行的结果

命令: READDWGFILETEST
Entity: (140696770088080), Autodesk.AutoCAD.DatabaseServices.Line, 0, 红
Entity: (140696770088096), Autodesk.AutoCAD.DatabaseServices.Circle, 0, BYLAYER
Entity: (140696770088112), Autodesk.AutoCAD.DatabaseServices.Arc, 0, BYLAYER
Entity: (140696770088128), Autodesk.AutoCAD.DatabaseServices.Polyline, 0, 绿

参考文章
Accessing DWG files not open in the AutoCAD editor using .NET
AutoCAD .NET: Read DWG Into Memory Using Database.ReadDwgFile

  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
### 回答1: 在 .NET 开发的应用程序中,我们可以使用一些第三方库或 API,来读取和展示 dxf/dwg 文件。常用的有以下几种: 1. AutoCAD .NET API:AutoCAD 自带的 API,可以在应用程序中使用它来读取和处理 dxf/dwg 文件。不过要注意需要安装 AutoCAD 软件,且使用该 API 需要一定的 AutoCAD 的编程经验。 2. TX Text Control:这是一款非常流行的文本处理控件,可以读取和展示多种文档格式,包括 dxf/dwg使用该控件,我们可以将 dxf/dwg 文件转换为图像数据,并在应用程序中以图片的形式展示。 3. AutoCAD OEM:这是针对 CAD 软件开发的 OEM 组件,支持读取和处理 dxf/dwg 文件。可以根据客户需求定制开发,但是需要一定的 CAD 技术储备。 4. Open Design Alliance:这是一个非盈利性质的组织,专注于 CAD 相关技术的研发和开发。它提供了一系列的 API 和软件库,可以用于读取和展示 dxf/dwg 文件,同时支持多种平台和语言。 总之,无论采用哪种方案,读取和展示 dxf/dwg 文件都需要借助相应的工具和技术。我们需要根据自己的需求和实际情况,选择最适合的方案进行实施。 ### 回答2: 在计算机辅助设计(CAD)领域中,DXF和DWG是两种常见的文件格式。这些格式通常用于保存复杂的图形和模型,如建筑设计图纸和机械零件。通过使用.NET框架提供的类库和工具,我们可以轻松地读取和展示这些类型的文件读取DXF和DWG文件的过程涉及到解析文件中的元素和实体,并将其转换为可视化对象。为了实现这个目标,我们可以使用专门的库,如Open Design Alliance的Teigha库,或者使用.NET框架中提供的AutoCAD、Draw和CADInterop等类库。 在使用这些库进行文件读取和展示之前,我们需要安装相应的包,并且熟悉DXF和DWG文件的结构和格式。接下来,我们可以使用类似于以下的代码片段来读取和展示这些文件: ``` using Autodesk.AutoCAD.ApplicationServices.Core; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.Geometry; // 打开DWG文件 Database db = new Database(false, true); db.ReadDwgFile("path/to/file.dwg", FileOpenMode.OpenForReadAndAllShare, true, ""); // 获取模型空间 BlockTable bt = db.BlockTableId.GetObject(OpenMode.ForRead) as BlockTable; BlockTableRecord btr = bt[BlockTableRecord.ModelSpace].GetObject(OpenMode.ForRead) as BlockTableRecord; // 遍历实体并将其添加到场景中 foreach (ObjectId id in btr) { Entity ent = id.GetObject(OpenMode.ForRead) as Entity; if (ent != null) // 成功读取实体 { // 将实体转换为渲染对象 // ... // 添加渲染对象到场景中 // ... } } //展示文件,保存并关闭 db.SaveAs("path/to/output.dwg", DwgVersion.Current); db.CloseInput(true); ``` 在代码中,我们首先打开DWG文件并获取其中的模型空间。随后,我们遍历该空间的所有实体,并将其转换为能够被渲染的对象,然后将其添加到场景中。最后,我们可以保存渲染结果并关闭文件。 总之,使用.NET框架读取和展示DXF和DWG文件是可行的,需要使用特定的类库并了解文件格式和结构。有了这些工具和知识,我们可以轻松地在.NET平台上实现各种CAD应用程序。 ### 回答3: Dxf和Dwg文件是一种常见的CAD文件格式,它们在制图行业和工业设计中应用广泛。为了实现这样的需求,我们可以采用.net平台的Autodesk AutoCAD API来读取和展示这些文件。 通过使用Autodesk AutoCAD API,我们可以轻松地读取dxf和dwg文件。首先,我们需要创建一个CAD应用程序并加载AutoCAD API。然后,我们可以使用API来打开dxf或dwg文件读取文件中的对象和实体。这些读取的数据可以用于展示文件的各个部分,如图层、块、文本、线条和基本几何形状等。 读取并展示dxf和dwg文件的过程中,我们需要注意一些细节。例如,在读取时需要确定文件的版本和在展示时需要考虑线条宽度等样式信息。此外,在处理较大的CAD文件时,需要考虑性能优化,以确保程序的运行速度。 总的来说,通过使用Autodesk AutoCAD API,我们可以实现对dxf和dwg文件读取和展示,并可以在应用程序中添加自定义样式和交互功能以满足用户需求。这种技术应用广泛,是制图行业和工业设计的重要组成部分。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值