Oui tout à fait, j'ai des doublons d'identifiant sur les objets. Je suis arrivé en cours d'affaire et le BIM manager du client ne veut pas d'avertissement mais je ne sais pas comment faire cela
une petite macro C#, volontairement simpliste et pas très optimisée :(
A partir des éléments sélectionnées, on compare les paramètres 'identifiant" et on ajoute les caractères 'bis' au second identifiant doublon si les deux éléments appartiennent à la même catégorie.
[code type="markup"]
public void RenommerIdentifiantsDoublons()
{
UIApplication uiapp = Application;
UIDocument uidoc = uiapp.ActiveUIDocument;
Document doc = uidoc.Document;
// seul les elements selectionnés sont traités
ICollection colId = uidoc.Selection.GetElementIds();
string NomParametre = "Identifiant"; // NB : ne fonctionne qu'en langue FR
foreach (ElementId id in colId)
{
Element elem = doc.GetElement(id);
Category categorie = elem.Category;
string identifiant = null;
Parameter para = elem.LookupParameter(NomParametre);
if (para != null){
identifiant = para.AsString();
}
if (identifiant != null)
{
Boolean suivant = false;
foreach (ElementId _id in colId)
{
Element _elem = doc.GetElement(_id);
Category _categorie = _elem.Category;
string _identifiant = null;
Parameter _para = _elem.LookupParameter(NomParametre);
if (_para != null){
_identifiant = _para.AsString();
}
if ((_identifiant != null) && (identifiant == _identifiant) && (categorie.Name == _categorie.Name) )
{
if (suivant) // on ne modifie pas le premier identifiant doublon
{
_elem.LookupParameter(NomParametre).Set(_identifiant + "bis"); //ajoute 'bis' a l'identifiant
}
else
{
suivant = true;
}