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程序界面耳高,運行結果如下圖所示:
?可以重復上一步驟繼續(xù)添加刀片。