différence composant produit

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

R?solu différence composant produit

Message par quentinc le Mar 28 Juin 2016 - 0:15

bonjour
le VBA fait-il la différence entre un produit et un composant?
il me semble que les 2 sont enregistrer en .cartproduct


Dernière édition par quentinc le Mer 27 Juil 2016 - 19:21, édité 1 fois

quentinc
actif
actif

Messages : 33
Date d'inscription : 07/06/2016
Localisation : saint quentin en yveline

Revenir en haut Aller en bas

R?solu Re: différence composant produit

Message par raphael_59240 le Mar 28 Juin 2016 - 2:33

Bonjour,

oui il fait la différence entre produit et composant.

Il faut mettre les bonnes syntaxe pour faire tes tests.
regarde ici je pense que ça répond à ta question: http://catiav5.forumactif.org/t1468-catpart-et-catproduct#6561


cdt,


raphael
avatar
raphael_59240
actif
actif

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

Revenir en haut Aller en bas

R?solu Re: différence composant produit

Message par quentinc le Mar 28 Juin 2016 - 3:11

j'utilise ce qu'il y a sur cette page mais on peut voir sur cette photo que le composant("product1") est géré comme le Product("sous/produit1")

je compare le nom des pièces avec le nom du Product père et voudrais remonté d'un de plus quand il s'agit d'un composant(pour atteindre le Product du dessus)



après la flèche le code écris prt pour Part et prd pour Product



quentinc
actif
actif

Messages : 33
Date d'inscription : 07/06/2016
Localisation : saint quentin en yveline

Revenir en haut Aller en bas

R?solu Re: différence composant produit

Message par raphael_59240 le Mar 28 Juin 2016 - 20:15

Bonjour,

C est pas tres clair.
peux tu donner un peu plus d'explication?

Merci


Raphael
avatar
raphael_59240
actif
actif

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

Revenir en haut Aller en bas

R?solu Re: différence composant produit

Message par lumpazepfel le Mar 28 Juin 2016 - 22:36

Salut Quentin,

S'agissant toujours de la même macro, je pense que tu devrais continuer dans le même poste plutôt que d'en ouvrir un nouveau à chaque fois.

Un composant est propre au CATProduct dans lequel il est créé, il n'a donc pas de nom de fichier.
Comme l'a précisé Raphaël, il faut définir ce que tu veux comparer : le PartNumber ou le nom de fichier car ils ne sont pas forcément identiques.
Dans la macro la valeur "nomFichier" pour le composant est bien le nom du CATProduct (dans mon exemle "Product11.CATProduct) mais le test se fait sur le PARTNumber (dans mon exemple "Comp1") .


Pour le visualiser dans ta USERFORM modifie le code :

Code:
nomFichier = prod.ReferenceProduct.Parent.Name
label = prod.PartNumber & " / " & nomFichier
avatar
lumpazepfel
actif
actif

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

Revenir en haut Aller en bas

R?solu Re: différence composant produit

Message par quentinc le Jeu 7 Juil 2016 - 2:39

bonjour
merci pour vos réponse plus haut, j'ai réussi a les différencier

j'ai une autre petite question,
j'ai lut dans le CAA V5 Visual Basic help que l'on peut créer en auto des part avec corps hybride mais n'ai pas trouver comment analysé le fait qu'une pièce possède un corps hybride,
je voudrai juste afficher un message pour chaque pièce avec un corps hybride.

cordialement
Quentin

quentinc
actif
actif

Messages : 33
Date d'inscription : 07/06/2016
Localisation : saint quentin en yveline

Revenir en haut Aller en bas

R?solu Re: différence composant produit

Message par Docserta le Ven 8 Juil 2016 - 9:20

Bonjour,
tu peux vérifier si le corps principal contient un objet hybridshape.

Code:
Dim mDoc As Document
Set mDoc = CATIA.ActiveDocument
Dim mPart As Part
Set mPart = mDoc.Part

Dim mBody As Body
Set mBody = mPart.MainBody
        
If mBody.HybridShapes Is Nothing Then
    'il n'y a pas d'elements hybrides dans le corps principal
Else
    'Il peut y avoir des éléments hybrides dans le corps principal
End If

End Sub

Cordialement
avatar
Docserta
actif
actif

Messages : 42
Date d'inscription : 10/11/2011
Localisation : Rennes

Revenir en haut Aller en bas

R?solu Re: différence composant produit

Message par quentinc le Mar 19 Juil 2016 - 19:57

bonjour,
merci pour ton aide mais quand il s'agit du hybride la valeur reste sur 0

quentinc
actif
actif

Messages : 33
Date d'inscription : 07/06/2016
Localisation : saint quentin en yveline

Revenir en haut Aller en bas

R?solu Re: différence composant produit

Message par Docserta le Mar 19 Juil 2016 - 20:17

Bonjour,
Si ta part est en conception hybride, et que le container Body.HybridShapes contiens 0 item cela veux dire q'aucun élement géométrique (points, droites, etc..) n'a été créé dans le corp principal.
Mais ta part est quand même en mode hybride.

Si le container Body.HybridShapes est egal à Nothing, cela veux dire que ta part n'est pas en mode hybride.
avatar
Docserta
actif
actif

Messages : 42
Date d'inscription : 10/11/2011
Localisation : Rennes

Revenir en haut Aller en bas

R?solu Re: différence composant produit

Message par quentinc le Mer 20 Juil 2016 - 1:41

j'ai fait en sorte d'avoir des pièces détecté comme hybride mais on m'affiche quelles ne le sont pas, pourrai tu regarder mon code ci-dessous stp, il doit y avoir une absurdité mais je n'arrive pas à la corriger.


Code:
Sub CATMain()
On Error Resume Next

Dim myTree As TreeView
Dim myList As ListBox

Set myTree = UserForm2.tree
Set myList = UserForm2.ListBox1

Dim myDoc As Document
Dim myrootProduct As Product

Set myDoc = CATIA.ActiveDocument

If myDoc Is Nothing Then
    MsgBox "Please load a product - THEN activate this function!"
    Return
End If

Dim y As Integer



Set myrootProduct = myDoc.Product



Call visitProduct(myrootProduct, "", myTree, y)

UserForm2.Show
End Sub

Sub visitProduct(prod As Product, parentKey As String, ByRef myTree As TreeView, y)

On Error Resume Next

Dim children As Products
Set children = prod.Products
Dim i As Integer
Dim child As Product
Dim key As String
Dim label As String



label = prod.PartNumber '& " / " & prod.Name ' pour afficher le pratNumber et le nom d'instance

key = parentKey & "###" & prod.Name
y = y + 1
If parentKey = "" Then
    UserForm2.tree.Nodes.Add(, , key, label).Expanded = True

    UserForm2.ListBox1.AddItem "----------"
    UserForm2.ListBox1.AddItem prod.PartNumber
    UserForm2.ListBox1.AddItem "----------"


Else
    UserForm2.tree.Nodes.Add(parentKey, tvwChild, key, label).Expanded = True
 
    UserForm2.ListBox1.AddItem prod.PartNumber
    UserForm2.ListBox1.AddItem "----------"
   
          If Left(UserForm2.tree.Nodes(y).Text, 8) = Left(UserForm2.tree.Nodes(y).Parent.Text, 8) Then
    UserForm2.ListBox2.AddItem (UserForm2.tree.Nodes(y).Text & "----->" & UserForm2.tree.Nodes(y).Parent.Text)
    End If
End If
      UserForm2.ListBox2.AddItem y
    '===========================
'Récupère le nom de fichier:
nomFichier = prod.ReferenceProduct.Parent.Name
L = Len(prod.PartNumber)
'Si c'est un CATProduct:
If Left(prod.PartNumber, L) = Left(nomFichier, L) Then
    If InStr(nomFichier, "CATProduct") > 0 Then
        If Right(Left(prod.PartNumber, 10), 1) = 0 Then
            'MsgBox (prod.PartNumber & " nom OK")
            UserForm2.ListBox2.AddItem prod.PartNumber & " -->Prd correct"
        Else
          ' MsgBox (prod.PartNumber & " nom NOK")
            UserForm2.ListBox2.AddItem prod.PartNumber & " -->Prd incorrect"
        End If
    End If
Else
 UserForm2.ListBox2.AddItem prod.PartNumber & " -->composant"
End If

'Si c'est un CATPart:



If InStr(nomFichier, "CATPart") > 0 Then

        If Right(Left(prod.PartNumber, 10), 1) = 0 Then
                'MsgBox (prod.PartNumber & " nom NOK")
                UserForm2.ListBox2.AddItem prod.PartNumber & " -->Prt incorrect"
            Else
                'MsgBox (prod.PartNumber & " nom OK")
                UserForm2.ListBox2.AddItem prod.PartNumber & " -->Prt correct"
        End If
       
       
      '--------------------
                                          'test hybride
                                    Dim mPart As Part
                                    Set mPart = prod.Part
                                   
                                    Dim mBody As Body
                                    Set mBody = mPart.MainBody
                                           
                                    If mBody.HybridShapes Is Nothing Then
                                        'il n'y a pas d'elements hybrides dans le corps principal
                                            UserForm2.ListBox2.AddItem prod.PartNumber & " -->nn hybride"
                                    Else
                                        'Il peut y avoir des éléments hybrides dans le corps principal
                                        UserForm2.ListBox2.AddItem prod.PartNumber & " -->hybride"
                                    End If
                                   

                                   
                                       
    End If

'===========================


et:

For i = 1 To children.Count
    Set child = children.Item(i)
    Call visitProduct(child, key, myTree, y)
Next


End Sub

merci d'avance

quentinc
actif
actif

Messages : 33
Date d'inscription : 07/06/2016
Localisation : saint quentin en yveline

Revenir en haut Aller en bas

R?solu Re: différence composant produit

Message par Docserta le Mer 20 Juil 2016 - 3:42

Re,

Ouvre ton catia et coche l'option "Conception Hybride"



Ferme Catia (pour être sur que l'option soit appliquée)
Rouvre Catia et crée une part vierge (coche l'option "Activer la conception hybride")


sauvegarde ta part sous "Hybrid.CATPart"

Change l'option de Catia et décoche "Conception Hybride"
Ferme Catia (pour être sur que l'option soit appliquée)
Rouvre Catia et crée une part vierge (vérifie que l'option "Activer la conception hybride" soit décochée)


sauvegarde ta part sous "Non_Hybrid.CATPart"

Rouvre les 2 parts, tu doit obtenir ceci


Celle qui a le corps de piece en jaune est hybride, celle qui a le corps de pièce vert est non hybride.

Lance maintenant ce code sur chacune des parts.

Code:
Sub catmain()
Dim mDoc As Document
Set mDoc = CATIA.ActiveDocument
Dim mPart As Part
Set mPart = mDoc.Part                                
Dim mBody As Body
Set mBody = mPart.MainBody    
    If mBody.HybridShapes Is Nothing Then
        'il n'y a pas d'elements hybrides dans le corps principal
            MsgBox "Ce part n'est pas en conception hybride", vbInformation
    Else
        'Il peut y avoir des éléments hybrides dans le corps principal
            MsgBox "Ce part est en conception hybride", vbCritical
    End If
End Sub

tu verra que le message n'est pas le même
avatar
Docserta
actif
actif

Messages : 42
Date d'inscription : 10/11/2011
Localisation : Rennes

Revenir en haut Aller en bas

R?solu Re: différence composant produit

Message par quentinc le Mer 20 Juil 2016 - 18:57

merci
j'obtiens bien ce que tu ma expliqué

http://i35.servimg.com/u/f35/19/49/81/31/captur13.jpg

j'ai donc essayer de le mettre dans mon programme mais sa ne fonctionne pas

http://i35.servimg.com/u/f35/19/49/81/31/captur14.jpg

je pense que sa viens de la

http://i35.servimg.com/u/f35/19/49/81/31/captur15.jpg

je pensait que sa suffirai pour l'adapter au reste mais je doit me tromper sur ce qu'est prod.part
peut tu me dire par quoi je doit le remplacer stp (le reste du programme est plus haut)

merci
quentin

quentinc
actif
actif

Messages : 33
Date d'inscription : 07/06/2016
Localisation : saint quentin en yveline

Revenir en haut Aller en bas

R?solu Re: différence composant produit

Message par quentinc le Mer 20 Juil 2016 - 20:11

je pense avoir trouvé avec :

Set mPart = prod.ReferenceProduct.Parent.Part

quentinc
actif
actif

Messages : 33
Date d'inscription : 07/06/2016
Localisation : saint quentin en yveline

Revenir en haut Aller en bas

R?solu Re: différence composant produit

Message par lumpazepfel le Mer 20 Juil 2016 - 23:09

Salut Quentin,

Oui ta syntaxe est juste.
Tu as été plus rapide Crying or Very sad
Alors j'ai apporté une petite modif pour mettre les 2 informations (contrôle du nom et Hybride) sur la même ligne:

Code:
'Si c'est un CATPart:
If InStr(nomFichier, "CATPart") > 0 Then
    If Right(Left(prod.PartNumber, 10), 1) = 0 Then
        'MsgBox (prod.PartNumber & " nom NOK")
        'UserForm1.ListBox2.AddItem (prod.PartNumber & " --> incorrect")
        myTexte = (prod.PartNumber & " --> incorrect")
    Else
        'MsgBox (prod.PartNumber & " nom OK")
        'UserForm1.ListBox2.AddItem (prod.PartNumber & " --> correct")
        myTexte = (prod.PartNumber & " --> correct")
    End If
    
    Dim mPart
    Set mPart = prod.ReferenceProduct.Parent.Part
    Dim mBody As Body
    Set mBody = mPart.MainBody
        If mBody.HybridShapes Is Nothing Then
            'il n'y a pas d'elements hybrides dans le corps principal
            UserForm1.ListBox2.AddItem (myTexte & " -- pas hybride")
            'MsgBox "Ce part n'est pas en conception hybride", vbInformation
        Else
            'Il peut y avoir des éléments hybrides dans le corps principal
            'MsgBox "Ce part est en conception hybride", vbCritical
            UserForm1.ListBox2.AddItem (myTexte & " -- hybride")
        End If
End If
avatar
lumpazepfel
actif
actif

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

Revenir en haut Aller en bas

R?solu Re: différence composant produit

Message par quentinc le Jeu 21 Juil 2016 - 0:29

merci
petite question
je viens de lancer le programme sur un autre pc et j'obtiens une erreur comme quoi j'ai pas de sub catmain(),
quelqu'un a une astuce pour que le logiciel le reprenne en compte?

quentinc
actif
actif

Messages : 33
Date d'inscription : 07/06/2016
Localisation : saint quentin en yveline

Revenir en haut Aller en bas

R?solu Re: différence composant produit

Message par Docserta le Jeu 21 Juil 2016 - 0:36

Bonjour,
Il serait judicieux d'ouvrir un nouveau post pour chaque question.

La commande SUB Catmain () doit être en tète de ton code (après les déclaration)

Code:
Option Explicit

Sub CATMain()
.
.
.
End Sub

Mais si cette commande n'est pas dans ton code, celui ci ne peux pas marcher quelque soit la machine.

Je pense que ton problème est ailleurs.
Envois nous le message exact
avatar
Docserta
actif
actif

Messages : 42
Date d'inscription : 10/11/2011
Localisation : Rennes

Revenir en haut Aller en bas

R?solu Re: différence composant produit

Message par quentinc le Jeu 21 Juil 2016 - 1:30

http://i35.servimg.com/u/f35/19/49/81/31/captur17.jpg

pourtant le programme possède bien un catmain et ce lance parfaitement sur mon pc mais pas sur celui de mon camarade, il s'agit toujours du programme plus haut

quentinc
actif
actif

Messages : 33
Date d'inscription : 07/06/2016
Localisation : saint quentin en yveline

Revenir en haut Aller en bas

R?solu Re: différence composant produit

Message par Docserta le Jeu 21 Juil 2016 - 1:57

ha la c'est un problème d'enregistrement de catia dans la base de registre.
Il faut faire un Cnext /regserver de la version de catia que tu veux utiliser.

pour cela ouvre une fenètre DOS en mode administrateur et va dans ton répertoire d'install de catia
puis tape la commande Cnext /regserver -env "non de l'environnement" - direnv "répertoire du fichier environnement"



Mais je persiste à penser que tu devrais ouvrir un nouveau post pour ce problème.
cordialement
avatar
Docserta
actif
actif

Messages : 42
Date d'inscription : 10/11/2011
Localisation : Rennes

Revenir en haut Aller en bas

R?solu Re: différence composant produit

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