Doublons des identifiants dupliqués
BG
BOISSIER Guillaume
27 août 2015
7485 0 0 0
Bonjour à tous
Je voulais savoir s'il était possible de corriger ou effacer les identifiants dupliqués?
Réponses
Bonjour Guillaume,
Vous parlez des identifiants des objets dans Revit je présume ? pourriez-vous détailler ?
Vous parlez des identifiants des objets dans Revit je présume ? pourriez-vous détailler ?
H
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
BG
Hello,
Tu fais une nomenclature avec les ID et tu changes les doublons
Ca c'est la méthode manuel ensuite si quelque veux faire un truc sur dynamo... je laisse ma place ;-)
Tu fais une nomenclature avec les ID et tu changes les doublons
Ca c'est la méthode manuel ensuite si quelque veux faire un truc sur dynamo... je laisse ma place ;-)
MF
Merci
BG
Bonjour,
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;
}
}
}
}
}
}
[/code]
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
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;
}
}
}
}
}
}
[/code]
AF
merci beaucoup pour le partage Franck ;)
H


