FreeCAD-macros

Форк
0
/
ParabolaCreater.FCMacro 
117 строк · 3.5 Кб
1
__Name__ = 'Parabola Creater'
2
__Comment__ = 'Parabola Creater'
3
__Author__ = 'unknown'
4
__Version__ = '1.0.1'
5
__Date__ = '2019-02-02'
6
__License__ = 'LGPL-2.0-or-later'
7
__Web__ = ''
8
__Wiki__ = ''
9
__Icon__ = ''
10
__Help__ = ''
11
__Status__ = ''
12
__Requires__ = ''
13
__Communication__ = 'https://github.com/FreeCAD/FreeCAD-macros/issues/'
14
__Files__ = ''
15

16
import FreeCAD as app
17
import Part, PySide
18
from PySide import QtCore, QtGui
19
from PySide.QtGui import QLineEdit, QRadioButton
20

21

22
class ParabolaCreater():
23
    def __init__(self):
24
        self.dialog = None
25

26
        self.dialog = QtGui.QDialog()
27
        #self.dialog.resize(450,110)
28

29
        self.dialog.setWindowTitle("Parabola Creator")
30
        la = QtGui.QVBoxLayout(self.dialog)
31

32
        self.radio1 = QRadioButton("Make 2D Shape")
33
        self.radio2 = QRadioButton("Make 3D Revolution")
34

35
        # set default to "Make 2D Shape" & make radio buttons - Change self.radio1.setChecked(True) to
36
        # self.radio2.setChecked(True) to set "Make 3D Revolution" as default
37

38
        self.radio1.setChecked(True)
39
        la.addWidget(self.radio1)
40
        la.addWidget(self.radio2)
41

42
        iN1 = QtGui.QLabel("Range Of Curve - Minimum")
43
        la.addWidget(iN1)
44
        self.r1 = QtGui.QLineEdit()
45
        la.addWidget(self.r1)
46
        self.r1.setText('-3')
47

48
        iN2 = QtGui.QLabel("Range Of Curve - Maximum")
49
        la.addWidget(iN2)
50
        self.r2 = QtGui.QLineEdit()
51
        la.addWidget(self.r2)
52
        self.r2.setText('3')
53

54
        iN3 = QtGui.QLabel("Focus")
55
        la.addWidget(iN3)
56
        self.f1 = QtGui.QLineEdit()
57
        la.addWidget(self.f1)
58
        self.f1.setText('2')
59

60
        iN4 = QtGui.QLabel("Degrees of Revolve (Only valid for 3D Revolution)")
61
        la.addWidget(iN4)
62
        self.Dg = QtGui.QLineEdit()
63
        la.addWidget(self.Dg)
64
        self.Dg.setText('360')
65

66
        okbox = QtGui.QDialogButtonBox(self.dialog)
67
        okbox.setOrientation(QtCore.Qt.Horizontal)
68
        okbox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
69
        la.addWidget(okbox)
70
        QtCore.QObject.connect(okbox, QtCore.SIGNAL("accepted()"), self.makeHyp)
71
        QtCore.QObject.connect(okbox, QtCore.SIGNAL("rejected()"), self.close)
72
        QtCore.QMetaObject.connectSlotsByName(self.dialog)
73
        self.dialog.show()
74
        self.dialog.exec_()
75

76
    def makeHyp(self):
77
        if self.radio1.isChecked():
78
            try:
79
                tS1 = float(self.r1.text())
80
                tS2 = float(self.r2.text())
81
                fc = float(self.f1.text())
82

83
                para=Part.Parabola()
84
                para.Focal = fc
85

86
                shape=para.toShape(tS1,tS2)
87
                Part.show(shape)
88
            except:
89
                sayexc()
90
                app.Console.PrintError("Unable to complete task")
91

92
            self.close()
93

94
        if self.radio2.isChecked():
95
            try:
96
                tS1 = float(self.r1.text())
97
                tS2 = float(self.r2.text())
98
                fc = float(self.f1.text())
99
                Dg = float(self.Dg.text())
100

101
                para=Part.Parabola()
102
                para.Focal = fc
103

104
                shape=para.toShape(tS1,tS2)
105
                rev=shape.revolve(app.Vector(1,0,0),app.Vector(1,0,0),Dg) # revolve around X axis by number of degrees
106
                Part.show(rev)
107
            except:
108
                sayexc()
109
                app.Console.PrintError("Unable to complete task")
110

111
            self.close()
112

113
    def close(self):
114
        self.dialog.hide()
115

116
if __name__ == '__main__':
117
    ParabolaCreater()
118

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.