Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1367 connectés 

 


 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  220  221  222  ..  233  234  235  236  237  238
Auteur Sujet :

[Support] Catia : trucs, astuces, conseils, aide

n°1166838
Guss_
Posté le 30-04-2014 à 16:08:01  profilanswer
 

Reprise du message précédent :

NeoSyriuS a écrit :

je vais tenter ca, alors. voila qui devrait me permettre donc d'effectuer une recherche d'un CGR parmis la liste d'un product.

 

et pour naviguer dans l'arborescence des produit, tu fais comment ?

 

Regarde la fenêtre de débuggage "Locals" par exmeple
http://hfr-rehost.dev.syn.fr/previ [...] 604091.png

 

regarde comment est constitué un produit en gros chaque part est un Item contenu dans de document acit => product => products => listes des items

   
ptittom a écrit :

 

Il y a une option pour que CATIA ne rajoute pas ce Copy of systématiquement... Si elle est active, ton code ne marchera pas.
(Tools > Options > Part Infrastructure > Display > Checking Operation When Renaming ).

 


Quand il y a "Copy of" c'est que c'est le résultat d'une copie sans lien et créé une nouvelle pièce, une copie avec lien créé simplement une instance de la pièces existante

 

(on peut y accéder via le menu édition => copie spéciale ...

 
arno894 a écrit :

Le regroupement des contraintes se fait par CATIA.Startcommand("Regrouper dans un nouveau groupe" ) ce qui déja peut surprendre
Par défaut mon groupe de contrainte est nommé Définir.1 Mais je n'ai aucune idée de comment aller chercher l'objet regroupant les contraintes pour modifier son nom. Je débute niveau macro donc je risque de t'embêter un peu.
Merci

 

Cherche à avec la fonction "selection" puis "search" et cherche l'élément qui s'appelle "Définir.1" ou alors parcourt l'arborescence un peu comme j'ai montré à NeoSyriuS


Message édité par Guss_ le 30-04-2014 à 16:57:27
mood
Publicité
Posté le 30-04-2014 à 16:08:01  profilanswer
 

n°1166881
arno894
Posté le 01-05-2014 à 23:37:42  profilanswer
 

J'arrive à sélectionner le groupe de contrainte mais je vois pas le moyen de l'afficher dans un msgbox ni de le renommer.
Voici mon code, surement une erreur de débutant encore..
Sub CATMain()
 
Set productDocument1 = CATIA.ActiveDocument
 
Set selection1 = productDocument1.Selection
selection1.clear
selection1.Search "NameInGraph='Définir.1',all"
 
Dim NbGroupContraint as long
NbGroupContraint = selection1.Count
msgbox NbGroupContraint
 
For i=1 to NbGroupContraint
Set result = selection1.item(i).name  'je n'arrive pas à obtenir Définir.1 ici
msgbox result
Next
 
End Sub
 
Si tu as une idée. Merci Guss

n°1166885
ptittom
Posté le 02-05-2014 à 08:35:32  profilanswer
 

arno894 a écrit :


Set result = selection1.item(i).name  'je n'arrive pas à obtenir Définir.1 ici


 
Bonjour,
 
Pour obtenir les objets présents dans une sélection: selection1.item(1).Value.Name
Sans le .Value, CATIA donnes des choses bizarres ("selectedelement1" de mémoire).
 
Je viens de tester, il n'est apparement pas possible de communiquer en VBA avec les objets de type groupe de contrainte. On peut les selectioner comme tu le fais dans ta macro, mais VBA considère qu'il s'agit du produit parent. Il y a quelques objets comme ca (le noeud Axis Systems par exemple). Après vérification dans l'aide (V5automation), il n'y a pas de méthode ou d'objet VBA pour les groupe de contraintes.


Message édité par ptittom le 02-05-2014 à 08:52:06
n°1166938
arno894
Posté le 05-05-2014 à 10:58:10  profilanswer
 

Bonjour et merci pour vos réponses.
Une petite nouvelle pour aujourd'hui, est il possible de réorganiser l'arbre par macro. Je cherche à réordonner Part et/ou Product. Je vois pas autre chose que de faire un couper coller mais je perds les contraintes.
Je suis peut être dans le même cas que les groupes de contraintes

n°1166961
ptittom
Posté le 06-05-2014 à 16:56:38  profilanswer
 

arno894 a écrit :

Bonjour et merci pour vos réponses.
Une petite nouvelle pour aujourd'hui, est il possible de réorganiser l'arbre par macro. Je cherche à réordonner Part et/ou Product. Je vois pas autre chose que de faire un couper coller mais je perds les contraintes.
Je suis peut être dans le même cas que les groupes de contraintes


 
Bonjour,
 
De mémoire, il n'y a pas de fonction en VBA pour lire ou (pour lire l'ordre, on peut passer par la méthode .item ) modifier l'ordre des composants dans un produit. L'objet products n'a pas des masses de méthodes.
Il faut passer par le CAA pour faire ce proprement.


Message édité par ptittom le 06-05-2014 à 16:57:53
n°1166983
woodix89
Posté le 07-05-2014 à 12:31:08  profilanswer
 

Bonjour à tous,
 
Voilà j'ai un petit soucis avec le module Drafting de Catia V5. J'ai fais un montage avec des roulements, que je souhaite mettre en plan, mais je souhaiterais avoir la représentation normalisée des roulements (carré blanc avec croix, etc...).
Est-ce possible ?
 
Merci d'avance !

n°1167046
clem200
Posté le 12-05-2014 à 09:45:08  profilanswer
 

Bonjour,  
 
A ma connaissance non. Catia montre réellement les pièces, il ne sait pas que c'est un roulement lui !  
 
Si votre roulement est bien dessiné (avec les billes) peut être qu'une jolie section suffira non ? On reconnaitra bien le roulement.

n°1167047
clem200
Posté le 12-05-2014 à 10:45:00  profilanswer
 

Bonjour,  
 
J'aurai besoin d'un petit coup de main en VBA.  
 
Je cherche à comparer un code présent dans mon arbre avec une liste de code que je possède. Pour le moment j'ai codé de manière à afficher le code en question (rectangle rouge) :  
 
http://img4.hostingpics.net/pics/916371VBAquestion.png
 
Maintenant ce que je veux c'est comparer par rapport à ma liste donc. Comme feriez vous pour intégrer cette liste ?  
 
Je ne peux pas m'inspirer de Excel car sur excel il suffit de mettre sa liste dans une colonne et de faire un "range" pour la chercher. Il faut passer par un stockage dans une structure ou par une collection ? Je n'ai pas l'impression que les 2 correspondent à ce que je veux.  
 
Merci d'avance.


Message édité par clem200 le 12-05-2014 à 13:50:01
n°1167048
Guss_
Posté le 12-05-2014 à 13:12:36  profilanswer
 

Il y a peut être moyen de faire un oPart.PArameters.count qui te renvoie de nombre d'item
Ensuite tu fait une boucle qui va de 1 au nombre d'item compter
Dans cette boucle du fait une comparaison entre
oPart.Parameters.Item(x).value et ce que tu veux comparer, avec x la valeur de la boucle.

n°1167056
ptittom
Posté le 13-05-2014 à 09:59:45  profilanswer
 

Bonjour,
 
Je ne connais pas non plus de méthode proposant une telle recherche de manière automatique.
Je te propose 2 possibilités:

  • Il est assez simple de démarrer Excel à partir de CATIA

   Tu lis la valeur de ton paramètre comme tu le fais dans le code précédent
   Tu démarres Excel et ouvre ta liste pour comparaison.
   Tu cherches la valeur lue dans CATIA dans ta liste.

  • En passant par un fichier Texte (ou XML)

   Tu lis la valeur dans CATIA
   Tu ouvres le fichier texte
   Tu fais une boucle For ou While qui compare la valeur lue à chaque ligne de ton ficher texte.
 
La première méthode a l'avantage d'utiliser un document Excel pour lister les codes existants. C'est donc assez facile à éditer. Sinon je passe souvent par des document XML comme configuration pour mes macros.
 
Un Exemple pour démarrer Excel dans une macro VBA. J'utilise systématiquement le Late Binding (pas de Library Excel et déclaration avec CreateObject("Excel.Application" )) pour être indépendant de la version d'excel installée sur la machine.

Code :
  1. Dim xlApp 'As Excel.Application
  2. Dim xlBook 'As Excel.Workbook 
  3. Dim xlSheet 'As Excel.Worksheet
  4.    
  5. 'Start Excel
  6.     On Error Resume Next
  7.         Set xlApp = CreateObject("Excel.Application" )
  8.         If Err.Number <> 0 Then
  9.             MsgBox("Excel could not be started" )
  10.   Exit Function
  11.         End If
  12.     On Error GoTo 0
  13.     xlApp.Visible = True
  14. 'open Excel Document
  15.     Set xlBook = xlApp.Workbooks.Open("c:\Temp\MyExcel.xls", , True)
  16.     Set xlSheet = xlBook.Sheets.Item("MySheet" )
  17. '### Excel Operations ###
  18. 'Close Excel Document
  19. xlBook.Close SaveChanges:=False 'without saving
  20. 'Close Excel
  21. xlApp.Quit


Message édité par ptittom le 14-05-2014 à 21:23:39
mood
Publicité
Posté le 13-05-2014 à 09:59:45  profilanswer
 

n°1167082
clem200
Posté le 14-05-2014 à 13:56:23  profilanswer
 

Merci pour vos réponses.  
 
Je vais essayer la 1ère méthode de ptittom en passant par l'Excel. Merci pour le code, ça marche très bien. :)
 
Cependant, vu que les objets Excel ne fonctionnent pas sous CATIA je ne peux pas faire un "range" pour lui dire que ma liste est dans la colonne A.  
Par quoi puis je le remplacer ? J'ai regardé dans le fichier CAA V5 et essayé iCol = A mais il comprends pas ...
 
Merci d'avance.


Message édité par clem200 le 14-05-2014 à 14:02:02
n°1167085
Guss_
Posté le 14-05-2014 à 14:22:39  profilanswer
 

Si ils peuvent fonctionner il suffit de définir l'objet Excel et d'ajouter Excel dans les références (outils -> références dans vba catia et cocher tout ce qui est en rapporta avec excel)
 

n°1167086
ptittom
Posté le 14-05-2014 à 16:41:28  profilanswer
 

Guss_ a écrit :

Si ils peuvent fonctionner il suffit de définir l'objet Excel et d'ajouter Excel dans les références (outils -> références dans vba catia et cocher tout ce qui est en rapporta avec excel)
 


 
C'est le meilleur moyen d'avoir des soucis de compatibilités. Si les utilisateurs de la macro ont une version plus ancienne d'excel que toi, ton VBA ne fonctionnera pas. C'est pour cela que je ne déclare pas explicitement mes objets dans le code précédents (Late Binding, au contraire de ton approche early binding).
 
Les objets Excel devraient fonctionner normalement. L'environement ne propose pas les méthodes VBA des objets Excel quand tu tapes ton code mais elles sont là.
Remarque: il se peut que les constantes spécifiques à Excel (qui commencent par "xl" ) ne soient pas reconnue, il faut les remplacer par leur valeur (on trouve cela via google). Exemple: 4 pour xlThick, 2 pour xlThin.
 


Message édité par ptittom le 14-05-2014 à 16:53:35
n°1167087
Guss_
Posté le 14-05-2014 à 17:10:27  profilanswer
 

Je ne suis pas un pro de la programmation mais d'après ce que je lis le late Binding ou le early Binding c'est une subtilité de comment déclarer l'application Ecxel dans l'exemple.

 

Ma remarque était "générale".
Je voulais dire qu'ont peut très bien piloter Excel à partir du VBA Catia, il suffit pour cela de définir l'objet "Excel" dans le code de la macro pour pouvoir piloter Excel

 

Ensuite dans l'environnement vba catia il me semble qu'il faut tout de même qu'il faille ajouter les billiothèque Excel dans "outils -> référence" sinon lors du lancement de la macro ça peut ne pas passer (mais je n'en suis pas sur) et c'est plus aisé à coder lorsque l'environnement sait te dire si tu à peut être fait une erreur ;) (surtout lorsqu'on début)

 

Perso lorsque je définis l'objet Excel pour le piloter depuis le VBA catia j'utilise ça

Code :
  1. '---- initialisation excel
  2.     On Error Resume Next
  3.     Set Excel = GetObject(, "Excel.Application" )
  4.     If Err.Number <> 0 Then
  5.         Set Excel = CreateObject("Excel.Application" )
  6.     End If
  7.     On Error GoTo 0
  8.     Excel.Visible = True
 

Si Excel est ouvert ça le défini comme objet.
S'il n'est pas ouvert (donc erreur en tentant de définir l'objet en cherchant un Excel ouvert) ça lance Excel

Message cité 1 fois
Message édité par Guss_ le 14-05-2014 à 17:13:47
n°1167089
ptittom
Posté le 14-05-2014 à 21:21:19  profilanswer
 

Guss_ a écrit :

Je ne suis pas un pro de la programmation mais d'après ce que je lis le late Binding ou le early Binding c'est une subtilité de comment déclarer l'application Ecxel dans l'exemple.


Effectivement, ca ne change pas grand chose. Je peux juste dire que j'ai eu des soucis chez mon client actuel avec Excel... Il y des versions 2003, 2007 et 2010. C'est le bazar si on ne programme pas avec la version la plus ancienne.

Citation :


Ma remarque était "générale".
Je voulais dire qu'ont peut très bien piloter Excel à partir du VBA Catia, il suffit pour cela de définir l'objet "Excel" dans le code de la macro pour pouvoir piloter Excel


Encore une fois, c'est exact.

Citation :


Ensuite dans l'environnement vba catia il me semble qu'il faut tout de même qu'il faille ajouter les billiothèque Excel dans "outils -> référence" sinon lors du lancement de la macro ça peut ne pas passer (mais je n'en suis pas sur) et c'est plus aisé à coder lorsque l'environnement sait te dire si tu à peut être fait une erreur ;) (surtout lorsqu'on début)
 
Perso lorsque je définis l'objet Excel pour le piloter depuis le VBA catia j'utilise ça  

Code :
  1. ...


 
Si Excel est ouvert ça le défini comme objet.
S'il n'est pas ouvert (donc erreur en tentant de définir l'objet en cherchant un Excel ouvert) ça lance Excel


 
Early binding: on ajoute effectivmeent les bibliothèques. VBA ne cherche pas à comprendre et les utilise.
Late binding: on n'ajoute pas les bibliothèques et VBA fait avec ce qu'il trouve. Ca marche bien pour Excel.
 
Si je peux me permettre, j'ajouterais un Err.Clear dans ta condition "If Err.Number..." Sinon tu risques plus tard dans ta macro de voir une erreur alors que tout marche bien.


Message édité par ptittom le 14-05-2014 à 21:22:30
n°1167090
Guss_
Posté le 14-05-2014 à 21:51:24  profilanswer
 

Ok merci des renseignement, je comprends mieux en effet la différence entre Early et Late, c'est logique, tant que la compatibilité entre les version se fait de l'ancienne à la nouvelle.
 
Merci pour le Err.Clear, j'y penserais.
 
 
Mais tu as l'air pas mal calé sur le sujet, fait tu des macros sous catia ?
 
J'ai un soucis que personne n'arrive à comprendre ni même résoudre, sur mon poste et celui de mes collègue depuis les dernière révision de Catia (V5R21) nous somme tous revenu avec du VBA 6.0, alors qu'en V5R19 nous étions en VBA 6.5
 
Et ça cause beaucoup de problèmes de compatibilité entre les fichiers de macro écrit en 6.5 et ceux que j'ai pu écrire en 6.0 (avant que je me rende compte qu'on avait downgradé ...)
 
Depuis je ne peux me permettre de développer d'autre macro tant qu'on ne sera pas repassé en 6.5
 
La hotline, un jour dit un truc l'autre jour le contraire et un autre jour encore autre chose ...
Nous avons essayé beaucoup de chose pour repassé en 6.5 mais rien n'y fait ... d'autant que la 6.0 est bien buggué et très peu pratique à utilisée (version de 1999 ... le scrolling à la molette de souris n'est même pas supportée )
 

n°1167092
clem200
Posté le 15-05-2014 à 08:45:47  profilanswer
 

Merci de votre aide !  
 
Étrange, au boulot je suis en VR19 et pourtant en VBA 6.0
 
Mon code marche bien :)  

Code :
  1. Sub CATMain()
  2.     'chercher le code dans l'arbre catia
  3. Dim oPart As Part
  4. Set oPart = CATIA.ActiveDocument.Part
  5. Dim code_a_chercher As String
  6. code_a_chercher = oPart.Parameters.Item(oPart.name & "\Information(s)\MABEC_CODE" ).Value
  7. Dim xlApp 'As Excel.Application
  8. Dim xlBook 'As Excel.Workbook
  9. Dim xlSheet 'As Excel.Worksheet
  10.  
  11.     'Start Excel
  12.    
  13.     On Error Resume Next
  14.         Set xlApp = CreateObject("Excel.Application" )
  15.         If Err.Number <> 0 Then
  16.             MsgBox ("Excel could not be started" )
  17.   Exit Sub
  18.         End If
  19.     On Error GoTo 0
  20.     xlApp.Visible = True
  21.    
  22.     'open Excel Document
  23.    
  24.     Set xlBook = xlApp.Workbooks.Open("d:\LocalData\a190516\Desktop\traceur\MyExcel", , True)
  25.     Set xlSheet = xlBook.Sheets.Item("MySheet" )
  26.    
  27.     '### Excel Operations ###
  28. Dim CODE_MABEC As Range
  29. Set CODE_MABEC = ActiveSheet.UsedRange.Find(code_a_chercher)
  30. If CODE_MABEC Is Nothing Then
  31.     MsgBox "Code Mabec mauvais"
  32. Else
  33.     MsgBox "Code Mabec bon"
  34.    
  35. End If
  36.     '### Excel Operations ###
  37. 'Close Excel Document
  38. 'xlBook.Close SaveChanges:=False 'without saving
  39. 'Close Excel
  40. xlApp.Quit
  41. End Sub


Je dois juste résoudre 2 problèmes : je ne veux pas que le classeur excel s'affiche à l'écran, c'est inutile pour l'utilisateur, et le programme bug au 2ème lancement à la ligne 34 ("Object variable or With block variable not set" ).

Message cité 1 fois
Message édité par clem200 le 15-05-2014 à 09:43:03
n°1167095
ptittom
Posté le 15-05-2014 à 09:41:51  profilanswer
 

Guss_ a écrit :


Mais tu as l'air pas mal calé sur le sujet, fait tu des macros sous catia ?


Je travaille en Allemagne dans une boite de conseil pour CATIA V5. Je fais surtout des templates (PowerCopy, Document Template, UDF et macros). Je me débrouille pas trop mal dans les workbenches les plus courants (Part Design, GSD, KWA, KIN, SPA, GSO, SMD) et en VBA.
 

Citation :


J'ai un soucis que personne n'arrive à comprendre ni même résoudre, sur mon poste et celui de mes collègue depuis les dernière révision de Catia (V5R21) nous somme tous revenu avec du VBA 6.0, alors qu'en V5R19 nous étions en VBA 6.5


 
Je ne connais que VBA 6.0 pour CATIA... de la R18 à la R22 en tout cas.
J'ai jeté un oeil sur le site d'IBM. Il y a une page concernant un bug avec la marche à suivre pour installer la 6.5 à la fin.
http://www-01.ibm.com/support/docv [...] wg1HD85478

Message cité 1 fois
Message édité par ptittom le 15-05-2014 à 10:08:24
n°1167096
ptittom
Posté le 15-05-2014 à 09:48:49  profilanswer
 

clem200 a écrit :


Je dois juste résoudre 2 problèmes : je ne veux pas que le classeur excel s'affiche à l'écran, c'est inutile pour l'utilisateur, et le programme bug au 2ème lancement à la ligne 34 ("Object variable or With block variable not set" ).


 
1. ligne 23: xlApp.Visible = False
2. Peut être mettre xlBook devant ActiveSheet à la ligne 34. Sinon, commenter le "As Range" de la ligne 32
 
Remarque: Les lignes 12 et 28 ne servent à rien. Tu n'utilise pas l'objet xlSheet dans ton code.

n°1167097
Guss_
Posté le 15-05-2014 à 13:30:43  profilanswer
 

ptittom a écrit :


 
Je ne connais que VBA 6.0 pour CATIA... de la R18 à la R22 en tout cas.
J'ai jeté un oeil sur le site d'IBM. Il y a une page concernant un bug avec la marche à suivre pour installer la 6.5 à la fin.
http://www-01.ibm.com/support/docv [...] wg1HD85478


 
J'ai l'ai lu aussi, mais ça n'upgrade rien du tout ...  :(  
 

n°1167160
clem200
Posté le 19-05-2014 à 09:47:44  profilanswer
 

Bonjours à tous :)  
 
Je suis à la recherche d'une idée.  
 
Voila le problème =>
Je dois trouver une méthode pour vérifier qu'une pièce revenant d'un fournisseur n'a pas été modifié par celui-ci.  
Cette pièce est paramétrable depuis un excel. Le fournisseur peut changer comme il veut de ligne excel mais rien faire d'autre.  
 
Le excel sera transmis en lecture seul avec une protection par mot de passe, donc non modifiable. Mais, si le fournisseur est tétu, rien ne l'empèche de modifier la cote qui ne lui convient pas directement dans le Catia en coupant le lien excel.  
 
J'ai commencé par faire une macro VBA pour vérifier si le corps principale avait été mis à jour. Mais cela ne marche pas car il se met à jour quand on change de ligne excel, ce qui est autorisé.  
 
Su quelqu'un a une idée, je suis preneur. L'idéal étant de bloquer l'arbre de création CATIA mais d'après mes recherches sur internet et en interne de ma boite ce n'est pas possible.
 
Merci d'avance.
 
 


Message édité par clem200 le 19-05-2014 à 13:51:27
n°1167184
ptittom
Posté le 20-05-2014 à 09:13:18  profilanswer
 

Bonjour,

 

Je ne vois que 2 solutions:
- passer par une UDF. C'est normalement prévu pour les templates. Une fois instantiée, c'est une blackbox qui ne peut pas vraiment être modifiée autrement qu'avec les paramètres publiés à cet effet. Pb: il faut la licence PKT pour les créer. Bien sûr, elle coûte un oeil.
- un programme CAA pour comparer la version envoyée et la version recue. Pb: la licence est encore plus chère et il faut un programmeur expérimenté.

 

Alternative: créer une part (un solide isolé et rien d'autre, avec le nom qui va bien. Eventuellement quelques publications) pour chaque configuration de la liste Excel. Le client sélectionne la bonne part et il n'y a pas de paramètres à modifier.

 



Message édité par ptittom le 20-05-2014 à 09:14:26
n°1167186
clem200
Posté le 20-05-2014 à 09:58:52  profilanswer
 

Je dois dire qu'aucunes réponses ne me convient ;) Merci quand même.  
Même la dernière, car j'ai environ 700 pièces en créant 4500 avec les paramètres.  
 
Mais j'ai pensé à une autre alternative =>  Quand on fait un lien entre une cote et un paramètre une formule est créée dans la partie "relation" de l'arbre. Et inversement, quand le lien est coupé la formule disparait. C'est un peu tordu mais j'ai imaginé créer manuellement un paramètre dans l'arbre indiquant le nombre de formule existante. Puis avec un programme VBA je compare le nombre de formule qu'il devrait y avoir (je viens lire mon paramètre quoi) puis je viens compter le nombre de formule effectivement présente (en supposant que c'est possible mais avec une boucle et un compteur je pense que oui) !  
 
Vous en pensez quoi ?


Message édité par clem200 le 20-05-2014 à 12:04:13
n°1167187
ptittom
Posté le 20-05-2014 à 12:02:46  profilanswer
 

Ta solution est réalisable en tout cas.

 

Il "suffit" de compter les relations dans la part. Ca sort toutes les features KWA.

 
Code :
  1. Dim oPart As Part
  2. Set oPart = CATIA.ActiveDocument.Part
  3. Debug.Print oPart.Relations.Count
 

Il faudrait vérifier aussi s'elles sont bien activées. On peut passer par la propriété .Activated de l'objet relation.

 
Code :
  1. Dim I as Integer
  2. For I=1 to oPart.Relations.Count
  3.    Debug.Print oPart.Relations.Item(I).Name & " --> " & oPart.Relations.Item(I).Activated
  4. Next
 

Tu peux donc vérifier 2 choses:
- que le nombre de formules / régles / réaction / check est correct
- que rien n'est déactivé.

 

Pour ton paramètre de référence, tu peux essayer de la cacher un peu en le placant dans une feature et en mettant un lock.


Message édité par ptittom le 20-05-2014 à 12:03:44
n°1167188
clem200
Posté le 20-05-2014 à 12:20:58  profilanswer
 

Super, merci beaucoup ! :)  
 
Seul problème le nombre donné n'est pas juste ... Moi je compte 11 formules/vérifications/réactions ici, pas 9 :  
 
http://img4.hostingpics.net/pics/764186KWA.png
 
PS => Je crois que j'ai compris, il ne prend pas en compte les formules qui commencent par les mêmes appellations "Formula.3" et "Formula.5". Enfin je vois que ça ....


Message édité par clem200 le 20-05-2014 à 12:21:13
n°1167190
ptittom
Posté le 20-05-2014 à 13:08:54  profilanswer
 

Tu peux vérifier en listant les relations trouvées (voir la deuxiÈme partie du code plus haut) Je ne sais pas pourquoi CATIA ne prend pas en compte certaines de tes formules / règles / Check / Réactions (les check ne comptent pas comme relation mais comme paramètres)

 

Sinon, j'ai eu une autre idée si tu souhaite vérifier le contenu des formules. Pourquoi pas utiliser un paramètre de type String et lui donner comme valeur l'ensemble des formule contenue dans la part ?

 

Mon paramètre s'appelle MyFormulas dans ma part:

Code :
  1. Dim oPart As Part
  2.     Set oPart = CATIA.ActiveDocument.Part
  3.    
  4.     Dim sContent As String
  5.     For I = 1 To oPart.Relations.Count
  6.         If TypeName(oPart.Relations.Item(I)) = "Formula" Then
  7.             sContent = sContent + oPart.Relations.Item(I).Value
  8.         End If
  9.     Next
  10.     Debug.Print sContent
  11.    
  12.     Dim oString As StrParam
  13.     Set oString = oPart.Parameters.Item("MyFormulas" )
  14.     oString.Value = sContent
 

Tu peux vérifier plus tard si les relations sont restées les mêmes. En combinant les différentes méthodes, ca permet de réduire sérieusement le risque que la part ait été modifiée à ton insu: nombre de relations, actives ou pas et contenu.

 

Enfin bon, le client retors trouvera toujours un moyen de modifier ton boulot.


Message édité par ptittom le 20-05-2014 à 13:13:54
n°1167213
clem200
Posté le 22-05-2014 à 09:56:07  profilanswer
 

En fait CATIA ne prends pas en compte les réactions, d'ou le chiffre faux. Je ne sais pas pourquoi mais du moment que le sais ce n'est pas grave.  
 
Pour vérifier si ma pièce est d'origine j'ai donc créé un paramètre M1 indiquant le nombre de relation normalement présente. Le code donne ça :  
 

Code :
  1. Sub CATMain()
  2. Dim oPart As Part
  3. Set oPart = CATIA.ActiveDocument.Part
  4. Debug.Print oPart.Relations.Count
  5. Dim part1 As Part
  6. Set part1 = CATIA.ActiveDocument.Part
  7. Dim parameters1 As Parameters
  8. Set parameters1 = part1.Parameters
  9. Dim param As StrParam
  10. Set param = parameters1.Item("M1" )
  11.     If param.Value = oPart.Relations.Count Then
  12.    
  13.         MsgBox "Pièce non modifiée"
  14.    
  15.     Else
  16.    
  17.         MsgBox "Attention, pièce modifiée !"
  18.        
  19.     End If
  20. End Sub


 

Citation :

Sinon, j'ai eu une autre idée si tu souhaite vérifier le contenu des formules. Pourquoi pas utiliser un paramètre de type String et lui donner comme valeur l'ensemble des formule contenue dans la part ?


 
Le code fonctionne bien mais que voulez vous dire par vérifier le contenu des formules ? Vous voulez dire comparer les formules de la pièce reçut avec les formules de ma pièce ?
 

Citation :

En combinant les différentes méthodes, ca permet de réduire sérieusement le risque que la part ait été modifiée à ton insu: nombre de relations, actives ou pas et contenu.
Enfin bon, le client retors trouvera toujours un moyen de modifier ton boulot.


Oui bien sur le client pourra passer outre si il insiste vraiment. Mais bon l'idée est de mettre le plus de vérification possible pour l'emmerd** :) De plus il ne sait pas ce que je vérifie, le temps qu'il comprenne ce à quoi correspond chaque chose dans l'arbre ...  
 
Pour l'instant j'ai 4 macros :  
 
- Vérification de la présence d'une esquisse portant le nom de ma boite  
- Vérification de la présence du nom de ma boite dans la descrption de la pièce  
- Vérification d'un code inscrit dans un paramètre de l'arbre (comparaison avec une liste dans un tableau Excel)  
- Vérification de non modification de la pièce par le système de comptage de formules
 
Me reste à vérifier que l'excel n'a pas été mis à jour (j'ai pu faire une vérification pour ça mais impossible de "lire" le résultat de cette verif par VBA pour le moment) donc pas modifié.  
 
L'étape finale sera de tout réunir dans une seule et unique macro faisant tou à la suite et compréhensible pour les collègues n'y connaissant rien en CATIA ...  
 
Pas facile pour un débutant ;)

Message cité 1 fois
Message édité par clem200 le 22-05-2014 à 11:03:19
n°1167219
ptittom
Posté le 22-05-2014 à 14:40:57  profilanswer
 

clem200 a écrit :


 
Le code fonctionne bien mais que voulez vous dire par vérifier le contenu des formules ? Vous voulez dire comparer les formules de la pièce reçut avec les formules de ma pièce ?
 


 
Oui. C'est exactement ça.
 
Sinon, il est assez facile de vérifier si les formules sont bien actives (propriété Activated).

n°1167221
clem200
Posté le 22-05-2014 à 16:08:22  profilanswer
 

Ok, bha je note bien le programme, peut être que je m'en servirai mais pour le moment non, trop long à mettre en place.  
 
Dite j'ai encore une question (oui je suis chiant ;) ).  
A cause des macros de vérifications décrites au dessus je vais devoir rajouter plein de choses à mes pièces. Et comme j'en ai 780 je ne vais pas le faire manuellement ...
Rajouter la description c'est bon, c'est l'esquisse qui me pose problème car tous mes "Corps principal" ne se nomme pas de la même façon. Et je ne sais pas intégrer une esquisse avec un nom qui change.  
 
Un enregistrement me donne ça pour créer une esquisse avec un point :  
 

Code :
  1. im partDocument1 As PartDocument
  2. Set partDocument1 = CATIA.ActiveDocument
  3. Dim part1 As Part
  4. Set part1 = partDocument1.Part
  5. Dim bodies1 As Bodies
  6. Set bodies1 = part1.Bodies
  7. Dim body1 As Body
  8. Set body1 = bodies1.Item("Nom du corps principal de la pièce" )
  9. Dim sketches1 As Sketches
  10. Set sketches1 = body1.Sketches
  11. Dim originElements1 As OriginElements
  12. Set originElements1 = part1.OriginElements
  13. Dim reference1 As Reference
  14. Set reference1 = originElements1.PlaneXY
  15. Dim sketch1 As Sketch
  16. Set sketch1 = sketches1.Add(reference1)
  17. Dim arrayOfVariantOfDouble1(8)
  18. arrayOfVariantOfDouble1(0) = 0#
  19. arrayOfVariantOfDouble1(1) = 0#
  20. arrayOfVariantOfDouble1(2) = 0#
  21. arrayOfVariantOfDouble1(3) = 1#
  22. arrayOfVariantOfDouble1(4) = 0#
  23. arrayOfVariantOfDouble1(5) = 0#
  24. arrayOfVariantOfDouble1(6) = 0#
  25. arrayOfVariantOfDouble1(7) = 1#
  26. arrayOfVariantOfDouble1(8) = 0#
  27. Set sketch1Variant = sketch1
  28. sketch1Variant.SetAbsoluteAxisData arrayOfVariantOfDouble1
  29. part1.InWorkObject = sketch1
  30. Dim factory2D1 As Factory2D
  31. Set factory2D1 = sketch1.OpenEdition()
  32. Dim geometricElements1 As GeometricElements
  33. Set geometricElements1 = sketch1.GeometricElements
  34. Dim axis2D1 As Axis2D
  35. Set axis2D1 = geometricElements1.Item("Repère" )
  36. Dim line2D1 As Line2D
  37. Set line2D1 = axis2D1.GetItem("Axe horizontal" )
  38. line2D1.ReportName = 1
  39. Dim line2D2 As Line2D
  40. Set line2D2 = axis2D1.GetItem("Axe vertical" )
  41. line2D2.ReportName = 2
  42. Dim point2D1 As Point2D
  43. Set point2D1 = factory2D1.CreatePoint(0#, 0#)
  44. point2D1.ReportName = 3
  45. Dim constraints1 As Constraints
  46. Set constraints1 = sketch1.Constraints
  47. Dim reference2 As Reference
  48. Set reference2 = part1.CreateReferenceFromObject(point2D1)
  49. Dim point2D2 As Point2D
  50. Set point2D2 = axis2D1.GetItem("Origine" )
  51. Dim reference3 As Reference
  52. Set reference3 = part1.CreateReferenceFromObject(point2D2)
  53. Dim constraint1 As Constraint
  54. Set constraint1 = constraints1.AddBiEltCst(catCstTypeOn, reference2, reference3)
  55. constraint1.Mode = catCstModeDrivingDimension
  56. sketch1.CloseEdition
  57. part1.InWorkObject = body1
  58. part1.Update

n°1167251
dante 130-​77
Posté le 24-05-2014 à 10:45:36  profilanswer
 

Je suis à court d'idée donc je poste ca ici^^.  
Je réalise une ligne de presse sous catia (pour l'instant deux presses et un robot entre les deux). Je peux simuler  les actions sans problèmes sous dmu kinematik. Mais je n'arrive pas a faire la séquence souhaité : impossible de faire des actions simultanée. Par exemple je n'arrive pas a faire bouger les deux presses en même temps.
Autre problème, une fois qu'une action est terminée, la pièce revient en position initiale et ne reste pas dans la position de la fin de l'action.
 
Si quelqu'un est fort en simulation j'ai vraiment besoin d'un coup de main^^. Merci

n°1167263
lekinefrel​ate
Posté le 25-05-2014 à 20:44:41  profilanswer
 

Bonjour,
 
je suis débutant en CATIA et j'ai réalisé un modèle géométrique de fourche de moto type DUOLEVER pour en étudier la cinématique.
Maintenant je souhaiterais en faire une analyse statique pour avoir les efforts dans les liaisons afin de les dimensionner.
J'ai essayé de produire un modèle filaire basé sur la géométrie de mon modèle cinématique avec l'outil generative shape design pour ensuite simuler avec generative structural analysis.
 
Vous trouverez ci dessous les fichiers CATIA relatifs à mon étude :
modèle cinématique - https://drive.google.com/file/d/0B2 [...] sp=sharing
modèle filaire - https://drive.google.com/file/d/0B2 [...] sp=sharing
analyse - https://drive.google.com/file/d/0B2 [...] sp=sharing
 
Seulement quand j'essaie de simuler j'ai une erreur me disant que j'ai une "singularité dans la rotation (pivot trop petit)" au moment du calcul de la "matrice factorisée". J'ai essayé de jouer sur la taille de maillage et ça ne change rien.
Au niveau des connexions je ne vois pas où est le soucis, j'ai mis les liaisons rotules entre les triangles et la fourche et les pivots entre les triangles et le cadre.
 
Ensuite, je compte placer des capteurs pour relever au niveau des connexions les efforts.
 
 
Merci par avance. Adrien.


Message édité par lekinefrelate le 25-05-2014 à 20:45:20
n°1167274
ptittom
Posté le 26-05-2014 à 12:49:06  profilanswer
 

clem200 a écrit :

Ok, bha je note bien le programme, peut être que je m'en servirai mais pour le moment non, trop long à mettre en place.

 

Dite j'ai encore une question (oui je suis chiant ;) ).
A cause des macros de vérifications décrites au dessus je vais devoir rajouter plein de choses à mes pièces. Et comme j'en ai 780 je ne vais pas le faire manuellement ...
Rajouter la description c'est bon, c'est l'esquisse qui me pose problème car tous mes "Corps principal" ne se nomme pas de la même façon. Et je ne sais pas intégrer une esquisse avec un nom qui change.

 

Un enregistrement me donne ça pour créer une esquisse avec un point :

 


 

Bonjour,

 

Le corps principal est un objet particulier placé directement sous l'objet part (voir la ligne 7 ci dessous).
Voici un code pour créer une esquisse dans le partbody, quelque soit son nom.

Code :
  1. Dim oPart As Part
  2. Dim oBody As Body
  3. Dim oRefPlane As Plane
  4. Set oPart = CATIA.ActiveDocument.Part
  5. Set oBody = oPart.MainBody
  6. Set oRefPlane = oPart.OriginElements.PlaneXY
  7. Dim oSketch As Sketch
  8. Set oSketch = oBody.Sketches.Add(oRefPlane)
  9. oSketch.Name = "Je sketch donc je suis"
  10. oPart.Update


Message édité par ptittom le 26-05-2014 à 12:50:58
n°1167275
ptittom
Posté le 26-05-2014 à 12:53:43  profilanswer
 

dante 130-77 a écrit :

Je suis à court d'idée donc je poste ca ici^^.  
Je réalise une ligne de presse sous catia (pour l'instant deux presses et un robot entre les deux). Je peux simuler  les actions sans problèmes sous dmu kinematik. Mais je n'arrive pas a faire la séquence souhaité : impossible de faire des actions simultanée. Par exemple je n'arrive pas a faire bouger les deux presses en même temps.
Autre problème, une fois qu'une action est terminée, la pièce revient en position initiale et ne reste pas dans la position de la fin de l'action.
 
Si quelqu'un est fort en simulation j'ai vraiment besoin d'un coup de main^^. Merci


 
Bonjour,
 
Soit A et B tes paramétres commandant les déplacements. Pour déplacer A et B ensemble, tu peut peut être créer une formule pour b en fonction de A. ensuite, tu commande A dans ta cinématique. B devrait suivre.

n°1167276
Fla5h
Posté le 26-05-2014 à 14:20:46  profilanswer
 

Bonjour tlm,
 
Je suis nouveau sur la section Catia, et j'ai besoin de votre aide.
Après 1 an d'inactivité sur Catia, j'ai décidé de me lancer dans un petit exo de surfacique en me servant de ce que j'ai appris sur Solidwtrks (Sur Catia je ne connaissais que le volumique).
J'ai rencontré de nbreux prblmes, mais j'ai tjrs su trouver une alternative. Mais là, alors que j'ai presque fini, je bloque. J'ai ce message d'erreur lorsque je tente de faire un enlèvement balayé (rainure):
 
http://img4.hostingpics.net/pics/8116377103.jpg
 
Voila 2 images de mon profils et ma trajectoire:
 
http://img4.hostingpics.net/pics/4245734002.jpg
http://img4.hostingpics.net/pics/9210411901.jpg
 
Dites moi ce que vous en pensez SVP!
 
Ah oui, je me demande s'il est possible d'empêcher la fusion de 2 entités (l'équivalent sur SldWrks c'est quand on décoche "la fusion des résultats" ), pour avoir 2 corps distincts sans être forcé d'insérer un nouveau corps?


Message édité par Fla5h le 26-05-2014 à 19:15:37
n°1167336
tintin33
Si vis pacem para bellum
Posté le 29-05-2014 à 21:31:24  profilanswer
 

Ce n'est pas forcement le meilleur topic mais j'ai un test sur Catia V5 dans une semaine.
Quelqu'un à déjà passé ce genre de test ?

n°1167378
Guss_
Posté le 02-06-2014 à 13:01:30  profilanswer
 

dante 130-77 a écrit :

Je suis à court d'idée donc je poste ca ici^^.  
Je réalise une ligne de presse sous catia (pour l'instant deux presses et un robot entre les deux). Je peux simuler  les actions sans problèmes sous dmu kinematik. Mais je n'arrive pas a faire la séquence souhaité : impossible de faire des actions simultanée. Par exemple je n'arrive pas a faire bouger les deux presses en même temps.
Autre problème, une fois qu'une action est terminée, la pièce revient en position initiale et ne reste pas dans la position de la fin de l'action.
 
Si quelqu'un est fort en simulation j'ai vraiment besoin d'un coup de main^^. Merci


 
Je crois me souvenir que j'ai déjà rencontré ce genre de soucis, il faut bien créé toutes tes séquences dans l'ordre de lecteur finale, sinon il y a des soucis de positionnements.
 
C'est assez capricieux dès qu'il y a beaucoup d'éléments qui bougent, je sais que ça prend beaucoup de temps à mettre en place et que pour un petit détail à modifier au milieu de ton scénario parfois il faut pratiquement tout recommencer.

n°1167465
alexv17
Posté le 05-06-2014 à 16:44:43  profilanswer
 

Bonjour à tous,
Je suis tout nouveau sur ce forum et je vient pour avoir quelques astuce sur catia.
 
Alors voila mon problème, j'ai réalisé un moteur et je suis en train de mettre en place la simulation dans DMU kinematics sauf que je butte sur la liaison entre l'arbre à came et le culbuteur, j'ai mis une liaison courbe glissante mais le culbuteur traverse la cames, voyez la video ci dessous:
 
(infos: le culbuteur et l'arbre a came sont en pivot sur le bati et l'arbre a came est commandé en engrenage a distance avec le vilo.)
 
https://mega.co.nz/#!ZhhVxDTT!8RA-S [...] _cHGuR4iwE

n°1167474
arno894
Posté le 05-06-2014 à 21:02:11  profilanswer
 

Bonjour
Je cherche par macro à récupérer le nom des elements geometriques (plan, point etc) sur lesquelles s 'appuie une contrainte. Si quelqu'un a une idée...Merci pour ce forum bien utile au quotidien

n°1167503
alexv17
Posté le 09-06-2014 à 10:24:21  profilanswer
 

alexv17 a écrit :

Bonjour à tous,
Je suis tout nouveau sur ce forum et je vient pour avoir quelques astuce sur catia.
 
Alors voila mon problème, j'ai réalisé un moteur et je suis en train de mettre en place la simulation dans DMU kinematics sauf que je butte sur la liaison entre l'arbre à came et le culbuteur, j'ai mis une liaison courbe glissante mais le culbuteur traverse la cames, voyez la video ci dessous:
 
(infos: le culbuteur et l'arbre a came sont en pivot sur le bati et l'arbre a came est commandé en engrenage a distance avec le vilo.)
 
https://mega.co.nz/#!ZhhVxDTT!8RA-S [...] _cHGuR4iwE


 
 
Personne pour m'aider? :??:

n°1167510
Guss_
Posté le 10-06-2014 à 10:31:16  profilanswer
 

alexv17 a écrit :


 
 
Personne pour m'aider? :??:


 
met une copie d'écran ou met ta vidéo sur un site dédié, perso elle ne marche pas sur ma machine.

n°1167531
arno894
Posté le 11-06-2014 à 11:08:20  profilanswer
 

arno894 a écrit :

Bonjour
Je cherche par macro à récupérer le nom des elements geometriques (plan, point etc) sur lesquelles s 'appuie une contrainte. Si quelqu'un a une idée...Merci pour ce forum bien utile au quotidien


Personne n'a eu d'idée car je sèche tjrs sur ce pb...

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  220  221  222  ..  233  234  235  236  237  238

Aller à :
Ajouter une réponse
 

Sujets relatifs
Transfert de donnees 3D texturees entre Catia et 3DSMAX6[Blender] Besoin d'aide !
De l'aide sur une Recherche..:: Topic des Publivores ::..
[Toshop] Besoin d'aide pour faire un dégradéCatia - Commande pour masquer tous les plans?!!!
Conseils / remarques sur ma maquette (site geo expert)topic unique de l' acréatique-chronique
[REGLE][FLASH]Demande de conseils 
Plus de sujets relatifs à : [Support] Catia : trucs, astuces, conseils, aide


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR