Pyqt+Mimics优化计算机辅助设计工作流

Pyqt魔改Mimics

你好! 你是否想过,使用脚本来减少Mimics Innovation Suit 的很多繁琐操作?但是在优化工作流的过程中,频繁修改代码,有什么办法避免呢?

环境配置

安装mimics20.0后,

  1. 找到scripting插件的默认路径“C:\Program Files\Common Files\Materialise\Python\3.5.2”,
  2. 使用python官网的3.5.2 x64版本覆盖安装,勾选安装pip和添加环境变量,以便在命令提示符cmd中,能找到python和pip3。
    环境变量添加成功!在cmd里找到python和Pip3
  3. 安装Visual Studio 2015 Community version
  4. 使用vs2015 x64本机工具命令提示符执行pip3 install pyqt,为mimics内嵌的python加入pyqt。

UI设计

使用qtcreator编辑设计UI。
如还没有qtcreator,在https://www.qt.io/下载安装qtcreator。
设计好的UI

代码编写

在mimics的Scripting Guide查阅mimics API,将制作导板需要重复操作的部分转化为代码,有些使用for循环顺序操作,有些将之顺序列出,逐条执行。
mimics api

文件头,需要引用的一些库、定义

# Import the numpy library that is useful for some operations
import numpy as np
import math
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QDialog
from PyQt5.QtCore import *

# Define a shortcut
md = mimics.data
ma = mimics.analyze
mi = mimics.indicate_coordinate
guide_board_landmarks = ["AStart","AEnd","BStart","BEnd"]

坐标间距离计算、方向、位移、延申函数

def pp_length(a,b):
    x=a[0]-b[0]
    y=a[1]-b[1]
    z=a[2]-b[2]
    return math.sqrt(x*x+y*y+z*z)
    
def pp_direction(a,b):
    l=pp_length(a,b)
    if l==0:
        return (0,0,0)
    x=(b[0]-a[0])/l
    y=(b[1]-a[1])/l
    z=(b[2]-a[2])/l
    return (x,y,z)
    
def pp_add(a,b):
    x=a[0]+b[0]
    y=a[1]+b[1]
    z=a[2]+b[2]
    return (x,y,z)
    
def pp_extend(a,b,l):
    d=pp_direction(a,b)
    return (b[0]+d[0]*l,b[1]+d[1]*l,b[2]+d[2]*l)

QT UI 转化后的代码

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Dialog(object):
    def setupUi(self, dialog):
        dialog.setObjectName("Dialog")
        dialog.resize(400, 300)
        self.verticalLayoutWidget = QtWidgets.QWidget(dialog)
        self.verticalLayoutWidget.setGeometry(QtCore.QRect(0, 0, 401, 301))
        self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)
        self.verticalLayout.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout.setObjectName("verticalLayout")

        self.horizontalLayout_8 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_8.setObjectName("horizontalLayout_8")
        self.label_2 = QtWidgets.QLabel(self.verticalLayoutWidget)
        self.label_2.setAlignment(QtCore.Qt.AlignCenter)
        self.label_2.setObjectName("label_2")
        self.horizontalLayout_8.addWidget(self.label_2)
        self.lineEdit = QtWidgets.QLineEdit(self.verticalLayoutWidget)        
        size_policy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
        size_policy.setHorizontalStretch(0)
        size_policy.setVerticalStretch(0)
        size_policy.setHeightForWidth(self.lineEdit.sizePolicy().hasHeightForWidth())
        self.lineEdit
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值