ans
Juillet 12, 2016, 6:53
1
Bonjour,
Je vous présente mon problème :
Après un infructueux travail de recherche je sollicite votre aide afin de pouvoir obtenir les coordonnées(x,y ) via VBA de l'élement cartouche de cette mise en plan.
Le fichier de départ est un dxf importé via SolidWorks 2012.
Merci d'avance de vos réponses.
image_1.png
pl
Juillet 12, 2016, 7:26
2
Salut,
Qu'est ce que tu as réussi à faire avec ta macro pour l'instant ?
Voilà une macro qui permet de faire un "get" sur cahcune des entités d'une mise en plan, puis de faire un debug.print de son nom :
http://help.solidworks.com/2012/English/api/sldworksapi/Get_All_Visible_Components_in_Drawing_View_Example_VB.htm
Ensuite quand on est positionné sur le bon element (en fonction de ce qu'affiche le debug.print à chaque ligne avec un IF), il suffit de récupérer la position en s'inspirant des macros proposées ici :
https://forum.solidworks.com/thread/60386
1 « J'aime »
ans
Juillet 12, 2016, 7:58
3
Merci PL de ce retour rapide !
Pour être honnête j'ai essayé d'utiliser un certain nombre de macros présentes sur le web mais en vain.
Ma macro personelle est au point mort faute de connaissance suffisante.
Lors de l'utilisation des deux macros que tu as mis en lien j'obtient les messsages d'erreur suivants :
Macro du lien n°1 :
Erreur au niveau de :
'Get all visible components in the view
vComps = swView.GetVisibleComponents
/sites/default/files/from_ckeditor/macro1.png
Macro du lien n°2 :
Au niveau de la 5ème ligne de la macro main :
Set swSketch = swView.GetSketch
Erreur d'execution 91 Variable objet ou variable de bloc With non définie.
/sites/default/files/from_ckeditor/macro2_1.png
/sites/default/files/from_ckeditor/macro2_2.png
Merci de ton aide !
pl
Juillet 12, 2016, 8:25
4
Le premier lien n'était pas bon, regarde de ce côté :
http://help.solidworks.com/2016/English/api/sldworksapi/Get_Title_Block_Tables_Example_VBNET.htm
Mais quel est ton niveau en VBA ?
1 « J'aime »
ans
Juillet 12, 2016, 8:34
5
Je maitrise bien les languages Excel, Powerpoint et Outlook mais je ne suis pas familier de Solidworks.
Tout d'abord j'ai les instructions suivantes en rouge donc à pirori incorrectes :
Partial class SolidWorksMacro
End Class
Lors de l'activation de la macro un message d'erreur apparâit dès la première ligne :
Erreur de compilation : Instruction incorrecte à l'extérieur d'une procédure.
pl
Juillet 12, 2016, 8:39
6
On parle bien d'une macro lancée depuis SolidWorks ?
SI c'est le ca, tu peux virer les classes, je crois que c'est inutile
1 « J'aime »
ans
Juillet 12, 2016, 8:46
7
Ok voila qui est fait cependant le problème persiste au niveau de :
Imports SolidWorks .Interop.SldWorks
Il bug sur le SolidWorks en gras ci-dessus avec le message d'erreur :
Erreur de compilation : Instruction incorrecte à l'extérieur d'une procédure.
Une idée sur l'origine du problème ?
pl
Juillet 12, 2016, 8:47
8
Tu peux mettre ton code dans un fichier txt en pièce jointe sur Lynkoa stp ?
1 « J'aime »
pl
Juillet 12, 2016, 9:06
10
Tu as pris ça de quel lien ?
Car je pense qu'il y a une erreur à la dernière ligne :
Public swApp As SldWorks
Elle ne devrait pas être à cet endroit.
1 « J'aime »
ans
Juillet 12, 2016, 9:18
11
Je l'ai pris du dernier lien que tu m'as transmis :
Le premier lien n'était pas bon, regarde de ce côté :
http://help.solidworks.com/2016/English/api/sldworksapi/Get_Title_Block_...
Mais quel est ton niveau en VBA ?
remrem
Juillet 12, 2016, 9:20
12
Ton code n'est pas du VBA mais du VB.net.
Cela ne peut pas fonctionner...
A plus.
1 « J'aime »
ans
Juillet 12, 2016, 9:31
13
Voilà qui explique pas mal de choses.
Dans ce cas je suis réellement dans une impasse.
Si quelqu'un a une idée il est le bienvenue.
pl
Juillet 12, 2016, 9:39
14
Oui le dernier lien est du VB.NET à modifier pour l'adapter, c'est pour ça que je t'ai demandé ton niveau.
VB.NET et VBA sont deux langages assez proches, mais pas compatibles.
1 « J'aime »
remrem
Juillet 12, 2016, 9:46
15
L'exemple est également disponible en VBA : http://help.solidworks.com/2016/english/api/sldworksapi/get_title_block_tables_example_vb6.htm
1 « J'aime »
pl
Juillet 12, 2016, 9:56
16
BIen vu remrem, j'avais essayé de remplacer la fin de l'URL par VB au lieu de VB6...
ans
Juillet 12, 2016, 10:00
17
Merci beaucoup de votre aide.
J'ai reprit le code vba donné dans le lien cependant un message d'erreur apparaît au niveau de :
Set feat = tbtAnno.TitleBlockTableFeature
Message d'erreur : Erreur d'execution 91 Variable objet ou variable de bloc With non définie.
pl
Juillet 12, 2016, 10:14
18
Deux petite questions :
Tu as un fond de plan où est situé ton cartouche ou il est dans le plan directement ? Tu peux le selectionner ?
C'est possible pour toi de sélectionner le cartouche à la souris avant ou tu veux les coordonnées sans intervention de l'utilisateur ?
En gros, c'est quoi le but ?
ans
Juillet 12, 2016, 11:41
19
Les plans sont extrait de DXF réalisés sur un autre logiel.
Il n'y a pas de fond de plan. je peux effectivement sélectionner le cartouche.
Le but est de procéder à l'ajout automatique d'une image par rapport au cartouche sur un ensemble de fichiers qui de par leur différence de taille ne possède aucune mise en page commune.
En conséquence, je souhaiterais savoir comment obtenir les coordonnées du cartouche (ou plus globalement d'un élement) sans intervention utilisateur et dans le cadre d'une mise en plan.
Merci de votre aide.