首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用C/C++从DWG文件中导入线点

用C/C++从DWG文件中导入线点
EN

Stack Overflow用户
提问于 2020-04-03 03:18:13
回答 1查看 102关注 0票数 0

我正在为我的机器人编写一个用于2D导航的路径跟踪应用程序,路径包含在一个DWG文件中。例如,假设DWG文件包含一个2x2米的正方形。

我想打开DWG文件,找出线条,并获得一些坐标作为我的机器人的航点。

目前,我可以找到一种只从DWG文件中读取坐标的方法,这对我来说是完美的。我看到有一些开源库可以处理DWG文件,比如libredwglibDWG,但是我不能理解它们是否可以用于我的目的。

你能帮帮我吗?

编辑:我发现libopencad可以用于我的应用程序,我测试了示例应用程序,它的输出如下所示:

代码语言:javascript
复制
Layers count: 1
1. Layer 0 contains 8 geometries
|---------Line---------|
Start Position:     62.5852 -36.5942    0
End Position:   -62.5852    -36.5942    0

Entity color: #ffffffff
|---------Line---------|
Start Position:     62.5852 -36.5942    0
End Position:   62.5852 36.5942 0

Entity color: #ffffffff
|---------Line---------|
Start Position:     62.5852 36.5942 0
End Position:   -62.5852    36.5942 0

Entity color: #ffffffff
|---------Line---------|
Start Position:     -62.5852    -36.5942    0
End Position:   -62.5852    36.5942 0

Entity color: #ffffffff
|---------Line---------|
Start Position:     62.5852 -76.4212    0
End Position:   -62.5852    -76.4212    0

Entity color: #ffffffff
|---------Line---------|
Start Position:     62.5852 -76.4212    0
End Position:   62.5852 -61.4214    0

Entity color: #ffffffff
|---------Line---------|
Start Position:     62.5852 -61.4214    0
End Position:   -62.5852    -61.4214    0

Entity color: #ffffffff
|---------Line---------|
Start Position:     -62.5852    -76.4212    0
End Position:   -62.5852    -61.4214    0

Entity color: #ffffffff

对于包含两个正方形的样例DWG文件:

问题是:如何将第一个矩形的坐标与第二个矩形的坐标分开?

EN

回答 1

Stack Overflow用户

发布于 2020-04-09 11:16:58

在从DWG中提取的数据中,实际上没有2个矩形。您有8行,并提供了其他分组。根据这一示例,您可能会假设前4行表示一个矩形,然后4行表示第二个矩形。在这种情况下,这是正确的,但您不能依赖它。这将完全取决于谁创建了DWG,他们使用了什么工具,以及他们是否按顺序绘制矩形,或者是否交替绘制、删除、绘制、移动线条。

导入行后,您可以通过执行一些查找来对它们进行分组。从第一行开始。具有与第一条直线的任一端点匹配的任一端点的任何其他直线都属于同一形状。使用第一条下一条直线的端点重复该过程,查找另一条与其具有共同端点的直线。

这个算法看起来确实像是一个使用递归的地方,一个标准的容器,比如向量或映射,也许两者都有。此外,坐标是浮点型的,所以你必须小心使用比较运算符,并决定多近才能成为同一个点。

最后,您需要定义可接受/不可接受输入文件的要求,并决定如何处理不匹配的数据。一个好的通用算法可以找到三角形、矩形或任何连通线形状。关于确定连接的直线是否形成简单的闭合多边形、直线是否相交等问题,还有另一层复杂性。

如果您可以确保输入文件始终只包含形成矩形的行,则会容易得多。除非你能确定这一点,否则你的程序至少需要检测出它找不到矩形并安全地失败。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60999383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档