【问题标题】:how to quickly create large dxf from geometrical shapes如何从几何形状快速创建大 dxf
【发布时间】:2016-04-10 19:55:53
【问题描述】:

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

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

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

有什么方法可以大大加快这个速度吗?

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

【问题讨论】:

  • 如果我了解您的问题,this 可以提供帮助。
  • 乍一看,DXF file format 看起来很简单,不需要函数库。根据原始列表的格式,您可能只需要使用能够搜索和替换的纯文本编辑器添加标题和每个对象的信息。
  • 你能举一个预期输出的例子吗?
  • 如果您创建一个包含 1000 万个实体的 .dxf 文件,几乎所有试图打开它的 CAD 软件都会崩溃。也许重新考虑这是一个光栅图像显示而不是矢量。

标签: python cad dxf


【解决方案1】:

对于圈子,您可以使用简单的 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")

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2014-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-17
  • 2017-04-26
  • 1970-01-01
相关资源
最近更新 更多