[OPM U6 C#]如何添加relationship

如题,现在可以读取relationship, 实在找不到添加relationship的示例,求示例代码。谢谢!

Parents
  • 如下实例代码供您参考:

    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 

Reply
  • 如下实例代码供您参考:

    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 

Children