Comment modifier le Set Géométrique auquel appartient une entité dans Catia à l’aide de VBA, sachant que l’accès au nom du Set via hybridShapes2.Parent.Name est en lecture seule ?
La difficulté rencontrée par XGX4 concerne la modification du Set Géométrique d’une entité dans Catia via VBA. L’accès au nom du Set par hybridShapes2.Parent.Name est effectivement en lecture seule, ce qui empêche une modification directe.
Pour contourner cette limitation et changer le Set Géométrique d’une entité, la démarche consiste généralement à recréer l’entité dans le Set désiré, puis à supprimer l’entité originale.
Voici une approche étape par étape, basée sur les principes de manipulation d’objets dans l’API Catia :
-
Identifier l’entité et son Set Géométrique actuel :
- Utilisez
hybridShapes2.Parent.Namepour obtenir le nom du Set Géométrique actuel. Cela permet de confirmer l’objet avec lequel vous travaillez.
- Utilisez
-
Obtenir une référence au nouveau Set Géométrique cible :
- Vous devez d’abord accéder au document Catia (
ThisDocument). - Naviguez ensuite dans l’arborescence du modèle pour trouver le
HybridBody(qui représente un Set Géométrique) que vous souhaitez cibler. - Par exemple, si le nouveau Set s’appelle « MonNouveauSet » et qu’il est directement sous le
PartouProduct:Dim oPart As Part Set oPart = ThisDocument.Part Dim oHybridBody As HybridBody ' Rechercher le nouveau set par son nom For Each oHybridBody In oPart.HybridBodies If oHybridBody.Name = "MonNouveauSet" Then Exit For End If Next oHybridBody If oHybridBody Is Nothing Then MsgBox "Le Set Géométrique 'MonNouveauSet' n'a pas été trouvé.", vbCritical Exit Sub End If
- Vous devez d’abord accéder au document Catia (
-
Recréer l’entité dans le nouveau Set Géométrique :
- C’est l’étape cruciale. Vous ne pouvez pas déplacer une entité existante. Vous devez utiliser les méthodes de création de l’API Catia pour recréer l’entité (par exemple, une ligne, un point, une courbe) en spécifiant le nouveau
HybridBodycomme parent. - La méthode exacte dépendra du type d’entité que vous manipulez. Par exemple, pour une
HybridShapeFactory:Dim oFactory As HybridShapeFactory Set oFactory = oPart.HybridShapeFactory Dim oNewShape As HybridShape ' Exemple: Recréer une ligne ' Assurez-vous d'avoir les géométries de référence nécessaires (points, etc.) ' Set oNewShape = oFactory.AddNewLine(Point1, Point2) ' oHybridBody.Append oNewShape ' Ajoute la nouvelle forme au nouveau set
- C’est l’étape cruciale. Vous ne pouvez pas déplacer une entité existante. Vous devez utiliser les méthodes de création de l’API Catia pour recréer l’entité (par exemple, une ligne, un point, une courbe) en spécifiant le nouveau
-
Supprimer l’entité originale :
- Une fois l’entité recréée avec succès dans le nouveau Set, vous pouvez supprimer l’entité originale du Set précédent.
-
Dim oShapeToDelete As Reference Set oShapeToDelete = oPart.CreateReferenceFromGeometry(hybridShapes2) ' Ou l'objet entité spécifique oPart.HybridBodies.Item(hybridShapes2.Parent.Name).HybridShapes.Remove oShapeToDelete ' Ou plus directement si vous avez l'objet entité ' oPart.HybridBodies.Item(hybridShapes2.Parent.Name).HybridShapes.Remove hybridShapes2 - Attention : La suppression d’une entité peut avoir des dépendances. Assurez-vous que l’entité n’est pas utilisée par d’autres éléments du modèle avant de la supprimer, ou gérez ces dépendances.
Considérations importantes :
- Dépendances : La recréation d’une entité peut nécessiter de référencer à nouveau les géométries de base (points, plans, etc.). Si ces géométries de base sont elles-mêmes dans des Sets qui changent, cela complique la tâche.
- Types d’entités : La méthode de recréation varie considérablement selon le type d’entité (point, ligne, surface, feature, etc.). Il est essentiel de consulter la documentation de l’API Catia pour la méthode de création appropriée.
- Gestion des erreurs : Implémentez une gestion robuste des erreurs (
On Error Resume NextouOn Error GoTo) pour gérer les cas où les Sets ou les entités ne sont pas trouvés, ou si des dépendances empêchent la suppression. - Version Catia : Bien que le principe reste le même, les méthodes spécifiques de l’API peuvent légèrement évoluer entre les versions de Catia. Le message original date de 2012, donc les méthodes de Catia V5 sont pertinentes.
En résumé, le changement de Set Géométrique se fait par une opération de « copier-recréer puis supprimer », plutôt qu’un déplacement direct.