Esquisses invisibles

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

R?solu Esquisses invisibles

Message par marcassin le Lun 8 Avr 2013 - 21:24

Bonjour tout le monde, j'ai un petite problème avec une macro sur Catia :
Je cherche à programmer une macro qui détermine le nombre moyen d'éléments géométriques par esquisses. Voici le code qu' j'ai tapé :

Sub ComplexiteEsquisses()
Dim MonDoc As Document
Set MonDoc = CATIA.ActiveDocument

Dim MonPart As Part
Set MonPart = MonDoc.Part

Dim bodies1 As Bodies
Set bodies1 = MonPart.Bodies

Dim coprs As Body
Set corps = bodies1.Item("Corps principal")

Dim Esquisses As Sketches
Set Esquisses = corps.Sketches

Dim NbGeo As Long
NbGeo = 0

Dim i As Integer
For i = 1 To Esquisses.Count
Dim Esquisse As Sketch
Set Esquisse = Esquisses.Item(i)
MsgBox Esquisse.Name
Dim Geo As GeometricElements
Set Geo = Esquisse.GeometricElements
NbGeo = NbGeo + (Geo.Count - 1)
MsgBox Geo.Count
Next
NbGeoMoy = NbGeo / (Esquisses.Count)


En gros le principe est simple, je parcours mon corps principal a la recherche d'esquisses, je décompte le nombre d'éléments dans chacune et j'en fait une moyenne à la fin. J'ai rajouté des commandes qui m'affichent le nom et le nombre de composant de chaque esquisses car les valeurs qu'il me donnait était totalement folles. Et c'est la que je me suis aperçu de quelque chose qui m'a grandement surpris, la macro trouve des esquisses qui n'existent plus nul part dans mon arbre de construction Exclamation Même après avoir refermer et rouvert Catia la macro continu de m'afficher les esquisses qui ont été utilisée par des fonctions qui ont été supprimées.

Auriez vous une idée pour ne décompter que les esquisses qui sont utilisées ?
Merci

marcassin
timide
timide

Messages : 6
Date d'inscription : 08/04/2013
Localisation : Aix en Provence

Revenir en haut Aller en bas

R?solu Re: Esquisses invisibles

Message par Guss_ le Mar 9 Avr 2013 - 0:24

Sur l'objet Esquisses, tu as peut être une propriété qui te permettrais de filtré tout ça. Du genre une propriété "visible" ou quelque chose dans le genre.

Guss_
Fédérateur
Fédérateur

Messages : 503
Date d'inscription : 08/01/2010

Revenir en haut Aller en bas

R?solu Re: Esquisses invisibles

Message par marcassin le Mar 9 Avr 2013 - 1:14

J'avais pensé à ça mais je n'ai pas trouvé de propriété adéquate. Pour trouver les propriétés et les méthodes à utiliser j'utilise le fichier VB5 Automation de Catia qui me parait assez complet mais est qu'il existe d'autres moyens de trouver les propriétés et méthodes utilisables ?

marcassin
timide
timide

Messages : 6
Date d'inscription : 08/04/2013
Localisation : Aix en Provence

Revenir en haut Aller en bas

R?solu Re: Esquisses invisibles

Message par Guss_ le Mar 9 Avr 2013 - 1:22

En cliquant avec le bouton droit dans le code
tu as l'explorateur d'objet.
J'utilise aussi souvent l'espionnage des variables qui permet de mettre en évidence l'arborescence des objets (et ainsi que la complexité des imbrications des objets catia ... drunken )


Les infos ne sont pas facile à avoir, il y a beaucoup de fonctions/objet/propriétés/variables mal renseignées dans l'aide (que même le support est incapable de renseigner ... bate )

Guss_
Fédérateur
Fédérateur

Messages : 503
Date d'inscription : 08/01/2010

Revenir en haut Aller en bas

R?solu Re: Esquisses invisibles

Message par marcassin le Mar 9 Avr 2013 - 1:50

Merci pour ton aide, en regardant dans l'explorateur d'objet je me suis aperçu que je pouvais récupérer les esquisses des fonctions qui en utilisent, donc je devrait y arriver. Je mettrais la solution quand j'aurais réussi.

marcassin
timide
timide

Messages : 6
Date d'inscription : 08/04/2013
Localisation : Aix en Provence

Revenir en haut Aller en bas

R?solu Re: Esquisses invisibles

Message par Guss_ le Mar 9 Avr 2013 - 1:58

Ok, sinon tu à la solution de la recherche avec la fonction search

ça à l'air assez efficace, par contre encore une fois pour trouver la syntaxe et termes utilisables c'est la croix et la bannière ...


L'idée serait de chercher toutes les esquisses dans une certaine séléction


Guss_
Fédérateur
Fédérateur

Messages : 503
Date d'inscription : 08/01/2010

Revenir en haut Aller en bas

R?solu Re: Esquisses invisibles

Message par marcassin le Mer 10 Avr 2013 - 23:54

J'ai essayé d'utiliser la fonction search ( que je ne connaissait pas soit sit en passant) cependant j'ai un soucis et j'espère que tu pourra éclairer ma lanterne :
J'arrive à faire fonctionner la fonction pour chercher un nom précis :

Dim mondoc As Document
Set mondoc = CATIA.ActiveDocument

Dim MaSelection As selection
Set MaSelection = mondoc.selection
MaSelection.Search "Name=Esquisse.2,all"

Par contre quand je n'arrive pas à faire la même chose avec un type d'objet bien que j'ai lu que c'était possible. Quand je tape :

MaSelection.Search "Type=Sketch,all"
la macro ne veux plus tourner. (J'ai essayer avec un certains nombres de choses à la place de Sketch) Il m'indique ca " method 'changcomponentstate' of object 'Selection' failed "

marcassin
timide
timide

Messages : 6
Date d'inscription : 08/04/2013
Localisation : Aix en Provence

Revenir en haut Aller en bas

R?solu Re: Esquisses invisibles

Message par marcassin le Jeu 11 Avr 2013 - 3:51

Bon finalement J'ai trouver la solution à mon problème :

J'ai fini par trouver l'origine des esquisses que je ne voulait pas : elles sont dues aux perçages.
En fait, d'après ce que j'ai observer, chaque perçage a 2 esquisses : la première qui contient juste un point pour la position du perçage et la 2ème, celle qui n'est affichée nulle part dans le modèle. Celle là tout ce que j'ai vu c'est qu'elle contient 3 éléments (qui sont soit des points,soit des droites,soit des cercles) mais par contre aucune idée à quoi ils correspondent.

Pour ce qui est de mon code j'ai tout simplement ignorer les esquisses n'ayant qu'un seul élément en considérant que ce sont celle des perçages(je vois pas vraiment ce qu'il pourrait y avoir d'autre comme esquisse qui ne contient qu'un point) avec un if et dans ma boucle je "saute" l'esquisse suivante puisque c'est la 2ème du perçage .

Voilà, c'est un peu du gros bidouillage mais ça marche.

Merci pour ton aide Guss_

Je vous met le code au cas où il pourrait servir à quelqu'un :

Dim mondoc As Document
Set mondoc = CATIA.ActiveDocument

Dim MonPart As Part
Set MonPart = mondoc.Part

Dim bodies1 As Bodies
Set bodies1 = MonPart.Bodies

Dim coprs As Body
Set corps = bodies1.Item("Corps principal")

Dim Esquisses As Sketches
Set Esquisses = corps.Sketches

Dim NbGeo As Long
Dim nbesquisse As Long
NbGeo = 0
nbesquisse = 0

Dim i As Integer
For i = 1 To Esquisses.Count

Dim Esquisse As Sketch
Set Esquisse = Esquisses.Item(i)

Dim Geo As GeometricElements
Set Geo = Esquisse.GeometricElements

If Geo.Count <> 2 Then

NbGeo = NbGeo + Geo.Count
nbesquisse = nbesquisse + 1

Else
i = i + 1

End If

Next
NbGeoMoy = NbGeo / nbesquisse

marcassin
timide
timide

Messages : 6
Date d'inscription : 08/04/2013
Localisation : Aix en Provence

Revenir en haut Aller en bas

R?solu Re: Esquisses invisibles

Message par Guss_ le Jeu 11 Avr 2013 - 21:36

Tu peux éventuellement faire ta discrimination en étudiant l'objet Parent de tes esquisses.

Guss_
Fédérateur
Fédérateur

Messages : 503
Date d'inscription : 08/01/2010

Revenir en haut Aller en bas

R?solu Re: Esquisses invisibles

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