@@ -88,103 +88,11 @@ def convert_curve(obj):
8888 bpy .ops .object .convert (target = 'MESH' )
8989
9090
91- def angle_between_points (p0 , p1 , p2 ):
92- a = (p1 [0 ] - p0 [0 ])** 2 + (p1 [1 ] - p0 [1 ])** 2
93- b = (p1 [0 ] - p2 [0 ])** 2 + (p1 [1 ] - p2 [1 ])** 2
94- c = (p2 [0 ] - p0 [0 ])** 2 + (p2 [1 ] - p0 [1 ])** 2
95-
96- angle = math .acos ((a + b - c ) / math .sqrt (4 * a * b )) * 180 / math .pi
97- return angle
98-
99-
100- def get_angles (verts ):
101- """
102- Get a list of angles for each vertex in a looped mesh object
103- """
104- angles = []
105- for i in range (len (verts )):
106- if i == 0 :
107- A = [verts [- 1 ].co .x , verts [- 1 ].co .y ]
108- else :
109- A = [verts [i - 1 ].co .x , verts [i - 1 ].co .y ]
110-
111- B = [verts [i ].co .x , verts [i ].co .y ]
112-
113- if i == len (verts ) - 1 :
114- C = [verts [0 ].co .x , verts [0 ].co .y ]
115- else :
116- C = [verts [i + 1 ].co .x , verts [i + 1 ].co .y ]
117-
118- ABC_angle = angle_between_points (A , B , C )
119- angles .append (ABC_angle )
120- return angles
121-
122-
123- def get_lowers (numbers , threshold ):
124- """
125- Returns a list of numbers lower than threshold
126- """
127- lowers = []
128- for num in numbers :
129- if num <= threshold :
130- lowers .append (num )
131- return lowers
132-
133-
134- def clean_mesh (obj ):
135- convert_curve (obj )
136- mesh_obj = bpy .context .view_layer .objects .active
137- islands = get_islands (mesh_obj )
138-
139- bpy .ops .object .mode_set (mode = 'EDIT' )
140- bpy .ops .mesh .select_all (action = 'DESELECT' )
141- bm = bmesh .from_edit_mesh (mesh_obj .data )
142-
143- i = 0
144- while i < len (islands ):
145- verts = []
146- for index in islands [i ]:
147- bm .verts .ensure_lookup_table ()
148- verts .append (bm .verts [index ])
149-
150- angles = get_angles (verts )
151- threshold = 2
152-
153- if min (angles ) > threshold :
154- for f in range (1 , len (islands [i + 1 ])):
155- index = islands [i + 1 ][f ]
156- bm .verts [index - 1 ].select = True
157- islands .pop (i + 1 )
158-
159- else :
160- if len (get_lowers (angles , threshold )) == 2 :
161- for x in range (2 , len (angles )):
162- if angles [x ] > threshold :
163- bm .verts .ensure_lookup_table ()
164- bm .verts [islands [i ][x ] - 1 ].select = True
165- elif angles [x ] < threshold :
166- break
167- i += 1
168-
169- bpy .ops .mesh .delete ()
170- bpy .ops .object .mode_set (mode = 'OBJECT' )
171-
172- return mesh_obj
173-
174-
175- def export_glyph (obj , folder , looped_font = False ):
91+ def export_glyph (obj , folder ):
17692 name = obj .name
17793 path = os .path .join (folder , name + '.glyph' )
17894
179- if looped_font == False :
180- convert_curve (obj )
181- else :
182- try :
183- clean_mesh (obj )
184- except IndexError :
185- bpy .ops .object .mode_set (mode = 'OBJECT' )
186- bpy .ops .object .delete ()
187- convert_curve (obj )
95+ convert_curve (obj )
18896
18997 duplicate = bpy .context .view_layer .objects .active
19098 islands = get_islands (duplicate )
@@ -230,7 +138,7 @@ def export_glyph(obj, folder, looped_font=False):
230138 os .makedirs (path )
231139
232140 for i in range (len (objs )):
233- export_glyph (objs [i ], path , looped_font = True )
141+ export_glyph (objs [i ], path )
234142 update_progress ("Making Glyphs" , i / len (objs ))
235143 update_progress ("Making Glyphs" , 1 )
236144
0 commit comments