0

我有一个由约 1000 万个圆圈组成的 2D 图案,以列表的形式存储

[[x, y, radius], [x, y, radius], ...]

我想把它变成 DXF(一种常见的 CAD 文件格式)。我尝试了 dxfwriteezdxf,它们都可以工作,但速度很慢。(如果我从较小的测试中推断,dxfwrite 大约需要 12 小时,而 ezdxf 大约需要 4 小时。)

有什么办法可以更快地做到这一点?

(该列表以 Python 开头,但我不介意导出到文本文件,然后使用不同的程序。)

4

1 回答 1

4

对于圆圈,您可以使用简单的 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")
于 2016-04-10T10:45:03.943 回答