【Python ezdxf+matplotlib】显示AutoCAD导出的.dxf格式文件

代码: 

import ezdxf,matplotlib
import matplotlib.pyplot as plt
from matplotlib.patches import Polygon
matplotlib.use('TkAgg')  # 避免Matplotlib版本与其他相关库的兼容性问题def display_dxf(file_path):doc = ezdxf.readfile(file_path)msp = doc.modelspace()  # 获取DXF文档的模型空间# for entity in msp:  # 迭代模型空间中的实体#     print(entity)       # 打印实体信息fig, ax = plt.subplots()for entity in msp:# if entity.dxftype() == 'LINE':#     start_point = entity.dxf.start#     end_point = entity.dxf.end#     ax.plot([start_point[0], end_point[0]], [start_point[1], end_point[1]], 'b-')if entity.dxftype() == 'LWPOLYLINE':points = list(entity.get_points('xy'))  # [(59.44499922, 76.43999952, 0.0, 0.0, 0.0), (59.44499922, 78.5400004, 0.0, 0.0, 0.0)]x, y = zip(*points)ax.plot(x, y, 'r-')elif entity.dxftype() == 'CIRCLE':center = entity.dxf.centerradius = entity.dxf.radiuscircle = plt.Circle(center, radius, color='g', fill=False)ax.add_patch(circle)elif entity.dxftype() == 'TEXT':insertion_point = entity.dxf.inserttext = entity.dxf.textax.text(insertion_point[0], insertion_point[1], text, fontsize=8)# if entity.dxftype() == 'INSERT':#     block = doc.blocks[entity.dxf.name]#     for e in block:#         if e.dxftype() == 'LWPOLYLINE':#             points = list(e.get_points('xy'))#             x, y = zip(*points)#             ax.plot(x, y, 'r-')#         elif e.dxftype() == 'LINE':#             start_point = e.dxf.start#             end_point = e.dxf.end#             ax.plot([start_point[0], end_point[0]], [start_point[1], end_point[1]], 'b-')#         elif e.dxftype() == 'CIRCLE':#             center = e.dxf.center#             radius = e.dxf.radius#             circle = plt.Circle(center, radius, color='g', fill=False)#             ax.add_patch(circle)#         # elif e.dxftype() == 'SOLID':#         #     points = [(e.dxf.points[i], e.dxf.points[i + 1]) for i in range(0, 8, 2)]#         #     x, y = zip(*points)#         #     ax.add_patch(Polygon(points, closed=True, edgecolor='m', facecolor='none'))ax.set_aspect('equal', adjustable='box')plt.xlabel('X')plt.ylabel('Y')plt.title('DXF Display')plt.grid(True)plt.show()if __name__ == "__main__":file_path = "files/Main board0.dxf"display_dxf(file_path)

效果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/56211.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot3基础用法

技术和工具「!喜新厌旧」 一、背景 最近在一个轻量级的服务中,尝试了最新的技术和工具选型; 即SpringBoot3,JDK17,IDEA2023,Navicat16,虽然新的技术和工具都更加强大和高效,但是适应采坑的过程…

如何进行高效的知识管理?5款好用的桌面思维导图软件推荐!

一 、思维导图:高效知识管理法 近年来,随着网络资源的丰富,共享的、私域的、免费的、付费的,大量的知识信息呈一种铺天盖地之势,知识管理变得越来越重要。无论是学生、教师、企业家还是其他专业人士,都…

2023-08-07 LeetCode每日一题(反转字符串)

2023-08-07每日一题 一、题目编号 344. 反转字符串二、题目链接 点击跳转到题目位置 三、题目描述 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、…

MFC第二十七天 通过动态链表实现游戏角色动态增加、WM_ERASEBKGND背景刷新的原理、RegisterClass注册窗口与框架程序开发

文章目录 通过动态链表实现游戏角色动态增加CMemoryDC.hCFlashDlg.hCFlashDlg.cpp WM_ERASEBKGND背景刷新的原理RegisterClass注册窗口与框架程序开发CFrameRegister 通过动态链表实现游戏角色动态增加 CMemoryDC.h #pragma once#include "resource.h"/*内存DC类简介…

【论文阅读】UNICORN:基于运行时来源的高级持续威胁检测器(NDSS-2020)

UNICORN: Runtime Provenance-Based Detector for Advanced Persistent Threats NDSS-2020 哈佛大学 Han X, Pasquier T, Bates A, et al. Unicorn: Runtime provenance-based detector for advanced persistent threats[J]. arXiv preprint arXiv:2001.01525, 2020. 源码&…

Docker网络模式详解

目录 Docker网络模式 一、Host模式 二、container模式 三、none模式 四、bridge模式 五、Overlay模式 Docker网络模式 安装Docker时会自动创建3个网络,可以使用docker network ls命令列出这些网络。 [rootdocker ~]# docker network ls 我们在使用docker run…

git开发过程中的使用

1、先创建本地分支,然后修改代码 2、本地提交 push 3、合并为主分支 回到master分支

共治、公开、透明!龙蜥社区 7 月技术委员会会议顺利召开!

2023 年 7 月 14 日上午 10 点召开了龙蜥社区7月技术委员会线上会议,共计 39 人参会,本次会议由浪潮信息苏志远博士主持,开放原子 TOC 导师陈阳、霍海涛、徐亮、余杰共同参会,技术委员们来自 Arm、阿里云、飞腾、海光、红旗软件、…

实时服务器监控

为 IT 基础架构建立适当的监控系统的重要性不容低估,管理员使用的监控解决方案可确保通过消除瓶颈和优化资源使用以获得最佳性能来充分发挥基础架构的潜力。 多年来,IT 基础架构变得越来越复杂,对网络监控的需求也随之增加,虽然网…

【Linux】网络编程套接字

目录 1 预备知识 1.1 IP地址 1.2 端口号 1.3 TCP协议和UDP协议 1.4 网络字节序 2 socket 编程接口 2.0 socket 常见 API 2.1 socket 系统调用 2.2 bind 系统调用 2.3 recvfrom 系统调用 2.4 sendto 系统调用 2.5 listen 系统调用 2.6 accept 系统调用 2.7 con…

spring.config.location 手动指定配置文件文件

–spring.config.locationD:\javaproject\bangsun\ds-admin\ds-oper-mgr\src\main\resources\application.yml

软件架构师高级——3、数据库系统

• 数据库概述(★★★) 集中式数据库系统 •数据管理是集中的 •数据库系统的素有功能 (从形式的用户接口到DBMS核心) 者口集中在DBMS所在的计算机。 B/S结构 •客户端负责数据表示服务 •服务器主要负责数据库服务 •数据 和后端…