Faire apparaître un filigrane dans le fond de plan

Bonjour, 

 

Je travail sous solidworks 2011, j'ai déjà une macro qui m'enregistre mon plan actif, le plan de ma pièce active ou alors l'ensemble des plans de l'assemblage actif, le tout à l'emplacement qui va bien.

Cette macro utilise tout simplement la fonction "enregistrer sous" au format PDF de solidworks (pas d'imprimantes virtuelles type Bullzip ou PDFcréator!)


Mon problème est que j'aimerai faire apparaitre un texte dans mon fond de plan avec écrit "POUR CONSULTATION" si je le souhaite lors du lancement de ma macro PDF.

 

j'ai tout d'abord pensé à créer un bloc incliné avec la bonne police, la bonne taille, et j'ai essayé de l'ajouter à mon fond de plan par macro. Le problème est que, vu qu'il y a plusieur format de plan a différents formats, la position de bloc inséré ainsi que la taille n'est pas des plus facile a gérer.

J'ai ensuite pensé à tout simplement faire une note sur mon fond de plan (déjà bien positionnée et à la bonne taille) et à tout simplement la faire afficher puis cacher lors lors de l'execution de ma macro si je decide que cette version de plan sera uniquement pour consultation.

Avec un enregistrement j'arrive à cacher ma zone de texte :
 

Sub main()

Set swApp = _
Application.SldWorks

Set Part = swApp.ActiveDoc
boolstatus = Part.Extension.SelectByID2("Objet de détail1988@Fond de plan", "NOTE", 0.2884716463644, 0.1501347778362, 0, False, 0, Nothing, 0)

Part.HideDimension


End Sub

Ca marche bien et ce bout de code me donne par la même occasion l'ID de ma zone de texte. Ce qui me permet d'écrire un autre bout de code pour reselectionner ma note.
En revanche, j'ai beau chercher, je ne trouve pas la fonction qui permet de réafficher cette note!!!!! 

La selection de la note m'amène à une autre question : 

Comment puis-je faire pour controler l'ID d'un objet? car suivant mes différents fonds de plan, l'ID de ma note ne sera surement pas toujours la même (Objet de détail1988@Fond de plan" dans mon exemple ci-dessus)

Désolé, je pose peut-être des questions basiques en VBA SolidWorks mais j'en fait depuis très peu de temps. 

Merci d'avance!

Yves

 

Bonjour,

Le plus simple est de lui attribuer un nom à la création.

Il est ainsi beaucoup plus aisé pour la retrouver par la suite, avec cette instruction :

http://help.solidworks.com/2012/English/api/sldworksapi/Get_Note_By_Name_Example_VB.htm

Edit : une page qui pourrait etre intéressante en complément :

http://help.solidworks.com/2013/English/api/sldworksapi/Place_Note_Behind_Drawing_Sheet_Example_VB.htm

 

 

Je fais souvent ça pour envoyer au client.

 

J'ai créer un fond e plan spécial avec un calque très clair dessus où j'ai noté le nom de l'entrprise en grand.

 

Puis après lors d'une mise en plan soit je choisis directement le fond de plan où se trouve ce filligrane, ou bien je passe par une macro qui change mon fond de plan actuel pour mettre celui filligrané.

 

Voir image


filligrane.png
1 « J'aime »

voir ce lien video

https://www.youtube.com/watch?v=R87mZoshW_Y

@+

Merci pour vos réponses

 

.PL : Je n'arrive pas a utiliser les macros sur tes liens

 

Bart : C'est vrai que c'est une idée qui peut en plus me supprimer un autre problème!
 

Je vais essayer comme ca.

 

Yves

 

Je gagne énormément de temps avec ça.

 

Surtout quand je change mes fonds de plan pour on ne sait quelle raison.

Pour ouvrir les anciennes mep avec les nouveaux fonds de plan, c'est magique!^^

Même pas besoin de taper du code en vba. Il suffit de faire la manip à la main en cliquant avant sur enregistrer marco puis faire stop à la fin de la manip.

Inserer ensuite les boutons de raccourci et en avant guinguamp ^^

(Benoit, c'est mieux comme ça?) =)


rectif.png
1 « J'aime »

 

Bart : j'ai répondu trop vite, je ne peux finalement pas utiliser la technique de changer de fond de plan car je rajoute des éléments dans mon fond de plan tel que le tableau d'évolution d'indice par exemple et tous ce éléments sauteraient à a chaque fois.

gt22 : merci pour cette video. mais mon problème est toujours le même. Comment faire afficher ma note qui est cachée dans mon fond de plan?

 

@yves : pourquoi tu ne peux pas utiliser la macro ? Il faut bien entendu adapter le code.

De plus le code que j'ai donné est pour retrouver une note par son nom, il faut déjà la nommer à la création !

j'aimerai bien utiliser la macro mais comment est ce que tu nommes ta note a sa création?

 

@Lucas : L'hopital qui se fout de la charité...^^

 

@yves : Pour ta macro logiquement, tes notes et tables ne doivent pas sautés sur ils sont ancrés sur ta feuille.

2 « J'aime »

.PL : Je la crée manuellement avec l'outil "note" dans l'onglet "notation"

la macro en question m'indique une erreur sur "loop" en me disant 

          Erreur de compilation :
          Boucle sans Do

Bart : mes élément sautent a chaque changement de fond de plan car je les contraint par rapport aux éléments de mon fond de plan

Pourquoi toutes mes réponses hors sujet on été supprimées ?

1 « J'aime »

Je ne sais pas, mais tout ca ne répond pas à ma question de nommer une note à sa création ou alors de changer son nom après. Puis de faire apparaitre une note cachée...

 

Merci

 

Yves

1 « J'aime »

Yves : pourrais-tu créer une macro par apprentissage lors de la création de la note, pour que je vois le code stp ?

Bonjour .PL

 

Voici l'enregistrement de la création de la note :

 

Sub main()

Set swApp = _
Application.SldWorks

Set Part = swApp.ActiveDoc

Dim myNote As Object
Dim myAnnotation As Object
Dim myTextFormat As Object
Set myNote = Part.InsertNote("PONR CONSULTASION")

If Not myNote Is Nothing Then
   myNote.Angle = 0
   boolstatus = myNote.SetBalloon(0, 0)
   Set myAnnotation = myNote.GetAnnotation()
   If Not myAnnotation Is Nothing Then
      longstatus = myAnnotation.SetLeader3(swLeaderStyle_e.swNO_LEADER, 0, True, False, False, True)
      boolstatus = myAnnotation.SetPosition(0.1631152186896, 0.1620775367073, 0)
      boolstatus = myAnnotation.SetTextFormat(0, True, myTextFormat)
   End If
End If

Part.ClearSelection2 True
Part.WindowRedraw

End Sub
 

Pour plus de lisibilité je joint le fichier texte

 

Yves

 


macro_creation_note.txt

En fait à la place de créer la note à la main, il faadra la créer avec une macro à chaque fois, c'est un problème ?

Je n'avais pas compris que la note était créée manuellement au départ.

Edit : sinon, est-ce que le texte est toujours "POUR CONSULTATION" exactement ?

En fait, comme je le disait dans mon post initial, j'avais effectivement pensé à la créer puis la supprimer à chaque fois. L'ennuis c'est que j'ai les 4 formats de fond de plan possible (A3, A2, A1 et  A0) ce qui veut dire que la taille de la note doit s'adapter à chaque fois ainsi que sa position.

C'est pour cela que l'idée de l'avoir déjà créée mais cachée me plaisait plus. 
Il me fallait juste la possibilité d'imposer l'ID de cette note (pour que dans tous mes fonds de plan elles aient toutes la même) et le code pour la montrer (puisque j'ai déjà la ligne de code pour la cacher)

Bonjour, 

 

Il n'existe donc pas de ligne de code pour faire afficher une note qui est cachée? alors qu'il en existe une pour cacher une note visible?

 

Merci

 

Yves

Bonjour, je confirme qu’on gagne beaucoup plus de temps parce qu’on a plus à prendre la peine de taper les codes en Vba. C’est très pratique.