老师,我用如下代码创建一个文本,设置样式为CGNRebarGrade,最后文本样式不是这个文本样式。我查看了textstyle,该文本样式未激活,请问是由于这个原因造成的吗?需要怎么激活该样式使其应用成功
void CreateRoomNameTool::GetNameWideAndHeight(double& wide, double& height, TextBlockPtr& textblockPtr) { DgnModelP pActiveModel=ISessionMgr::GetActiveDgnModelP(); DgnTextStylePtr pTextStyle = DgnTextStyle::GetByName(L"CGNRebarGrade", StyleIteratorMode::ActiveFileAndLibraries); RunPropertiesPtr pRunProp = RunProperties::Create(*pTextStyle, *pActiveModel); pRunProp->SetColor(1); Dpoint2d frontsize = pRunProp->GetFontSize(); TextBlockPropertiesPtr pTBProp = TextBlockProperties::Create(*pActiveModel); ParagraphPropertiesPtr pParaProp = ParagraphProperties::Create(*pActiveModel); textblockPtr = TextBlock::Create(*pTBProp, *pParaProp, *pRunProp, *pActiveModel); textblockPtr->AppendText(g_roomNameInfo.wchRoomName); DRange3d drange = textblockPtr->GetNominalRange(); height = drange.YLength() +40 * UOR_PER_MM; wide = drange.XLength(); }
从您的贴图不难看出这个CGNRebarGrade文字样式并未在当前DGN中,而是在一个DGNLIB库中定义的。这种库中的样式不能直接引用。需要先通过代码从库中复制过来,或者像您这样发送一个激活命令,该命令会从库中将样式定义复制到当前DGN中。
MS学习资源:
MicroStation Wednesday视频分享
深入探讨MicroStation DGN基本概念系列
一步步学习MicroStation CE Addin开发
一步步学习MicroStation CE MDL开发
Answer Verified By: chenxuan chen
感谢,刚接触这块,很多东西不清楚