如题,现在可以读取relationship, 实在找不到添加relationship的示例,求示例代码。谢谢!
如下实例代码供您参考:
FindInstancesScope scopeTemp = FindInstancesScope.CreateScope(Session.Instance.GetActiveDgnFile(), new FindInstancesScopeOption()); int verMaj = 0, verMin = 0; IECSchema mySchema = DgnECManager.Manager.LocateSchemaInScope(scopeTemp, "MySchemaName", verMaj, verMin, SchemaMatchType.Latest); mySchema = DgnECManager.Manager.LocateSchemaInScope(scopeTemp, "MySchemaName", verMaj, verMin, SchemaMatchType.Latest); if (null == mySchema) { return; } IECClass ecClass = mySchema.GetClass("MyClassGhf"); ECQuery query = new ECQuery(ecClass); FindInstancesScope scope = FindInstancesScope.CreateScope(ele1, new FindInstancesScopeOption(DgnECHostType.Element, true)); using (DgnECInstanceCollection ecInstances = DgnECManager.Manager.FindInstances(scope, query)) { if (0 == ecInstances.Count()) return; IDgnECInstance dgnEcInsA = ecInstances.ElementAt(0); ecClass = mySchema.GetClass("MyClassGhq"); query = new ECQuery(ecClass); scope = FindInstancesScope.CreateScope(ele2, new FindInstancesScopeOption(DgnECHostType.Element, true)); using (DgnECInstanceCollection ecInstancesB = DgnECManager.Manager.FindInstances(scope, query)) { if (0 == ecInstancesB.Count()) return; IDgnECInstance dgnEcInsB = ecInstancesB.ElementAt(0); ECRelationshipClass ecRelaClass = mySchema.GetClass("MyRelationshipClass") as ECRelationshipClass; DgnECRelationshipEnabler eCRelationshipEnabler = DgnECManager.Manager.ObtainDgnECRelationshipEnabler(Session.Instance.GetActiveDgnFile(), ecRelaClass); if (null != eCRelationshipEnabler) { eCRelationshipEnabler.CreateRelationshipOnElement(dgnEcInsB, dgnEcInsA); } } }
另附上Mstn开发基础学习资料供参考:
communities.bentley.com/.../microstation-ce-addin
Answer Verified By: Changsong Ling
终于测试通过了, 多谢。
还有一个小问题,获取IECSchema时候需要指定版本,如果我指定了版本,那么也就限制了跨版本使用。请问如何能够忽略这个版本,仅凭schema名字获得,如果不行的话,能否读取当前运行环境的schema版本号,然后用获得的版本号去获得schema(似乎此方法是多此一举,拿着钥匙开门去拿钥匙?)
获取的时候版本不指定应该也可以,您 试试,如果不行,试试换换LocateSchemaInScope最后一个参数的值。
的确可以,把版本号换成不存在的数值,SchemaMatchType.Latest可以获得。
多谢!
SchemaMatchType.Latest应该就是自动查找最新的版本的。C++帮助文档中有对该参数值的详细解释如下: