différence composant produit
4 participants
Page 1 sur 1
différence composant produit
bonjour
le VBA fait-il la différence entre un produit et un composant?
il me semble que les 2 sont enregistrer en .cartproduct
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 - 9:21, édité 1 fois
quentinc- actif
- Messages : 33
Date d'inscription : 07/06/2016
Localisation : saint quentin en yveline
Re: différence composant produit
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: https://catiav5.forumactif.org/t1468-catpart-et-catproduct#6561
cdt,
raphael
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: https://catiav5.forumactif.org/t1468-catpart-et-catproduct#6561
cdt,
raphael
raphael_59240- actif
- Messages : 127
Date d'inscription : 28/03/2015
Age : 53
Localisation : dunkerque
Re: différence composant produit
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
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
- Messages : 33
Date d'inscription : 07/06/2016
Localisation : saint quentin en yveline
Re: différence composant produit
Bonjour,
C est pas tres clair.
peux tu donner un peu plus d'explication?
Merci
Raphael
C est pas tres clair.
peux tu donner un peu plus d'explication?
Merci
Raphael
raphael_59240- actif
- Messages : 127
Date d'inscription : 28/03/2015
Age : 53
Localisation : dunkerque
Re: différence composant produit
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 :
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
lumpazepfel- Fédérateur
- Messages : 319
Date d'inscription : 02/11/2015
Localisation : Ensisheim
Re: différence composant produit
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
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
- Messages : 33
Date d'inscription : 07/06/2016
Localisation : saint quentin en yveline
Re: différence composant produit
Bonjour,
tu peux vérifier si le corps principal contient un objet hybridshape.
Cordialement
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
Docserta- actif
- Messages : 47
Date d'inscription : 09/11/2011
Localisation : Rennes
Re: différence composant produit
bonjour,
merci pour ton aide mais quand il s'agit du hybride la valeur reste sur 0
merci pour ton aide mais quand il s'agit du hybride la valeur reste sur 0
quentinc- actif
- Messages : 33
Date d'inscription : 07/06/2016
Localisation : saint quentin en yveline
Re: différence composant produit
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.
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.
Docserta- actif
- Messages : 47
Date d'inscription : 09/11/2011
Localisation : Rennes
Re: différence composant produit
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.
merci d'avance
- 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
- Messages : 33
Date d'inscription : 07/06/2016
Localisation : saint quentin en yveline
Re: différence composant produit
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.
tu verra que le message n'est pas le même
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
Docserta- actif
- Messages : 47
Date d'inscription : 09/11/2011
Localisation : Rennes
Re: différence composant produit
merci
j'obtiens bien ce que tu ma expliqué
https://i.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
https://i.servimg.com/u/f35/19/49/81/31/captur14.jpg
je pense que sa viens de la
https://i.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
j'obtiens bien ce que tu ma expliqué
https://i.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
https://i.servimg.com/u/f35/19/49/81/31/captur14.jpg
je pense que sa viens de la
https://i.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
- Messages : 33
Date d'inscription : 07/06/2016
Localisation : saint quentin en yveline
Re: différence composant produit
je pense avoir trouvé avec :
Set mPart = prod.ReferenceProduct.Parent.Part
Set mPart = prod.ReferenceProduct.Parent.Part
quentinc- actif
- Messages : 33
Date d'inscription : 07/06/2016
Localisation : saint quentin en yveline
Re: différence composant produit
Salut Quentin,
Oui ta syntaxe est juste.
Tu as été plus rapide
Alors j'ai apporté une petite modif pour mettre les 2 informations (contrôle du nom et Hybride) sur la même ligne:
Oui ta syntaxe est juste.
Tu as été plus rapide
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
lumpazepfel- Fédérateur
- Messages : 319
Date d'inscription : 02/11/2015
Localisation : Ensisheim
Re: différence composant produit
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?
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
- Messages : 33
Date d'inscription : 07/06/2016
Localisation : saint quentin en yveline
Re: différence composant produit
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)
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
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
Docserta- actif
- Messages : 47
Date d'inscription : 09/11/2011
Localisation : Rennes
Re: différence composant produit
https://i.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
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
- Messages : 33
Date d'inscription : 07/06/2016
Localisation : saint quentin en yveline
Re: différence composant produit
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
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
Docserta- actif
- Messages : 47
Date d'inscription : 09/11/2011
Localisation : Rennes
Sujets similaires
» Vérifier l'état d'activation d'un élément (Composant, Product ou Part...)
» Réorganisation d'un composant
» Activer un produit partageable via macro
» Sélectionner le point centre d'un composant
» Detecter le Niveau Actif (CATProduct/Composant/CATPart)
» Réorganisation d'un composant
» Activer un produit partageable via macro
» Sélectionner le point centre d'un composant
» Detecter le Niveau Actif (CATProduct/Composant/CATPart)
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum