在PRC中,您只能通过以下模式控制OdPrcMarkupTessBufText的定位:
面视图模式(OdPrcMarkupTessBufFaceView)
所有绘图实体平行于屏幕(广告牌效果)
双精度参数点对应新坐标系原点,实体将平行于屏幕绘制
帧绘制模式(OdPrcMarkupTessBufFrame)
所有绘图实体在二维空间中定义
双精度参数点对应投影到屏幕的3D点,作为二维绘制坐标系原点
固定尺寸模式(OdPrcMarkupTessBufFixedSize)
所有实体以固定尺寸绘制(与缩放无关)
双精度参数点对应固定尺寸绘制的新坐标系原点
(注:Adobe对此模式支持存在兼容性问题)
矩阵模式(OdPrcMarkupTessBufMatrix)
所有实体通过双精度参数矩阵变换(右乘当前变换矩阵)
模式结束后恢复原有变换矩阵
应用方法:
将OdPrcMarkupTessBufText对象通过setNextInBlock()函数放入BufBlock,示例代码
OdPrcMarkupTessPtr CreatePlainTextMarkup (OdPrcFileStructure &pCurFS)
{
//...
pCurMkpTess = pCurMkpTess->setNext(OdPrcMarkupTessBufMatrix::createObject());
OdGePoint3d origP(3, 3, 0);
((OdPrcMarkupTessBufMatrixPtr &) pCurMkpTess)->setMatrix(OdGeMatrix3d::translation(origP.asVector()));
OdPrcMarkupTessBufTextPtr pBufText = OdPrcMarkupTessBufText::createObject();
ODA_VERIFY(pBufText->setText(L"Markup with Text type", 20, 4) == eOk);
((OdPrcMarkupTessBufMatrixPtr &) pCurMkpTess)->setNextInBlock(pBufText);
//...
}