Création de nomenclature d'assemblage | SolidWorks API : Document Manager

Bonjour,

Je suis en train de réaliser une application VB.net afin de mettre en place l'échange des données entre SolidWorks et notre ERP.

Pour cela j'utilise l'API SolidWorks Document Manager qui permet d'accéder aux informations des fichiers sans les ouvrir dans l'application. Plus d'infos : http://help.solidworks.com/2015/english/api/swdocmgrapi/GettingStarted-swdocmgrapi.html?id=c64a324db326402a84186311e072bc1c#Pg0

Je parviens à lire, modifier et créer les propriétés personnalisées.

Je souhaite créer des nomenclatures d'assemblages. Pour cela je parviens à extraire une nomenclature si elle existe déjà puis l'importer dans Excel. Grâce aux méthodes GetTableNames et GetTableCellText.

Cependant malgré de nombreuses recherches je ne parviens pas à créer une nomenclature.

Je vous remercie par avance

2 « J'aime »

Salut,

Tu souhaites créer une nomenclature dans un 3D d'assemblage sans ouvrir le fichier ?

1 « J'aime »

Oui. Un peu comme SmartBom mais à mon modeste niveau...

1 « J'aime »

Je suis tombé sur un post qui ne donne pas la solution, mais je viens de voir que tu y es déjà allé ce matin ;-) Je pense que la personne qui a répondu que c'est possible, ne connaissait pas Document Manager...

En recherchant BOM sur cette page (qui liste toutes les commandes de Document Manager a priori), il n'y a ques des instructions du style "access" ou "get", mais rien pour créer, désolé :

http://help.solidworks.com/2015/english/api/swdocmgrapi/SolidWorks.Interop.swdocumentmgr~SolidWorks.Interop.swdocumentmgr_namespace.html?id=30a118bab16d4ebdb948d29c74dcfd9f#Pg0

Ou en recherchant TABLE et en regardant les membres sur cette page (en développant avec le +), on ne trouve rien non plus :

http://help.solidworks.com/2015/english/api/swdocmgrapi/SolidWorks.Interop.swdocumentmgr~SolidWorks.Interop.swdocumentmgr.ISwDMTable_members.html?id=b4f08e90682443dd91ef867afd8a2192#Pg0

A priori le lien ci-dessous n'est utile que quand le fichier est ouvert, n'est ce pas ? Je crois que c'est ce que tu vas devoir faire.

http://help.solidworks.com/2015/English/api/sldworksapi/Insert_and_Show_BOM_Table_in_Assembly_Example_VBNET.htm

 

Ou autre solution capillotractée, c'est de parcourir tous l'arbre SolidWorks pour créer ton tableau et le recréer en fichier texte...

 

Au fait, tu es sûr que SmartBOM n'ouvre pas le fichier ?

 

Edit :

Une réponse de quelqu'un qui utilise le Domcument Manager pour confirmer mes dires :

https://forum.solidworks.com/message/467937#467937

Il traverse bien toutes les pièces...

 

Edit 2 : ça peut être dangereux de créer la nomenclature sans ouvrir le fichier, car si un des composant a été modifié (changement de code, de matière, dans un mécano soudé, etc) sans mettre à jour les assemblages qui la contiennent, ta nomenclature sera fausse !

 

Edit 3 : une solution pourrait être d'inclure une nomenclature dans les modèles de tes assemblages, au moins tous les nouveaux assemblages créés ne poseront pas de problème !

6 « J'aime »

Merci .PL Pour cette réponse.

Je vois que nous avons des méthodes de recherches semblables. ;-)

Effectivement, je n'avais pas fait de test de SmartBom sur de gros assemblages depuis longtemps, je crois qu'il doit l'ouvrir...

Je vais donc tenter de faire de même.

Je reviens ici dès que j'ai réussi. :-)

1 « J'aime »

Bon courage, car ce n'est pas une mince affaire.

Vous avez un PDM pour gérer les fichiers ? Car moi je ne procède pas de la même manière.

Et tu as vu mon edit 3 de la question précédente ?

Biensur que si je n'ouvre pas mon fichier la table ne sera peut être à jour.

Dans le code je vais :

  1. Vérifier si une table (du script) est présente sans l'ouvrir.
  2. Si oui, j'indique la date du dernier enregistrement à l'utilisateur pour savoir si celle ci est obsolète.
  3. Si non j'ouvre le fichier pour mettre à jour ou créer une table.

Bonne journée.

Et est-ce que vous avez un PDM pour gérer les fichiers ? Ou c'est juste un emplacement sur le serveur ?

Non pas de PDM.

Mais on y travaille...

Ok, et tu veux faire ta macro sur tous les fichiers ? Ou seulement les nouveaux ?

Pour info, je crois qu'on peut utiliser le mode arrière plan pour en pas afficher l'ouverture :

http://help.solidworks.com/2011/English/api/sldworksapi/Enable_Background_Processing_When_Opening_Drawing_Document_Example_VB.htm

 

Salut,

Il s'agit d'une application Vb.net intégré dans Excel comme ceci : http://jfdeterme.developpez.com/tutoriels/dotnet/developper-add-in-pour-excel-2007-avec-visual-studio-2010/

A plus.

Merci à .PL,

Effectivement après demande au support APi et sur le forum SW.

Il est nécessaire d'ouvir les fichiers et d'ensuite utiliser la méthode : IModelDocExtension::InsertBomTable3

Mon Application fonctionne ! ;-)

Merci.

 

 

1 « J'aime »