#python #dxf
#python #dxf
Вопрос:
Мне нужно написать текст в формате DXF с зеркальным отображением. Я использую python и модуль ezdxf. Согласно документам, необходимо установить несколько флагов, но я всегда получаю DXFAttributeError.
Я пытаюсь использовать ‘text_generation_flags’: 2 и ‘text_direction’: (-1, 0, 0)
вот мой код (хорошо работает без попыток зеркального отображения)
def publish_face_no_bolts(poly, label, filename):
t = poly.get_default_transformation()
trans_poly = poly.transform(t)
# trans_poly = trans_poly.make_coordinates_positive()
points = transformation.points_3d_to_2d(trans_poly.poly_points)
points.append(points[0]) # must close polygon
drawing = ezdxf.new(dxfversion='AC1024') # or use the AutoCAD release name ezdxf.new(dxfversion='R2010')
modelspace = drawing.modelspace()
modelspace.add_lwpolyline(points, dxfattribs={'color': 7})
drawing.layers.new('TEXTLAYER', dxfattribs={'color': 1})
# use set_pos() for proper TEXT alignment - the relations between halign, valign, insert and align_point are tricky.
# drawing.styles.new('mirrored', dxfattribs={'text_generation_flags': 2})
# 'text_direction': (0, 1, 0), # write in y direction
drawing.styles.new('mirrored', dxfattribs={ 'text_direction': (-1, 0, 0)})
err, cx, cy = polygon.centroid2d(points)
modelspace.add_text(label, dxfattribs={'layer': 'TEXTLAYER', 'text_direction': (-1, 0, 0), 'height': 4}).set_pos((cx, cy), align='CENTER')
drawing.saveas(filename)
Какой флаг использовать и как установить его надлежащим образом?
Ответ №1:
Я не использовал ezdxf, но text_direction
это свойство MTEXT
объекта (DXF group 11), и это еще один способ эффективно управлять вращением MText.
Для зеркального отображения однострочного TEXT
объекта вам потребуется установить для группы DXF 71 значение 2, которое, после краткого просмотра кода для ezdxf, похоже, реализовано как text_generation_flag
параметр.
Следовательно, я бы предложил:
modelspace.add_text(label, dxfattribs={'layer': 'TEXTLAYER', 'text_generation_flag': 2, 'height': 4}).set_pos((cx, cy), align='CENTER')