7 from .model
import DxfDrawing
10 from . import dxfLibrary
as DXF
13 #from dxfLibrary import *
15 raise Exception("No dxfLibrary.py module in Blender script folder found!")
17 #------------------------------------------------------
19 # return [int(floor(255*color[0])),
20 # int(floor(255*color[1])),
21 # int(floor(255*color[2]))]
26 ##------------------------------------------------------
27 #def col2DXF(rgbcolor):
29 # if dxfColors is None:
30 # from dxfColorMap import color_map
31 # dxfColors = [(tuple(color),idx) for idx, color in color_map.iteritems()]
33 # entry = (tuple(rgbcolor), -1)
34 # dxfColors.append(entry)
36 # i = dxfColors.index(entry)
38 # return dxfColors[i-1][1]
41 v = [0,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,\
42 28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,46,47,58,59,60,61,62,63,64,91,92,93,94,96,\
43 123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,\
44 151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,\
45 171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,\
46 191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,\
47 211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,\
48 231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254]
49 invalid = ''.join([chr(i) for i in v])
52 #TODO: validDXFr14 = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.'
53 validDXFr12
= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_'
54 NAMELENGTH_MAX
= 80 #max_obnamelength in DXF, (limited to 256? )
55 #------------------------------------------------------
56 def cleanName(name
, valid
):
59 if ch
not in valid
: ch
= '_'
63 #------------------------------------------------------
64 def validDXFr12name(str_name
):
65 dxfname
= str(str_name
)
66 dxfname
= dxfname
[:NAMELENGTH_MAX
].upper()
67 dxfname
= cleanName(dxfname
, validDXFr12
)
70 class MigiusDXFLibDrawing(DxfDrawing
):
71 """ Drawing that can convert itself into MIGIUS DXFLib stuff objects """
73 def convert(self
, file, **kwargs
):
74 drawing
= self
._write
()
75 for type, ents
in self
._entities
.items():
76 self
._processEntityArray
(drawing
, type, ents
)
78 drawing
.views
.append(DXF
.View(**v
))
79 for v
in self
._vports
:
80 drawing
.vports
.append(DXF
.VPort(**v
))
81 # for l in self._layers:
85 # init Drawing ---------------------
87 # add Tables -----------------
88 # initialized automatic: d.blocks.append(b) #section BLOCKS
89 # initialized automatic: d.styles.append(DXF.Style()) #table STYLE
91 #table LTYPE ---------------
92 #d.linetypes.append(DXF.LineType(name='CONTINUOUS',description='--------',elements=[0.0]))
93 d
.linetypes
.append(DXF
.LineType(name
='DOT',description
='. . . . . . .',elements
=[0.25, 0.0, -0.25]))
94 d
.linetypes
.append(DXF
.LineType(name
='DASHED',description
='__ __ __ __ __',elements
=[0.8, 0.5, -0.3]))
95 d
.linetypes
.append(DXF
.LineType(name
='DASHDOT',description
='__ . __ . __ .',elements
=[1.0, 0.5, -0.25, 0.0, -0.25]))
96 d
.linetypes
.append(DXF
.LineType(name
='DIVIDE',description
='____ . . ____ . . ',elements
=[1.25, 0.5, -0.25, 0.0, -0.25, 0.0, -0.25]))
97 d
.linetypes
.append(DXF
.LineType(name
='BORDER',description
='__ __ . __ __ . ',elements
=[1.75, 0.5, -0.25, 0.5, -0.25, 0.0, -0.25]))
98 d
.linetypes
.append(DXF
.LineType(name
='HIDDEN',description
='__ __ __ __ __',elements
=[0.4, 0.25, -0.25]))
99 d
.linetypes
.append(DXF
.LineType(name
='CENTER',description
='____ _ ____ _ __',elements
=[2.0, 1.25, -0.25, 0.25, -0.25]))
101 #d.vports.append(DXF.VPort('*ACTIVE'))
102 d
.vports
.append(DXF
.VPort('*ACTIVE',center
=(-5.0,1.0),height
=10.0))
103 #d.vports.append(DXF.VPort('*ACTIVE',leftBottom=(-100.0,-60.0),rightTop=(100.0,60.0)))
104 #d.views.append(DXF.View('Normal')) #table view
105 d
.views
.append(DXF
.ViewByWindow('BF_TOPVIEW',leftBottom
=(-100,-60),rightTop
=(100,60))) #idem
109 def _processEntityArray(self
, drawing
, type, ents
):
112 drawing
.append(DXF
.Point(**e
))
115 drawing
.append(DXF
.Line(**e
))
116 elif type=='PolyLine':
118 drawing
.append(DXF
.PolyLine(**e
))
121 drawing
.append(DXF
.Face(**e
))