Skip to content

Commit 4eb3ac9

Browse files
committed
Create Extrusion #89
1 parent e560944 commit 4eb3ac9

1 file changed

Lines changed: 168 additions & 1 deletion

File tree

Python/Primitive.py

Lines changed: 168 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -928,8 +928,175 @@ def CreateRectangularTorus():
928928
aRectangularTorusDlg.show()
929929
# CreateCircularTorus
930930

931+
932+
class ExtrusionDialog(QDialog):
933+
def __init__(self, theParent = None):
934+
QDialog.__init__(self, theParent)
935+
936+
self.aidNumber = PipeCad.NextAidNumber()
937+
938+
self.setupUi()
939+
# __init__
940+
941+
def setupUi(self):
942+
self.setWindowTitle(QT_TRANSLATE_NOOP("Primitive", "Create Extrusion"))
943+
944+
self.verticalLayout = QVBoxLayout(self)
945+
self.formLayout = QFormLayout()
946+
947+
# Name
948+
self.labelName = QLabel(QT_TRANSLATE_NOOP("Primitive", "Name"))
949+
self.textName = QLineEdit()
950+
951+
self.formLayout.setWidget(0, QFormLayout.LabelRole, self.labelName)
952+
self.formLayout.setWidget(0, QFormLayout.FieldRole, self.textName)
953+
954+
# Thickness
955+
self.labelThickness = QLabel(QT_TRANSLATE_NOOP("Primitive", "Thickness"))
956+
self.textThickness = QLineEdit("10")
957+
958+
self.formLayout.setWidget(1, QFormLayout.LabelRole, self.labelThickness)
959+
self.formLayout.setWidget(1, QFormLayout.FieldRole, self.textThickness)
960+
961+
self.verticalLayout.addLayout(self.formLayout)
962+
963+
# Polyline vertex.
964+
self.tableWidget = QTableWidget()
965+
self.tableWidget.setColumnCount(4)
966+
self.tableWidget.setHorizontalHeaderLabels(["X", "Y", "Z", "Radius"])
967+
self.tableWidget.setAlternatingRowColors(True)
968+
self.tableWidget.setSelectionMode(QAbstractItemView.SingleSelection)
969+
self.tableWidget.horizontalHeader().setStretchLastSection(True)
970+
self.tableWidget.horizontalHeader().setDefaultSectionSize(68)
971+
self.tableWidget.verticalHeader().setMinimumSectionSize(16)
972+
self.tableWidget.verticalHeader().setDefaultSectionSize(18)
973+
974+
self.verticalLayout.addWidget(self.tableWidget)
975+
976+
# Action box.
977+
self.horizontalLayout = QHBoxLayout()
978+
979+
# Add, Remove
980+
self.buttonAdd = QPushButton(QT_TRANSLATE_NOOP("Primitive", "Add"))
981+
self.buttonAdd.clicked.connect(self.addVertex)
982+
983+
self.buttonRemove = QPushButton(QT_TRANSLATE_NOOP("Primitive", "Remove"))
984+
self.buttonRemove.clicked.connect(self.removeVertex)
985+
986+
self.buttonPreview = QPushButton(QT_TRANSLATE_NOOP("Primitive", "Preview"))
987+
self.buttonPreview.clicked.connect(self.previewLoop)
988+
989+
self.horizontalLayout.addWidget(self.buttonAdd)
990+
self.horizontalLayout.addWidget(self.buttonRemove)
991+
self.horizontalLayout.addWidget(self.buttonPreview)
992+
993+
self.buttonBox = QDialogButtonBox(QDialogButtonBox.Cancel|QDialogButtonBox.Ok, self)
994+
995+
self.buttonBox.accepted.connect(self.accept)
996+
self.buttonBox.rejected.connect(self.reject)
997+
998+
self.horizontalLayout.addWidget(self.buttonBox)
999+
1000+
self.verticalLayout.addLayout(self.horizontalLayout)
1001+
# setupUi
1002+
1003+
def addVertex(self):
1004+
aRow = self.tableWidget.currentRow()
1005+
if aRow == -1:
1006+
aRow = self.tableWidget.rowCount
1007+
else:
1008+
aRow = aRow + 1
1009+
# if
1010+
1011+
self.tableWidget.insertRow(aRow)
1012+
self.tableWidget.setItem(aRow, 0, QTableWidgetItem("0"))
1013+
self.tableWidget.setItem(aRow, 1, QTableWidgetItem("0"))
1014+
self.tableWidget.setItem(aRow, 2, QTableWidgetItem("0"))
1015+
self.tableWidget.setItem(aRow, 3, QTableWidgetItem("0"))
1016+
# addVertex
1017+
1018+
def removeVertex(self):
1019+
aRow = self.tableWidget.currentRow()
1020+
1021+
if QMessageBox.question(self, "", QT_TRANSLATE_NOOP("Primitive", "Are you to remove the selected vertex?")) == QMessageBox.Yes:
1022+
self.tableWidget.removeRow(aRow)
1023+
# if
1024+
# removeVertex
1025+
1026+
def previewLoop(self):
1027+
1028+
PipeCad.RemoveAid(self.aidNumber)
1029+
1030+
aPointList = list()
1031+
1032+
for r in range(self.tableWidget.rowCount):
1033+
aX = float(self.tableWidget.item(r, 0).text())
1034+
aY = float(self.tableWidget.item(r, 1).text())
1035+
aZ = float(self.tableWidget.item(r, 2).text())
1036+
aR = float(self.tableWidget.item(r, 3).text())
1037+
1038+
aPoint = Position(aX, aY, aZ)
1039+
aPointList.append(aPoint)
1040+
# for
1041+
1042+
PipeCad.AddAidPolygon(aPointList, self.aidNumber)
1043+
PipeCad.UpdateViewer()
1044+
1045+
# previewPanel
1046+
1047+
def accept(self):
1048+
1049+
PipeCad.StartTransaction("Create Extrusion")
1050+
1051+
PipeCad.CreateItem("EXTR", self.textName.text)
1052+
1053+
aPaneItem = PipeCad.CurrentItem()
1054+
aPaneItem.Height = float(self.textThickness.text)
1055+
1056+
PipeCad.CreateItem("LOOP")
1057+
1058+
for r in range(self.tableWidget.rowCount):
1059+
aX = float(self.tableWidget.item(r, 0).text())
1060+
aY = float(self.tableWidget.item(r, 1).text())
1061+
aZ = float(self.tableWidget.item(r, 2).text())
1062+
aR = float(self.tableWidget.item(r, 3).text())
1063+
1064+
PipeCad.CreateItem("VERT")
1065+
aVertItem = PipeCad.CurrentItem()
1066+
aVertItem.Position = Position(aX, aY, aZ)
1067+
aVertItem.Radius = aR
1068+
# for
1069+
1070+
PipeCad.CommitTransaction()
1071+
1072+
PipeCad.RemoveAid(self.aidNumber)
1073+
PipeCad.UpdateViewer()
1074+
1075+
QDialog.accept(self)
1076+
# accept
1077+
1078+
def reject(self):
1079+
PipeCad.RemoveAid(self.aidNumber)
1080+
QDialog.reject(self)
1081+
# reject
1082+
1083+
# ExtrusionDialog
1084+
1085+
# Singleton Instance.
1086+
aExtrDlg = ExtrusionDialog(PipeCad)
1087+
1088+
def CreateExtrusion():
1089+
aExtrDlg.show()
1090+
# CreateExtrusion
1091+
1092+
1093+
def CreateRevolution():
1094+
QMessageBox.warning(PipeCad, "", QT_TRANSLATE_NOOP("Primitive", "Not implement yet!"))
1095+
# CreateRevolution
1096+
1097+
9311098
def ConnectPoint():
932-
print("ConnectPoint")
1099+
QMessageBox.warning(PipeCad, "", QT_TRANSLATE_NOOP("Primitive", "Not implement yet!"))
9331100
# ConnectPoint
9341101

9351102

0 commit comments

Comments
 (0)