FreeCAD-macros

Форк
0
/
makecamera2dview.py 
66 строк · 1.7 Кб
1
# -*- coding: utf-8 -*-
2
#-------------------------------------------------
3
#-- makecamera2dview
4
#--
5
#-- microelly 2015
6
#--
7
#-- GNU Lesser General Public License (LGPL)
8
#-------------------------------------------------
9
# create a 2dview object from the camera position
10

11
__Comment__ = 'create a 2dview object from the camera position'
12
__Web__ = ""
13
__Wiki__ = ""
14
__Icon__  = ""
15
__Help__ = "select an object"
16
__Author__ = "microelly"
17
__Version__ = 0.1
18
__Status__ = 'alpha'
19
__Requires__ = 'numpy'
20

21

22

23

24
import numpy as np
25
from pivy import coin
26
import FreeCAD,Draft,FreeCADGui
27
import PySide
28

29
def errorDialog(msg):
30
    diag = PySide.QtGui.QMessageBox(PySide.QtGui.QMessageBox.Critical,u"Error Message",msg )
31
    diag.setWindowFlags(PySide.QtCore.Qt.WindowStaysOnTopHint)
32
    diag.exec_()
33

34
try:
35
    sel = FreeCADGui.Selection.getSelection()[0]
36
    c=Draft.clone(sel)
37
except Exception:
38
    errorDialog( "Select one object")
39
    raise Exception()
40

41

42
camera = FreeCADGui.ActiveDocument.ActiveView.getCameraNode()
43
# camera.position.setValue(FreeCAD.Vector(100,50,10))
44
camera.pointAt(coin.SbVec3f(0,0,0),coin.SbVec3f(0,0,1))
45

46
al=str(camera.position.getValue().toString()).split(' ')
47
vec2=FreeCAD.Vector(float(al[0]),float(al[1]),float(al[2]))
48
print al
49

50
gier=np.arctan2(vec2.x,vec2.y) *180/np.pi
51
steig=np.arctan2(vec2.z,np.sqrt(vec2.x**2 + vec2.y**2)) *180/np.pi
52
print  gier
53
print steig
54

55
pla1=App.Placement(App.Vector(0,0,0), App.Rotation(0,0,-90), App.Vector(0,0,0))
56
pla2=App.Placement(App.Vector(0,0,0), App.Rotation(0,180+gier,0), App.Vector(0,0,0)).multiply(pla1)
57
pla3=App.Placement(App.Vector(0,0,0), App.Rotation(0,0,steig), App.Vector(0,0,0)).multiply(pla2)
58

59
c.Placement=pla3
60
c.ViewObject.Visibility=False
61
v=Draft.makeShape2DView(c)
62

63
print vec2
64
print pla1
65
print pla2
66
print pla3
67

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

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

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

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