ObjectARX, AutoCAD. Среда программирования библиотеки C++


         

TrueType Разработка Шрифта


Хотя ни SimpleView ни WhipView, через AcGix, не поддерживает TrueType шрифты, имеется процедура, доступная в ObjectDBX для тех, кто хотят пробовать добавить TrueType поддержку шрифта на их собственный. Механизм - textMsg () метод AcGixVectorTaker класса.

Когда объект текста TrueType должен быть отображен, AcGix вызывает textMsg () методом vectortaker. В этой точке vectortaker выполнение может или обрабатывать текст или возвращать Adesk:: kFalse, чтобы инструктировать AcGix исполнять его обработку по умолчанию, которая должна преобразовать текст в SHX шрифт (txt.shx по умолчанию) и затем исполнять стандарт SHX обработка.

Координаты, снабженные textMsg () находятся в текущих образцовых координатах.

Они могут быть преобразованы к Мировой системе координат (WCS), использование снабженного преобразовывает.

Задача представления TrueType шрифты в трехмерном пространстве сложна, и это осуществление рекомендуется только для тех смотрящий достичь полной совместимости дисплея AutoCAD. Один подход может быть только, чтобы обработать это сообщение, если текст может быть представлен в виде плана для вашей области просмотра, и иначе использовать заданную по умолчанию обработку.

TextMsg () метод определен в AcGixVectorTaker.h:

virtual Adesk::Boolean

textMsg(

Adesk::Int16 nViewportId,

const TextPacket * pPacket) = 0;

Структура TextPacket содержит информацию относительно текста плюс матрица преобразования, имел обыкновение преобразовывать от текущей модели до WCS.

struct TextPacket

{

TextPacket(

const TextInfo* pInfo,

int nColor,

const AcGeMatrix3d& xModel);

int m_nColor;

const TextInfo* m_pInfo;

const AcGeMatrix3d& m_xCurrentModelToWorld;

};

Структура TextInfo содержит всю информацию относительно текста:

struct TextInfo

{

AcGePoint3d m_Position;

AcGeVector3d m_Normal;

AcGeVector3d m_Direction;

double m_Height;

double m_Width;

double m_Oblique;

const char* m_pMsg;

Adesk::Int32 m_Length;

Adesk::Boolean m_Raw;

double m_Thickness;

const AcGiTextStyle * m_pTextStyle;

};




Содержание  Назад  Вперед