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

news2024/11/19 5:38:27

代码:

import dxfgrabber,matplotlib
import matplotlib.pyplot as plt
from matplotlib.patches import Polygon

matplotlib.use('TkAgg')

# 使用 dxfgrabber 库加载 DXF 文件
drawing = dxfgrabber.readfile('files/Main board0.DXF')

# 创建 Matplotlib 图形
fig, ax = plt.subplots()

# 遍历图形中的实体
for entity in drawing.entities:
    if entity.dxftype == 'LWPOLYLINE':
        vertex_list = entity.points  # 获取多段线的顶点坐标
        if entity.is_closed:  # 判断多段线是否闭合
            vertex_list.append(vertex_list[0])  # 闭合多段线
        # 创建多边形并添加到绘图区域
        polygon = Polygon(vertex_list, closed=True, edgecolor='black', facecolor='none')
        ax.add_patch(polygon)
    elif entity.dxftype == 'LINE':
        x1, y1, _ = entity.start
        x2, y2, _ = entity.end
        ax.plot([x1, x2], [y1, y2], 'b-')
    elif entity.dxftype == 'TEXT':
        x, y, _ = entity.insert  # 获取插入点坐标
        text = entity.text
        ax.text(x, y, text, fontsize=8, verticalalignment='center', horizontalalignment='center')
    elif entity.dxftype == 'SOLID':
        vertex_list = [(vertex[0], vertex[1]) for vertex in entity.points]  # 获取多边形顶点坐标
        # polygon = Polygon(vertex_list, closed=True, edgecolor='gray', facecolor='none')
        polygon = plt.Polygon(xy=vertex_list, color='gray', alpha=0.8)
        ax.add_patch(polygon)

# 获取图形的范围信息
extmin = drawing.header.get('$LIMMIN')
extmax = drawing.header.get('$LIMMAX')
print(extmax,extmin)

# 设置绘图区域范围
ax.set_xlim(extmin[0], extmax[0])
ax.set_ylim(extmin[1], extmax[1])

# 显示图形
plt.gca().set_aspect('equal', adjustable='box')  # 设置等比例显示
plt.xlabel('X')
plt.ylabel('Y')
plt.grid(True)
plt.title('DXF Drawing with Matplotlib')
plt.show()

效果:

另一种办法:

【Python ezdxf+matplotlib】显示AutoCAD导出的.dxf格式文件_Zhichao_97的博客-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【无线点对点网络时延分析和可视化】模拟无线点对点网络中的延迟以及物理层和数据链路层之间的相互作用(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Stimulsoft Reports 2023Crack

Stimulsoft Reports 2023Crack Stimulsoft Reports.BLAZOR是一个跨平台的报告工具,用于集成应用程序,使用BLAZOR框架工作。我们的组件支持Blazor的所有主要功能。通过使用WebAssembly技术,它们既可以在.NET服务器端工作,也可以在…

Linux学习之firewallD

systemctl status firewalld.service查看一下firewalld服务的状态,发现状态是inactive (dead)。 systemctl start firewalld.service启动firewalld,systemctl status firewalld.service查看一下firewalld服务的状态,发现状态是active (runni…

贪心(一)

一、区间问题 1.1区间选点 #include<iostream> #include<algorithm>using namespace std;const int N 100010;int n; struct Range {int l,r;bool operator < (const Range &w)const{return r < w.r;} }range[N];int main() {scanf("%d",&a…

JVM元空间溢出的排除思路

背景&#xff1a; java的应用我们为了防止元空间的无限扩展&#xff0c;一般都会设置MaxMetaSpace参数&#xff0c;一般来说只要这个值是512M或者1G左右就足够了&#xff0c;不过今天遇到一个meta空间溢出问题&#xff0c;简单记录下排除的思路 meta元空间溢出 最开始的现象…

【Vue3.0 ——指令学习】

v-text 期望值是string v-html 期望值&#xff1a;string 注意&#xff1a;在你的站点上动态渲染任意的HTML是非常危险的&#xff0c;因为他很容易导致XSS攻击。请只对可信内容使用HTML差值&#xff0c;绝不要将用户提供的内容作为插值 scoped将不会作用于v-html&#xff0…

【悬挂绝缘子的串效模型】测量每个绝缘子盘之间的电压并测量串效研究(Simulink)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

解析错误:‘import‘和‘export‘可能只出现在顶层

1、import引入文件时&#xff0c;提示Parsing error: ‘import’ and ‘export’ may only appear at the top leveleslint 中文含义&#xff1a;解析错误:import和export可能只出现在顶层&#xff0c;如下提示&#xff1a; 2、下载包npm i babel/eslint-parser -D 在此配置中…

算法学习总结

算法总结 文章目录 算法总结搜索遍历dfs树的深度树的重心图的连通块划分 bfs双端队列bfsbfs图问题 迭代加深双向搜索A*IDA*Morris遍历Manacher 数论质数判断质数分解质因数埃氏筛法线性筛法 约数求N的正约数集合——试除法求1~N每个数的正约数集合——倍除法 欧拉函数快速幂快速…

2008-2020年全国各省绿色金融发展指数(含原始数据)

2008-2020年全国各省绿色金融发展指数&#xff08;含原始数据&#xff09; 1、时间&#xff1a;2008-2020年 2、范围&#xff1a;30个省市 不含西藏 3、来源&#xff1a;原始数据整理自csmar、eps、wind等数据库 4、原始数据指标&#xff1a; A股上市环保企业新增银行贷款…

kaggle注册不显示验证码

edge浏览器 1.点击浏览器右上角三个点 2.点击扩展 3.点击管理扩展 4.点击获取Microsoft Edge扩展&#xff0c;在左上角输入Head Editor 5.输入https://www.azurezeng.com/static/HE-GoogleRedirect.json 6.下载后&#xff0c;点保存 成功&#xff01;

spring框架,以及和spring框架相关的Java面试题和spring ioc的注入方式

目录 一.spring来源&#xff0c;以及介绍 1.spring诞生的背景 2.spring框架 介绍 3.spring框架在使用中的优点以及不足 3.1优点 3.2不足 3.3总结 4.为什么要使用spring 二.将spring框架部署在IDEA中 1.替换pom.xml 2.构建spring所需要的xml文件 三.spring的三种注入…

从针尖对麦芒,到丝滑入扣,记录那些BT需求

前言&#xff1a; 最近被一个“简单”的需求&#xff0c;搞的有点难受。需求其实很简单&#xff0c;就是记录某成品生产过程数据&#xff0c;然后进行展示&#xff0c;但因需求部门是管理部门。为了能获取足够多的参数来提高生产效率和研发进度。因此需要生产来统计收集对应生产…

文件IO编程 1 2

头文件包含路径 linux 操作系统分为两大空间&#xff1a;用户空间和内核空间 这样划分&#xff0c;是为了保护内核的核心组件&#xff0c;不被轻易访问和修改 系统调用&#xff1a;安全的访问内核空间 其核心是&#xff1a;函数API&#xff08;API&#xff1a;用户编程接口&…

Ogami Organic Store有机商店WordPress主题

Ogami Organic Store有机商店WordPress主题是一个整洁且响应迅速的 WooCommerce WordPress 主题&#xff0c;适用于任何类型的食品、蔬菜店、化妆品或类似网站&#xff0c;这些网站需要功能丰富且美观的在线展示以及优雅灵活的设计。 网址: Ogami Organic Store有机商店WordPr…

信息与通信工程面试准备——信号与系统|10:23

8月16日 23:21 目录 ​编辑 1. 调制的作用 2. 放大器与振荡器的作用和区别 工作原理 输出信号 应用 反馈方式 设计复杂度 装置性质 3. 信号与系统&#xff1a;三大变换之间的关系&#xff1f; 4. 无码间串扰的条件 5. 冲激函数的作用&#xff1f; 研究的意义&…

Java免费自学网站推荐来啦!

Java自学的难度因人而异&#xff0c;取决于个人的学习能力、学习方法和学习态度等因素。对于一些有编程经验或者具备良好的逻辑思维能力的人来说&#xff0c;自学Java可能会相对容易些。而对于零基础的初学者来说&#xff0c;可能需要更多的时间和精力来理解和掌握Java的概念和…

进制转换:二进制、八进制、十六进制、十进制之间的转换

对于基础薄弱的读者&#xff0c;本节的内容可能略显晦涩和枯燥&#xff0c;如果你觉得吃力&#xff0c;可以暂时跳过&#xff0c;基本不会影响后续章节的学习&#xff0c;等用到的时候再来阅读。 上节我们对二进制、八进制和十六进制进行了说明&#xff0c;本节重点讲解不同进制…

无痛VSCode+clangd+lldb+cmake配置C/C++开发环境

前言 在C/C开发中&#xff0c;如果使用vscode作为开发平台的话&#xff0c;相信大家都会安装C/C扩展&#xff0c;在remote到远程一个机器上开发时&#xff0c;C/C扩展提供的自动补全等功能总是慢一拍&#xff0c;这让我感觉很不舒服&#xff0c;时间就了就人忍不下去了&#x…

考公-判断推理-逻辑判断-加强类

论点 论据 削弱 论点 转折之后 例题 例题 例题 例题 搭桥方向&#xff0c;论据推出论点 例题 例题 例题 例题 例题 例题 例题 例题 例题 例题 例题 例题 例题 例题 例题 例题 例题 例题 例题