centrer sur le graphe

Voir le sujet précédent Voir le sujet suivant Aller en bas

EnCours centrer sur le graphe

Message par raphael_59240 le Sam 23 Juil 2016 - 1:01

Bonjour,


Quand je travail dans un ensemble j'utilise souvent la fonction (par le biais du clic droit) centrer sur le graphe.
Ce qui me gène dans cette fonctionnalité, c'est qu'il centre sur l'objet sélectionné , soit une ligne, une droite ou un point ce qu'il fais qu'il déploie aussi
la part dans lequel la sélection est faite.
Donc ce que je souhaite, c'est de faire une macro qui puisse centrer sur le graphe mais qu'il s’arrête à la "Part" parent de l'objet sélectionné.
dans le cas de récupération de maquette via un Step ou de fichier Part construit à partir d'un "all catpart" , ça m'aiderai vachement.

Avez vous une solution

Merci de votre aide


raphael


Dernière édition par raphael_59240 le Ven 29 Juil 2016 - 20:43, édité 2 fois
avatar
raphael_59240
actif
actif

Messages : 123
Date d'inscription : 28/03/2015
Age : 46
Localisation : dunkerque

Revenir en haut Aller en bas

EnCours Re: centrer sur le graphe

Message par lumpazepfel le Lun 25 Juil 2016 - 19:23

Salut Raphaël,

Très bonne idée de macro, c'est vrai qu'on n'a pas toujours besoins de dérouler tout l'arbre mais de s'arrêter au niveau de la Part.
Voici un code pour se recentrer sur la Part dont un élément géométrique est sélectionné dans un CATProduct.
Pour les Allcatpart tu veux te recentrer sur le corps de pièce?
Code:
'************************************************************
'*     Recentre le graph sur au niveau de la CATPart        *
'*       dont un élément est sélectionné dans le 3D         *
'*                                                          *
'*  Il faut un Catproduct actif et sélectionné un élément   *
'*          géométrique 3D, puis lancer la macro            *
'*              Lumpazepfel juillet 2016                    *
'************************************************************
Sub CATMain()

Dim myDocument As Document
On Error Resume Next
Set myDocument = CATIA.ActiveDocument
If (Err.Number <> 0) Then
  MsgBox ("Il n'y a pas de document actif."), vbExclamation + vbOKOnly, "Avertissment"
  Exit Sub
End If
On Error GoTo 0

Dim myLeafProduct
Dim MaSelection
Set MaSelection = myDocument.Selection
Dim MaSelection2 As Selection
Set MaSelection2 = myDocument.Selection

'Recentre sur l'élément sélectionné pour développer l'arbre
CATIA.StartCommand "Centrer le graphe"  'si CATIA est en Français
'CATIA.StartCommand "Center graph"  'si CATIA est en Anglais

If MaSelection.Count = 0 Then
    MsgBox "Sélectionnez un élément dans le 3D et relancer la macro"
    End
Else
    On Error Resume Next
    Set myLeafProduct = MaSelection.Item(1).LeafProduct
    If Err <> 0 Then
        MsgBox "Le Document actif est une CatPart,il faut un CATProduct"
        End
        
    Else
        MaSelection2.Add myLeafProduct
    End If
MaSelection2.Remove (1)
CATIA.StartCommand "Centrer le graphe"  'si CATIA est en Français
'CATIA.StartCommand "Center graph"  'si CATIA est en Anglais

End If
End Sub

Après quelques tests, je me suis rendu compte que la macro ne fonctionne pas dans le cas où il y a des composants dans le Product No
A suivre...


Dernière édition par lumpazepfel le Lun 25 Juil 2016 - 23:08, édité 1 fois (Raison : disfonctionnement dans certain cas)
avatar
lumpazepfel
actif
actif

Messages : 138
Date d'inscription : 03/11/2015
Localisation : Ensisheim

Revenir en haut Aller en bas

EnCours Re: centrer sur le graphe

Message par lumpazepfel le Mar 26 Juil 2016 - 19:09

Salut Raphaël,

J'ai un peu revu le code et rajouté le cas d'une CatPart avec plusieurs corps.

Code:
'************************************************************
'*    Recentre le graphe sur au niveau de la CATPart      *
'*                ou du Corps de pièce                      *
'*      dont un élément est sélectionné dans le 3D        *
'*                                                          *
'*  Il faut un fichier 3D actif et sélectionné un élément  *
'*          géométrique 3D, puis lancer la macro            *
'*              Lumpazepfel juillet 2016                    *
'************************************************************
'*http://catiav5.forumactif.org/t1483-centrer-sur-le-graphe#6648*

Sub CATMain()

Dim myDocument As Document
On Error Resume Next
Set myDocument = CATIA.ActiveDocument
If (Err.Number <> 0) Then
  MsgBox ("Il n'y a pas de document actif."), vbExclamation + vbOKOnly, "Avertissment"
  Exit Sub
End If
On Error GoTo 0

Dim myLeafProduct
Dim MaSelection
Set MaSelection = myDocument.Selection
Dim myInstName As String
myInstName = ""
Dim myElement 'As AnyObject
Dim myBody As Body
If MaSelection.Count = 0 Then
    MsgBox "Sélectionnez un élément dans le 3D et relancer la macro"
    End
Else
    CATIA.StartCommand "Centrer le graphe"
    On Error Resume Next
    Set myLeafProduct = MaSelection.Item(1).LeafProduct
    If Err <> 0 Then
        'si le document est une part recentrer sur le corps de pièce de l'élément sélectionné
        Set myElement = MaSelection.Item(1).Value
        'remonte d'un niveau jusqu'à trouver un corps de pièce
        Do While myBody Is Nothing
            Set myBody = myElement
            Set myElement = myElement.Parent
        Loop
        myInstName = myBody.Name
    Else
        'Dans un product recentrer sur la part de l'élément sélectionné
        myInstName = myLeafProduct.Name 'Name = nom d'instance -->unique
    End If
End If
MaSelection.Clear
MaSelection.Search "Name=" & myInstName & ",all"
CATIA.StartCommand "CATCafCenterGraphOnCSOHdr"  'fonction trouvée ici : http://forum.cad.de/foren/ubb/Forum137/HTML/004538.shtml

End Sub
avatar
lumpazepfel
actif
actif

Messages : 138
Date d'inscription : 03/11/2015
Localisation : Ensisheim

Revenir en haut Aller en bas

EnCours Re: centrer sur le graphe

Message par raphael_59240 le Ven 29 Juil 2016 - 0:43

Lumpazepfel,

Merci beaucoup il faudrait que le moderateur le mette dans les outils à partager.

ça marche bien Laughing Laughing

petite question: as tu fais une formation programmation catia avec dassault?
avatar
raphael_59240
actif
actif

Messages : 123
Date d'inscription : 28/03/2015
Age : 46
Localisation : dunkerque

Revenir en haut Aller en bas

EnCours Re: centrer sur le graphe

Message par lumpazepfel le Ven 29 Juil 2016 - 7:34

Salut Raphael,

j'ai moi la macro a des petits bug suivant le type de fichier : l'arbre se recentre bien mais la pièce n'est pas toujours sélectionnée (orange) Question

Oui j'ai suivi une formation macro Catia, mais le mieux c'est de pratiquer et de fouiller sur les forums et d'aider les autres permet aussi de découvrir de nouveaux trucs.
avatar
lumpazepfel
actif
actif

Messages : 138
Date d'inscription : 03/11/2015
Localisation : Ensisheim

Revenir en haut Aller en bas

EnCours Re: centrer sur le graphe

Message par raphael_59240 le Ven 29 Juil 2016 - 20:44

Je l'ai repositionne en cours
avatar
raphael_59240
actif
actif

Messages : 123
Date d'inscription : 28/03/2015
Age : 46
Localisation : dunkerque

Revenir en haut Aller en bas

EnCours Re: centrer sur le graphe

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum