【问题标题】:How to read text location from ezdxf如何从 ezdxf 读取文本位置
【发布时间】:2022-03-17 09:22:56
【问题描述】:

我创建了一个程序,它可以搜索多个子目录,读取特定的 .txt 文件并找到相关信息,然后将其存储在列表中。然后它需要打开一个dxf,读取文本,如果满足某个条件,从列表中替换文本,然后将文本写入相同的位置。问题是我找不到通过阅读 ezdxf 文档找到文本位置的方法。在示例中,他们使用了一条线

    print("LINE on layer: %s\n" % e.dxf.layer)
    print("start point: %s\n" % e.dxf.start)
    print("end point: %s\n" % e.dxf.end)

所以我只是修改了我的阅读

def print_entity(e):
    print(e.dxf.text)
    print(e.dxftype())
    print(e.pos)
    print(e.start)
    print(e.location)
    
for e in msp.query('TEXT[layer=="TEXT"]'):
    print_entity(e)

但是,这些都没有给我文本的位置。有什么想法吗?

【问题讨论】:

  • 是不是有什么原因不能用ezdxf打开dxf文件,修改ezdxf生成的对象,再把修改后的对象另存为dxf文件?如果您这样做,那么您似乎不需要知道文件中文本的位置,尽管我完全有可能在这里遗漏了一些东西。
  • 这正是我想要做的......我刚刚做了一个测试,它有效。哇,我试图使这个复杂化。谢谢@JackTaylor

标签: python ezdxf


【解决方案1】:

尝试print(e.insert)获取坐标

【讨论】:

    【解决方案2】:

    在 EzDxf 文档中找到

    get_placement() → 元组[TextEntityAlignment, Vec3, Optional[Vec3]]

    返回一个元组(align, p1, p2),align为对齐枚举TextEntityAlignment,p1为对齐点,p2仅当align为ALIGNED或FIT时相关,否则为None。

    https://ezdxf.readthedocs.io/en/stable/dxfentities/text.html#ezdxf.entities.Text.get_placement

    【讨论】:

      猜你喜欢
      • 2020-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多