符老师,你好!
我参照C:\Program Files\Bentley\MicroStationCONNECTSDK\examples\Elements\DependencyDemo用C++ Clr写了一段类似的代码。程序返回结果Linkage表明Linkage追加成功,但是检查Linkage是否存在时无法找到对应数据,请问一下这个是什么原因?
ElementId mId(mainId); ElementId sId(subId); DgnModelRefP subDgnModelRef = (DgnModelRef*)(subDgnModelRefP.ToPointer()); EditElementHandleR subEditElementHandle= EditElementHandle(sId, subDgnModelRef); DependencyLinkage depLinkage; StatusInt exsit = DependencyManagerLinkage::GetLinkage(nullptr, subEditElementHandle, appID, appValue); if (exsit != SUCCESS) { DependencyLinkage depLinkage; if (SUCCESS == DependencyManagerLinkage::InitLinkage(depLinkage, appID, appValue, DEPENDENCY_ON_COPY_DropDependency)) { depLinkage.nRoots = 1; depLinkage.appValue = appValue; // Add the first element as root depLinkage.root.elemid[0] = mId; } ElementRefP oldFirstRef = subEditElementHandle.GetElementRef(); StatusInt append = DependencyManagerLinkage::AppendLinkage(subEditElementHandle, depLinkage, 0); //append结果为SUCCESS if (SUCCESS == subEditElementHandle.ReplaceInModel(oldFirstRef)) return true; } return false;
我再次调用这段代码时,发现DependencyManagerLinkage::GetLinkage始终没有。