from PyQt5.QtWidgets import QApplication,QLabel,QWidget,QVBoxLayout,QPushButton,QLineEdit,QHBoxLayout,QGridLayout,QComboBox
from PyQt5.QtGui import QIntValidator, QDoubleValidator, QRegExpValidator,QPixmap,QPalette
from PyQt5.QtCore import Qt,QRegExp
from pyautocad import Autocad,APoint
import sys,os,math,re
class Qlabel_demo(QWidget):
str_MasterInsert = "E:/Master_Inserts/"
str_Coupling = "E:/Coupling/"
str_Insert = []
str_Couple = []
Couple=""
Insert=""
Dia=0
Lenth=0
EnterAngle=0
Corner = 0.8
Chamfer=0.0
acad = Autocad(create_if_not_exists = True)
#acad.prompt("hello, AutoCAD from Python\n")
def ReadFileInsert(self):
#print("Hi,this is ReadFileInserts Function!")
#print(self.str_MasterInsert)
for root,dir,files in os.walk(self.str_MasterInsert):
for file in files:
self.str_Insert.append(os.path.splitext(file)[0])
#return self.str_Insert
for root,dir,files in os.walk(self.str_Coupling):
for file in files:
self.str_Couple.append(os.path.splitext(file)[0])
#return self.str_Insert
def __init__(self,parent=None):
super(Qlabel_demo,self).__init__(parent)
self.ReadFileInsert()
self.setWindowTitle('非标刀具设计 V1.0')
float_validator = QDoubleValidator(0,500,3,self)
nameL_0=QLabel("请先运行AutoCAD,输入刀具参数:",self)
self.nameL_1=QLabel("&刀具直径:",self)
self.nameE_1=QLineEdit(self)
self.nameL_1.setBuddy(self.nameE_1)
self.nameE_1.setValidator(float_validator)
self.nameL_2=QLabel("&刀具长度:",self)
self.nameE_2=QLineEdit(self)
self.nameL_2.setBuddy(self.nameE_2)
self.nameE_2.setValidator(float_validator)
self.nameL_3=QLabel("&刀片型号(如TC16T308):",self)
self.nameE_3=QComboBox(self)
self.nameE_3.addItem("")
self.nameE_3.addItems(self.str_Insert)
self.nameL_3.setBuddy(self.nameE_3)
self.nameE_3.setCurrentIndex(0)
self.nameL_6=QLabel("倒角大小:",self)
self.nameE_6=QLineEdit(self)
self.nameL_6.setBuddy(self.nameE_2)
self.nameE_6.setValidator(float_validator)
self.nameL_4=QLabel("&主偏角:",self)
self.nameE_4=QLineEdit(self)
self.nameL_4.setBuddy(self.nameE_4)
self.nameE_4.setValidator(float_validator)
self.nameL_5=QLabel("&柄部接口(如BT40):",self)
self.nameE_5=QComboBox(self)
self.nameE_5.addItem('')
self.nameE_5.addItems(self.str_Couple)
self.nameL_5.setBuddy(self.nameE_5)
#self.nameE_5.setCurrentIndex(0)
self.btnOk=QPushButton("画图")
self.btnOk.clicked.connect(self.Draw)#画图按钮
self.btnCancel=QPushButton("退出")
self.btnCancel.clicked.connect(self.exit)
mainLayout=QGridLayout(self)
mainLayout.addWidget(nameL_0,0,0)
mainLayout.addWidget(self.nameL_1,1,0)#控件名,行,列,占用行数,占用列数,对齐方式
mainLayout.addWidget(self.nameE_1,1,1,1,2)
mainLayout.addWidget(self.nameL_2,2,0)
mainLayout.addWidget(self.nameE_2,2,1,1,2)
mainLayout.addWidget(self.nameL_3,3,0)
mainLayout.addWidget(self.nameE_3,3,1,1,2)
mainLayout.addWidget(self.nameL_4,5,0)
mainLayout.addWidget(self.nameE_4,5,1,1,2)
mainLayout.addWidget(self.nameL_5,6,0)
mainLayout.addWidget(self.nameE_5,6,1,1,2)
mainLayout.addWidget(self.nameL_6,4,0)
mainLayout.addWidget(self.nameE_6,4,1,1,2)
mainLayout.addWidget(self.btnOk,8,1)
mainLayout.addWidget(self.btnCancel,8,2)
def Draw(self):
self.Dia = self.nameE_1.text()
self.Lenght = self.nameE_2.text()
self.Chamfer = float(self.nameE_6.text())
if self.nameE_4.text() !="":
self.EnterAngle = float(self.nameE_4.text())
strInsert = self.nameE_3.currentText()
self.Corner=float(strInsert[6:])/10
#print(float(strInsert_1))
#print(self.EnterAngle)
if self.Dia !="" and self.Lenght != "" and str(self.nameE_3.currentText()) !='':
self.Insert = "E:\\Master_Inserts\\"+self.nameE_3.currentText()+".dwg"
print("插入刀片……………………………………")
if self.EnterAngle ==0:
DetaX = 0
DetaY = 0
elif self.Chamfer ==0:
RetVal = self.acad.model.InsertBlock(insertPnt,self.Insert,1,1,1,self.EnterAngle/180*math.pi)
print("刀片插入完成!")
else:
print("参数输入不全!")
#print(self.nameE_5.currentText())
if str(self.nameE_5.currentText())!='':
print("插入刀具接口…………")
self.Couple = "E:\\Coupling\\"+self.nameE_5.currentText()+".dwg"
RetVal = self.acad.model.InsertBlock(insertPnt,self.Couple,1,1,1,0)
self.Couple = ""
self.nameE_5.setCurrentIndex(0)
print("接口插入完成!")
self.nameE_3.setCurrentIndex(0)
self.nameE_5.setCurrentIndex(0)
def exit(self):
sys.exit()
if __name__=="__main__":
app=QApplication(sys.argv)
win=Qlabel_demo()
win.show()
win.ReadFileInsert()
sys.exit(app.exec_())
运行结果如下:
输入刀具参数,直径50,长度120,刀片型号TCMT110208,刀具主偏角及倒角大小,刀具接口BT40,点击画图按钮,运行完成之后切换到AutoCAD程序界面,运行结果如下图所示:
可以重复上一步骤继续添加刀片。