老师,我需要将V8i代码改成CE版本的代码,请问该接口对应的CE版本是哪个接口
请仔细读一下MSCE SDK中的例子C:\Program Files\Bentley\MicroStationCONNECTSDK\examples\Visualization\MaterialsExample,该例子中演示有关材质的各种用法。
MS学习资源:
MicroStation Wednesday视频分享
深入探讨MicroStation DGN基本概念系列
一步步学习MicroStation CE Addin开发
一步步学习MicroStation CE MDL开发
Answer Verified By: chenxuan chen
符老师,我用测试这个例子的attach命令时,选择墙后,没有什么变化,下面显示成功,属性中连接材质是无,但是点开会发现有程序创建的新材质。请问这个命令不会直接设置链接材质吗?调试代码发现走入如下分支。请问如何才能直接设置链接材质
请参考如下简化了的测试代码。它对当前选择集中的第一个元素连接了系统自带的Wood11材质。
void attachMaterialFromLib() { ElementAgenda elemAgenda; SelectionSetManager::GetManager().BuildAgenda(elemAgenda); if (!elemAgenda.GetCount()) { mdlDialog_dmsgsPrint(L"Select an element first"); return; } EditElementHandle& eeh = elemAgenda[0]; MaterialSearchStatus localSearchStatus; MaterialList mateList; BentleyStatus result = MaterialManager::GetManagerR().FindMaterialByNameFromAnySource(&localSearchStatus, mateList, L"Wood11", *ACTIVEMODEL, true); if (SUCCESS == result) { MaterialId mateId1 = MaterialId(L"Wood11"); IMaterialPropertiesExtension* mExtension1 = IMaterialPropertiesExtension::Cast(eeh.GetHandler()); if (SUCCESS == mExtension1->AddMaterialAttachment(eeh, mateId1)) eeh.ReplaceInModel(eeh.GetElementRef()); } else mdlDialog_dmsgsPrint(L"Can't find the material Wood11, please load palette first"); }
符老师,好像原因是构造这个MaterialId 时,您这里直接是MaterialId mateId1 = MaterialId(L"Wood11");而例子上是直接用MaterialCP去构造的。我自己两个都测试了下,用MaterialCP这个区构造MaterialId 最后附加材质时,没有效果显示出来
SDK中的有些例子是大牛写出来的,有些是小白写出来的。我们确实是需要带着“怀疑一切”的态度去审视它们。