Risultati da 1 a 8 di 8
  1. #1
    Utente Junior
    Iscritto dal
    2013
    Messaggi
    59
    Professione
    Ingegnere Meccanico
    Regione
    Emilia Romagna
    Software
    SolidWorks, Solid Edge, Inventor, Autocad

    Predefinito Eseguire macro da Add-in

    Buongiorno a tutti, volevo esporvi il mio problema. Io ho creato una Add-in di SolidWorks scritta in linguaggio C# e ho inserito un pulsante in essa. Io vorrei che, premendo questo bottone, venisse eseguita in automatico una determinata macro (chiamiamola Macro1.swp). Però non so bene come fare, anche perchè in rete non ci sono molti tutorial che parlano di questo; ho letto della funzione RunMacro2 ma non so come usarla.
    Vi posto il codice così vi potete rendere conto meglio del mio problema:

    Codice:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Drawing;
    using System.Data;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using SolidWorks.Interop.sldworks;
    using SolidWorks.Interop.swcommands;
    using SolidWorks.Interop.swconst;
    using SolidWorks.Interop.swpublished;
    using SolidWorksTools;
    using System.Runtime.InteropServices;
    
    namespace SWAddin_CSharp
    {
        [ComVisible(true)]
        [ProgId(SWTASKPANE_PROGID)]
        public partial class SWTaskpaneHost : UserControl
        {
            public const string SWTASKPANE_PROGID = "AngelSix.SWTaskPane_SwAddin";
            public SWTaskpaneHost()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
            CODICE CHE ESEGUE L'ATTIVAZIONE DELLA MACRO (E CHE NON SO IN GRADO DI SCRIVERE)
            }
        }
    }

    Non so cosa scrivere all'interno del comando che riguarda il click del mio bottone. Vorrei che lì dentro fosse eseguita la mia macro.

    Grazie a tutti in anticipo

  2. #2
    Utente Standard L'avatar di jenuary
    Iscritto dal
    2007
    Messaggi
    385
    Professione
    Progettista e Programmatore VB.Net
    Regione
    Veneto
    Software
    Solidworks

    Predefinito

    Questa parte di codice serve per creare un Taskpane in SolidWorks, che si riempie con il tuo Usercotrol.
    Il tuo Usercontrol immagino sia un controllo personalizzato che contiene un bottone.
    Se all'evento click del tuo bottone devi lanciare una macro, devi scivere il seguente codice:

    swApp.RunMacro(Path & "\MyMacro.swp", "NomeModulo", "Main")

    Path -> percorso della macro
    NomeModulo -> è il nome del modulo all'interno della tua macro
    Main -> è il nome della tua routine principale da lanciare

    Ciao

  3. #3
    Utente Junior
    Iscritto dal
    2013
    Messaggi
    59
    Professione
    Ingegnere Meccanico
    Regione
    Emilia Romagna
    Software
    SolidWorks, Solid Edge, Inventor, Autocad

    Predefinito

    Ti ringrazio per la risposta: era proprio quello che volevo sapere. L'unica cosa che al momento non mi è chiara è la parte "Main": che cos'è il nome della routine principale da lanciare?Grazie ancora.

  4. #4
    Utente Junior
    Iscritto dal
    2013
    Messaggi
    59
    Professione
    Ingegnere Meccanico
    Regione
    Emilia Romagna
    Software
    SolidWorks, Solid Edge, Inventor, Autocad

    Predefinito

    Poi il compilatore mi dice che non riconosce swApp: sai a cosa possa essere dovuto?
    Grazie ancora.

  5. #5
    Utente Junior
    Iscritto dal
    2013
    Messaggi
    59
    Professione
    Ingegnere Meccanico
    Regione
    Emilia Romagna
    Software
    SolidWorks, Solid Edge, Inventor, Autocad

    Predefinito

    Ok allora ho risolto tutti i problemi di compilazione di Visual C# e ho provato a far funzionare il tutto. Il problema è però che quando vado a premere il mio bottone che dovrebbe far partire la macro mi appare questo messaggio:

    "riferimento a un oggetto non impostato su un'istanza di oggetto". Dov'è il problema?

    Ti posto il codice così puoi vedere meglio se ho sbagliato qualcosa.
    P.S. ho dovuto modificare leggermente l'istruzione RunMacro perchè così come la avevi scritta tu mi dava dei problemi di compilazione.

    Codice:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Drawing;
    using System.Data;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using SolidWorks.Interop.sldworks;
    using SolidWorks.Interop.swcommands;
    using SolidWorks.Interop.swconst;
    using SolidWorks.Interop.swpublished;
    using SolidWorksTools;
    using System.Runtime.InteropServices;
    
    namespace SWAddin_CSharp
    {
        [ComVisible(true)]
        [ProgId(SWTASKPANE_PROGID)]
        public partial class SWTaskpaneHost : UserControl
        {
            public const string SWTASKPANE_PROGID = "AngelSix.SWTaskPane_SwAddin";
            public SldWorks swApp;
            public SWTaskpaneHost()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                Boolean boolstatus;
                String filename;
                filename = "C:\\Users\\ALESSANDRO\\Desktop\\Tesi\\ExportXYZ2TXT\\export_points_xyz2file.swp";
                boolstatus = swApp.RunMacro(filename, "export_xyz2file1", "main");
            }
        }
    }

  6. #6
    Utente Standard L'avatar di jenuary
    Iscritto dal
    2007
    Messaggi
    385
    Professione
    Progettista e Programmatore VB.Net
    Regione
    Veneto
    Software
    Solidworks

    Predefinito

    Manca il collegamento all'oggetto SolidWorks che in VB.Net è

    Dim swApp As SldWorks.SldWorks

    che nel tuo caso avendo importato il Namespace SolidWorks.Interop.sldworks

    si semplifica a

    Dim swApp As SldWorks.SldWorks

    Non conoscendo C# non so dire come di dichiara la variabile, ma credo che per te non sia un problema.

    Dovrebbe essere solo questo.
    Ciao

  7. #7
    Utente Junior
    Iscritto dal
    2013
    Messaggi
    59
    Professione
    Ingegnere Meccanico
    Regione
    Emilia Romagna
    Software
    SolidWorks, Solid Edge, Inventor, Autocad

    Predefinito

    Pensavo che il collegamento all'oggetto fosse compreso nel comando: public SldWorks swApp
    A questo punto devo trovare un modo per tradurre Dim Skdworks.Sldworks swApp

  8. #8
    Utente Junior
    Iscritto dal
    2013
    Messaggi
    59
    Professione
    Ingegnere Meccanico
    Regione
    Emilia Romagna
    Software
    SolidWorks, Solid Edge, Inventor, Autocad

    Icon1

    Problema risolto, bastava inserire la riga di codice:

    Codice:
    SldWorks.SldWorks swApp = (SldWorks.SldWorks)Marshal.GetActiveObject("SldWorks.Application");
    Ciao


  • Discussioni Simili

    1. Come eseguire semisezione
      Di Filo nel forum Inventor
      Risposte: 12
      Ultimo Messaggio: 03-12-2013, 18: 33
    2. D-cam CUT come eseguire cono
      Di Bondeste nel forum Altri software di CAD generico
      Risposte: 0
      Ultimo Messaggio: 18-07-2011, 13: 25
    3. eseguire catia come admin da win 7
      Di teocast nel forum CATIA V5 Infrastructure
      Risposte: 4
      Ultimo Messaggio: 09-02-2011, 18: 05
    4. Eseguire macro scritte con l'editor di VB
      Di AndreaFox nel forum CATIA V5 Programmazione
      Risposte: 1
      Ultimo Messaggio: 24-01-2009, 13: 13
    5. Eseguire istruzioni lisp con DCL
      Di monta nel forum Lisp per Autocad
      Risposte: 6
      Ultimo Messaggio: 23-09-2008, 09: 35

    Segnalibri

    Segnalibri

    Permessi di Scrittura

    • Tu non puoi inviare nuove discussioni
    • Tu non puoi inviare risposte
    • Tu non puoi inviare allegati
    • Tu non puoi modificare i tuoi messaggi
    •  





    CAD3D.it - la community dei progettisti