MMCLMC公差计算.exe

一、概要

  软件及完整代码请戳这里:MMC&LMC公差计算软件及代码
图1

图1 软件操作界面

  本软件功能主要是根据实际应用选择MMR或者LMR原则,输入基本尺寸、形位公差尺寸和实际测量尺寸,即可计算出对应的公差值。以孔的MMR为例见如图2、3,当测量出的直径为φ8.16时,则对应的垂直度公差为0.02。
在这里插入图片描述

图2 MMR孔的标注

在这里插入图片描述

图3 MMR孔尺寸对应公差值

  开发本软件的原因主要有以下几点:

  1. 提高设计效率:通过这款软件,工程师可以快速计算实测尺寸对应公差,减少繁琐的手动计算,提高设计效率。
  2. 增强设计准确性:该软件基于严谨的数学模型和算法进行计算,避免了手动计算可能出现的错误,提高了设计的准确性。
  3. 方便易用:该软件具备友好的用户界面,使得用户可以便捷地进行操作,输入参数即可得到结果,省去了繁琐的手动计算过程。

二、技术细节

1、class national_standard_Dialog(QDialog)

# GBT16671-2018对话框
class national_standard_Dialog(QDialog):def __init__(self, parent=None):super(national_standard_Dialog, self).__init__(parent)self.setWindowTitle('GB/T 16671-2018 产品几何技术规范(GPS) 几何公差 最大实体要求(MMR)、最小实体要求(LMR)和可逆要求(RPR)')self.icon = QtGui.QIcon()self.icon.addPixmap(QtGui.QPixmap(r".\icon\GB.ico"),QtGui.QIcon.Normal, QtGui.QIcon.Off)self.setWindowIcon(self.icon)self.setGeometry(0, 0, 1000, 800)  # 设置窗口初始位置和大小self.setFixedSize(1000, 800)  # 设置窗口固定大小self.layout = QVBoxLayout()self.scroll_area = QScrollArea()self.graphics_view = QGraphicsView(self.scroll_area)self.graphics_view.setViewportUpdateMode(QGraphicsView.FullViewportUpdate)  # 这是关键的改变,使 QGraphicsView 根据 QPixmap 的大小进行自适应调整self.scroll_area.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded)self.scroll_area.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)self.scroll_area.setWidgetResizable(True)self.scroll_area.setWidget(self.graphics_view)self.layout.addWidget(self.scroll_area)self.setLayout(self.layout)self.scene = QGraphicsScene()self.graphics_view.setScene(self.scene)pixmap = QPixmap(QPixmap(r".\statics\GBT16671-2018.png").scaled(750, 41362, Qt.KeepAspectRatio))  # 创建新的 QPixmap,宽度为 950item = self.scene.addPixmap(pixmap)item.setFlag(QGraphicsItem.ItemIsMovable)  # 可以被用户拖动,但我们后面会禁止这个功能self.graphics_view.setInteractive(False)  # 禁止所有的用户交互,包括拖动# 初始设置滚动条可滚动并显示self.scroll_area.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded)self.scroll_area.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)# 将窗口移动到屏幕中心screen = QApplication.primaryScreen()screen_rect = screen.geometry()width = screen_rect.width()height = screen_rect.height()pos_x = int((width / 2) - (self.width() / 2))pos_y = int((height / 2) - (self.height() / 2))self.move(pos_x, pos_y)

  这段代码是使用Python的PyQt5库来创建一个名为national_standard_Dialog的自定义对话框。以下是代码的完整架构流程和具体的技术细节:

  1. 初始化(init:在national_standard_Dialog类的__init__方法中,首先通过调用父类的__init__方法来初始化对话框的基本属性。然后,设置对话框的标题和图标。图标使用QIcon类加载本地的.ico文件,并将其设置为对话框的窗口图标。之后,设置了对话框的初始位置和大小,以及固定大小。
  2. 布局设置:使用QVBoxLayout作为对话框的布局,这表示所有添加到对话框中的控件都会按照垂直方向(从上到下)进行排列。然后,创建了一个QScrollArea,并设置其水平和垂直滚动条政策为根据需要进行滚动。
  3. Graphics View:创建了一个QGraphicsView,并将其设置为QScrollArea的widget。QGraphicsView是用于显示QGraphicsScene(这里是self.scene)的视图。在此处,设置了视图的更新模式为FullViewportUpdate,这意味着当QGraphicsScene的内容发生变化时,QGraphicsView会立即更新其显示。
  4. 创建并设置Graphics Scene:创建了一个QGraphicsScene,并将其设置为QGraphicsView的场景。然后,加载并缩放了一张图片(从.png文件),并将其添加到场景中。图片可以通过拖动和交互进行移动,但通过设置QGraphicsView的交互模式为False,禁止了所有的用户交互,包括拖动。
  5. 滚动条设置:再次设置了滚动条的政策为根据需要进行滚动。这是因为之前在设置QScrollArea时已经设置过了,这里是为了重新设置一下。
  6. 移动窗口至屏幕中央:获取屏幕的大小和位置,并将对话框移动到屏幕的中央。这是通过计算对话框的中心点位置并与屏幕的中心点位置相匹配来实现的。

  总的来说,这个对话框的主要功能是显示一个带有可拖动图片的视图,图片和视图都可以根据需要进行滚动。同时,窗口会默认移动到屏幕中央。

2、class version_Dialog(QDialog)

# 关于软件对话框
class version_Dialog(QDialog):def __init__(self, parent=None):super().__init__(parent)self.setObjectName("Dialog")self.icon = QtGui.QIcon()self.icon.addPixmap(QtGui.QPixmap(r".\icon\版本.ico"),QtGui.QIcon.Normal, QtGui.QIcon.Off)self.setWindowIcon(self.icon)self.resize(420, 270)sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)sizePolicy.setHorizontalStretch(0)sizePolicy.setVerticalStretch(0)sizePolicy.setHeightForWidth(self.sizePolicy().hasHeightForWidth())self.setSizePolicy(sizePolicy)self.setMinimumSize(QtCore.QSize(420, 270))self.setMaximumSize(QtCore.QSize(420, 270))self.gridLayout = QtWidgets.QGridLayout(self)self.gridLayout.setObjectName("gridLayout")self.version_textEdit = QtWidgets.QTextEdit(self)sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)sizePolicy.setHorizontalStretch(0)sizePolicy.setVerticalStretch(0)sizePolicy.setHeightForWidth(self.version_textEdit.sizePolicy().hasHeightForWidth())self.version_textEdit.setSizePolicy(sizePolicy)self.version_textEdit.setMinimumSize(QtCore.QSize(400, 250))self.version_textEdit.setMaximumSize(QtCore.QSize(400, 250))font = QtGui.QFont()font.setFamily("Times New Roman")font.setPointSize(12)self.version_textEdit.setFont(font)self.version_textEdit.setStyleSheet("font: 12pt \"Times New Roman\";")self.version_textEdit.setObjectName("version_textEdit")self.version_textEdit.setReadOnly(True)  # 禁止编辑version_textEditself.gridLayout.addWidget(self.version_textEdit)_translate = QtCore.QCoreApplication.translateself.setWindowTitle(_translate("Dialog", "版本"))self.version_textEdit.setHtml(_translate("Dialog","<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n""<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n""p, li { white-space: pre-wrap; }\n""</style></head><body style=\" font-family:\'Times New Roman\'; font-size:12pt; font-weight:400; font-style:normal;\">\n""<p align=\"justify\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'SimSun\';\">Version:V1.0.20231028</span></p>\n""<p align=\"justify\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'SimSun\';\">Author:Leuanghing Chen</span></p>\n""<p align=\"justify\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'SimSun\';\">Blog:https://blog.csdn.net/weixin_46153372?spm=1010.2135.3001.5421</span></p></body></html>"))

  这段代码是使用Python的PyQt5库来创建一个名为version_Dialog的自定义对话框。以下是代码的完整架构流程和具体的技术细节:

  1. 初始化(init:在version_Dialog类的__init__方法中,首先通过调用父类的__init__方法来初始化对话框的基本属性。然后,设置对话框的标题和图标。图标使用QIcon类加载本地的.ico文件,并将其设置为对话框的窗口图标。之后,设置了对话框的初始位置和大小,以及固定大小。
  2. 设置对话框大小和布局:使用QGridLayout作为对话框的布局,这表示所有添加到对话框中的控件都会按照网格形式进行排列。然后,创建了一个QTextEdit,并将其设置为只读,禁止编辑。
  3. 设置文本编辑框样式:为QTextEdit设置字体、大小和样式表,使其内容以"Times New Roman"字体显示,字体大小为12pt。
  4. 添加控件到布局:将QTextEdit添加到布局中。
  5. 设置对话框标题:使用QCoreApplication.translate方法设置对话框的标题。
  6. 设置对话框大小和位置:设置了对话框的最小、最大和固定大小。然后,获取屏幕的大小和位置,并将对话框移动到屏幕的中央。
  7. 设置文本编辑框内容:在文本编辑框中设置HTML内容。注意,这里没有提供HTML内容的具体实现,所以在文本编辑框中设置HTML内容的方法为空。

  总的来说,这个对话框的主要功能是显示一个带有文本编辑框的视图,文本编辑框的内容为版本信息,且不可编辑。同时,窗口会默认移动到屏幕中央。

三、完整代码

  软件及完整代码请戳这里:MMC&LMC公差计算软件及代码

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

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

相关文章

Java - JDBC

Java - JDBC 文章目录 Java - JDBC引言JDBC1 什么是JDBC2 MySQL数据库驱动3 JDBC开发步骤4 具体介绍 引言 思考: 当下我们如何操作数据库&#xff1f; 使用客户端工具访问数据库&#xff0c;手工建立连接&#xff0c;输入用户名和密码登录。编写SQL语句&#xff0c;点击执行…

【论文阅读|半监督小苹果检测方法S3AD】

论文题目 &#xff1a; : Semi-supervised Small Apple Detection in Orchard Environments 项目链接&#xff1a;https://www.inf.uni-hamburg.de/en/inst/ab/cv/people/wilms/mad.html 摘要&#xff08;Abstract&#xff09; 农作物检测是自动估产或水果采摘等精准农业应用不…

GitCode|部分项目开源代码

1.EasyKeyboard 基于MFC的简单软键盘&#xff0c;使用vs2017开发 PangCoder / EasyKeyboard GitCode基于Windows平台的软键盘&#xff0c;使用VS2017开发&#xff0c;使用MFC框架https://gitcode.net/qq_36251561/easykeyboard 2.EncoderSimulator 基于WPF应用的编码器模拟工…

Vue2 通过.sync修饰符实现数据双向绑定

App.vue <template><div class"app"><buttonv-on:clickisShowtrue>退出按钮</button><BaseDialog:visible.syncisShow></BaseDialog></div> </template><script> import BaseDialog from "./components…

开源:基于Vue3.3 + TS + Vant4 + Vite5 + Pinia + ViewPort适配..搭建的H5移动端开发模板

vue3.3-Mobile-template 基于Vue3.3 TS Vant4 Vite5 Pinia ViewPort适配 Sass Axios封装 vconsole调试工具&#xff0c;搭建的H5移动端开发模板&#xff0c;开箱即用的。 环境要求&#xff1a; Node:16.20.1 pnpm:8.14.0 必须装上安装pnpm&#xff0c;没装的看这篇…

Blender 与 3ds Max | 面对面的直接较量(2024)

Blender和3ds Max&#xff0c;哪个动画软件更好&#xff1f;作为一个从事动画领域十年的专业人士&#xff0c;Mark McPherson提供了八条最新建议&#xff0c;帮助你了解哪个软件更适合满足你的3D动画需求。 1.建模 获胜者&#xff1a;3ds Max。3ds Max的建模机制已经被证明是…

FairGuard游戏加固入选《CCSIP 2023中国网络安全行业全景册(第六版)》

2024年1月24日&#xff0c; FreeBuf咨询正式发布《CCSIP 2023中国网络安全行业全景册(第六版)》。本次发布的全景图&#xff0c;共计展示20个一级分类、108个细分安全领域&#xff0c;旨在为广大企业提供网络安全产品选型参考&#xff0c;帮助企业了解中国网络安全技术与市场的…

《幻兽帕鲁》1月29日游戏服务器推荐!腾讯云降低规格再次降价!

腾讯29日刷新规格&#xff0c;从14M降低到12M&#xff0c;硬盘和流量都有降低&#xff0c;但价格打下来了&#xff01;价格从66元/月降低到32元/月&#xff0c;277元/3个月降低到96元/3个月&#xff01; 三大厂商4核16G的云服务器价格对齐&#xff0c;不过具体参数略有不同 阿里…

iOS 自动打包如何配置配置打包证书和profile provision文件

Jenkins 打包相关问题记录 打包失败截图&#xff1a; 1、证书找不到 NO certificate matching ‘ ‘ for ‘ ’ code singing is required …. D791BAD1-390A-4587-A35C-A743A3D88D52.png 由于更新过证书配置&#xff0c;导致新证书没有导入到Jenkins中。 配置步骤&#xf…

idea docker 内网应用实践

文章目录 前言一、服务器端1.1 离线安装docker1.2 开启docker远程访问1.3 制作对应jdk镜像1.3.1 下载jdk171.3.2 Dockerfile 制作jdk17镜像1.3.3 镜像导出1.3.4 服务器引入镜像 二、Idea 配置2.1 Dockerfile2.2 pom 引入docker插件2.3 idea docker插件配置2.4 打包镜像上传2.5 …

前端_关于CSS中外边距塌陷问题

问题描述&#xff1a; 当子级块级元素修改带动父级块级元素整体向下移动 我们希望当自级块级元素修改时&#xff0c;父级元素保持不动&#xff0c;解决方法有三个: 原代码&#xff1a; 方案一&#xff1a;为父级元素添加一个内边距 方案二&#xff1a;为父级元素添加overflo…

【机器学习300问】20、什么是神经网络?和深度学习什么关系?

在学习深度学习的相关知识之前&#xff0c;我们首先得了解什么是神经网络&#xff0c;解开神经网络的神秘面纱后&#xff0c;什么是深度学习的问题也就迎刃而解。我依旧会采用我习惯的方式&#xff1a;先给出例子直观理解&#xff0c;在给出定义深入理解&#xff0c;最后在实际…