使用ezdxf生成DXF:包含样条曲线拟合点的多段线

使用ezdxf生成DXF:包含样条曲线拟合点的多段线,dxf,ezdxf,Dxf,Ezdxf,我正在开发一个程序,其中一个要求是将DXF作为输入。输入仅限于2D大小写。程序本身是用C++/Qt编写的,但是为了测试它,我需要一些示例DXF输入。样条线导入已经实现,下一步是添加样条线拟合点或控制点的多段线。我决定使用Python/ezdxf生成这样的多段线,因为我没有Autocad 我的第一种方法是利用添加样条线控制框从拟合点创建样条线,然后将其转换为多段线。问题是没有从样条线到多段线的转换(虽然我想我在文档中看到了它,但再也找不到了) 当前的方法是通过添加多段线2D(点),使每个点与DXF

我正在开发一个程序,其中一个要求是将DXF作为输入。输入仅限于2D大小写。程序本身是用C++/Qt编写的,但是为了测试它,我需要一些示例DXF输入。样条线导入已经实现,下一步是添加样条线拟合点或控制点的多段线。我决定使用Python/ezdxf生成这样的多段线,因为我没有Autocad

我的第一种方法是利用
添加样条线控制框
从拟合点创建样条线,然后将其转换为多段线。问题是没有从样条线到多段线的转换(虽然我想我在文档中看到了它,但再也找不到了)

当前的方法是通过添加多段线2D(点),使每个点与DXF标志字段相等,从而生成多段线
8
(通过样条曲线拟合创建的样条曲线顶点)。问题是点的类型必须为
DXFVertex
(文档状态为
顶点,但不存在),并且该类型是ezdxf的专用类型

请分享您对我遇到的ezdxf问题或最初问题的解决方法


另外,我曾尝试使用LibreCAD生成这样的多段线,但很难从样条曲线拟合点生成闭合的多段线。

在DXF R2000中添加样条曲线图元之前,AutoCAD使用了通过多段线图元创建B样条曲线的功能。Autodesk未记录此功能的使用情况,ezdxf也未以任何方式推广此功能

如果可以,但如果必须使用DXF R12,请使用样条线图元-ezdxf中有一个帮助器类可用于创建此类样条线
ezdxf.render.R12Spline
,并提供了一个使用示例

但您会对BricsCAD和AutoCAD显示非常可见的多边形结构感到失望:

因为不仅控制点,而且近似曲线点都必须存储为多段线点,所以要获得更平滑的曲线,必须使用许多近似点,但也可以使用规则多段线作为近似。我假设存储控制点只是为了使样条线保持可编辑状态

我对这个主题的所有了解都记录在这个文件中。如果您找到更好的方法为DXF R12创建平滑的B样条曲线,且近似点更少,请告诉我

将样条线图元
样条线
近似为点的示例,可由多段线图元使用:

bspline = spline.construction_tool()
msp.add_polyline3d(bpline.approximate(segments=20))

样条线图元是三维图元,如果要将样条线挤压到xy平面中,请删除z轴:

xy_pts = [p.xy for p in bpline.approximate(segments=20)]
msp.add_polyline2d(xy_pts)

# or as LWPOLYLINE entity:
msp.add_lwpolyline(xy_pts, format='xy')


感谢您的详细解释,这就解决了问题。我只需要导入样条曲线,并且可以导出其圆弧近似值,因此我可以使用R12进行导出,并使用更新的标准进行导入。如果您为每种样条曲线实体解决了此问题,您可能可以回答我的问题: