1 # SPDX-License-Identifier: GPL-2.0-or-later
3 from .base_exporter
import BasePrimitiveDXFExporter
6 class CameraDXFExporter(BasePrimitiveDXFExporter
):
10 #-----------------------------------------------------
11 def exportCamera(ob
, mx
, mw
, **common
):
12 """converts Camera-Object to desired projection and representation(DXF-Entity type)
14 location
= mathutils
.Vector(ob
.loc
)
15 [location
] = projected_co([location
], mx
)
16 [location
] = toGlobalOrigin([location
])
17 view_name
=validDXFr12name(('CAM_'+ ob
.name
))
19 camera
= Camera
.Get(ob
.getData(name_only
=True))
20 #print 'deb: camera=', dir(camera) #------------------
21 if camera
.type=='persp':
23 # mode flags: 1=persp, 2=frontclip, 4=backclip,16=FrontZ
24 elif camera
.type=='ortho':
27 leftBottom
=(0.0,0.0) # default
28 rightTop
=(1.0,1.0) # default
29 center
=(0.0,0.0) # default
31 direction
= mathutils
.Vector(0.0,0.0,1.0) * mx
.to_euler().to_matrix() # in W-C-S
33 target
=mathutils
.Vector(ob
.loc
) - direction
# in W-C-S
35 width
=height
= camera
.scale
# for ortho-camera
36 lens
= camera
.lens
# for persp-camera
37 frontClipping
= -(camera
.clipStart
- 1.0)
38 backClipping
= -(camera
.clipEnd
- 1.0)
40 entities
, vport
, view
= [], None, None
41 c
= camera_as_list
[GUI_A
['camera_as'].val
]
42 if c
=="POINT": # export as POINT
43 dxfPOINT
= DXF
.Point(points
=[location
],**common
)
44 entities
.append(dxfPOINT
)
45 elif c
=="VIEW": # export as VIEW
46 view
= DXF
.View(name
=view_name
,
47 center
=center
, width
=width
, height
=height
,
48 frontClipping
=frontClipping
,backClipping
=backClipping
,
49 direction
=direction
,target
=target
,lens
=lens
,mode
=mode
51 elif c
=="VPORT": # export as VPORT
52 vport
= DXF
.VPort(name
=view_name
,
53 center
=center
, ratio
=1.0, height
=height
,
54 frontClipping
=frontClipping
,backClipping
=backClipping
,
55 direction
=direction
,target
=target
,lens
=lens
,mode
=mode
57 return entities
, vport
, view