modification type et epaisseur trait

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

modification type et epaisseur trait

Message par psycko le Sam 19 Oct 2013 - 2:06

Salut à vous


je suis en train de finalisé ma macro me permettant de creer mon cadre, mon cartouche dans ma mise en plans
ainsi que le remplissage de mon cartouche automatiquement

je voudrais que mon cartouche soit fait de ligne de différentes épaisseur et de type différents

d’où ma question ! comment on fait ?
quelqu'un aurait-il des lignes de commande pour faire cette manip et si oui, ou les mettre dans le script


Merci d'avance

psycko
timide
timide

Messages : 5
Date d'inscription : 19/10/2013
Localisation : ile de france

Revenir en haut Aller en bas

Re: modification type et epaisseur trait

Message par Mr.J le Dim 20 Oct 2013 - 0:27

Bonjour,

Il faut passer par une sélection des lignes à modifier dans le CATDrawing.

Voici un exemple de code :

Code:

Sub CATMain()

'Récupère l'objet sélection de CATIA et le vide
Dim MySelection As Selection
Set MySelection = CATIA.ActiveDocument.Selection
MySelection.Clear

'Récupère le calque de fonds pour la première feuille
Dim BackView As DrawingView
Set BackView = CATIA.ActiveDocument.Sheets.Item(1).Views.Item(2)

'Récupère la collection d'objets géométriques contenues dans la Background view
Dim GeomElements
Set GeomElements = BackView.GeometricElements

'Sélectionne les lignes à modifier
MySelection.Add GeomElements.GetItem("Droite.3")
MySelection.Add GeomElements.GetItem("Droite.2")
 
'Récupère l'objet visproperties
Dim VisProp As VisPropertySet
Set VisProp = MySelection.VisProperties

'Sette le type de ligne (définie selon les standards utilisé pour le CATDrawing)
VisProp.SetRealLineType 4, 1

'Sette l'épaisseur de ligne (définie selon les standards utilisé pour le CATDrawing)
VisProp.SetRealWidth 4, 1

End Sub
Ça fonctionne bien, mais la sélection fait clignoter les éléments édités à l'écran et rends l’exécution du code un peu plus longue. A utiliser avec attention. De plus, si l'utilisateur clique quelque part dans le drawing pendant l'éxécution, cela peut faire crasher ta macro ou générer un tableau qui ne corresponds pas à ce que tu attends.

La seule solution plus propre que j'ai trouvé est l'utilisation d'un Cartouche stocké dans une vue de détail que j'insère et rempli en automatique dans le CATDrawing en cours via une macro.

Bon courage.

Mr.J

Mr.J
timide
timide

Messages : 14
Date d'inscription : 11/10/2013
Localisation : Toulouse

Revenir en haut Aller en bas

Re: modification type et epaisseur trait

Message par psycko le Dim 20 Oct 2013 - 6:43

merci

psycko
timide
timide

Messages : 5
Date d'inscription : 19/10/2013
Localisation : ile de france

Revenir en haut Aller en bas

Re: modification type et epaisseur trait

Message par Dupeyroux le Sam 21 Juin 2014 - 1:53

Je déterre un peut, mais il y a un problème sur la sélection des lignes :

MySelection.Add GeomElements.GetItem("Droite.3")
MySelection.Add GeomElements.GetItem("Droite.2")

Catia renvoi une erreur :
Source : CATIAGeometricElements
Description : La méthode GetItem a échoué

Quelqu'un aurai une idée ?

Dupeyroux
timide
timide

Messages : 7
Date d'inscription : 21/06/2014
Localisation : Toulouse

Revenir en haut Aller en bas

Re: modification type et epaisseur trait

Message par Guss_ le Sam 21 Juin 2014 - 3:18

Tu écris en VBscript ou VBA ?

Il faut surement que tu écrives

MySelection.Add GeomElements.Item("Droite.3")

Guss_
Fédérateur
Fédérateur

Messages : 498
Date d'inscription : 08/01/2010

Revenir en haut Aller en bas

Re: modification type et epaisseur trait

Message par Mr.J le Lun 23 Juin 2014 - 6:26

Je pense que ton problème peut avoir deux raisons :
  1. Ton CATIA n'est pas en français, et les lignes que crées CATIA sont donc nommées "Line.1", "Line.2", ... Pour le voir, sélectionnes une ligne et click droit > Propriétés, tu trouveras son nom quelque part.

  2. Le calque du fonds de CATIA ne contient aucun élément (ou aucun nommé "Droite.2" du moins)

Tu peux passer par la méthode .Item, mais à ce moment il faut entrer un entier (integer) qui corresponds à la xième ligne créée dans cette vue.

ex  :
'Récupère la première ligne créée dans le fonds de calque :
MySelection.Add GeomElements.Item(1)

Mr.J
timide
timide

Messages : 14
Date d'inscription : 11/10/2013
Localisation : Toulouse

Revenir en haut Aller en bas

Re: modification type et epaisseur trait

Message par psycko le Lun 23 Juin 2014 - 19:01

Bonjour
pour faire suite à ma demande voici un petit code pour avoir des ligne d'un certain style et avec une epaisseur

Par ailleurs je remercie les personnes qui ont tentées de resoudre mon problème

Cordialement

Code:
Sub CAT_Trace_trait_pointillé(X1, Y1, x2, y2, nom, dot, wid) ' sub qui trace un trait pointillé et le nomme dans le Drawing
'                                                            ' dot = pointillé, 0 plein, 6 petits points
'                                                            ' wid =  epaisseur de la ligne
    Set ligne = Fact.CreateLine(X1, Y1, x2, y2)
    ligne.Name = nom
    
    CATIA.ActiveDocument.Selection.Add ligne
    Dim visProperties1 As VisPropertySet
    Set visProperties1 = CATIA.ActiveDocument.Selection.VisProperties
        visProperties1.SetRealLineType dot, 0
        visProperties1.SetRealWidth wid, 0
    CATIA.ActiveDocument.Selection.Clear
'
End Sub

Sub CAT_Trace_trait_Fin(X1, Y1, x2, y2, nom, dot, wid) ' sub qui trace un trait pointillé et le nomme dans le Drawing
'                                                            ' dot = pointillé, 0 plein, 6 petits points
'                                                            ' wid =  epaisseur de la ligne
    Set ligne = Fact.CreateLine(X1, Y1, x2, y2)
    ligne.Name = nom
    
    CATIA.ActiveDocument.Selection.Add ligne
    Dim visProperties1 As VisPropertySet
    Set visProperties1 = CATIA.ActiveDocument.Selection.VisProperties
        visProperties1.SetRealLineType dot, 0
        visProperties1.SetRealWidth wid, 0
    CATIA.ActiveDocument.Selection.Clear
'
End Sub

Sub CAT_Trace_trait_Point(X1, Y1, x2, y2, nom, dot, wid) ' sub qui trace un trait pointillé et le nomme dans le Drawing
'                                                            ' dot = pointillé, 0 plein, 6 petits points
'                                                            ' wid =  epaisseur de la ligne
    Set ligne = Fact.CreateLine(X1, Y1, x2, y2)
    ligne.Name = nom
    
    CATIA.ActiveDocument.Selection.Add ligne
    Dim visProperties1 As VisPropertySet
    Set visProperties1 = CATIA.ActiveDocument.Selection.VisProperties
        visProperties1.SetRealLineType dot, 0
        visProperties1.SetRealWidth wid, 0
    CATIA.ActiveDocument.Selection.Clear
'
End Sub

Sub CAT_Trace_trait_moyen(X1, Y1, x2, y2, nom, dot, wid) ' sub qui trace un trait pointillé et le nomme dans le Drawing
'                                                            ' dot = pointillé, 0 plein, 6 petits points
'                                                            ' wid =  epaisseur de la ligne
    Set ligne = Fact.CreateLine(X1, Y1, x2, y2)
    ligne.Name = nom
    
    CATIA.ActiveDocument.Selection.Add ligne
    Dim visProperties1 As VisPropertySet
    Set visProperties1 = CATIA.ActiveDocument.Selection.VisProperties
        visProperties1.SetRealLineType dot, 0
        visProperties1.SetRealWidth wid, 0
    CATIA.ActiveDocument.Selection.Clear
'
End Sub

Sub CAT_Trace_trait_normal(X1, Y1, x2, y2, nom, dot, wid) ' sub qui trace un trait pointillé et le nomme dans le Drawing
'                                                            ' dot = pointillé, 0 plein, 6 petits points
'                                                            ' wid =  epaisseur de la ligne
    Set ligne = Fact.CreateLine(X1, Y1, x2, y2)
    ligne.Name = nom
    
    CATIA.ActiveDocument.Selection.Add ligne
    Dim visProperties1 As VisPropertySet
    Set visProperties1 = CATIA.ActiveDocument.Selection.VisProperties
        visProperties1.SetRealLineType dot, 0
        visProperties1.SetRealWidth wid, 0
    CATIA.ActiveDocument.Selection.Clear
'
End Sub

ces lignes de code permettent de créer la ligne,
ensuite pour la créer il faut définir en utilisant le code suivant ( création d'un code pour un cartouche)

Code:
Sub CAT_trait_cartouche()                    'créer les traits du cartouche
    ' toutes les lignes horizontales
    
    Call CAT_Trace_trait(largeur - marge, marge + h1, largeur - marge - v12, marge + h1, "horizontal1_date")
    Call CAT_Trace_trait(largeur - marge, marge + h2, largeur - marge - v12, marge + h2, "horizontal2_nom de la piece")
    Call CAT_Trace_trait(largeur - marge, marge + h3, largeur - marge - v12, marge + h3, "horizontal3_masse")
    Call CAT_Trace_trait_moyen(largeur - marge, marge + h4, largeur - marge - v12, marge + h4, "horizontal4_cadre haut", 1, 3)
    Call CAT_Trace_trait_moyen(largeur - marge, marge + h5, largeur - marge - v12, marge + h5, "horizontal5_cadre 2 bas", 1, 3)
    Call CAT_Trace_trait_moyen(largeur - marge, marge + h6, largeur - marge - v12, marge + h6, "horizontal6_indice", 1, 2)
    Call CAT_Trace_trait_Fin(largeur - marge, marge + h7, largeur - marge - v12, marge + h7, "horizontal7_modif1", 1, 1)
    Call CAT_Trace_trait_Fin(largeur - marge, marge + h8, largeur - marge - v12, marge + h8, "horizontal8_modif2", 1, 1)
    Call CAT_Trace_trait_Fin(largeur - marge, marge + h9, largeur - marge - v12, marge + h9, "horizontal9_modif3", 1, 1)
    Call CAT_Trace_trait_Fin(largeur - marge, marge + h10, largeur - marge - v12, marge + h10, "horizontal10_modif4", 1, 1)
    Call CAT_Trace_trait(largeur - marge - v8, marge + h11, largeur - marge - v12, marge + h11, "horizontal11_dessine par")
    Call CAT_Trace_trait(largeur - marge - v8, marge + h12, largeur - marge - v12, marge + h12, "horizontal12_traitement")
    Call CAT_Trace_trait_Point(largeur - marge - v14, marge + h13, largeur - marge - v15, marge + h13, "horizontal13_point", 6, 1)
    Call CAT_Trace_trait_Point(largeur - marge - v14, marge + h14, largeur - marge - v15, marge + h14, "horizontal14_point", 6, 1)
    Call CAT_Trace_trait_Point(largeur - marge - v14, marge + h15, largeur - marge - v16, marge + h15, "horizontal15_point", 6, 1)
    Call CAT_Trace_trait(largeur - marge, marge + h16, largeur - marge - v8, marge + h16, "horizontal16_ID smarteam")
    Call CAT_Trace_trait_Point(largeur - marge - v14, marge + h17, largeur - marge - v15, marge + h17, "horizontal17_point", 6, 1)
    Call CAT_Trace_trait_Point(largeur - marge - v14, marge + h18, largeur - marge - v15, marge + h18, "horizontal18_point", 6, 1)
    Call CAT_Trace_trait_Point(largeur - marge - v14, marge + h19, largeur - marge - v15, marge + h19, "horizontal19_point", 6, 1)
    Call CAT_Trace_trait_Point(largeur - marge - v14, marge + h20, largeur - marge - v16, marge + h20, "horizontal20_point", 6, 1)
    Call CAT_Trace_trait_Point(largeur - marge - v17, marge + h21, largeur - marge - v15, marge + h21, "horizontal21_point3", 6, 1)
    Call CAT_Trace_trait_Fin(largeur - marge - v19, marge + h22, largeur - marge - v20, marge + h22, "horizontal22_casser angles vifs", 1, 1)
    Call CAT_Trace_trait_Point(largeur - marge - v17, marge + h23, largeur - marge - v15, marge + h23, "horizontal23_point", 6, 1)
    Call CAT_Trace_trait(largeur - marge, marge + h24, largeur - marge - v8, marge + h24, "horizontal24_projet")
    Call CAT_Trace_trait_Point(largeur - marge - v17, marge + h25, largeur - marge - v15, marge + h25, "horizontal25_point", 6, 1)
    Call CAT_Trace_trait_Point(largeur - marge - v17, marge + h26, largeur - marge - v18, marge + h26, "horizontal26_point", 6, 1)
    
    ' toutes les lignes verticales
    Call CAT_Trace_trait(largeur - marge - v1, marge, largeur - marge - v1, marge + h1, "vertical1_indice")
    Call CAT_Trace_trait(largeur - marge - v2, marge + h5, largeur - marge - v2, marge + 102, "vertical2_fait par")
    Call CAT_Trace_trait(largeur - marge - v3, marge + h16, largeur - marge - v3, marge + h2, "vertical3_ID smarteam")
    Call CAT_Trace_trait(largeur - marge - v4, marge + h24, largeur - marge - v4, marge + h4, "vertical4_projet")
    Call CAT_Trace_trait(largeur - marge - v5, marge + h3, largeur - marge - v5, marge + h24, "vertical5_masse")
    Call CAT_Trace_trait(largeur - marge - v6, marge + h3, largeur - marge - v6, marge + h4, "vertical6_proprietaire")
    Call CAT_Trace_trait(largeur - marge - v7, marge + h24, largeur - marge - v7, marge + h4, "vertical7_ESG")
    Call CAT_Trace_trait(largeur - marge - v8, marge + 0, largeur - marge - v8, marge + h4, "vertical8_Nom de la piece")
    Call CAT_Trace_trait(largeur - marge - v9, marge + h5, largeur - marge - v9, marge + 102, "vertical9_creation de plan")
    Call CAT_Trace_trait(largeur - marge - v10, marge + h3, largeur - marge - v10, marge + h4, "vertical10_echelle")
    Call CAT_Trace_trait(largeur - marge - v11, marge + h5, largeur - marge - v11, marge + 102, "vertical11_datecereation")
    Call CAT_Trace_trait_normal(largeur - marge - v12, marge, largeur - marge - v12, marge + h4, "vertical12_cartouche", 1, 3)
    Call CAT_Trace_trait_moyen(largeur - marge - v12, marge + h5, largeur - marge - v12, marge + 102, "vertical13_cartouche", 1, 3)
    
    ' Encadrement numéro pièces ou assemblages
    Call CAT_Trace_trait_Fin(largeur - marge - h27, marge + v21, largeur - marge - h32, marge + v21, "encadrement_horizontal", 1, 1)
    Call CAT_Trace_trait_Fin(largeur - marge - h27, marge + v21, largeur - marge - h27, marge + v21 + 2, "Encadrement_vertical_1", 1, 1)
    Call CAT_Trace_trait_Fin(largeur - marge - h28, marge + v21, largeur - marge - h28, marge + v21 + 2, "Encadrement_vertical_1", 1, 1)
    Call CAT_Trace_trait_Fin(largeur - marge - h29, marge + v21, largeur - marge - h29, marge + v21 + 2, "Encadrement_vertical_1", 1, 1)
    Call CAT_Trace_trait_Fin(largeur - marge - h30, marge + v21, largeur - marge - h30, marge + v21 + 2, "Encadrement_vertical_1", 1, 1)
    Call CAT_Trace_trait_Fin(largeur - marge - h31, marge + v21, largeur - marge - h31, marge + v21 + 2, "Encadrement_vertical_1", 1, 1)
    Call CAT_Trace_trait_Fin(largeur - marge - h32, marge + v21, largeur - marge - h32, marge + v21 + 2, "Encadrement_vertical_1", 1, 1)
    '
End Sub 'CAT_trait_cartouche

'------------------------------------------------------------------------
Sub CAT_symbole_projection()             'créer le symbole européen de projection
'***************
'ajouter vérification du symbole
'***************
Dim gr, pr As Double                                            'petit et grand rayon du cone
Dim xc As Double                                                    'position du centre du cone par rapport au trait gauche de la case
Dim xg, xd, ygb, ygh, ydb, ydh As Double        'position du cone
Dim ecart_pourcentage                                       'écart entre case et symbole en pourcentage de la largeur de la case
Dim ecart As Double                                         'écart entre case et symbole
    ecart_pourcentage = 0.25
    ecart = ecart_pourcentage * (v8 - v6)
    gr = 0.25 * (1 - 3 * ecart_pourcentage) * (v8 - v6)
    pr = 0.625 * gr
    xc = 0.25 * (3 - ecart_pourcentage) * (v8 - v6)
    xg = largeur - marge - v8 + 12
    xd = largeur - marge - v8 + 18
    ygb = marge + (h3 + h24) / 2 - pr
    ygh = marge + (h3 + h24) / 2 + pr
    ydb = marge + (h3 + h24) / 2 - gr
    ydh = marge + (h3 + h24) / 2 + gr
    Call CAT_Trace_trait_Fin(largeur - marge - v8 + 8, marge + (h3 + h24) / 2, largeur - marge - v6 - 8, marge + (h3 + h24) / 2, "trait_axe_horizontal", 1, 1)
    Call CAT_Trace_trait_Fin(largeur - marge - v8 + xc, marge + h3 + 0.5, largeur - marge - v8 + xc, marge + h24 - 0.5, "trait_axe_vertical", 1, 1)
    Set cercle = Fact.CreateClosedCircle(largeur - marge - v8 + xc, marge + (h3 + h24) / 2, gr)
    cercle.Name = "grand_cercle"
    Set cercle = Fact.CreateClosedCircle(largeur - marge - v8 + xc, marge + (h3 + h24) / 2, pr)
    cercle.Name = "petit_cercle"
    Call CAT_Trace_trait(xd, ydb, xd, ydh, "trait_droit")
    Call CAT_Trace_trait(xg, ygb, xg, ygh, "trait_gauche")
    Call CAT_Trace_trait(xg, ygb, xd, ydb, "oblique_bas")
    Call CAT_Trace_trait(xg, ygh, xd, ydh, "oblique_haut")
    '

"call CAT_Trace_trait_fin" appel le code "Trait fin" et les 2 chiffre en fin de ligne correspondent au type de ligne et à l’épaisseur de la ligne (voir code ci dessus)

pour plus d'info

contactez moi

psycko
timide
timide

Messages : 5
Date d'inscription : 19/10/2013
Localisation : ile de france

Revenir en haut Aller en bas

Re: modification type et epaisseur trait

Message par Dupeyroux le Mar 24 Juin 2014 - 18:01

Ok Merci pour les réponses, j’essaie d'adapter ces bouts de codes et vous tient informés

Dupeyroux
timide
timide

Messages : 7
Date d'inscription : 21/06/2014
Localisation : Toulouse

Revenir en haut Aller en bas

Re: modification type et epaisseur trait

Message par Dupeyroux le Mar 24 Juin 2014 - 18:08

Guss_ a écrit:Tu écris en VBscript ou VBA ?

Il faut surement que tu écrives

MySelection.Add GeomElements.Item("Droite.3")

Pour répondre à cette question je suis en catscript

Dupeyroux
timide
timide

Messages : 7
Date d'inscription : 21/06/2014
Localisation : Toulouse

Revenir en haut Aller en bas

Re: modification type et epaisseur trait

Message par Dupeyroux le Mer 25 Juin 2014 - 19:49

Bon, j'ai essayé d'intégrer ton code "psycko" mais j'ai des erreurs.
Je pense qu'il faut déclarer les variables (X1, Y1, x2, y2, nom, dot, wid) quelque part mais je sais pas où.

Je ne suis pas un grand professionnel du codage :-( désolé je le comprend quand il est écrit mais ai du mal à le créer.

Dupeyroux
timide
timide

Messages : 7
Date d'inscription : 21/06/2014
Localisation : Toulouse

Revenir en haut Aller en bas

Re: modification type et epaisseur trait

Message par psycko le Jeu 26 Juin 2014 - 1:25

oui bien sur

comme tu peut le voir dans le deuxième listing
quand je crée une ligne de cartouche je crée cet ligne :
Call CAT_Trace_trait_moyen(largeur - marge, marge + h5, largeur - marge - v12, marge + h5, "horizontal5_cadre 2 bas", 1, 3)

le texte en "bleu" va cherche les ligne de script permettant la création de la ligne, entre parenthèse (vert) donne les coordonné le la ligne
le texte en rouge permet de donné une désignation à la ligne (quand dans catia tu sélectionne la ligne , son nom apparait)
le 1 correspond à un type de ligne et le 3; à son épaisseur

en sachant que les coordonnées de chaque points de la ligne partent de l'origine de la feuille qui se trouve en bas à gauche

psycko
timide
timide

Messages : 5
Date d'inscription : 19/10/2013
Localisation : ile de france

Revenir en haut Aller en bas

Re: modification type et epaisseur trait

Message par toulouzing le Jeu 26 Juin 2014 - 1:43

L'autre méthodologie que j'ai adopté est de créer un fichier draw de reference qui contient un cartouche dans une feuille de détail, dessiné et avec tous les champs remplis de la forme "text1" etc. Idem pour les cadres .Ils suffira alors par la macro d'aller lire le fichier draw d'inserrer le cartouche de la planche de détail sur dans le calque1 et d'affecter à chaque champs la valeur recuperé dans la CATPart ou le CATProduct.
Celà permet de s'affranchir de creer des lignes etc avec les macros car c'est vrai que ce n'est pas facile quand on n'est pas du metier.

toulouzing
timide
timide

Messages : 15
Date d'inscription : 09/04/2014
Localisation : toulouse

Revenir en haut Aller en bas

Re: modification type et epaisseur trait

Message par Dupeyroux le Ven 27 Juin 2014 - 18:45

Bon c'est bon je m'en suis sorti ;-)
Comme tu disais plus haut c'est vrais que la macro clignote de partout et est un peut longue mais elle fait son office.

J'ai un autre problème dans ma macro pour la création de mon cartouche mais je vais ouvrir un autre sujet.

En tout cas merci de votre aide.

Dupeyroux
timide
timide

Messages : 7
Date d'inscription : 21/06/2014
Localisation : Toulouse

Revenir en haut Aller en bas

Re: modification type et epaisseur trait

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum