@@ -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+
9311098def ConnectPoint ():
932- print ( "ConnectPoint" )
1099+ QMessageBox . warning ( PipeCad , "" , QT_TRANSLATE_NOOP ( "Primitive" , "Not implement yet!" ) )
9331100# ConnectPoint
9341101
9351102
0 commit comments