2017-01-30 3 views
0

Vraiment apprécier qui peut passer quelques minutes pour m'aider, alors merci d'avance! Je me suis dans la situation où la macro en cours d'exécution dans VSTA works (vb.net), mais en cours d'exécution de fichiers dll de solides ne fonctionne pas. Probablement oublier quelque chose de très simple. Le principe est que le fichier texte est dans le même dossier que les fichiers dll et par défaut lire ce dossier sans longue emplacement « string »API SolidWorks, Macro fonctionnant sous VSTA mais pas à partir de la DLL

Cela fonctionne dans VSTA et après la construction dll (très simple)

Partial Class SolidWorksMacro 
    Public Sub main() 
     Dim Model As ModelDoc2 = swApp.ActiveDoc 
     Dim LayerName As String = "Stamp" 
     MsgBox(LayerName) 
    End Sub 
    Public swApp As SldWorks 
End Class 

Non Je vouloir faire la même chose d'une manière que le nom de la couche est lu à partir du fichier texte. Il fonctionne lors de l'exécution de VSTA, mais après la construction de dll et en cours d'exécution de travaux solides, il donne l'erreur: ne peut pas ouvrir

"Location"\macro.dll.

Partial Class SolidWorksMacro 
    Public Sub main() 
     Dim Model As ModelDoc2 = swApp.ActiveDoc 
     Dim LayerName As String = "Stamp" 
     Dim FileName As String = "LayerName.txt" 
     Dim LayerName As String 
     Dim sr As New StreamReader(FileName) 
     LayerName = sr.ReadLine 
     MsgBox(LayerName) 
    End Sub 
    Public swApp As SldWorks 
End Class 

Répondre

1

Comment comptez-vous sur l'exécution du code? Vous devrez créer des fonctionnalités supplémentaires pour créer un bouton/tâche/page de propriétés via l'API pour SOLIDWORKS afin de savoir ce que vous voulez faire. C'est un peu plus compliqué que d'exécuter une macro. Quelles références avez-vous ajouté à votre projet? Vous devrez ajouter au moins:

  • SolidWorks.Interop.sldworks
  • SolidWorks.Interop.swpublished

Vous implémentez correctement l'interface ISwAddin? Aussi, je n'ai pas eu beaucoup de chance en ouvrant simplement une DLL avec SOLIDWORKS, j'utilise regasm.exe pour enregistrer la DLL COM ou créer un programme d'installation wix pour créer les entrées de registre en cas de distribution sur plusieurs machines.

La page Getting Started dans l'aide API sera une bonne référence pour voir quelques exemples et comment configurer votre environnement.

+0

plus 1 pour la réponse –

+0

Je connais ces choses et les ai compris. Pour que SolidWorks exécute des macros dll, VSTA doit être installé. Comme je l'ai dit, cela fait partie d'un code plus grand et si j'utilise l'exemple 1, cela fonctionne dans VSTA et Solidworks, si j'utilise l'exemple 2 cela fonctionne dans VSTA mais pas dans SolidWorks .... VSTA utilise visual studio 2005 .... – Alar