DocumentManager(API) en Windev /Remplace DSOFiles propriétés personnalisées

Bonjour,

Je cherche un exemple de l'utilisation de SolidWorks.Interop.swdocumentmgr.dll dans Windev, sans ouvrir Solidworks. 

En Solidworks V2011, j'utilisais les paramètres personnalisés des documents Solidworks comme interfaces avec mon ERP spécifique en Windev. J'utilisais DsoFiles, qui avait accès à ces paramètres. Ce qui me permettais de mettre à jour ces paramètres sans ouvrir Solidworks ; Un exemple :

Faire une copie d'un assemblage +pièces +drw d'un client pour un autre client en changeant toutes les propriétés personnalisées pour celles du nouveau client. Les lignes de nomenclature sont créées dynamiquement (Windev) et les informations passées par DSOFiles aux docs Solidworks. (La copie continue par un changement de nom des pièces et la recopie des dépendances mais c'est une partie qui fonctionne encore en 2015 car la compatibilité a été conservée, enfin j'espère :) ).

Les paramètres personnalisèes des documents Solidworks V2015 ne sont plus disponibles avec DSoFiles -> c'est une décision Microsoft (Office), suivie par Solidworks.

Maintenant il faut utiliser les API de la DLL SolidWorks.Interop.swdocumentmgr.dll, pour gérer ces paramètres. C'est bien documenté en VB mais je ne suis pas arrivé à faire appel à cette DLL dans Windev (V20). 

J'arrive très bien à utiliser les API  du noyau Solidworks  :

SwAppDocDepencies est un objet Automation dynamique
SwAppDocDepencies = allouer objet Automation "sldworks.Application"

Par contre impossible avec SolidWorks.Interop.swdocumentmgr.dll. En 2 semaines, j'ai essayé tout ce que la Hot LIne m'a donné comme infos (mais en VB.NET) , tout ce que j'ai trouvé sur le NET... Mais il n'y a rien sur le sujet en Windev !

Du coup je ne peux pas passer en V2015 tant que je n'ai pas trouvé la solution !

Alors si vous avez déjà fait ça, merci de me faire passer un bout de code, je vous promet des éloges de 1er ordre :)

Sincères salutations.

PS : Je 'nai pas trouvé de domaine Interface ERP ou API pour déterminer le domaine de la qustion

 

 

1 « J'aime »

Salut,

Je ne pense pas que WinDev soit compatible avec le Document Manager de SW.

Windev est un logiciel peu répandu.

J'ai fait la relation de avec notre ERP en Vb.net. J'imagine que tu veux conserver une partie de ton projet sur windev. Il t'est alors possible de développer une application en Vb.net que sera en relation avec ton appli Windev.

[Edit : ] Quelles sont les réponses de la Hotline ? Tu as fait la demande de la license pour pouvoir utiliser l'API Document Manger ?

 

Bonjour,

Merci pour la réponse.

Je ne vois pas pourquoi Document Manager ne serait pas compatible avec Windev. L'aplication Solidworks est facile à manipuler en Windev, j'ai réussi à traduire en windev tout ce que j'avais fait en Visual, l'avantage c'est de ne pas avoir d'interface Visual.

La Hot LIne m'indique que c'est faisable mais toutes les indications sont en VB.net.

Oui, j'ai la clé d'utilisation.

Il faut 'traduire' en windev les commande suivantes :

Imports SolidWorks.Interop.swdocumentmgr

swClassFact = CreateObject("SwDocumentMgr.SwDMClassFactory")
swDocMgr = swClassFact.GetApplication(sLicenseKey)

J'ai bien indiqué utilisé la DLL dans Windev, celle correspondant au Frameworks 4 (4,5 sur mon PC)

C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\api\redist\SolidWorks.Interop.swdocumentmgr.dll

J'ai bien registré la DLL comme indiqué dans la doc. :regsvr32  "<disk>:\Program Files\Common Files\SOLIDWORKS Shared\SwDocumentMgr.dll"

J'ai toujours l'erreur "SwDocumentMgr.SwDMClassFactory" n'est pas installé sur votre système !

 

Il faut aussi traduire les déclarations:

Imports SolidWorks.Interop.swdocumentmgr

-----------------------------------------------------------------------------------------------------------------------------------

Dim swClassFact As SwDMClassFactory
Dim swDocMgr As SwDMApplication4

-----------------------------------------------------------------------------------------------------------------------------------

swClassFact = CreateObject("SwDocumentMgr.SwDMClassFactory")
swDocMgr = swClassFact.GetApplication(sLicenseKey)

 

 

Comment t'y prends tu dans windev ?

Peux-tu poster une image de ton interface windev ?

Bonjour,

Ce que je pense être correcte mais qui ne fonctionne pas.

swClassFact = CreateObject("SwDocumentMgr.SwDMClassFactory")

swClassFact est un objet Automation dynamique

swClassFac = allouer objet Automation "wDocumentMgr.SwDMClassFactory"

-> mais répond "wDocumentMgr.SwDMClassFactory" n'est pas installé sur votre système


swDocMgr = swClassFact.GetApplication(sLicenseKey)

swDocMgr est un objet Automation dynamique

swDocMgr = swClassFact>>GetApplication(sLicenseKey)

>> permet d'appeler une fonction, mais quand j'en serais là je serais content !

Donc personne n'a utilisé wDocumentMgr avec Windev?

Cordialement,

 

 

 

Dans Windev, après ajout de la dll en référence tu ne peux pas récupérer les types SwDMClassFactory et SwDMApplication4 ?

Car ce que je crois comprendre c'est que tu ne les utilises pas.

Salut,

Je vois que tu avances : http://forum.pcsoft.fr/fr-FR/pcsoft.fr.windev/73037-traduction-code-windev/read.awp

Pourquoi tu n'est pas sur de ta cle ?

Pourquoi n'est elle pas une simple chaine ?

Faute de mieux, j'ai utilisé Solidworks et l'automation.

En fait cela fonctionne bien, avec des gros PC, c'est un peu plus long, puisqu'il faut que Solidworks ouvre la pièce. Mais cela permet de voir la macro faire son travail ou pas.