2

我的目标是从dxf文件中获取所有圈子,其中包含 3 个信息,例如:circumference, X center, Y center. 到目前为止,我能够得到圆周。我怎样才能得到Y & X?这是我当前的代码:

import sys
import ezdxf

doc = ezdxf.readfile("File.dxf")
msp = doc.modelspace()

for e in msp:    
    if e.dxftype() == 'CIRCLE':
            dc = 2 * math.pi * e.dxf.radius
            print('circumference: ' + str(dc))
4

2 回答 2

3

圆心是e.dxf.center对象Vec3坐标系 (OCS) 中的对象。如果拉伸矢量为 (0, 0, 1),则 OCS 就是 WCS,大多数情况下都是 2D 实体的情况。

有时镜像的 2D 实体有一个反向拉伸向量 (0, 0, -1),在这种情况下,需要将 OCS 坐标转换为 WCS 坐标:

for e in msp.query("CIRCLE"):
    ocs = e.ocs()
    wcs_center = ocs.to_wcs(e.dxf.center)
    x = wcs_center.x
    y = wcs_center.y
于 2021-11-28T17:14:59.117 回答
1

查看文档,似乎 Circle 有一个“中心”属性,所以

e.center

应该给你坐标

https://ezdxf.readthedocs.io/en/stable/dxfentities/circle.html

于 2021-11-28T16:40:27.033 回答