Etichette

domenica 20 ottobre 2013

Your Revit add-in with a new wonderful ribbon tab - template visual studio

In this article I will explain a simple way to build a solution with a customized ribbon tab inside revit.

Let's start opening the basic template here.

Take a look to the code:

The first thing you need to do is to set your application  for creating a new ribbon tab:

 public class Applicationclass : IExternalApplication  
   {  
     #region IExternalApplication Members  
     public Autodesk.Revit.UI.Result OnStartup(UIControlledApplication application)  
     {  
       string path = Assembly.GetExecutingAssembly().Location; //<-----The path of the dll file for your addin  
       //add code here if you want to run functions on Revit Startup  
       //Set the contextual help which show help file pushing "F1"  
       ContextualHelp help = new ContextualHelp(ContextualHelpType.Url, "YOUR URL HERE");  
       //Create a new Ribbon tab  
       application.CreateRibbonTab("THE_TAB_NAME");  
       //Create a new Ribbon Panel inside the ribbon tab  
       RibbonPanel panel = application.CreateRibbonPanel("THE_TAB_NAME", "THE_PANEL_NAME");  
       //Create a new button and insert it into the panel  
       //btn1 = a unique identifier for the button  
       //Name_Button= The name of the button you want to be shown  
       //path = the path of the addin dll file  
       //Classname = the full class name for your command  
       PushButtonData manag = new PushButtonData("btn1", "Name_BUTTON", path, "Revit_AppWithCustomRibbon.YOURCOMMAND");  
       //set the contextual help for your command  
       manag.SetContextualHelp(help);  
       //add the button to the panel  
       panel.AddItem(manag);  
       return Result.Succeeded;  
     }  
     public Autodesk.Revit.UI.Result OnShutdown(UIControlledApplication application)  
     {  
       //Remove events if needed  
       return Result.Succeeded;  
     }  
     #endregion  
   }  

Now you are able to create your commands as I shown here:

   //Add your external commands here or in another file  
   [Autodesk.Revit.Attributes.Transaction(  
   Autodesk.Revit.Attributes.TransactionMode.Manual)]  
   public class YOURCOMMAND : IExternalCommand  
   {  
     public Result Execute(  
   ExternalCommandData commandData,  
   ref string message,  
   ElementSet elements)  
     {  
       TaskDialog.Show("Hello", "Hello world!");  
       return Result.Succeeded;  
     }  
   }  



Here the Code

mercoledì 16 ottobre 2013

Revit API - Iexternal command template

In this article I would like to show a simple way to create and test your code using my basic template for Add-in avalaible here

Let's start opening visual studio and clicking on the Add-in template. You need to type a name for your solution as in the screenshot below.

I called my app "My first command"

Now we need to type some essentials strings:

 namespace My_first_command  
 {  
   [TransactionAttribute(TransactionMode.Manual)]  
   [RegenerationAttribute(RegenerationOption.Manual)]  
   public class MyCommand : IExternalCommand  
   {  
       public Result Execute(
              ExternalCommandData commandData,
              ref string message,
              ElementSet elements)
              {
                 //YOUR CODE HERE
              }
   }  
 }  

You just need to type the code for the function where I wrote "Your code here".
Let's start with a simple example....a Message with "Hello world!" showed clicking on a button in Revit.

 namespace My_first_command  
 {  
   [TransactionAttribute(TransactionMode.Manual)]  
   [RegenerationAttribute(RegenerationOption.Manual)]  
   public class MyCommand : IExternalCommand  
   {  
     public Result Execute(  
        ExternalCommandData commandData,  
        ref string message,  
        ElementSet elements)  
     {  
       TaskDialog.Show("Hello world!", "Hello");  
       return Result.Succeeded;  
     }  
   }  
 }  

Now you need to test the code.
In order to set your visual studio to start revit and to test the code you need to click on "Project" and to click on "My project properties" (in this case "My_first_command Properties").
You need to click on Debug and to set revit as external program, so click on "Start external program" and clicking on "..." you will be able to click on Revit.exe in C:\Programfiles\Autodesk\Revit2014\Revit.exe.

This is a screenshot which show the result:

Now you need to set the paths for your solution, because Revit will initialize only the addins located in some specific paths. 
Click on "Build" and set the path to C:\ProgramData\Autodesk\Revit\Addins\2014\
Click on save button.

Now you need to set your addin manifest. (THIS IS IMPORTANT)
Be sure that the name of the assembly is correct and also the class name for your application.

Download the source code at the link below to understand how to compile an addin manifest correctly.

You just need to click on "Start" in the toolbar and Revit will appear. Your command will be avalaible in the "Add-ins" ribbon tab clicking on external tools.







martedì 15 ottobre 2013

eVox Bill of quantities 2.6 features - video

Start develop your Revit Add-in - Revit add-in template for visual studio

In this article I would like to show the operations you need to do for developping your own add-in. Following this article you will be able to set your project for each addin you want to develop and you will be able to skip this steps.

In this article I used Visual Studio 2012.

Let's start opening visual studio and clicking on new project in File -> New and following the istructions below you will have a new fastest way to develop your add-ins!

1. The first thing you need to do is to select a template. This is the first time you develop an add-in so you need to create a template valid for all addins you will develop in future. In order to create a template you need to select "Class Library", to type the name below and to select the path clicking on "browse" button.


2. Just clicking on OK button you will be abel to set the visual studio project. You need to set the references to Revit api dll; To do this you need to click on References with right click and to click on "Add Reference..." as you can see in the snap


After that you need to click on "Browse" and to add the references to:
C:\Programfiles\Autodesk\Revit2014\Revitapi.dll
C:\Programfiles\Autodesk\Revit2014\RevitAPIUI.dll
C:\Programfiles\Autodesk\Revit2014\Revitaddinutility.dll

3. Now you are ready to start coding. To complete your addin template you need to call your references in the code. So at the top add these strings:
 using Autodesk.Revit.DB;  
 using Autodesk.Revit.DB.Architecture;  
 using Autodesk.Revit.UI;  
 using Autodesk.Revit.UI.Events;  
 using Autodesk.Revit.UI.Selection;  
 using Autodesk.Revit.ApplicationServices;  
 using Autodesk.Revit.Attributes;  

4. To complete the addin template we need also an addin manifest which will be generated automatically following these steps:

  1. Click on "Project" and click on "Add new item..."
  2. Select XML file, type the name in the textbox and click on "Add"
  3. Now in the solution explorer(the panel on the top right) click on the new xml file added and change the File name in properties to "Revit_app_template.addin"
  4. Follow this instructions to type the code for your addin
  5. In properties set "Copy to output directory" to "copy always"
5. Now you just need to click on file and to Export the template following the instructions.

At these link there is the complete code for the template.

This is just a basic template to start a revit addin. In the next articles I will explain how to set visual studio to test your apps and to build your solution successfully.




lunedì 14 ottobre 2013

eVox Bill of quantities 2.6 unofficial - BETA release

In questo articolo trovate disponibile un file dll contenente le funzioni della nuova release che sarà disponibile nelle prossime settimane in versione ufficiale. Non preoccupatevi, è stata già testata e viene resa disponibile vista la sua stabilità.

Senza troppe chiacchiere vi riporto le novità:
- Visualizzazione manager migliorata riportante nomi degli elementi computati e categoria


- Modifica e applicazione costi con possibilità di aggiungere più voci di computo per singolo elemento evitando di ripetere l'operazione dall'inizio

- Aggiunte impostazioni di esportazione
  • XPWE - possibilità di aggiungere commenti basati su famiglia e impostare i parametri in modo da condizionare l'inserimento nel file di primus (Larghezza,Lunghezza, Peso, ecc)
  • Excel, Six, Word - aggiunta di commenti personalizzati basati su famiglia
  • Correzione esportazione file six


Istruzioni per l'installazione
1. Scaricate la dll
2. Copiatela in C:\ProgramData\Autodesk\ApplicationPlugins\evoxbillofquantities.bundle\Contents\2014\evoxBOQ\
3. sostituite il file all'interno della cartella che avrà lo stesso nome di quello scaricato
4. avviate revit e iniziate il computo :)

N.B. Se nel percorso che vi ho suggerito non è presente il file che avete scaricato dovete cercarlo nel computer oppure scrivetemi che vedo come aiutarvi

Se quando avviate revit da errori:
1. Andate nel percorso che vi ho indicato sopra
2. cliccate col destro sul file "eVox_bill_of_quantities" o "eVox_bill_of_quantities.dll" e cliccando su proprietà dovreste avere la possibilità di cliccare su "sblocca" o "Unblock" (è un tasto da schiacciare)...nella scheda "Generale"

In caso contrario attendete la versione ufficiale sullo store.

Alla prossima!




venerdì 11 ottobre 2013

Link to revit with evox linkator!

Install revit macros...

In this article I will show you how to install an external revit macro in your revit installation.


 1. You need that the macro has this structure

In the "Source" folder you will have the source files and in the "Addin" folder you will have the compiled dll from Revit

2. You need to copy "My macro" to C:\ProgramData\Autodesk\Revit\Macros\2014\Revit\AppHookup\

3. Now you just need to start Revit, Click on "Macro Manager" in Manage tab, Click on "Application".
If you done all correctly this is the result:

4. In this case my macro doesn't work because it is not compiled so to start it you need to click on "edit" and a new window will appear. All you have to do is to click on "build" and click on "build solution". If all works fine a message will appear above in the form.


5. Now closing the editor you just need to select the function from your macro clicking on "+" and you will be able to run it without problems








mercoledì 9 ottobre 2013

Addin Manifest

Add-in Manifest: è un file che definisce le informazioni legate al vostro add-in e che permette a Revit di eseguire con successo la vostra applicazione. Il file può essere creato con un semplice editor di testo e segue le direttive per la creazione di un file xml. Di seguito vi spiegherò come creare un file .addin con successo.

Come si compone un add-in Manifest?

La risposta è immediata. Vi basterà creare un file di testo contente il seguente codice con le informazioni relative al vostro plug-in.

<RevitAddIns>
  <AddIn Type="IL TIPO DI ADD_IN CHE VOLETE IMPLEMENTARE">
    <Name>NOME</Name>
    <Assembly>PERCORSO DLL</Assembly>
    <AddInId>GUID</AddInId>
    <FullClassName>NOME CLASSE COMPLETO</FullClassName>
    <VendorId>INFO VENDOR</VendorId>
    <VendorDescription>INFO VENDOR</VendorDescription>
  </AddIn>
</RevitAddIns>

 Tipo di add-in

Esistono 2 tipologie di plug-in che possono essere integrati in Revit:
- Iexternal command: Sono costituiti da un' unica funzione. Generalmente, dopo il loro caricamento, si collocano nella scheda "Add-ins" di Autodesk Revit. Possono essere utilizzati per eseguire delle operazioni abbastanza ripetitive; molto simili alle macro.
- Iexternal Application: Costituiti da una struttura più complessa sono delle vere e proprie applicazioni che possono avere una propria "Ribbon Tab" e sono costituite dall'unione di più "Iexternal Command"
Se dovete far eseguire a Revit un Iexternal command vi basterà scrivere "Command" in corrispondenza dell'attributo Type; se, invece, dovrete eseguire un Iexternal Application dovrete scrivere "Application".
Più avanti spiegherò come creare un ambiente di sviluppo adeguato per entrambi i tipi di componenti aggiuntivi e vi darò maggiori dettagli sulle loro particolarità.

Name
Il nome della vostra applicazione. Niente di complicato :)

Percorso DLL 
Qui dovrete inserire il percorso del file .dll contente il vostro codice che avrete compilato con visual studio o visual C#. Potete utilizzare percorsi relativi all'addin Manifest utilizzando questa sintassi : ".\cartellaplugin\vostradll.dll"
Si noti che la cartella del plug-in si deve trovare nella stessa cartella in cui collocherete l'add-in manifest.

AddinID - GUID
Qui dovrete inserire un id univoco per la vostra applicazione. Esistono diversi modi per generare un GUID ma ve ne suggerisco uno semplice e immediato; vi basterà andare al seguente link e generare un GUID valido
Nome classe completo
Se non avete mai sviluppato un plug-in questo non vi dirà nulla. Più avanti vi farò vedere come compilare questo campo.
E' il nome della classe principale della nostra applicazione.

Vendor ID e Description
Sono delle informazioni che compariranno in caso di errore dell'applicazione, fornendo all'utente un contatto a cui rivolgersi in caso di problemi.

Nei prossimi articoli spiegherò come procedere alla compilazione di un plug-in e come compilare un addin Manifest ad-hoc.

Da cosa è composto un add-in?

Quali sono i file che compongono un add-in?

risposta immediata e semplice:

File compilato: è un file con estensione ".dll" contenente il codice compilato della nostra applicazione. Si crea utilizzando un software di compilazione come visual studio o visual C# Express.

Add-in Manifest: è un file con estensione ".addin" contenente tutte le informazioni che permetteranno a revit di riconoscere la nostra applicazione.

Non c'è altro. Se vogliamo creare un plug-in sono necessari questi 2 file che dovranno essere collocati nella giusta posizione e Revit riuscirà ad eseguire con successo il componente aggiuntivo.


lunedì 7 ottobre 2013

Quantification dettagliato con Navisworks Quantification

In questo articolo vi spiegherò in modo generico come è possibile creare un computo utilizzando il modulo quantification di Navisworks. In particolare vi mostrerò come poter estrarre quantità dettagliate da un vostro progetto di Revit.

1. Salvataggio e preparazione del vostro modello rvt.

Per questo esempio userò un vecchio modello, abbastanza dettagliato che ci permetterà di capire come preparare il modello per l'estrazione dei dati.

Come prima cosa, dobbiamo selezionare l'intero modello e creare le parti relative a muri, solai e tetti.
Questo ci permetterà di estrarre le quantità relative ai diversi strati che compongono i diversi componenti in modo dettagliato: Selezionamo l'intero progetto e nella scheda "Modify" troverete il tasto "Create Parts"

In corrispondenza dei muri dovreste ottenere un risultato del genere:



Ora salvate il progetto, possibilmente cambiando nome così da mantenere i file separati.

2. Preparate Navisworks

Avviate naviswork, cliccate sulla N in alto a sinistra e cliccate su "Options". Aprite l'albero in corrispondenza di "File readers" e selezionate "Revit"

Impostate la finestra come in figura:


3 Importate il progetto di Revit

Cliccate su "Append" e selezionate il vostro progetto salvato precedentemente. Attendete il caricamento e vedrete il vostro progetto nella viewport.

4 Inizializziamo il computo

Cliccate su "Quantification" e dovrebbe comparirvi la barra "Quantification Workbook".
Cliccate su "Project Setup", selezionate un catalogo a vostro piacere dalla lista o caricatene uno cliccando su "Browse to a catalog" 

Concludete la procedura guidata impostando le unità di misura.Quando avrete finito dovreste ottenere questo risultato:


5 Selezioniamo gli elementi da computare

Per la selezione possiamo procedere in diversi modi:
  1. selezioniamo direttamente dalla viewport
  2. Ricerchiamo cliccando su "Find items" in basso a sinistra
In questo esempio vi mostro come computare gli strati di un muro automaticamente usando il secondo sistema.
Nel mio caso ho cercato tutti gli strati con il materiale lastra e dovrete impostare la ricerca come in figura, sostituendo il materiale che vi interessa.

Cliccate su "Find all" e nel browser vedrete selezionati gli elementi che vi interessano

6 Estrapoliamo le quantità

Adesso che avete gli elementi selezionati dovrete tornare sulla barra "Quantification Workbook", selezionare la categoria in cui far rientrare gli elementi selezionati e cliccare sul menù a tendina "Model takeoff" selezionando "Take off to new catalog Item"


Se avete fatto tutto correttamente dovreste ottenere questo risultato.


A questo punto potete esportare le quantità in base alle vostre esigenze.

Più avanti vi mostrerò come estrarre quantità utilizzando parametri personalizzati e come impostare le diverse formule.Alla prossima!



Rispondiamo a qualche domanda prima...

In questo articolo cercherò di fornire un'introduzione alle api che Autodesk mette a disposizione per lo sviluppo di componenti aggiuntivi collegati ai propri software. Non mi soffermerò su un software in particolare, ma darò una panoramica generale delle risorse utili a chi si avvicina a questo mondo per la prima volta.
Inizierò rispondendo ad alcune semplici domande che chiunque si farebbe e che mi sarebbero tornate utili quando iniziai :)

- Perchè sviluppare plug-in può rivelarsi utile nel mondo del lavoro?

Le API nascono principalmente per fornire uno strumento utile ai programmatori per creare moduli di collegamento o esportazione dai diversi software Autodesk ai propri. Perchè? Autodesk ha milioni di utenti in tutto il mondo e la creazione di un modulo aggiuntivo può valorizzare meglio il software specifico sviluppato per un determinato settore.
Sviluppare plug-in, tuttavia, può rendersi utile anche a Ingegneri(di tutte le specie), Architetti o designer che vogliono automatizzare il proprio modo di lavorare limitando 1000 operazioni (ad esempio) a un semplice click, risparmiando tempo e fornendo servizi in modo più veloce.

I vantaggi sono molti:
- Maggiore velocità di esecuzione
- Riducete al minimo l'errore umano
- Eliminate lavori monotoni e lunghi
- Automatizzate le procedure del vostro ufficio
- Minor tempo = Denaro (tanto il cliente mica lo viene a sapere :P)
- Possibilità di guadagnare

...e andiamo con gli svantaggi:
- la creazione di add-in, soprattutto per chi è alle prime armi, porta via molto tempo; tempo che probabilmente non abbiamo, o che ci serve per finire i lavori.
- Per chi non è programmatore trovare una risposta nelle API è un pò difficile, ma non impossibile. Munitevi di tanta buona pazienza!

- Da cosa dovrei cominciare per imparare?

Qua c'è da fare una distinzione: c'è chi impara perchè vuole mettersi seriamente nel campo e sviluppare applicazioni innovative (magari da distribuire) e chi invece vuole solo automatizzare delle procedure ripetitive.

Per la prima categoria: Iniziate imparando le basi di un linguaggio a vostra scelta tra C# o VBA. So che sono più complessi ma questo vi servirà a risolvere moltissimi problemi e ad aprirvi un pò la mente sulle possibilità esistenti con la programmazione.
Cercate qualche buon tutorial online, non avete bisogno di capire tutto alla perfezione, ma un' infarinatura generale è sicuramente un buon inizio. Sarete voi stessi a documentarvi meglio su determinati argomenti man mano che avrete problemi da risolvere. 
Capite le basi della programmazione ad oggetti, vi aiuterà a costruire un software con una buona struttura.
Un buon libro su visual studio è consigliato, sicuramente. 
Dovrete assolutamente imparare ad usare il software e a programmare qualche piccola applicazione (niente di complicato, qualche esercizio preliminare).

Per entrambi le categorie: consigliatissimi i tutorial sul sito autodesk, la serie My first plug-in di cui non vi lascio il link per ovvie ragioni; vi basterà cercare "Revit API my first plug-in" e vi comparirà tra i primi risultati.

- API, cosa sono?

Application Programming Interface...non spaventatevi; è semplicemente una porta che ci permette di comunicare con i software, messa a disposizione dei programmatori e contenente delle funzioni proprie per permettere di creare applicazioni che interagiscono tra di loro. Ad oggi i software che vengono distribuiti con le API sono tantissimi, soprattutto tra i "GRANDI". Le API sono fondamentali e permettono lo sviluppo dei diversi software esistenti.


- Costi per sviluppare?

A parte la licenza del software autodesk non ci sono costi ulteriori...visual c# express(il software per programmare) viene distribuito gratuitamente. Le API invece vengono distribuite insieme al programma per cui bisognerà disporre di una licenza.

- Software da utilizzare?

- Revit, Inventor o Autocad...il software su cui volete sviluppare il plug-in
- Visual C# Express o visual studio

- Perchè non vi fornisco Link?

Non voglio condizionarvi...purtroppo il campo della programmazione è vasto e complesso...dovrete trovare la risorsa che meglio risponde alle vostre esigenze cercando tra gli argomenti che vi ho illustrato...vedrete che vi troverete meglio! 

Rimanete collegati! nei prossimi articoli vi spiegherò come procedere alla compilazione del vostro plug-in fornendovi un vero e proprio workflow!