[VB.net] Extraction référence Solidworks

Bonjour,

 

Existe t'il un moyen d'extraire les reference d'un fichier depuis vb.net ?

J'ai bien regardé dans l'API visual basic de Solidworks mais rien trouvé de concret :/

 

Cordialement

Bonjour, a priori c'est possible. Il faut déclarer SolidWorks et ajouter la bibliothèque correspondante, voir ce lien :

http://help.solidworks.com/2014/english/api/sldworksapiprogguide%5Cgettingstarted%5Cvisual_basic_.net_standalone_and_add-in_applications.htm

voir ce fil de comm

http://www.lynkoa.com/forum/autres/vba-excel-pour-solidworks

@+ ;-)

Bonjour .PL & gt22

En effet la déclaration est obligatoire ce que j'ai deja fait car actuellement je change deja des reference avec mon soft le soucis est que je dois les renseigner toute une à une dans un tableau c'est pour cela que je cherche a extraire directement les reference :)

Que signifie exactement extraire les références ?
1 « J'aime »

Je souhaiterait pouvoir recupere a partir d'un fichier type ASM ou DRW les reference qu'il ont

Exemple:

Le Fichier "mise en plan 1.SLDDRW" Fait reference à l'assemblage "assemblage1.SLDASM"

Le Fichier "assemblage1.SLDASM" Fait reference a la piece "Piece1.SLDPRT"

Je souhaiterait recupere les valeur "assemblage1.SLDASM" et "Piece1.SLDPRT" en automatique

Je ne sait pas si je suis comprehensible :/

1 « J'aime »
OK, je pense qu'à partir du moment où SolidWorks est déclaré, c'est la même chose qu'en VBA ? En fait depuis une mise en plan il faut récupérer la première vue pour récupérer le 3D associé.

Il faut utiliser getfirstview pour récupérer le fond de plan, puis getnextview pour récupérer la première vue, et enfin referenceddocument pour avoir accès au fichier 3D correspondant.

Je crois qu'il y a un exemple dans cette macro que j'ai posté sur Lynkoa :

http://www.lynkoa.com/tutos/3d/macro-enregistrer-sous-avec-solidworks

Merci pour ta reponse .PL

je viens de regardé ton code et il me semble Complexe pour ce que je veut faire j'entend par la que depuis solidworks en cliquant sur une mise en plan pluis sur reference on obtient la fenetre en piece jointe et cela m'irait grandement car contient le dossier et le nom de la piece


ref.png
1 « J'aime »

Bonjour,

Vous cherchez en fait à obtenir les même résulatat qu'en faisant Fichier/Chercher les références puis le bouton "Copier la liste". C'est ça ?

Ensuite il ne vous reste plus qu'à coller celà dans un fichier Excel.

2 « J'aime »

Bonjour Benoit.LF,

En effet c'est cela que je souhaite faire recupere les info directement apres je ne passerait pas par excel mais directement stocké dans vb.net mais c'est bien cela ! :)

Ça n'est pas si compliqué et c'est l'unique méthode à ma connaissance ! Petit rappel, il peut y avoir plusieurs documents différents sur une mise en plan, donc plusieurs références...

La macro que j'ai posté fait autre chose bien sûr, mais c'est le début du code qui est intéressant pour cette application.

Voir ce lien qui donne la même solution :

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

Après je suis preneur pour une solution qui fait ça en moins de 3 lignes de code !!! (Sans les déclarations bien entendu !)
Sinon pour un assemblage, c'est GetComponent qu'il faut utiliser :

http://help.solidworks.com/2012/English/api/sldworksapi/SolidWorks.Interop.sldworks~SolidWorks.Interop.sldworks.IAssemblyDoc~GetComponents.html

Une solution pour les références externes (est-ce toutes les références ?) en une 50aine de ligne :

http://help.solidworks.com/2013/English/api/swdocmgrapi/Get_All_External_References_for_Drawing_Example_VBNET.htm

J'ai trouvé une solution Provisoire qui risque de durée je change TOUTES les references meme celle qui ne son pas existante SOlidWorks ne bronche pas.

 

Bonjour,

L'api a utiliser est  : GetDocumentDependencies2

http://help.solidworks.com/2013/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.isldworks~getdocumentdependencies2.html

il vous retourne toutes les références externe du fichier 

Philippe

1 « J'aime »