FreeCAD-macros
/
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
24import numpy as np
25from pivy import coin
26import FreeCAD,Draft,FreeCADGui
27import PySide
28
29def errorDialog(msg):
30diag = PySide.QtGui.QMessageBox(PySide.QtGui.QMessageBox.Critical,u"Error Message",msg )
31diag.setWindowFlags(PySide.QtCore.Qt.WindowStaysOnTopHint)
32diag.exec_()
33
34try:
35sel = FreeCADGui.Selection.getSelection()[0]
36c=Draft.clone(sel)
37except Exception:
38errorDialog( "Select one object")
39raise Exception()
40
41
42camera = FreeCADGui.ActiveDocument.ActiveView.getCameraNode()
43# camera.position.setValue(FreeCAD.Vector(100,50,10))
44camera.pointAt(coin.SbVec3f(0,0,0),coin.SbVec3f(0,0,1))
45
46al=str(camera.position.getValue().toString()).split(' ')
47vec2=FreeCAD.Vector(float(al[0]),float(al[1]),float(al[2]))
48print al
49
50gier=np.arctan2(vec2.x,vec2.y) *180/np.pi
51steig=np.arctan2(vec2.z,np.sqrt(vec2.x**2 + vec2.y**2)) *180/np.pi
52print gier
53print steig
54
55pla1=App.Placement(App.Vector(0,0,0), App.Rotation(0,0,-90), App.Vector(0,0,0))
56pla2=App.Placement(App.Vector(0,0,0), App.Rotation(0,180+gier,0), App.Vector(0,0,0)).multiply(pla1)
57pla3=App.Placement(App.Vector(0,0,0), App.Rotation(0,0,steig), App.Vector(0,0,0)).multiply(pla2)
58
59c.Placement=pla3
60c.ViewObject.Visibility=False
61v=Draft.makeShape2DView(c)
62
63print vec2
64print pla1
65print pla2
66print pla3
67