ADN Open CIS
Сообщество программистов Autodesk в СНГ

30/05/2013

Расчленение текстовых примитивов

Вопрос:

Как расчленить основанные на SHX-шрифтах примитивы AcDbText на входящие в их состав линии?

Ответ:

Вы можете “расчленить” или тессиллировать текстовый примитив, используя метод AcGiTextEngine::tessellate(). Но этот метод возвращает необработанную информацию о точках, которая может быть использована для создания отдельных линий. Метод этот не учитывает свойства текстового стиля и высоту текста, а ширина подразумевается единичной.

Чтобы получить точное представление примитива AcDbText entity, нам нужно будет трансформировать необработанные точки, в зависимости от атрибутов текста и его текстового стиля. В прилагаемом примере функция fGeneratematrix () создает матрицу преобразования, которая разместит линии точно там, где они проходят в тексте. Эта матрица преобразования учитывает угол наклона, вертикальность и направление текста (слева - направо или наоборот).

ПРИМЕЧАНИЕ: True Type (TTF) шрифты не поддерживаются.

_ArxTesselateText.zip

 

Источник: http://adndevblog.typepad.com/autocad/2012/10/explode-text-entity.html

Обсуждение: http://adn-cis.org/forum/index.php?topic=78.0

Опубликовано 30.05.2013
Отредактировано 08.06.2013 в 02:07:23