Enael Posté(e) le 22 juin 2004 Posté(e) le 22 juin 2004 Bonjour à tous, Voila je suis entrain de créer une macro pour catia et j'aimerai savoir si il existe une focntion pour modifier les couleurs d'un élément. Je travaille dans une part et j'aimerai par exemple modifier la couleur d'un trou ou d'un pad. Comment faire? :casstet: merci d'avance Enael
Enael Posté(e) le 22 juin 2004 Auteur Posté(e) le 22 juin 2004 Ou bien si pour la couleur ca ne marche pas, mettre le trou en surbrillance ( comme lorsqu'il est sélectionné) Enael
gawel Posté(e) le 29 juin 2004 Posté(e) le 29 juin 2004 je ne vais pas beaucoup t'avancer sur ce sujet pour l'instant, mais laisse-moi un peu de temps, je vais regarder si j'ai qq chose à ce sujet. pour l'instant, je peux te dire que nous utilisons plusieurs procédés dans les applis qui ont été développées par une boite de développement.dans nos applis:1) on est capable de colorier des faces d'un solide à partir d'un fichier qui sert de référence (même si le solide est mort)2) on est capable d'attribuer une couleur à un product entier3) on est capable de retrouver la couleur d'une face d'un joindre même si la surface a été copiée en tant que résultat dans un catpart à part4) on est capable de mettre en surbrillance un solide entier donc tout ce que tu veux faire est réalisable, maintenant les applis ont été réalisées avec du CAA; va falloir fouiller plus loin........... :P @+ tardgawel
gawel Posté(e) le 30 juin 2004 Posté(e) le 30 juin 2004 Bon,pas possible d'accéder à des informations sur les fonctions couleurs utilisés dans les applis (cest que des .exe et des dll) as-tu essayé:Set visProperties1 = CATIA.ActiveDocument.Selection.VisProperties visProperties1.SetRealColor 255,0,0,1 ici on modifie la couleur sur une sélection, il suffit de changer la sélection par autre chose en scrutant l'arbre de construction; les 3 premiers chiffres sont les couleurs RGB, le dernier qui a comme valeur 0 ou 1 concerne peut-être bien de l'héritage pour les enfants (??) à tester.......! gawel
Enael Posté(e) le 30 juin 2004 Auteur Posté(e) le 30 juin 2004 MERCI Ah ouf enfin ca marche ou presque. En fait je ne sais pas pourquoi ca marche parce que javais déjà tester cette méthode et ca n'avais rien donné . Bon la ca marche maintenant j'ai un autre problème que je ne comprend pas. Comment faire pour sélectionner juste un trou par exemple. C'est bizarre parce que certaines fonction que j'utilise dans une autre macro ne marche plus avec celle que je suis enttrain de faire. Je comprend pas bien mais bon. Merci encore @+ Enael
gawel Posté(e) le 30 juin 2004 Posté(e) le 30 juin 2004 tant mieux, pour sélectionner juste un trou, soit il va falloir que tu le cherches par son nom ("trou.1"), soit par une autre particularités (un paramètre attaché par exemple) tout dépend aussi si ces trous sont toujours présents ou si c'est variable..... à voir ! gawel
gawel Posté(e) le 30 juin 2004 Posté(e) le 30 juin 2004 ou aussi par sélection dans catia !!!!! j'avais oublié celle-là, mais là ça rappelle un de tes messages sur la sélection en dehors de la userform, tant que c'est pas réglé, tu ne pourras pas utiliser cette solution. gawel
Enael Posté(e) le 30 juin 2004 Auteur Posté(e) le 30 juin 2004 Ben le problème c'est que comme tu l'a dit la sélection dans la catia (Sélection manuelle) ne m'est pas très util vu que j'ai toujours un userform affiché devant donc on ne peut pas cliquer dans l'arrière plan. :casstet: Mais moi ca qu'il me faudrait c'est uen sélection automatique. Je réussi a récupérer les nom de tout les éléments (trous et autres) qui m'interressent et jaimerai savoir comment faire pour les afficher comme sélectionné dans l'arbres. Voila Merci Enael
Enael Posté(e) le 30 juin 2004 Auteur Posté(e) le 30 juin 2004 Ben le problème c'est que comme tu l'a dit la sélection dans la catia (Sélection manuelle) ne m'est pas très util vu que j'ai toujours un userform affiché devant donc on ne peut pas cliquer dans l'arrière plan. :casstet: Mais moi ca qu'il me faudrait c'est uen sélection automatique. Je réussi a récupérer les nom de tout les éléments (trous et autres) qui m'interressent et jaimerai savoir comment faire pour les afficher comme sélectionné dans l'arbres. Voila Merci Enael
gawel Posté(e) le 30 juin 2004 Posté(e) le 30 juin 2004 essaye ça: dim toto as selectionset toto = nomdutrou.selection ça devrait passer en surbrillance... @+ tard gawel
Enael Posté(e) le 30 juin 2004 Auteur Posté(e) le 30 juin 2004 Ben j'essayer ta méthode dans un peu tout les sens mais j'ai pas encore trouver le bon apparement.Ca marche pas. J'ai essayer ca : Set doc1 = CATIA.ActiveDocument Set part1 = doc1.Part Set bodies1 = part1.Bodies Set body1 = bodies1.Item(1) Set Shape1 = body1.Shapes.Item(2) nam = Shape1.nameMsgBox nam Set toto = Shape1.name.Selection on ne peut pas mettre Nam a la place shape1.name dans le Set Toto car Nam n'est pas un objet juste une chaine;Donc voila dis moi ou j'ai fait uen erreur si tu en vois une, stp @+ Enael
gawel Posté(e) le 30 juin 2004 Posté(e) le 30 juin 2004 j'ai pas essayé, mais j'aurais mis: Set doc1 = CATIA.ActiveDocument Set part1 = doc1.Part Set bodies1 = part1.Bodies Set body1 = bodies1.Item(1) Set Shape1 = body1.Shapes.Item(2) 'nam = Shape1.name'MsgBox nam dim toto as selectionSet toto = Shape1.Selection 'j'affecte la selection directement sur l'objet Shape.1faudrait que j'essaye en situation réelle pour voir moi-même Gawel
Enael Posté(e) le 1 juillet 2004 Auteur Posté(e) le 1 juillet 2004 Salut Rassure toi javais déjà essayé ca aussi mais il me met une erreur du style : Object doesn't support this property or method. Donc je ne vois pas trop coment faire pour cette histoire de sélection mais je me souviens avoir déjà eu ce problème et avoir déjà essayer de le résoudre, seulement je n'avais pas réussi <acronym class=dict title=. Bon ben on va chercher encore Ahh! les joie de Catia :casstet: @+ Enael
gawel Posté(e) le 1 juillet 2004 Posté(e) le 1 juillet 2004 regarde ce script que j'ai trouvé dans l'aide de catia; on y trouve le highlight(vers la fin avec un commentaire): Option Explicit' COPYRIGHT DASSAULT SYSTEMES 2001Dim Language as StringLanguage="VBScript" ' ***********************************************************************' Purpose: This macro:' 1 - Creates a rule base ' 2 - Adds the check below to this rulebase ' (for all) H:Hole ' H.Diameter>12mm ' 3 - Determines whether the rule base is to be solved or not ' 4 - Solves the rulebase if the rule base is to be solved' 5 - Highlight the failed items '' Assumptions: ' This macro is intended to be run on the ' CAAKhwRuleBaseCreate.CATPart document' ' Author: Carole ROULLE ' Languages: VBScript' Locales: English (United States)' CATIA Level: V5R6 ' *********************************************************************** Sub CATMain()CATIA.DisplayFileAlerts = False Dim oActiveDoc As Document Set oActiveDoc = CATIA.ActiveDocument ' Check whether the document is a CATPart If (InStr(oActiveDoc.Name,".CATPart")) <> 0 Then ' Retrieve the Relations collection Dim oRel As Relations Set oRel = oActiveDoc.Part.Relations ' Create the RB1 rulebase Dim oRuleBase As Relation Set oRuleBase = oRel.CreateRuleBase("RB1") ' Create the RuleSet.1 rule set and the HDiaCheck below ' the created rule set Dim oCheck As Relation Set oCheck= oRuleBase.RuleSet.CreateCheck("HDiaCheck","H:Hole","H.Diameter>12mm","RuleSet.1") ' The rule base needs to be solved ' To confirm this, the rule base fingerprint is retrieved ' if the Fingerprint is 0 - the rule base needs be solved ' otherwise it is solved if (oRuleBase.Fingerprint = 0) then msgbox "The rule base must be solved - Click OK to solve the rule base" ' Solve the rule base oRuleBase.Deduce() else msgbox "The rule base is solved" end if ' Highlight the elements not satifying the check criteria ' Reminder: elements are highlighted in the geometry area ' and in the specification tree as well ' Three holes are highlighted after the macro has finished running oCheck.Highlight ' oRuleBase.Report() CATIA.ActiveDocument.Part.Update else MsgBox "The active document must be a CATPart" end if End Sub y'a donc cet objet "highlight" que l'on traduit par surbrillancey'a quand même un hic, c'est que chez moi, il ne supporte pas l'objet highlight; je me demande si ce n'est pas lié à une licence ou à une librairie (du style KWE).à voir gawel
Enael Posté(e) le 1 juillet 2004 Auteur Posté(e) le 1 juillet 2004 Pas mal, vu que je suis plus que nul en anglais je n'avais pas penser à ca. J'ai essayer chez moi et ca ne marche pas non plus mais y a de l'idée et surement quelques choses à exploiter. Je vais continuer a faire des teste dessus si j'ai du nouveau ej te tiens au courant. @+ Enael
gawel Posté(e) le 30 septembre 2004 Posté(e) le 30 septembre 2004 Salut enael, je reviens sur ce sujet, j'ai du neuf; cela concerne la sélection; après par rapport à la surbrillance, il faut aller voir dans les propriétés de vsiproperties. Bon, j'arrive pas à avoir mon résultat final, mais ça ne plante pas et je peux sélectionner en arrière-plan des objets. Il faut pour ça: mettre ta userform en modal:userform1.Show (Modal) ensuite voici le code: Dim myDocument As DocumentSet myDocument = CATIA.ActiveDocument Dim mySelection As SelectionSet mySelection = myDocument.Selection If mySelection.Count <> 1 Then MsgBox "sélectionner une part" Do Until (mySelection.Count = 1) If mySelection.Count = 0 Then DoEvents Set mySelection = CATIA.ActiveDocument.Selection If select_count > 0 Then Set partobj = CATIA.ActiveDocument.Selection.FindObject("CATIAPart") CATIA.ActiveDocument.Selection.Add (partobj) End If Else Exit Do End If LoopEnd If à tester chez toi ! Gawel
prosper67 Posté(e) le 30 septembre 2004 Posté(e) le 30 septembre 2004 Set visProperties1 = CATIA.ActiveDocument.Selection.VisProperties visProperties1.SetRealColor 255,0,0,1 Salut, voila, je viens de m'enregistrer sur ce forum et je vois que ça galère aussi de votre coté... Je me présente, je m'appelle Christophe, je travaille chez un grand constructeur automobile allemand. Mes références en Catia V5: Part Design, Assembly, GSD, MTD, KWA, KWE, DMU et... bien sûr programmation VB ou plutot CATScript on va dire puisque les macros doivent aussi bien fonctionner sur Windows que sur Unix. La plus complète pour le moment fait environ 3000 lignes de code et couvre tout un process... Bref, pour ce qu'il en est des couleurs, c'est faisable uniquement en passant par la selection: ajouter le Feature la selection et lui appliquer une couleur. En code ça donne du (je reprends ce qui a été dit précédement: Set doc1 = CATIA.ActiveDocument Set part1 = doc1.Part Set bodies1 = part1.Bodies Set body1 = bodies1.Item(1) Set Shape1 = body1.Shapes.Item(2) (Ton document est un Part dans lequel tu comptes modifier la couleur du feature Shape1 tu rajoutes: set osel = CATIA.ActiveDocument.selectionosel.clear osel.add Shape1 Set visProperties1 = osel.VisProperties visProperties1.SetRealColor 255,0,0,1 et le feature Shape1 prend le couleur RGB 255,0,0 (rouge) Ceci dans le cas où le feature est entièrement connu, ce qui est rarement le cas. tu peux également utiliser une fonction Search pour trouver le type de feature (Hole, POcket, Pad, Line...) ou alors, à l'aide de la fonction selectelement, selectionner le feature directment soit dans l'arbre, soit dans la géométrie. Ex: pour la selection (je code en live, il se peut que tout ne soit pas 100% mais ça donne un truc du style): Sub CATMAin()set osel = catia.activedocument.selectionosel.clear dim afilter(1)afilter(0) = "Hole"afilter(1) = "Pad" sstatus = osel.selectelement(afilter, "Select a Pad or a Hole", False) osel.endselectelement Set visProperties1 = osel.VisProperties visProperties1.SetRealColor 255,0,0,1 End sub du coup l'objet que tu as selectionné prends la couleur rouge. Pour aller un tout petit peu plus loin (par ex selectionner plusieurs objets et leur imputer une meme couleur) Sub CATMAin()set osel = catia.activedocument.selectionosel.clear dim afilter(1)afilter(0) = "Hole"afilter(1) = "Pad" dim aobjects()redim aobjects(0) DOsstatus = osel.selectelement(afilter, "Select a Pad or a Hole", False) If sstatus <> "Normal" thenosel.endselectelement 'pas sûr si c necessaire çaosel.clearExit doElseset oobject = osel.item(1).valueset aobjects(ubound(aobjects)) = oobjectredim preserve aobjects(ubound(aobjects)+1)osel.endselectelementosel.clear End ifLoop osel.clearfor i=0 to ubound(aobjects)-1osel.add aobjects(i)Next Set visProperties1 = osel.VisProperties visProperties1.SetRealColor 255,0,0,1 End sub Pour arreter la selection il te suffit de faire un "undo" mais tu peux très bien utiliser une MSGBOX à chaque boucle (VBYesNo) voila voila un truc comme ça, bien sûr à optimiser (au niveau du osel.clear par ex) bon courage! SalutationsChristophe
prosper67 Posté(e) le 30 septembre 2004 Posté(e) le 30 septembre 2004 Salut à vous, pour etre exact, je suis inscrit depuis Mars mais j'avais perdu mon MDP.Y'a t'il parmis vous des Heavy-programmers l'histoire de faire un echange de connaissances. ByeChristophe
gawel Posté(e) le 1 octobre 2004 Posté(e) le 1 octobre 2004 Salut prosper67, pour l'instant, je débute en VBA pour Catia V5, cela fait seulement depuis 4 mois que je programme avec, mais cela ne me deplait pas, c'est très intéressant. Et puis, il fallait bien y venir un jour, car nos demandes en amélioration de productivité passe par là: cela nous évite aussi de faire sous-traiter tous nos développements, au moins ce qui sont accessibles sans passer par CAA. Mes références en catia V5: Part design, Assembly design, GSD, FS1, Drafting, KWA, KWE + catscript; beaucoup de paramètrage, utilisation du savoir-faire, utilisation catalogue. je suis en relation aussi avce ceux qui développent chez nous en delphi. @+ tard ! Gawel
Enael Posté(e) le 4 octobre 2004 Auteur Posté(e) le 4 octobre 2004 Salut prosper67 et Gawel Merci pour ton aide même si pour le moment je n'ai pas encore eu le temps de la tester mais c'est bien complet ce que tu ma donné : nikel Moi je suis juste un programmateur en herbe <acronym class=dict title=. Je bosse pour un BE mais c'est bien galère quand on est qu'apprenti et que personne ne dev sur catia à part toi dans la boite heureusment il y a Gawel son aide est toujours bien util. Enfin bon profiter bien de moi car je ne serai plus la pour très longtemps. En juin si tout va bien je décolle et part dans le multimédia, web principalement. Heureusement avec proper67, tu seras pas tout seul gawel. bon c'est pas le tout mais faut bosser un peu @+ Enael
Enael Posté(e) le 4 octobre 2004 Auteur Posté(e) le 4 octobre 2004 Merci Prosper67 Ca marche nikel!! :) Ah ca fait un problèmé en moins mais bon pour les autres je vais faire un autre sujet sinon on va s'y perdre. En fait je me suis apercu que le changement de couleur minterressait pas tant que ca mais que la sélection et le fait que le shape apparaisse sélectionner dans l'arbre était beaucoup mieux et plus llisible pour ce que je voulais faire. Donc j'ai suprimer deyx trois truc de ta tite sources et zou ca marche !! Enfin voila merci encore Enael
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant