Aller au contenu

mooneck

Membres
  • Compteur de contenus

    225
  • Inscription

  • Dernière visite

Tout ce qui a été posté par mooneck

  1. Salut Ou alors un PDM comme (Si l'entreprise à un peu plus de moyens): - Smarteam (Dassault Systeme) - PDMTeam (PTC) - Thinkteam(ThinkDesign) - TeamCenter -etc.. ou alors si peu de moyen : - faire une petite appli MS Access - voire excel Ce que demande la norme iso, c'est que les plan soient visés donc une fiche suiveuse contenant les visas devrait faire l'affaire (word ou excel) @+
  2. mooneck

    Il faut être aware

    Quick une fois !
  3. mooneck

    Une époque formidable!

    Ils sont fous ces américains. A quand l'intégration d'une webcam ? :casstet: ......
  4. mooneck

    Il faut être aware

    Mais qu'est-il arrivé au poulet ? Arretons le suspense :) est-il allé chez McDo ? [Edité le 16/8/2005 par mooneck]
  5. mooneck

    Impression TIFF

    Salut 8_pool je sais que j'arrive un peu tard mais je viens de rajouter une note sur ce forum conernant les variables d'environnement. Variables d'environement Donc si ca peut t'aider plus tard Amicalement Mooneck ;)
  6. Bonjour à tous Voici un bout de code qui permet de connaitre toutes les variables d'environnement. Do Indx = Indx + 1 EnvString = Environ(Indx) ' ' Permet d'écrire la variable dans un fichier si vous le souhaitez f.WriteLine Indx & " : " & EnvString ' ' On peux afficher le résultat dans une textbox MaForm.TexTBox_ListeVariable.Value = MaForm.TexTBox_ListeVar.Value & _ EnvString & Chr(13) ' Debug.print Indx & " : " & EnvString Loop Until EnvString = "" c'est pratique quand on veut conaitre le répertoire TEMP (c:\temp) par exemple : MsgBox Environ("TEMP") j'ai pu en optenir ainsi 55. @ + Mooneck [Edité le 17/8/2005 par mooneck]
  7. mooneck

    Visualiseur Catia

    Salut Dipoy Spinfire à l'air pas mal du tout. Des mon retour de congés je vais l'essayer. @+
  8. mooneck

    Suppression de contraintes en VBA

    Bonjour Gawel , je ne suis pas à la minute. Moi aussi je suis en vacances et donc moins devant l'ordi. Passe de bonnes vacances @+ Mooneck [Edité le 17/8/2005 par mooneck]
  9. mooneck

    Suppression de contraintes en VBA

    Bonjour Merci patrick pour cette info, c'est vrai que ca marche mieux comme ca ! :) Gawel je viens de t'envoyer un mail avec le catvba joint Merci @ plus Mooneck
  10. mooneck

    Suppression de contraintes en VBA

    Salut Gawel Je pense qu'il y a un probleme sur le dernier message il ne s'affiche pas en entier Y a t-il une limitation dans le forum ? Puis je t'envoyer le code par mail ? BON appétit Hervé
  11. mooneck

    Suppression de contraintes en VBA

    Bonjour Gawel, J'ai essayé cette boucle mais je n'ai pas de résultat satisfaisant : :( aucun message d'erreur mais les contraintes ne sont pas supprimées ! quand je la passe en mode pas à pas, ConstraintsProduits.Count contient bien le nombre de contraintes (5) mais .remove n'a aucun effet. Je pense que cela provient de ProduitEnCours. Faut-il rendre le produit actif ? ou autre méthode pour bien prendre en compte le produit avant de faire la "connection" de la collection de contraintes. :casstet: voici mon code conernant le traitement des contraintes Option Base 1 Sub Fixation(ByRef ProduitEnCours As Product, _ ByVal NB_sous_produits As Integer, ByVal niveau As Integer) ' 'On Error GoTo ErrorHandler ' '----------------------------------------------------------------------------------------- 'Déclaration des variables '----------------------------------------------------------------------------------------- Dim TABLE_reference() As Reference ' Dim ConstraintsProduits As Variant ' Dim ConstraintsAeffacer As Constraints ' Dim TABLE_constraint() As Constraint ' Dim ListeDesContraintesAEffacer() As Variant ' Dim NOM_REF As String ' Dim i As Integer ' Dim NUMEROPART As String ' Dim NOM As String ' Dim INSTANCE As String ' Dim NomDuProduitEncours As String ' Dim NumContrainte As Variant ' ' '----------------------------------------------------------------------------------------- 'Initialisation des variables '----------------------------------------------------------------------------------------- Set ConstraintsProduits = ProduitEnCours.Connections("CATIAConstraints") Set ConstraintsAeffacer = ProduitDocumentActif.Product.Connections("CATIAConstraints") ReDim TABLE_reference(NB_sous_produits) ReDim TABLE_constraint(NB_sous_produits) NomDuProduitEncours = ProduitEnCours.Name Debug.Print NomDuProduitEncours ' '----------------------------------------------------------------------------------------- 'Suppression des contraintes existantes '----------------------------------------------------------------------------------------- ' _______________________________________________________________________ ' Vérifie si on se trouve dans le niveau de tete If niveau = 1 Then Debug.Print "Traitment des contraintes du niveau 1" Debug.Print "Tete de l'assemblage" ReDim ListeDesContraintesAEffacer(ConstraintsAeffacer.Count) ' _________________________________________________________________ ' Recuperation de la liste des contraintes For NumContrainte = 1 To ConstraintsAeffacer.Count ListeDesContraintesAEffacer(NumContrainte) = ConstraintsAeffacer.ITEM(NumContrainte).Name Next NumContrainte ' _________________________________________________________________ ' Effacement des contraintes de la liste For NumContrainte = 1 To UBound(ListeDesContraintesAEffacer) f.WriteLine "suppression de la contrainte " & ListeDesContraintesAEffacer(NumContrainte) ConstraintsAeffacer.Remove (ListeDesContraintesAEffacer(NumContrainte)) Next NumContrainte ' _______________________________________________________________________ ' Traitement de tous les autres niveaux Else Debug.Print "Traitment des contraintes du niveau " & niveau ReDim ListeDesContraintesAEffacer(ConstraintsProduits.Count) ' _________________________________________________________________ ' Recuperation de la liste des contraintes 'For NumContrainte = 1 To ConstraintsProduits.Count ' LENom = ConstraintsProduits.ITEM(NumContrainte).Name ' ListeDesContraintesAEffacer(NumContrainte) = LENom 'Next NumContrainte ' _________________________________________________________________ ' Effacement des contraintes de la liste 'For NumContrainte = 1 To UBound(ListeDesContraintesAEffacer) ' f.WriteLine "suppression de la contrainte " & ListeDesContraintesAEffacer(NumContrainte) ' ConstraintsProduits.Remove (ListeDesContraintesAEffacer(NumContrainte)) 'Next NumContrainte 'Dim i As Integer 'Dim ConstraintsProduits As Variant '=============================== 'test de Gawel '=============================== For i = 1 To ConstraintsProduits.Count ConstraintsProduits.Remove (ConstraintsProduits.Count) Next ' ' ' TEST d'une autre facon, qui ne marche par non plus 'For NB = NB_Contrainte To 1 Step -1 ' ConstraintsProduits.Remove (NB) 'Next NB ' ' TEST d'une autre facon, qui ne marche par non plus 'A = 0 'While ConstraintsProduits.Count <> 0 ' A = A + 1 ' 'f.WriteLine "suppression de la contrainte " & ConstraintsProduits.ITEM(ConstraintsProduits.Count).Name ' ConstraintsProduits.Remove (ConstraintsProduits.Count) ' NB_Contrainte = ConstraintsProduits.Count ' Debug.Print A & ", " & ConstraintsProduits.Count 'Wend ' ' End If ' '----------------------------------------------------------------------------------------- 'Création des nouvelles contraintes : Ancres '----------------------------------------------------------------------------------------- ' _______________________________________________________________________ ' Vérification de la collection de contraintes : elle doit être vide If ConstraintsProduits.Count <> 0 Then Err.Raise 9000, "Programme.ConstraintsProduits.Remove", "Les contraintes n'ont pas été supprimé !" End If ' For i = 1 To ProduitEnCours.Products.Count ' _______________________________________________________________________ ' Récupération des paramètres du produit en cours Debug.Print "Encrage n°" & i NUMEROPART = ProduitEnCours.Products.ITEM(i).PartNumber ' Debug.Print "PartNumber : " & NUMEROPART INSTANCE = ProduitEnCours.Products.ITEM(i).Name ' Debug.Print "Instance : " & INSTANCE ' _______________________________________________________________________ ' Ecriture de la Référence de la nouvelle contrainte NOM_REF = NomDuProduitEncours & "/" & INSTANCE & "/!" & NomDuProduitEncours & "/" & INSTANCE & "/" Debug.Print NOM_REF ' _______________________________________________________________________ ' Insertion de la référence dans la liste des nouvelles contraintes Set TABLE_reference(i) = ProduitEnCours.CreateReferenceFromName(NOM_REF) ' _______________________________________________________________________ ' Création de la nouvelle contrainte Set TABLE_constraint(i) = ConstraintsProduits.AddMonoEltCst(catCstTypeReference, TABLE_reference(i)) ' _______________________________________________________________________ ' Modification du type de contrainte ' Fixité absolue : catCstRefTypeFixInSpace ' Fixité relative : catCstRefTypeRelative TABLE_constraint(i).ReferenceType = catCstRefTypeFixInSpace ' Debug.Print "" ' Next ' Exit Sub ' '----------------------------------------------------------------------------------------- 'Traitement des erreurs '----------------------------------------------------------------------------------------- ErrorHandler: ' If Err.Number = 91 Or Err.Number = -2147418113 Or Err.Number = -2147467259 Then Resume Next Else ' Debug.Print "Erreur numéro :" & Err.Number Debug.Print Err.Description REPONSE = MsgBox("Erreur numéro :" & Err.Number & Chr(13) & Err.Description & Chr(13) & Chr(13) _ & "erreur sur le fichier n°" & i & Chr(13) & Chr(13) & "Ok pour continuer, Cancel pour Terminer.", vbOKCancel, "Attention") ' ' MsgBox REPONSE If REPONSE = 1 Then Resume Next Else MsgBox "Opération annulée" Exit Sub End If End If ' End Sub et pour vérifier la déclaration du produit en cours voici le code concernant la boucle récursive ' **************************************************************** ' * Programme CATIA VBA V5R14 * ' * Auteur : Hervé Sabatou * ' * Société : © CEMA - Groupe ALEMA * ' * * ' **************************************************************** ' --------------------------------- ' Scanner + ancrage automatique ' --------------------------------- ' ' - Fonction : Ce programme scanne un assemblage complet ' Il supprime l'ensemble des contraintes de ' chaque produit et les remplace par des ancres ' ' - Version : 1.0 ' - Date : juillet 2005 ' '----------------------------------------------------------------------------------------- 'Déclaration des variables publics '----------------------------------------------------------------------------------------- Public f, fso, fso2 'Variable Filesystem pour création du fichier Public ProduitDeTete As String 'Nom du produit de tete Public RepertoireBase As String 'Chemin du produit de tete Public ProduitDocumentActif As ProductDocument 'Document actif de tete ' ' Sub CATMain() '----------------------------------------------------------------------------------------- 'Déclaration des variables '----------------------------------------------------------------------------------------- Dim documents1 As Documents Set documents1 = CATIA.Documents ' '----------------------------------------------------------------------------------------- 'Sélection du document actif '----------------------------------------------------------------------------------------- Set ProduitDocumentActif = CATIA.ActiveDocument ProduitDeTete = ProduitDocumentActif.Name RepertoireBase = ProduitDocumentActif.Path ' '----------------------------------------------------------------------------------------- 'Programme '----------------------------------------------------------------------------------------- CreationFichierTexte 'Ouvre un fichier trace dans le %TEMP% ' analyse ProduitDocumentActif.Product, 0 'Lance la boucle récursive et traite les actions ' FermeFichierTexte 'Ferme le fichier trace dans le %TEMP% ' ' End Sub Sub analyse(ProduitEnCours As Product, ByVal niveau As Integer) ' '----------------------------------------------------------------------------------------- 'Déclaration des variables '----------------------------------------------------------------------------------------- Dim tabulation, tabulation2 As String tabulation = Space(5 * niveau) niveau = niveau + 1 ' '----------------------------------------------------------------------------------------- 'Charge le composant '----------------------------------------------------------------------------------------- ProduitEnCours.ActivateDefaultShape ' '----------------------------------------------------------------------------------------- 'Ecriture du nom du produit dans le fichier trace '----------------------------------------------------------------------------------------- chaine = tabulation & "Niveau " & niveau & _ " : " & ProduitEnCours.Name & " - " & _ ProduitEnCours.DescriptionRef f.WriteLine chaine Debug.Print chaine ' tabulation2 = tabulation & Space(5) ' '----------------------------------------------------------------------------------------- 'Je lance le programme spécifique d'ancrage des éléments du produit en cours '----------------------------------------------------------------------------------------- Fixation ProduitEnCours, ProduitEnCours.Products.Count, niveau ' '----------------------------------------------------------------------------------------- 'Je passe en revue tous les articles du produits '----------------------------------------------------------------------------------------- For i = 1 To ProduitEnCours.Products.Count NB_Item = ProduitEnCours.Products.ITEM(i).Products.Count ' _________________________________________________________________ ' Si l'article est un produit alors on relance la boucle If ProduitEnCours.Products.ITEM(i).Products.Count <> 0 Then analyse ProduitEnCours.Products.ITEM(i), niveau Else ' _________________________________________________________________ ' Sinon je descends d'un niveau et je traite la part ProduitEnCours.Products.ITEM(i).ActivateDefaultShape chaine = tabulation2 & "Niveau " & niveau + 1 & _ " : " & "Part " & i & _ " : " & ProduitEnCours.Products.ITEM(i).Name & " - " & _ ProduitEnCours.Products.ITEM(i).DescriptionRef f.WriteLine chaine Debug.Print chaine End If Next i ' '----------------------------------------------------------------------------------------- 'J'écris une ligne vide à la fin du produit '----------------------------------------------------------------------------------------- Debug.Print f.WriteLine "" ' ' End Sub merci d'avance Amicalement Hervé [Edité le 6/8/2005 par mooneck]
  12. mooneck

    Boucle récursive

    Je me réponds : j'ai trouvé comment faire une boucle récursive.
  13. mooneck

    Suppression de contraintes en VBA

    Bonjour Prosper67, tout d'abord merci d'avoir répondu si vite. En fait j'ai déja une boucle récursive : - elle efface les contraintes du produit en cours - elle recrée des contraintes de type ancres donc je souhaite conserver les niveaux et les gérer au fur et à mesure. qu'entends tu par : je pense que c'est à ce niveau que ca déconne car quand je connect la collection de contrainte en cours, il récupère bien le nombre de contrinates, mais ca s'arrete là. il doit y avoir un probleme de document actif... si tu as quelques minutes je peux t'envoyer le code par courriel, il n'est pas tres long. merci de ton aide. Mooneck herve.sabatou@club-internet.fr :)
  14. Bonjour, Je veux supprimer des contraintes automatiquementdans un assemblage. lorsque je passe le produit de tete : il n'ya pas de problème. Par contre des que je descend d'un niveau dans l'assemblage je n'arrive pas a supprimer les contraintes. Voila comment je procede : sur le produit en cours, je récupère la collection des contraintes : Set ConstraintsProduits = ProduitEnCours.Connections("CATIAConstraints") ensuite je récupère les noms des contraintes dans tableau : ' Recuperation de la liste des contraintes For NumContrainte = 1 To ConstraintsProduits.Count LENom = ConstraintsProduits.ITEM(NumContrainte).Name ListeDesContraintesAEffacer(NumContrainte) = LENom Next NumContrainte puis j'efface les contraintes une à une : ' Effacement des contraintes de la liste For NumContrainte = 1 To UBound(ListeDesContraintesAEffacer) f.WriteLine "suppression de la contrainte " & ListeDesContraintesAEffacer(NumContrainte) ConstraintsProduits.Remove (ListeDesContraintesAEffacer(NumContrainte)) Next NumContrainte ce code bloque a cette ligne : LENom = ConstraintsProduits.ITEM(NumContrainte).Name j'obtiens le message suivant : alors que pour le premier niveau d'assemblage ce code marche. La seule différence réside dans le produit : Set ConstraintsAeffacer = ProduitDocumentActif.Product.Connections("CATIAConstraints") ou ProduitDocumentActif = CATIA.ActiveDocument Je pense que je récupère bien la collection des contraintes car ConstraintsProduits.Count me donne bien le nombre de contraintes du produit en cours Si quelqu'un a une idée sur la question, je suis ouvert à toute proposition. Merci d'avance. [Edité le 1/8/2005 par mooneck] [Edité le 1/8/2005 par mooneck]
  15. mooneck

    Boucle récursive

    Bonjour à tous, J'aimerais trouver un code de boucle récursive pour une macro vba catiav5 Cette boucle doit etre capable de scanner un assemblage, d'identifer tous les enfants et si c'est un product, de s'appeler elle meme. J'aimerais avoir cette base pour faire tout un tas de manip enervante et fastidieuse ! si quelqu'un a ce genre de code ou des orientation possible ? Merci d'avance
  16. mooneck

    Mise en plan de \"gueules de loup\"

    Salut je n'ai aucune idée sur la manière de faire. Par contre, si tu trouves , ça m'interesse ! ;)
  17. Bonjour, je suis en train d'écrire une macro qui génère un tableau 2d de coordonnées de points 3d (issues d'un catpart). Premier Problème Je souhaite écrire un texte à 90° dans une cellule du tableau voici le code que j'utilise (mais qui ne marche pas :casstet: ) Dim EnsText As DrawingText Set EnsText = MyView.Texts.Add("S-Ens 1200", 0#, 0#) EnsText.Name = "Texte.1" EnsText.Angle = 90 'MyTable.SetCellObject 3, 1, EnsText le texte est bien créé à 9¨° mais aucun lien avec le tableau, quand je déplace le tableau le texte ne bouge pas !! :mad: si quelqu'un a déja utilisé cette méthode ...merci d'avance ;) Deuxième Problème J'aimerais pouvoir changer la hauteur du texte (ou autre propriètés) contenu dans une cellule (défini par MyTable.SetCellString) Merci d'avance. :cool: [Edité le 24/4/2005 par mooneck]
  18. Bonjour orod je suis entrain de développer une macro pour faire : - export des coordonnées de points vers un fichiers excel, csv ou ascii - import d'un fichier excel vers un CATPart - génération d'un tableai de coordonnées de points sur un CATDrawing J'ai presque fini, il me reste un problème à régler au niveau du tableau 2D :mad: Donc dès que j'ai fini je t'en donnerai une copie si tu le souhaites. @+ ;)
  19. Merci Prosper67 Le code marche. En fait grace a ton dernier code j'ai pu voir d'ou vient l'erreur. l'erreur vient du déclaratif de la table : dim Table(1 To 3) au lieu de la déclarer Table(2) Getcoordinates utilise forcement la valeur 0 comme départ pour saisir le "X". Merci
  20. Bonjour prosper67, J'ai déja ezssayer auparavent car c'etait la marche à suivre que je voulais faire. Mais la fonction getcoordinat ne marche pas ou du moins je n'ai pas le bon code pour l'utiliser. Voila ce que j'utilise : Dim oSelElem2 as Point Dim Table (1 To 3) For i = 1 to Selection1.count oSelElem2 = Selection1.part1.FindObjectByName(selection1.Item(i).Reference.DisplayName) oSelElem2.GetCoordinates Table Mais le programme s'arret sur GetCoordinate et affiche le msg suivant : Compile error : Function or interfaceas restricted, or the function uses an automation type not supported in Visual Basic. Vois tu d'où l'erreur peut provenir ? Merci d'avance Hervé
  21. Bonjour Gawel En fait, les points sont censés se trouver dans une part quelconque car je lance la recherche suivante : Puis la boucle suivante donne le nom des points : J'avais essayé la commande suivante : Cela me donné le nom du corps surfacique dans lequel ils se trouvent. Et là c'était gagné, mais ca n'a marché qu'une fois. Maintenant cela me donne le nom de la Part. BIZARRE. Donc si j'arrivais à obtenir le nom du parent direct (corps surfacique) dans lequel se trouvent les points je pourrais sans aucun doute récupérer les coordonnées des points par la fonction suivante : Si tu trouves quelquechose qui cloche ... Il doit s'agir d'un probleme de déclaration de collection d'objet et de variable objet ... :( Je pense ne pas etre tres loin du but ! @+
  22. Merci Didier pour ton aide. Mais ca ne ressemble pas du tout au vba de CAtia si ce n'est l'alogrithme. Le mien est un peu différent mais je l'ai quand meme. Ce qu'il me manque c'est les bon mots clés et méthodes d'objet pour Catia v5. Merci quand meme. Gawel, as tu une idée de code ?
  23. En ce qui concerne la soluce autocad que propose didier je veux bien la voir c'est une orientation a prendre ? Merci d'avance
  24. bonjour, Je patoge toujours dans la semoule !! J'ai trouvé une idée mais qui n'est pas concluente. Ca a marché une fois et puis apres plus rien ! J'arrive à retrouver l'ID du point "Point.1". J'aimerais maintenant retrouver le nom du parent (Corps surfacique.1) mais j'ai un problème avec les déclaratifs entre : Dim hybridShapePoint Dim hybridShapePointCoord1 As HybridShapePointCoord Dim hybridBody1 As HybridBody Dim hybridBodies1 As HybridBodies Set hybridBodies1 = part1.HybridBodies C'est le bordel dans CATIA si on regarde dans la fenetre espion les propriétés d'un objet on peut constater que les imbrications sont quasi infinis. Comment fait-on pour s'y retrouver. Au secours ! :( :( :( :( :( :( :( :( :( :mad2:
  25. Bonjour, Je suis en train de réaliser une macro sur v5r11. Je fais une recherche de tous les points d'une part et ensuite je veux pouvoir récupérer les infos du ou des point (coordonnées, nom,etc.) pour les exploiter derriere (faire un tableau de coordonées en 2d ou exporter la liste sous excel) Mais je n'arrive pas à récupérer ces info depuis la sélection : selection1.Search "CATPrtSearch.Point,all" Dim Table(1 To 3) As Double For i = 1 To selection1.Count debug.print selection1.item(i). ???? next si qlqn pouvez me donner un tuyau sur la manière de procéder,merci d'avance. mooneck
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité