Welcome to mirror list, hosted at ThFree Co, Russian Federation.

camera_exporter.py « primitive_exporters « io_export_dxf - git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: d447f50658d00353abda1c4b3b4b3ccd19ae0010 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# SPDX-License-Identifier: GPL-2.0-or-later

from .base_exporter import BasePrimitiveDXFExporter


class CameraDXFExporter(BasePrimitiveDXFExporter):
    pass


#-----------------------------------------------------
def exportCamera(ob, mx, mw, **common):
    """converts Camera-Object to desired projection and representation(DXF-Entity type)
    """
    location =  mathutils.Vector(ob.loc)
    [location] = projected_co([location], mx)
    [location] = toGlobalOrigin([location])
    view_name=validDXFr12name(('CAM_'+ ob.name))

    camera = Camera.Get(ob.getData(name_only=True))
    #print 'deb: camera=', dir(camera) #------------------
    if camera.type=='persp':
        mode = 1+2+4+16
        # mode flags: 1=persp, 2=frontclip, 4=backclip,16=FrontZ
    elif camera.type=='ortho':
        mode = 0+2+4+16

    leftBottom=(0.0,0.0) # default
    rightTop=(1.0,1.0) # default
    center=(0.0,0.0) # default

    direction = mathutils.Vector(0.0,0.0,1.0) * mx.to_euler().to_matrix() # in W-C-S
    direction.normalize()
    target=mathutils.Vector(ob.loc) - direction # in W-C-S
    #ratio=1.0
    width=height= camera.scale # for ortho-camera
    lens = camera.lens # for persp-camera
    frontClipping = -(camera.clipStart - 1.0)
    backClipping = -(camera.clipEnd - 1.0)

    entities, vport, view = [], None, None
    c = camera_as_list[GUI_A['camera_as'].val]
    if c=="POINT": # export as POINT
        dxfPOINT = DXF.Point(points=[location],**common)
        entities.append(dxfPOINT)
    elif c=="VIEW": # export as VIEW
        view = DXF.View(name=view_name,
            center=center, width=width, height=height,
            frontClipping=frontClipping,backClipping=backClipping,
            direction=direction,target=target,lens=lens,mode=mode
            )
    elif c=="VPORT": # export as VPORT
        vport = DXF.VPort(name=view_name,
            center=center, ratio=1.0, height=height,
            frontClipping=frontClipping,backClipping=backClipping,
            direction=direction,target=target,lens=lens,mode=mode
            )
    return entities, vport, view