FreeCAD-macros

Форк
0
/
FCRotateViewAbsolute.FCMacro 
193 строки · 4.6 Кб
1
__Name__ = 'FCRotateViewAbsolute'
2
__Comment__ = ''
3
__License__ = ''
4
__Web__ = ''
5
__Wiki__ = ''
6
__Icon__ = ''
7
__Help__ = ''
8
__Author__ = ''
9
__Version__ = ''
10
__Status__ = ''
11
__Requires__ = ''
12
__Files__ = ''
13

14
from FreeCAD import Base
15
import FreeCADGui as Gui
16

17

18
from math import cos,sin,pi
19

20
import sys
21
from PySide.QtCore import *
22
from PySide.QtGui import *
23

24
from pivy import coin
25

26
class Form(QDialog):
27

28
	def __init__(self, parent=None):
29
		super(Form, self).__init__(parent)
30
		self.alpha=00
31
		self.beta=180
32
		self.setWindowFlags(Qt.WindowStaysOnTopHint)
33

34
		dial = QDial()
35
		dial.setNotchesVisible(True)
36
		self.dial=dial
37
		dial.setMaximum(360)
38
		dial.setValue(self.alpha)
39

40

41

42
		dial2 = QDial()
43
		dial2.setNotchesVisible(True)
44
		self.dial2=dial2
45
		dial2.setMaximum(360)
46
		dial2.setValue(self.beta)
47

48
		spinbox = QSpinBox()
49
		spinbox.setMaximum(360)
50

51
		layout = QHBoxLayout()
52

53

54
		self.pushButton00 = QPushButton(QIcon('icons:freecad.svg'),"Dimetric")
55
		self.pushButton01 = QPushButton(QIcon('icons:freecad.svg'),"Trimetric")
56
		self.pushButton02 = QPushButton(QIcon('icons:freecad.svg'),"Isometric")
57
		self.pushButton03 = QPushButton(QIcon('icons:freecad.svg'),"Front")
58
		self.pushButton00.clicked.connect(self.dimetric)
59
		self.pushButton01.clicked.connect(self.trimetric)
60
		self.pushButton02.clicked.connect(self.isometric)
61
		self.pushButton03.clicked.connect(self.front)
62
		layout.addWidget(self.pushButton03)
63
		layout.addWidget(self.pushButton00)
64
		layout.addWidget(self.pushButton01)
65
		layout.addWidget(self.pushButton02)
66

67

68
		layout.addWidget(dial)
69
		layout.addWidget(dial2)
70
# 		layout.addWidget(spinbox)
71
		self.setLayout(layout)
72

73
		#self.connect(dial, SIGNAL("valueChanged(int)"),                    spinbox.setValue)
74
		#self.connect(spinbox, SIGNAL("valueChanged(int)"),                    dial.setValue)
75
		dial.valueChanged.connect(spinbox.setValue);
76

77
		dial.valueChanged.connect(self.dreher);
78
		dial2.valueChanged.connect(self.heber);
79

80

81
		self.cami()
82
		self.setWindowTitle("Camera position")
83
		Gui.SendMsgToActiveView("ViewFit")
84

85

86

87
	def dreher(self):
88
		self.alpha=self.dial.value()
89
		self.cami()
90

91
	def heber(self):
92
		self.beta=self.dial2.value()
93
		self.cami()
94

95
	def rotY(self,delta=10):
96
		if self.beta==1:
97
			self.beta=0
98

99
		self.beta += delta
100
		if self.beta >360:
101
			self.beta -= 360
102
		if self.beta <0:
103
			self.beta += 360
104
		if self.beta==0:
105
			self.beta=1
106
		FreeCAD.Console.PrintMessage(str(self.beta)+"  # ");
107
		self.dial2.setValue(self.beta)
108

109

110
	def rotZ(self,delta=10):
111
		self.alpha += delta
112
		if self.alpha >360:
113
			self.alpha -= 360
114
		if self.alpha <0:
115
			self.alpha += 360
116
		self.dial.setValue(self.alpha)
117

118
	def cami(self):
119

120
		from pivy import coin
121
		alpha=self.alpha
122
		beta=self.beta
123

124
		camera = FreeCADGui.ActiveDocument.ActiveView.getCameraNode()
125

126
		Gui=FreeCADGui
127
		if False:
128
			typeCamera="Orthographic"
129
			if typeCamera=="Orthographic":
130
				Gui.activeDocument().activeView().setCameraType("Orthographic")
131
			else:
132
				Gui.activeDocument().activeView().setCameraType("Perspective")
133

134
		campos=Base.Vector( 1000 * cos (pi*alpha/360*2)*sin(pi*beta/360*1), 1000*sin(pi*alpha/360*2)*sin(pi*beta/360*1), 1000*cos(pi*beta/360*1))
135
		camera.position.setValue( campos)
136

137
		pos3=FreeCAD.Vector(0,0,0)
138
		pos3.sub(campos)
139

140
		#if False:
141
		camera.pointAt(coin.SbVec3f(pos3),coin.SbVec3f(0,0,1))
142

143
		App.ActiveDocument.recompute()
144
		FreeCADGui.updateGui()
145

146
	def front(self):
147
		from pivy import coin
148
		pos3=FreeCAD.Vector(0,0,0)
149
		campos=FreeCAD.Vector(0,-10,0)
150
		camera = FreeCADGui.ActiveDocument.ActiveView.getCameraNode()
151
		camera.position.setValue( campos)
152
		camera.pointAt(coin.SbVec3f(pos3),coin.SbVec3f(0,0,1))
153

154
	def isometric(self):
155

156
		pos3=FreeCAD.Vector(0,0,0)
157
		campos=FreeCAD.Vector(100,-100,100)
158
		camera = FreeCADGui.ActiveDocument.ActiveView.getCameraNode()
159
		camera.position.setValue( campos)
160
		pos3.sub(campos)
161
		camera.pointAt(coin.SbVec3f(pos3),coin.SbVec3f(0,0,1))
162

163
	def dimetric(self):
164
		pos3=FreeCAD.Vector(0,0,0)
165
		campos=FreeCAD.Vector(68,-68,27)
166
		camera = FreeCADGui.ActiveDocument.ActiveView.getCameraNode()
167
		camera.position.setValue( campos)
168
		pos3.sub(campos)
169
		camera.pointAt(coin.SbVec3f(pos3),coin.SbVec3f(0,0,1))
170
		App.ActiveDocument.recompute()
171
		FreeCADGui.updateGui()
172

173

174
	def trimetric(self):
175
		pos3=FreeCAD.Vector(0,0,0)
176
		campos=FreeCAD.Vector(210,-790,580)
177
		camera = FreeCADGui.ActiveDocument.ActiveView.getCameraNode()
178
		camera.position.setValue( campos)
179
		pos3.sub(campos)
180
		camera.pointAt(coin.SbVec3f(pos3),coin.SbVec3f(0,0,1))
181

182

183
if hasattr(FreeCAD,"ViewMgr")and FreeCAD.ViewMgr:
184
	FreeCAD.ViewMgr.show()
185
	FreeCAD.Console.PrintMessage("neu gestrte")
186
else:
187
	FreeCAD.ViewMgr=Form()
188
	FreeCAD.ViewMgr.show()
189
	FreeCAD.Console.PrintMessage(" war schon da")
190

191

192
t=FreeCADGui.getMainWindow()
193
t.activateWindow()
194

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

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

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

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