2016-08-20 1 views
0

J'utilise un connecteur d'association spécifique C pour me connecter à une source element A et target element B dans Enterprise Architect.Comment supprimer un connecteur dans le diagramme de l'architecte d'entreprise via C# addin

Si l'utilisateur utilise ce connecteur entre les différents éléments de source et de destination que je veux afficher un message d'alerte et supprimez le connecteur à l'aide d'un module c# dans le code:

Voici le code que j'utilise. Je suis incapable de supprimer le connecteur.

public void ToDeleteConnectorByID(int connectorID) 
     { 
      try 
      { 

       EA.Connector addedConnector = Session.Repository.GetConnectorByID(Convert.ToInt32(connectorID)); 
       EA.Element cuurentobjectconnectorele = Session.Repository.GetElementByID(addedConnector.ClientID); 

         for (short m = 0; m < cuurentobjectconnectorele.Connectors.Count - 1; m++) 
         { 
          cuurentobjectconnectorele.Connectors.Delete(m); 
          cuurentobjectconnectorele.Update(); 
         } 

        } 

      catch (Exception ex) 
      { 
       MessageBox.Show("no connector deleted-exception"); 
      } 

     } 

Répondre

0

La méthode ci-dessous peut être utilisée pour ajouter un connecteur entre des éléments en fonction d'une condition. Il sera déclenché lorsqu'un utilisateur fait glisser un nouveau connecteur de la boîte à outils ou de la fenêtre Ressources sur un diagramme. La notification est fournie immédiatement avant la création du connecteur, de sorte que l'Add-In peut désactiver l'ajout du connecteur.

/// <summary> 
    /// EA_OnPreNewConnector notifies Add-Ins that a new connector is about to be created on a diagram. 
    /// It enables Add-Ins to permit or deny creation of a new connector. 
    /// </summary> 
    /// <param name="Repository"></param> 
    /// <param name="Info"></param> 
    /// <returns>Return True to enable addition of the new connector to the model. Return False to disable addition of the new connector.</returns> 

public bool EA_OnPreNewConnector(EA.Repository Repository, EA.EventProperties Info) 
{ 
    try 
    { 
      //To get added Connector Type 
      string connectorType = ""; 
      EA.EventProperty connectorTypePropID; 
      connectorTypePropID = Info.Get(0); 
      connectorType = connectorTypePropID.Value; 

      //To get added Connector stereotype 
      string connectorStereotype = ""; 
      EA.EventProperty connectorStereotypePropID; 
      connectorStereotypePropID = Info.Get(2); 
      connectorStereotype = connectorStereotypePropID.Value; 

      //To get added Connector client ID 
      int clientID = 0; 
      EA.EventProperty clientIDPropID; 
      clientIDPropID = Info.Get(3); 
      clientID = Convert.ToInt32(clientIDPropID.Value); 

      //To get added Connector Supplier ID 
      int supplierID = 0; 
      EA.EventProperty supplierIDPropID; 
      supplierIDPropID = Info.Get(4); 
      supplierID = Convert.ToInt32(supplierIDPropID.Value); 

      //To get added Connector diagram 
      int diagramID = 0; 
      EA.EventProperty diagramIDPropID; 
      diagramIDPropID = Info.Get(5); 
      diagramID = Convert.ToInt32(diagramIDPropID.Value); 

      EA.Element sourceElemnet = Session.Repository.GetElementByID(clientID); 
      EA.Element destinationElemnet = Session.Repository.GetElementByID(supplierID); 

      if (sourceElemnet != null && destinationElemnet != null) 
      { 
       //Your condition based on when the connector needs to be created. 



       return true; 
      } 

      MessageBox.Show("This connection is not possible."); 
      return false; 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("This connection is not possible."); 
      return false; 
     } 
    } 

Returninbg TRUE, le connecteur sera créé. De retour FAUX, connecteur ne sera pas créé

espérons qu'il vous aidera à supprimer un connecteur tout en se créant.

+0

Merci. .il fonctionne bien ... – rashmi

+0

@rashmi Si elle a résolu, s'il vous plaît l'accepter comme une réponse – Arshad

1

Essayez ce morceau de code:

public void ToDeleteConnectorByID(int connectorID) { 
    try { 
    EA.Connector addedConnector = Session.Repository.GetConnectorByID(Convert.ToInt32(connectorID)); 
    EA.Element currentobjectconnectorele = Session.Repository.GetElementByID(addedConnector.ClientID); 

    for (short m = 0; m < currentobjectconnectorele.Connectors.Count; m++) { 
     if (addConnector.ConnectorID == currentobjectconnectorele.ConnectorID) { 
     currentobjectconnectorele.Connectors.Delete(m); 
     } 
    } 
    } 

    catch (Exception ex) { 
    MessageBox.Show("no connector deleted-exception"); 
    } 
} 

Votre Update est juste superflu et que vous supprimez tous les connecteurs, pas seulement celui que vous recherchez. De plus, votre boucle est trop courte. N.B: Je ne connais pas le C# mais à l'intérieur du if vous pourriez quitter la boucle. Je suppose que break est le mot-clé.

+0

J'ai essayé ce code ... même si le connecteur n'est pas automatiquement supprimé – rashmi

+1

Vérifiez, si le connectorID est correct: imprimez et utilisez la fenêtre SQL pour le localiser: 'SELECT * FROM t_connector WHERE connector_id = ' –