如何从几何形状快速创建大型 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")