首页 新闻 会员 周边

Dwg文件转SVG文件

0
悬赏园豆:15 [待解决问题]

请问各位彦祖,有没有net库免费支持Dwg文件转SVG文件,
现在有个项目,需要将dwg文件转成svg文件,有没有免费使用的类库,

ProZkb的主页 ProZkb | 初学一级 | 园豆:4
提问于:2024-01-09 18:23
< >
分享
所有回答(3)
-1

目前没有一个特定的.NET库是专门用于免费将DWG文件转换为SVG文件。可以尝试使用一些开源工具或者库来实现这个功能。

以下是一些可能的选择:

  1. LibreDWG: 这是一个开源的C库,用于处理DWG文件。你可以使用它来解析DWG文件,然后自己写代码将其转化为SVG。但是注意,这个库是用C写的,所以你可能需要一些interop来在.NET中使用它。

  2. Inkscape: 这是一个强大的开源矢量图形编辑器,它支持许多不同的格式,包括DWG和SVG。你可以调用Inkscape的命令行接口来做转换。

  3. FreeCAD: 这又是一个开源的CAD软件,可以读取并导出各种文件格式。FreeCAD有Python API,你可以通过IronPython从.NET调用。

由于DWG文件格式的复杂性,所有的转换都可能不会100%完美。
可以考虑使用一些商业的解决方案。例如,Aspose.CAD for .NET就是一个支持DWG到SVG的.NET库,但是它是收费的。

npe0 | 园豆:1299 (小虾三级) | 2024-01-10 15:26

感谢提供信息

支持(0) 反对(0) ProZkb | 园豆:4 (初学一级) | 2024-01-15 11:06
-1

阿里云 通义千问:
截至我的知识更新时间2024年1月10日,没有直接提及到一个免费的.NET库可以直接支持DWG文件转换为SVG文件。然而,在.NET环境中实现这种转换通常需要利用某种中间件或调用第三方API、服务,或者结合使用具有CAD读取功能(如OdaEngine)和SVG生成能力的库来共同完成这一任务。

例如,要实现在.NET中进行DWG转SVG的功能,可以考虑以下间接方法:

  1. 使用商业库,如Autodesk提供的AutoCAD .NET API与相关产品结合,通过编程方式打开DWG文件并输出为SVG格式,但这通常不是免费方案。

  2. 调用开源或免费的命令行工具(如上述提到的Acme CAD Converter),在.NET程序中封装调用这些工具的逻辑,并处理其输出结果。

  3. 如果能找到开源的DWG解析器(例如LibreDWG,但它并不直接提供SVG导出功能),则需要自己编写SVG生成代码或将解析后的数据传递给SVG生成库。

请注意,由于技术快速演进,市场上可能会出现新的解决方案或现有工具增加新功能。因此,在实际项目中,请务必查阅最新的资料和资源以获取最准确的信息。

另,
请产品经理更改需求。

快乐的凡人721 | 园豆:3922 (老鸟四级) | 2024-01-10 18:46

感谢

支持(0) 反对(0) ProZkb | 园豆:4 (初学一级) | 2024-01-15 11:06
-1

在.NET平台上,有一些库和工具可以帮助你将DWG文件转换为SVG文件。一个流行的选择是使用 netDxf 库。请注意,这个库主要用于处理DXF文件,但也提供了一些功能可以用于处理DWG文件。

以下是一个简单的例子,使用 netDxf 进行DWG到SVG的转换:

csharp
Copy code
using netDxf;
using netDxf.Entities;
using netDxf.Header;

class Program
{
static void Main()
{
string dwgFilePath = "path/to/your/file.dwg";
string svgFilePath = "path/to/your/output/file.svg";

    DxfDocument dxf = DxfDocument.Load(dwgFilePath);

    // Assuming that the DWG file contains 2D entities
    SvgDocument svg = new SvgDocument();
    foreach (EntityObject entity in dxf.Entities)
    {
        // Convert DXF entities to SVG entities (you may need to adapt this based on your requirements)
        SvgEntity svgEntity = ConvertDxfToSvg(entity);
        svg.Children.Add(svgEntity);
    }

    svg.Write(svgFilePath);
}

static SvgEntity ConvertDxfToSvg(EntityObject dxfEntity)
{
    // Implement the logic to convert DXF entities to SVG entities here
    // This can include handling various types of entities (lines, circles, etc.)
    // and converting their properties (coordinates, colors, etc.) to SVG format.

    // Example: Convert a DXF Line to SVG Line
    if (dxfEntity is Line line)
    {
        SvgLine svgLine = new SvgLine
        {
            StartX = line.StartPoint.X,
            StartY = line.StartPoint.Y,
            EndX = line.EndPoint.X,
            EndY = line.EndPoint.Y,
            Stroke = SvgColor.FromColor(line.Color),
            StrokeWidth = line.Thickness
        };

        return svgLine;
    }

    // Handle other DXF entity types as needed

    return null; // Return null if the entity type is not supported
}

}
请注意,这只是一个简单的示例,你可能需要根据你的DWG文件的内容和结构进行更复杂的实现。确保仔细阅读 netDxf 的文档以了解更多关于DXF文件的处理方法。

请注意,使用DWG格式可能涉及到专有的AutoCAD技术,因此在处理DWG文件时可能会遇到一些限制。此外,确保你的使用符合软件许可协议和法规。

Technologyforgood | 园豆:5686 (大侠五级) | 2024-01-12 20:44

这个太简单了,只转化一条线,感谢提供思路

支持(0) 反对(0) ProZkb | 园豆:4 (初学一级) | 2024-01-15 11:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册