gpt4 book ai didi

c++ - 如何在 C++ 中处理 DWG 文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:53:36 26 4
gpt4 key购买 nike

我正在处理一个项目,我需要从 C++ 中的 .dwg 文件导入线数据,但我不知道从哪里开始。我看过这个 http://opendesign.com/files/guestdownloads/OpenDesign_Specification_for_.dwg_files.pdf ,我认为这对我来说可能太硬核了,除非有人知道一种简单地用代码描述解码策略的方法吗?例如,大概每一个操作都必须是明智的?

除此之外,我可能不得不依赖一些第三方库,但问题是:是否有任何此类(开源)库获得了许可许可?我无法在该项目中使用复制左侧代码。

为了澄清对评论的回应,我正在寻找宽容 许可库(参见 http://en.m.wikipedia.org/wiki/Permissive_free_software_licence )。这包括例如 MIT 和 BSD 许可证,但不包括 GPL(LGPL 可能会起作用,但前提是静态链接有异常(exception))。当然,公共(public)领域也可以。 GPL 是强烈的 copyleft,这意味着即使您不更改它,但使用单独的原始代码链接到它,该代码必须也根据 GPL 获得许可。

最佳答案

为什么要重新发明轮子?有大量可用的 DWG 库。尝试 LibDWG .它根据 GNU GPL 获得许可(即开源)。还有LibreDWG它基于 LibDWG,但可直接从 GNU 项目网站获得。在 github 上有一个使用 LibreDWG 的例子 opens a DWG file, and converts it to an SVG .

阅读文件似乎很简单:

int error;
Dwg_Data dwg;

error = dwg_read_file(filename, &dwg);

if (!error)
{
model_xmin = dwg_model_x_min(&dwg);
model_ymin = dwg_model_y_min(&dwg);
double dx = (dwg_model_x_max(&dwg) - dwg_model_x_min(&dwg));
double dy = (dwg_model_y_max(&dwg) - dwg_model_y_min(&dwg));
double scale_x = dx / (dwg_page_x_max(&dwg) - dwg_page_x_min(&dwg));
double scale_y = dy / (dwg_page_y_max(&dwg) - dwg_page_y_min(&dwg));
//...
}

dwg_free(&dwg);

关于c++ - 如何在 C++ 中处理 DWG 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22597111/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com