@PierreChampeix
Bonjour, je bute sur un problème. J'essaye de créer une macro qui ouvre les fichiers listés par une nomenclature. Pour cela je parcours la nomenclature et récupère une liste d'ElementId pour chaque ligne via la méthode GetRowCountedEntities().
Ensuite pour chaque ElementId, je récupère le DocumentId associé.
Le problème c'est que le DocumentId retourné ne correspond pas au document de l'entité mais, dans le cas d'un profil, à l'assemblage le contenant.
Dans le cas suivant, j'ai une ligne dans ma nomenclature avec les tubes 100x20.
Et l'API me renvoie DocumentId de l'assemblage "2.3 Structure".
Et pourtant, quand je demande le FriendlyName de l'ElementId, j'ai bien le nom correct du document que je cherche à ouvrir.
Y a t-il un moyen d'ouvrir les fichiers associés à une ligne comme dans le menu contextuel de TS ?
Je ne sais pas si j'ai bien réussi à me faire comprendre.
Récupérer le DocumentId "réel" d'un Element
Modérateurs : remi77, D@vid, Alexis GERARD
-
- Lieutenant-colonel
- Messages : 1019
- Enregistré le : 18 oct. 2020, 21:32
- Version TopSolid : 7.13
- Module TopSolid : TopSolid'Steel
- Localisation : Valenciennes
- Contact :
Récupérer le DocumentId "réel" d'un Element
Bonjour et bonne année @La loutre !
Du coup, pour juste récupérer le niveau n+1, il faut passer par la méthode GetOccurrenceDefinition. Et pour le niveau 0, c'est GetOccurrenceSource
A+
Pierre
Se rendre au messageDu coup, pour juste récupérer le niveau n+1, il faut passer par la méthode GetOccurrenceDefinition. Et pour le niveau 0, c'est GetOccurrenceSource
A+
Pierre
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
-
- Seconde Classe
- Messages : 9
- Enregistré le : 03 nov. 2021, 14:38
- Version TopSolid : 7.13
- Module TopSolid : TopSolid'Design
Re: Récupérer le DocumentId "réel" d'un Element
Bonjour @La loutre
En effet, c'est normal que ça retourne le document assemblage puisqu'une ligne d'un document nomenclature retourne l'objet du document référencé, ici ton document assemblage.
L'ElementId que tu récupères correspond à l'ElementId de l'occurrence dans le document assemblage de ton profil. Ainsi, pour récupérer le bon ElementId, tu peux utiliser la méthode IEntities.GetOccurrenceSource en donnant l'ElementId que tu as déjà.
A+
Pierre
En effet, c'est normal que ça retourne le document assemblage puisqu'une ligne d'un document nomenclature retourne l'objet du document référencé, ici ton document assemblage.
L'ElementId que tu récupères correspond à l'ElementId de l'occurrence dans le document assemblage de ton profil. Ainsi, pour récupérer le bon ElementId, tu peux utiliser la méthode IEntities.GetOccurrenceSource en donnant l'ElementId que tu as déjà.
A+
Pierre
-
- Lieutenant-colonel
- Messages : 1019
- Enregistré le : 18 oct. 2020, 21:32
- Version TopSolid : 7.13
- Module TopSolid : TopSolid'Steel
- Localisation : Valenciennes
- Contact :
Re: Récupérer le DocumentId "réel" d'un Element
@PierreChampeix
Ok merci. Effectivement, ça fonctionne mieux. Autre souci : Quand cette pièce est contenue dans une arborescence de sous-assemblage, IEntities.GetOccurrenceSource() me renvoie le N++ assemblage et non la pièce elle-même.
Dans l'exemple suivant, je suis à la ligne 4.1.1 et il me renvoie l'assemblage 4. Avec cette nomenclature multi-niveau, je pourrais retrouver la pièce en suivant l'arborescence mais quand je travaille sur une nomenclature râteau comme la suivante, je ne vois pas trop comment faire.
Ok merci. Effectivement, ça fonctionne mieux. Autre souci : Quand cette pièce est contenue dans une arborescence de sous-assemblage, IEntities.GetOccurrenceSource() me renvoie le N++ assemblage et non la pièce elle-même.
Dans l'exemple suivant, je suis à la ligne 4.1.1 et il me renvoie l'assemblage 4. Avec cette nomenclature multi-niveau, je pourrais retrouver la pièce en suivant l'arborescence mais quand je travaille sur une nomenclature râteau comme la suivante, je ne vois pas trop comment faire.
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
-
- Seconde Classe
- Messages : 9
- Enregistré le : 03 nov. 2021, 14:38
- Version TopSolid : 7.13
- Module TopSolid : TopSolid'Design
Re: Récupérer le DocumentId "réel" d'un Element
Bonjour et bonne année @La loutre !
Du coup, pour juste récupérer le niveau n+1, il faut passer par la méthode GetOccurrenceDefinition. Et pour le niveau 0, c'est GetOccurrenceSource
A+
Pierre
Du coup, pour juste récupérer le niveau n+1, il faut passer par la méthode GetOccurrenceDefinition. Et pour le niveau 0, c'est GetOccurrenceSource
A+
Pierre
-
- Lieutenant-colonel
- Messages : 1019
- Enregistré le : 18 oct. 2020, 21:32
- Version TopSolid : 7.13
- Module TopSolid : TopSolid'Steel
- Localisation : Valenciennes
- Contact :
Re: Récupérer le DocumentId "réel" d'un Element
Merci, meilleurs vœux également pour cette nouvelle année @PierreChampeix
C'est bon, avec la méthode GetOccurrenceDefinition, j'arrive à récupérer le document de l'élément et non son parent.
Sujet résolu
C'est bon, avec la méthode GetOccurrenceDefinition, j'arrive à récupérer le document de l'élément et non son parent.
Sujet résolu