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

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'io_export_dxf/primitive_exporters/text_exporter.py')
-rw-r--r--io_export_dxf/primitive_exporters/text_exporter.py89
1 files changed, 89 insertions, 0 deletions
diff --git a/io_export_dxf/primitive_exporters/text_exporter.py b/io_export_dxf/primitive_exporters/text_exporter.py
new file mode 100644
index 00000000..c7e9d173
--- /dev/null
+++ b/io_export_dxf/primitive_exporters/text_exporter.py
@@ -0,0 +1,89 @@
+from .base_exporter import BasePrimitiveDXFExporter
+
+
+class TextDXFExporter(BasePrimitiveDXFExporter):
+ pass
+
+#-----------------------------------------------------
+def exportText(ob, mx, mw, **common):
+ """converts Text-Object to desired projection and representation(DXF-Entity type)
+ """
+ text3d = ob.getData()
+ textstr = text3d.getText()
+ WCS_loc = ob.loc # WCS_loc is object location in WorldCoordSystem
+ sizeX = ob.SizeX
+ sizeY = ob.SizeY
+ sizeZ = ob.SizeZ
+ rotX = ob.RotX
+ rotY = ob.RotY
+ rotZ = ob.RotZ
+ #print 'deb: sizeX=%s, sizeY=%s' %(sizeX, sizeY) #---------
+
+ Thickness,Extrusion,ZRotation,Elevation = None,None,None,None
+
+ AXaxis = mx[0].copy().resize3D() # = ArbitraryXvector
+ if not PROJECTION:
+ #Extrusion, ZRotation, Elevation = getExtrusion(mx)
+ Extrusion, AXaxis = getExtrusion(mx)
+
+ # no thickness/width for TEXTs converted into ScreenCS
+ if text3d.getExtrudeDepth():
+ Thickness = text3d.getExtrudeDepth() * sizeZ
+
+ #Horizontal text justification type, code 72, (optional, default = 0)
+ # integer codes (not bit-coded)
+ #0=left, 1=center, 2=right
+ #3=aligned, 4=middle, 5=fit
+ Alignment = None
+ alignment = text3d.getAlignment().value
+ if alignment in (1,2): Alignment = alignment
+
+ textHeight = text3d.getSize() / 1.7
+ textFlag = 0
+ if sizeX < 0.0: textFlag |= 2 # set flag for horizontal mirrored
+ if sizeZ < 0.0: textFlag |= 4 # vertical mirrored
+
+ entities = []
+ c = text_as_list[GUI_A['text_as'].val]
+
+ if c=="TEXT": # export text as TEXT
+ if not PROJECTION:
+ ZRotation,Zrotmatrix,OCS_origin,ECS_origin = getTargetOrientation(mx,Extrusion,\
+ AXaxis,WCS_loc,sizeX,sizeY,sizeZ,rotX,rotY,rotZ)
+ ZRotation *= r2d
+ point = ECS_origin
+ else: #TODO: fails correct location
+ point1 = mathutils.Vector(ob.loc)
+ [point] = projected_co([point1], mx)
+ if PERSPECTIVE:
+ clipStart = 10.0
+ coef = -clipStart / (point1*mx)[2]
+ textHeight *= coef
+ #print 'deb: coef=', coef #--------------
+
+ #print 'deb: point=', point #--------------
+ [point] = toGlobalOrigin([point])
+ point2 = point
+
+ #if DEBUG: text_drawBlender(textstr,points,OCS_origin) #deb: draw to scene
+ common['extrusion']= Extrusion
+ #common['elevation']= Elevation
+ common['thickness']= Thickness
+ #print 'deb: common=', common #------------------
+ if 0: #DEBUG
+ #linepoints = [[0,0,0], [AXaxis[0],AXaxis[1],AXaxis[2]]]
+ linepoints = [[0,0,0], point]
+ dxfLINE = DXF.Line(linepoints,**common)
+ entities.append(dxfLINE)
+
+ dxfTEXT = DXF.Text(text=textstr,point=point,alignment=point2,rotation=ZRotation,\
+ flag=textFlag,height=textHeight,justifyhor=Alignment,**common)
+ entities.append(dxfTEXT)
+ if Thickness:
+ common['thickness']= -Thickness
+ dxfTEXT = DXF.Text(text=textstr,point=point,alignment=point2,rotation=ZRotation,\
+ flag=textFlag,height=textHeight,justifyhor=Alignment,**common)
+ entities.append(dxfTEXT)
+ return entities
+
+