基于ezdxf,参数化DXF图像信息,在终端修改图像参数及标注

一、绘制图像并标注

将长度标注为:L = 670

将半径标注为:R = 24

二、读取图中信息

1. 导入文件

import ezdxf

# Load the DXF file
doc = ezdxf.readfile("Label.dxf")

entity_types = set(entity.dxftype() for entity in doc.modelspace())
print("DXF 文件中的实体类型:", entity_types)

"""
DXF 文件中的实体类型: {'LINE', 'DIMENSION', 'CIRCLE'}
"""

2. 读取信息

先读标注

# 获取模型空间中的所有 DIMENSION 实体
dimensions = doc.modelspace().query("DIMENSION")

# 遍历所有 DIMENSION 实体并打印参数
for dim in dimensions:
    # 打印 DIMENSION 实体的类型
    print("dimstyle:", dim.dxf.dimstyle)
    print("dimtype:", dim.dxf.dimtype)
    print("defpoint:", dim.dxf.defpoint)
    print("defpoint2:", dim.dxf.defpoint2)
    print("defpoint3:", dim.dxf.defpoint3)
    print("defpoint4:", dim.dxf.defpoint4)
    print("defpoint5:", dim.dxf.defpoint5)
    print("angle:", dim.dxf.angle)
    print("leader_length:", dim.dxf.leader_length)
    print("text_midpoint:", dim.dxf.text_midpoint)
    print("actual_measurement,实际测量值:", dim.dxf.actual_measurement)
    print("get_measurement,测量值:", dim.get_measurement())
    print("text:", dim.dxf.text)
    print("Handle:", dim.dxf.owner)
    
    print()

"""
dimstyle: ISO-25
dimtype: 32
defpoint: (669.9052567329467, 74.48915876587853, 0.0)
defpoint2: (-0.094743267053218, 47.86374808520349, 0.0)
defpoint3: (669.9052567329467, 47.86374808520349, 0.0)
defpoint4: (0.0, 0.0, 0.0)
defpoint5: (0.0, 0.0, 0.0)
angle: 0
leader_length: None
text_midpoint: (334.9052567329468, 85.11415876587851, 0.0)
actual_measurement,实际测量值: 670.0
get_measurement,测量值: 669.9999999999999
text: {\H8x;L}
Handle: 1F

dimstyle: ISO-25
dimtype: 164
defpoint: (-0.0947432670532216, 23.86374808520342, 0.0)
defpoint2: (0.0, 0.0, 0.0)
defpoint3: (0.0, 0.0, 0.0)
defpoint4: (-17.68950307374088, 40.18626098441625, 0.0)
defpoint5: (0.0, 0.0, 0.0)
angle: 0
leader_length: 0.0
text_midpoint: (-38.54651609668507, 59.53513916442173, 0.0)
actual_measurement,实际测量值: 24.00000000000003
get_measurement,测量值: 24.000000000000018
text: {\H8x;R}
Handle: 1F
"""

读出来的参数:text,是之后绑定实体所必需的。

再读实体

# 遍历 DXF 文件中的所有实体
for entity in doc.modelspace():
    # 输出实体类型
    print("实体类型:", entity.dxftype())
    
    print("Handle:", entity.dxf.handle)
    # 根据实体类型输出参数
    if entity.dxftype() == "LINE":
        print("起点坐标:", entity.dxf.start)
        print("终点坐标:", entity.dxf.end)
    elif entity.dxftype() == "CIRCLE":
        print("圆心坐标:", entity.dxf.center)
        print("半径:", entity.dxf.radius)
    elif entity.dxftype() == "ARC":
        print("圆心坐标:", entity.dxf.center)
        print("半径:", entity.dxf.radius)
        print("起始角度:", entity.dxf.start_angle)
        print("终止角度:", entity.dxf.end_angle)
    elif entity.dxftype() == "LWPOLYLINE":
        vertices = entity.get_points("xy")
        print("顶点坐标列表:", vertices)
    elif entity.dxftype() == "POLYLINE":
        vertices = entity.get_points("xy")
        print("顶点坐标列表:", vertices)
        print("是否封闭:", entity.closed)
    elif entity.dxftype() == "TEXT":
        print("文本内容:", entity.dxf.text)
        print("插入点坐标:", entity.dxf.insert)
        print("高度:", entity.dxf.height)
        print("旋转角度:", entity.dxf.rotation)
        print("对齐
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值