如何从几何形状快速创建大型 dxf
how to quickly create large dxf from geometrical shapes
我有一个由约 1000 万个圆组成的二维图案,以列表的形式存储
[[x, y, radius], [x, y, radius], ...]
我想将其转换为 DXF(一种常见的 CAD 文件格式)。我尝试了 dxfwrite and ezdxf 并且它们都工作但非常缓慢。 (如果我从较小的测试中推断,dxfwrite 将花费约 12 小时,而 ezdxf 将花费约 4 小时。)
有什么方法可以大大加快速度吗?
(列表位于 Python 开头,但我不介意导出到文本文件然后使用不同的程序。)
对于圆,您可以使用简单的 DXF R12 格式,只有一个 ENTITIES 部分:
0
SECTION
2
ENTITIES
0
CIRCLE
8
0
10
{x-coord}
20
{y-coord}
40
{radius}
0
ENDSEC
0
EOF
以下 Python 脚本在不到一分钟的时间内在 CAD 工作站上创建了一个包含 10.000.000 个圆的 DXF 文件。 AutoCAD 只需不到 3 分钟即可打开它,但 AutoCAD 不再有响应。
from random import random
MAX_X_COORD = 1000.0
MAX_Y_COORD = 1000.0
MAX_R = 1.0
CIRCLE_COUNT = 10000000
def dxf_circle(x, y, r):
return "0\nCIRCLE\n8\n0\n10\n{x:.3f}\n20\n{y:.3f}\n40\n{r:.2f}\n".format(x=x, y=y, r=r)
with open("circles.dxf", 'wt') as f:
f.write("0\nSECTION\n2\nENTITIES\n")
for i in range(CIRCLE_COUNT):
f.write(dxf_circle(MAX_X_COORD*random(), MAX_Y_COORD*random(), MAX_R*random()))
f.write("0\nENDSEC\n0\nEOF\n")
我有一个由约 1000 万个圆组成的二维图案,以列表的形式存储
[[x, y, radius], [x, y, radius], ...]
我想将其转换为 DXF(一种常见的 CAD 文件格式)。我尝试了 dxfwrite and ezdxf 并且它们都工作但非常缓慢。 (如果我从较小的测试中推断,dxfwrite 将花费约 12 小时,而 ezdxf 将花费约 4 小时。)
有什么方法可以大大加快速度吗?
(列表位于 Python 开头,但我不介意导出到文本文件然后使用不同的程序。)
对于圆,您可以使用简单的 DXF R12 格式,只有一个 ENTITIES 部分:
0
SECTION
2
ENTITIES
0
CIRCLE
8
0
10
{x-coord}
20
{y-coord}
40
{radius}
0
ENDSEC
0
EOF
以下 Python 脚本在不到一分钟的时间内在 CAD 工作站上创建了一个包含 10.000.000 个圆的 DXF 文件。 AutoCAD 只需不到 3 分钟即可打开它,但 AutoCAD 不再有响应。
from random import random
MAX_X_COORD = 1000.0
MAX_Y_COORD = 1000.0
MAX_R = 1.0
CIRCLE_COUNT = 10000000
def dxf_circle(x, y, r):
return "0\nCIRCLE\n8\n0\n10\n{x:.3f}\n20\n{y:.3f}\n40\n{r:.2f}\n".format(x=x, y=y, r=r)
with open("circles.dxf", 'wt') as f:
f.write("0\nSECTION\n2\nENTITIES\n")
for i in range(CIRCLE_COUNT):
f.write(dxf_circle(MAX_X_COORD*random(), MAX_Y_COORD*random(), MAX_R*random()))
f.write("0\nENDSEC\n0\nEOF\n")